Remote NDIS (RNDIS) and Windows
Updated: June 29, 2009
On This Page
Remote NDIS (RNDIS) is a specification for network devices on dynamic Plug and Play I/O buses such as USB. It includes two components: a bus-independent message set and a description of how this message set is conveyed across a specific I/O bus on which it is supported.
By using a bus-independent view and leveraging the familiar driver interface semantics already provided by NDIS, Remote NDIS improves the development experience for hardware providers and the installation experience of end users.
Remote NDIS Architecture Overview
NDIS is part of the networking architecture used in Microsoft Windows operating systems. NDIS provides simplified miniport device driver architecture to enable transports to communicate with network adapters using common driver interfaces. Figure 1 shows the relationships among a transport (protocol driver), NDIS, and a network card miniport device driver. This figure shows a network interface card attached using the traditional PCI I/O bus.
Figure 1. Windows NDIS architecture
Prior Solution for Supporting Networking Devices on a Serial Bus
Previously, a device manufacturer who wanted to provide support for a serial bus-attached network device had to write an NDIS driver that interfaced with NDIS as a miniport driver, while simultaneously interfacing with the specific WDM serial bus driver. Figure 2 illustrates a USB-attached network device and the NDIS driver architecture.
Figure 2. NDIS Architecture for a USB Network Device
In Figure 2, the block labeled "NDIS Miniport" represents the NDIS driver that a device manufacturer has to develop. This driver is specifically written for their device and specifically written to interface with the USB drivers.
A different driver has to be developed for each device and for each type of serial bus. This creates a significant burden on the device manufacturer to develop multiple drivers that are, essentially, performing the same function. Also, there are no standard protocols for communicating between the host and the device that can be re-used on all the different serial bus types.
Remote NDIS Solution
Remote NDIS eliminates the need for hardware vendors to write an NDIS miniport device driver by defining a bus-independent message set and a description of how this message set operates over a various I/O buses. Because this Remote NDIS interface is standardized, one set of host drivers can support any number of bus-attached networking devices. This significantly reduces the development burden on device manufacturers, improves the overall stability of the system because no new drivers are required, and improves the end-user experience because there are no drivers to install to support a new bus-connected network device.
The architecture to support this mapping is accomplished by creating an NDIS miniport driver that implements the Remote NDIS message set and communicates with generic bus transport drivers, which in turn communicate with the appropriate bus driver.
The Remote NDIS message set mirrors the semantics of the NDIS miniport driver interface. There are messages for:
For each serial bus type supported by Remote NDIS, a bus transport driver is developed that implements a mechanism for carrying the Remote NDIS messages across the bus. These drivers have limited functionality; they primarily transport standardized Remote NDIS messages between the Remote NDIS miniport driver and the bus-specific driver, such as USB. The bus-specific drivers are also required to map any bus-specific requirements, such as power management, into standardized Remote NDIS messages.
This structure allows a single device driver to be used for any Remote NDIS device for which there is a bus-specific transport layer. Also, there is only one bus transport layer required for all network devices on a specific bus.
Figure 3. Remote NDIS Drivers for USB
Figure 3 shows the replacement of the device manufacturer's NDIS miniport with the combination of the Remote NDIS Miniport and USB Transport driver. The device manufacturer can now concentrate on the device implementation and not have to develop a Windows NDIS device driver.
Remote NDIS Bus Transports
Remote NDIS is supported over USB by using the Abstract Control model, as defined in USB Communication Device Class, Version 1.1, available at http://www.usb.org/developers/ . The Abstract Control model defines two interfaces: a Communication interface and a Data interface.
Standard Remote NDIS messages are sent to the devices using the Communication interface's "Encapsulated Command" requests. Remote NDIS messages containing network packets are sent over the Data interface.
Remote NDIS is mapped to IEEE 1394 by using the Serial Bus Protocol 2 interface (SBP-2). Remote NDIS messages are passed across the bus using Operation Request Blocks (ORBs). Status FIFOs are used for the asynchronous notifications from the device.
Remote NDIS Application: Enable Home Networking
External buses such as USB and IEEE 1394 enable end users to add external peripherals easily, without having to open the PC case and insert cards into slots. This is particularly important for adding Home Networking devices--including public network connections, such as ADSL modems or cable modems, and home LAN adapters, such as power line carriers, HomePNA, or other wireless devices.
For example, a residential broadband provider could deliver cable modems or Asymmetrical Digital Subscriber Line (ADSL) modems to residential end users with reasonable confidence that these modems could be connected without requiring a technical support call or requiring a visit from a service technician. With Remote NDIS drivers readily available, the software installation should also be easy and user friendly.
Remote NDIS Availability for Windows Platforms
Microsoft will generally provide Remote NDIS drivers for Windows platforms where the Windows operating system provides support for a particular bus technology and there is sufficient demand for network devices on a particular bus.
Windows XP and Windows CE .NET operating systems include Remote NDIS driver support for the USB bus.
Remote NDIS on IEEE 1394 is fully specified but so far there has been no demand for networking devices on this bus. Therefore the availability for Remote NDIS IEEE 1394 support is currently not scheduled.
Remote NDIS on InfiniBand technology is currently not being provided.
Questions about Remote NDIS? Please send your questions to