Network Driver Interface Specification
Encyclopedia
The Network Driver Interface Specification (NDIS) is an application programming interface
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

 (API) for network interface cards (NICs). It was jointly developed by Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 and 3Com Corporation, and is mostly used in Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, but the open-source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 NDISwrapper
NdisWrapper
NDISwrapper, is a free software driver wrapper that enables the use of Windows XP drivers for network devices , on Linux only operating systems. NDISwrapper works by implementing the Windows kernel and NDIS APIs, and dynamically linking the Windows drivers to this implementation...

and Project Evil driver wrapper
Driver wrapper
A driver wrapper is software that functions as an adapter between an operating system and a driver, such as a device driver, that was not designed for that operating system. It can enable the use of devices for which no drivers for the particular operating system are available...

 projects allow many NDIS-compliant NICs to be used with Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 and NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...

. magnussoft ZETA, a derivative of BeOS
BeOS
BeOS is an operating system for personal computers which began development by Be Inc. in 1991. It was first written to run on BeBox hardware. BeOS was optimized for digital media work and was written to take advantage of modern hardware facilities such as symmetric multiprocessing by utilizing...

, supports a number of NDIS drivers.

The NDIS is a Logical Link Control
Logical Link Control
The logical link control data communication protocol layer is the upper sub-layer of the data link layer in the seven-layer OSI reference model...

 (LLC) that forms the upper sublayer of the OSI
OSI model
The Open Systems Interconnection model is a product of the Open Systems Interconnection effort at the International Organization for Standardization. It is a prescription of characterizing and standardizing the functions of a communications system in terms of abstraction layers. Similar...

 data link layer
Data link layer
The data link layer is layer 2 of the seven-layer OSI model of computer networking. It corresponds to, or is part of the link layer of the TCP/IP reference model....

 (layer 2 of 7) and acts as an interface between layer 2 and 3 (the Network Layer
Network Layer
The network layer is layer 3 of the seven-layer OSI model of computer networking.The network layer is responsible for packet forwarding including routing through intermediate routers, whereas the data link layer is responsible for media access control, flow control and error checking.The network...

). The lower sublayer is the Media Access Control
Media Access Control
The media access control data communication protocol sub-layer, also known as the medium access control, is a sublayer of the data link layer specified in the seven-layer OSI model , and in the four-layer TCP/IP model...

 (MAC) device driver.

The NDIS is a library of functions often referred to as a "wrapper
Driver wrapper
A driver wrapper is software that functions as an adapter between an operating system and a driver, such as a device driver, that was not designed for that operating system. It can enable the use of devices for which no drivers for the particular operating system are available...

" that hides the underlying complexity of the NIC hardware and serves as a standard interface for level 3 network protocol drivers and the hardware level MAC drivers. Another common LLC is the Open Data-Link Interface
Open Data-Link Interface
The Open Data-Link Interface , developed by Apple and Novell, serves the same function as Microsoft and 3COM's Network Driver Interface Specification . Originally, ODI was written for NetWare and Macintosh environments. Like NDIS, ODI provides rules that establish a vendor-neutral interface between...

 (ODI).

The NDIS versions supported by various Windows versions are as follows:
  • NDIS 2.0: MS-DOS
    MS-DOS
    MS-DOS is an operating system for x86-based personal computers. It was the most commonly used member of the DOS family of operating systems, and was the main operating system for IBM PC compatible personal computers during the 1980s to the mid 1990s, until it was gradually superseded by operating...

    , Windows for Workgroups 3.1
    Windows 3.1x
    Windows 3.1x is a series of 16-bit operating systems produced by Microsoft for use on personal computers. The series began with Windows 3.1, which was first sold during March 1992 as a successor to Windows 3.0...

    , OS/2
    OS/2
    OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

  • NDIS 3.0: Windows for Workgroups 3.11
  • NDIS 3.1: Windows 95
    Windows 95
    Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...

  • NDIS 4.0: Windows 95 OSR2, NT 4.0
    Windows NT 4.0
    Windows NT 4.0 is a preemptive, graphical and business-oriented operating system designed to work with either uniprocessor or symmetric multi-processor computers. It was the next release of Microsoft's Windows NT line of operating systems and was released to manufacturing on 31 July 1996...

    , Windows CE 3.0
    Windows CE 3.0
    Microsoft Windows CE 3.0 is an operating system designed for embedded systems including PDAs and mobile phones, working within the constraints of the slow processors and reduced amount of memory available on these devices...

  • NDIS 5.0: Windows 98
    Windows 98
    Windows 98 is a graphical operating system by Microsoft. It is the second major release in the Windows 9x line of operating systems. It was released to manufacturing on 15 May 1998 and to retail on 25 June 1998. Windows 98 is the successor to Windows 95. Like its predecessor, it is a hybrid...

    , 98 SE, Me
    Windows Me
    Windows Millennium Edition, or Windows Me , is a graphical operating system released on September 14, 2000 by Microsoft, and was the last operating system released in the Windows 9x series. Support for Windows Me ended on July 11, 2006....

    , 2000
    Windows 2000
    Windows 2000 is a line of operating systems produced by Microsoft for use on personal computers, business desktops, laptops, and servers. Windows 2000 was released to manufacturing on 15 December 1999 and launched to retail on 17 February 2000. It is the successor to Windows NT 4.0, and is the...

  • NDIS 5.1: Windows XP
    Windows XP
    Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...

    , Server 2003
    Windows Server 2003
    Windows Server 2003 is a server operating system produced by Microsoft, introduced on 24 April 2003. An updated version, Windows Server 2003 R2, was released to manufacturing on 6 December 2005...

    , Windows CE
    Windows CE
    Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...

     4.x , 5.0
  • NDIS 5.2: Windows Server 2003 SP2
  • NDIS 6.0: Windows Vista
    Windows Vista
    Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...

  • NDIS 6.1: Windows Vista SP1, Server 2008
  • NDIS 6.20: Windows 7, Server 2008 R2
  • NDIS 6.30: Windows 8
    Windows 8
    Windows 8 is the codename for the next version of the Microsoft Windows computer operating system following Windows 7. It has many changes from previous versions. In particular it adds support for ARM microprocessors in addition to the previously supported x86 microprocessors from Intel and AMD...



