This article was previously published under Q217305
This article has been archived. It is offered "as is" and will no longer be updated.
Poor networking performance is observed in an Ethernet full-duplex environment with Microsoft Windows NT.
In Service Pack 4 for Windows NT 4.0, a new NDIS feature has replaced the older "full duplex" feature. This feature deserializes all communication between NDIS and the adapter miniport driver. In addition to send and receive operations, other functions such as adapter status indications and setting adapter parameters were also deserialized.
A significant performance improvement is possible if the network adapter miniport driver is capable of operating in the deserialized mode on symmetric multiprocessor (SMP) systems. Send and receive functions can be active and serviced simultaneously, because this allows different operations to be handled by different processors. In addition, further performance gains can be realized on SMP systems with network adapters that operate in full duplex mode at the media access control layer. The downside to this mode of operation is that the adapter miniport driver assumes all responsibility for data access control and synchronization.
The older NDIS layer full duplex mode of operation is still supported for use with those network adapter miniport drivers that do not support fully deserialized operation.
This behavior is by design.
In the past, there has been some confusion as regards the support of full duplex network adapters under Windows NT. The following information should clarify this issue.
The term "full duplex" has been used to describe two separate functions, one related to communication between the network adapter miniport driver and the operating system, and the other being the operation of the network adapter itself. When used to describe communication between the operating system and the network adapter miniport driver, the term "full duplex" refers to allowing simultaneous send and receive operations between the network adapter miniport driver and the operating system on SMP computers.When used to describe network adapters, this refers to media access control layer functionality allowing the simultaneous reception and transmission of data by the network adapter.
Many modern network adapters support full duplex operation at the media access control layer. This means that the adapter has the ability to send data from its send buffer and to receive data into its receive buffer simultaneously. The adapter's ability to perform these functions is implemented in the adapter's buffering and supported by the adapter miniport driver as written by the vendor and so is not under the control of the operating system. The operating system is not aware of, nor does it control whether or not the network adapter is operating in the full duplex mode of operation, how well it is operating in this mode operation.
A network adapter can run in full duplex operation independent of the operating system.
In the event that a given adapter supports full duplex operation at the media access control layer and the driver is correctly managing this operation, the full benefits of a given adapter's ability to perform full duplex operation are still not realized if the operating system cannot simultaneously accept data from and send data to the adapter. In the Windows NT architecture, the network adapter miniport driver interfaces with the Network Driver Interface Specification (NDIS) module. This module has undergone several design changes and enhancements over time.
Earlier versions of NDIS exclusively used a serialized architecture that allowed only one interaction between NDIS and the adapter miniport driver at a time. Data could be sent to the miniport driver from NDIS or received from the miniport driver and a new operation could not proceed until the previous operation was completed. This architecture made the writing of adapter miniport drivers simpler as the driver did not have to manage data access synchronization. However, this also tended to limit the gains realized from the use of network adapter's operating in the full duplex mode at the media access control layer as only one buffer could transfer data at any one time.
NDIS version 4.0 introduced a feature that was also called "full duplex" but was used in a somewhat different context than the same term when used to describe network adapter operation at the media access control layer. The NDIS full duplex feature allows simultaneous send and receive operations between NDIS and the miniport driver. It has been stated (incorrectly) that this feature was Microsoft's implementation of support for network adapters operating in the full duplex mode at the media access control layer. The actual intent was to increase performance in general and still keep the writing of the miniport drivers as simple as possible. It is independent of the operation of the network adapter at the media access control layer.
With the addition of this feature, increased processing overhead was incurred within the NDIS module and as a result little if any performance increase was seen when using network adapters that operated in the full duplex mode at the media access control layer. Because of the full duplex naming convention, many people have assumed that the NDIS full duplex feature was tied to supporting adapters that operate in the full duplex mode at the media access control layer, and as stated above, this is not the case.
Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows NT Server 4.0 Standard Edition, Microsoft Windows NT 4.0 Service Pack 1, Microsoft Windows NT 4.0 Service Pack 2, Microsoft Windows NT 4.0 Service Pack 3, Microsoft Windows NT 4.0 Service Pack 4, Microsoft Windows NT Server 4.0 Enterprise Edition, Microsoft Windows NT 4.0 Service Pack 4, Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Workstation 4.0 Developer Edition