Out-of-band (OOB) package 912222 for Windows 2003 SP1 and SP2/R2 (and Vista/2008)
provides the
Scalable Networking Pack [MS White Paper]
to improve network performance on NDIS 6.0 (Network Device Interface Specification) hardware driver features.
There is no user interface to configure its options.
TCP Chimney Offload
netsh interface tcp set global chimney=enabled
or set in the Windows Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableTCPChimney=1 (1=enabled, 0=disabled)
The "chimney" analogy is used here because once TCP connection state is established,
control is transfered to the NIC miniport driver runing on NIC hardware which
completely replaces the entire Windows TCP stack implementation from top to bottom,
handling the traffic between the application and the remote host.
[MSDN Whitepaper]
[WHDC Whitepaper]
Offloading to NIC hardware instead from the CPU
improves the performance of long-lived connections with large-sized payloads,
such as data streaming and large file transfers.
Chimney is disabled automatically in the presence of a software firewall
(Windows Firewall), ICS (Internet Connection Sharing), IPsec, IPNAT.
Receive-side Scaling (RSS)
netsh interface tcp set global rss=enabled
Or in the Windows Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableRSS=1 (1=enabled, 0=disabled)
This enables use of multiple CPUs to handle received packets
so that the NIC can spread load among available CPUs.
[MS Whitepaper]
RSS should not be activated when using ICS (Internet Connection Sharing)
or ISA server. More info: MS KB
927695, MS KB 927168
TCP Acceleration (TCPA)
netsh interface tcp set global rss=enabled
Or in the Windows Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableTCPA=1 (1=enabled, 0=disabled).
Notes: TCPA should not be activated if ISA server is enabled.
See MS KB 947773
Network Direct Memory Access (NetDMA)
NetDMA minimizes the CPU processing needed to move packets between memory buffers. It has some hardware requirements, such as INtel I/O Acceleration Technology (Intel I/OAT) available with Xeon processors to function. NetDMA will not work together with "TCP Chimney Offload" and requires "Receive-side Scaling". Windows chooses NetDMA if it detects that both NetDMA and TCP Chimney Offload is supported.
NetDMA is disabled automatically in the presence of a software firewall, ICS, IPsec, IPNAT.
Leave the MinPacketSizeToDma global registry value at its default value.
It configures the minimum packet size that would trigger usage of DMA.
Compound TCP (CTCP)
This was introduced in the Tcpip.sys within
Windows Vista and Windows Server 2008 and via
Hotfix 949316 on Windows 2003 and Windows XP 64-bit.
It is highly recommended this setting be enabled in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
TCPCongestionControl=1 (DWORD value, 1=enable, 0=disable)
CTCP improves on traditional slow-start and congestion-avoidance methods,
(especially over high-speed internet connections) by
monitoring delay variations and packet loss.
It also ensures that its behavior does not impact other
TCP connections negatively.
For Windows 2003/XP, to set CTCP, in the Windows Registry, navigate to:
See also:
MS KB949316 - Hotfix for Windows 2003 Server and XP (64-bit) replaces Tcpip.sys dated 21-Feb-2008 and
MS KB947775 - Hotfix for Windows 2003 Server replaces Tcpip.sys dated 04-Mar-2008
Checksum Offloading
This NDIS 5 setting reduces CPU load by offloading to the network card tasks maintaining the TCP/IP stack:
- TCP/IP checksum calculation - each packet sent includes a verification checksum.
- TCP/IP segmentation - also known as "TCP Large Send" where Windows sends a large amount of data to the network card, and the NIC is then responsible for dividing it according to the network MTU. Experimental feature, not enabled by default.
- IPSec Encryption cyphers and message digests - provides encryption of packets at the hardware level.
Theoretically, Windows should automatically detect capable network hardware.
The recommendation is to leave this at default unless problems are being experienced.
But to change the checksum offloading in the Windows Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DisableTaskOffload=0 (DWORD value, 0=enable offload, 1=disable offload, default not set)
Note: Checksum offloading should not be activated together with the Windows Firewall.
Also see: MS KB 888750, MS KB 904946, MS KB 936702
The Cable Guy on Scalable Networking Pack