The traffic accepted by the NIC is controlled by an NDIS Miniport
Miniport
A miniport is a type of hardware-driver, part of the Windows Driver Model. These are USB, Audio, SCSI and network card adapters. They should usually be source and binary compatible between Windows 98 and Windows 2000 and are hardware specific but control access to the hardware through a specific...

 Driver while various protocols, such as TCP/IP
Internet protocol suite
The Internet protocol suite is the set of communications protocols used for the Internet and other similar networks. It is commonly known as TCP/IP from its most important protocols: Transmission Control Protocol and Internet Protocol , which were the first networking protocols defined in this...

, are implemented by NDIS Protocol Drivers. A single miniport may be associated with one or more protocols. This means that traffic coming into the miniport may be received in parallel by several protocol drivers. For example, Winpcap
Pcap
In the field of computer network administration, pcap consists of an application programming interface for capturing network traffic...

 adds a second protocol driver on the selected miniport in order to capture incoming packets. Furthermore, it is possible to simulate several virtual NICs by implementing virtual miniport drivers that send and receive traffic from a single physical NIC. One example of virtual miniport drivers usage is to add virtual NICs, each with a different Virtual LAN
Virtual LAN
A virtual local area network, virtual LAN or VLAN, is a group of hosts with a common set of requirements that communicate as if they were attached to the same broadcast domain, regardless of their physical location...

. Due to the fact that implementations cannot assume that other drivers received the same buffers, one must treat the incoming buffers as read only. A driver that changes the packet content must allocate its own buffers.

Another driver type is NDIS Intermediate Driver. Intermediate drivers sit in-between the MAC and IP layers and can control all traffic being accepted by the NIC card. In practice, intermediate drivers implement both miniport and protocol interfaces. The miniport driver and protocol driver actually communicate with the corresponding protocol and miniport interfaces that reside in the intermediate driver. This design enables adding several chained intermediate drivers between the miniport and protocol drivers. Therefore, driver vendors cannot assume that the interface that they send traffic to is implemented by the last driver in the chain. In order to write applications using NDIS one can use samples that accompany Microsoft's Windows Driver Kit (WDK). The "PassThru" sample is a good starting point for intermediate drivers as it implements all the necessary details required in this driver type, but the sample just passes the traffic through to the next driver in the chain.

See also

  • Open Data-Link Interface
    Open Data-Link Interface
    The Open Data-Link Interface , developed by Apple and Novell, serves the same function as Microsoft and 3COM's Network Driver Interface Specification . Originally, ODI was written for NetWare and Macintosh environments. Like NDIS, ODI provides rules that establish a vendor-neutral interface between...

     (ODI)
  • Uniform Driver Interface
    Uniform Driver Interface
    The Uniform Driver Interface is a defunct project developed by several companies to define a portable interface for device drivers....

     (UDI)
  • Universal Network Device Interface
    Universal Network Device Interface
    Universal Network Device Interface is an application programming interface for network interface cards used by the Preboot Execution Environment protocol.-See also:* Network Driver Interface Specification...

     (UNDI)
  • PC/TCP Packet Driver
    PC/TCP Packet Driver
    PC/TCP Packet Driver is an API created in 1986 by FTP Software for network cards under x86-DOSes like MS-DOS, DR-DOS, FreeDOS, etc. It uses the x86 interrupt number between 60h .. 80h. The exact number is detected at run-time...


External links

  • http://blogs.msdn.com/wndp/ Windows Core Networking
  • http://www.ndis.com/
  • http://msdn.microsoft.com/en-us/library/ms797120.aspx Microsoft MSDN Design Guide
  • http://www.wd-3.com/archive/ExtendingPassthru.htm Extending PassThru
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK