TCP Chimney Offload is a networking technology that helps transfer the workload from the CPU to a network adapter during network data transfer. TCP Chimney Offload enables the network subsystem to offload the processing of a TCP/IP connection to a network adapter that includes special support for TCP/IP offload processing, which is a hardware implementation of the TCP/IP stack
- The TOE (TCP Chimney) feature was first introduced in Windows 2003 and is enabled when either the earlier Scalable Networking Pack (kb 912222) or Service Pack 2 for Win2003 or are installed on a Windows 2003 server.
- In Windows 8 / Windows Server 2012, TOC is disabled by default
- Since Windows 10 Creators Update, TOC is deprecated
To determine it TOC has been fully disabled verify the following:1. If the file version of
%windir%\system32\netsh.exe is 5.2.3790.2670 or higher it is possible that TOE is enabled.
If the version number is 5.2.3790.1860 (SP1) or lower the TOE features need not be worried about.
2. Open the registry editor: RUN > regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Review the values of the following:
EnableTCPChimney,
EnableTCPA, and
EnableRSS.
- If all three are set to a value of Zero, consider TOE disabled.
- If they’re all set to 1, consider disabling them during troubleshooting.
3. Find in any active connections are in the “Offload State: Offload”
Open a command prompt and run the following command on the server:
$ netstat -t
In the Offload State Column:
- InHost - the TCP Chimney Offload feature is disabled and offloading is not occurring.
- Offload - TCP Chimney Offload is enabled on the NIC on which that connection is established.
Disabling the TCP Chimney Offload feature1. One of the three TOE features can be disabled ‘on the fly’. Disabling the TCPChimney (but not RSS or TCPA) is often sufficient to deal with problems related to TOE. But not always. To disable the TCPChimney, open a command prompt and run the following command on the server:
$ netsh int ip set chimney DISABLED
- No reboot is needed.
- No IISRESET is needed either.
2. A more thorough (and preferable) alternative to using the
netsh command is to set the values of
EnableTCPChimney,
EnableTCPA, and
EnableRSS to 0 in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Change the dword values to zero for the following three keys from 1 to 0:
- "EnableTCPChimney"=dword:00000000
- "EnableTCPA"=dword:00000000
- "EnableRSS"=dword:00000000
A reboot is needed for these registry value changes to take effect.
To view the current status:
$ netsh int tcp show global
Example:TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
NetDMA State : disabled
Direct Cache Access (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Receive Segment Coalescing State : disabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
TCP Fast Open : enabled
TCP Chimney Offload (TOE) is not unique to Windows Operating Systems, for example refer to Article: