How TCP Chimney Offloading Affects SQL Server

TCP Chimney Offload transfers network traffic workload processing from the CPU to a network adapter that supports TCP Chimney Offload. This feature was introduced with Windows Server 2003 SP2, and it was called the Microsoft Scalable Networking Pack (SNP). Since Windows Server 2008, these features are a base part of these operating systems, so they no longer go by this name. To utilize this feature, the network adapter (and driver) must support this feature, and both the operating system and the network adapter must have this setting enabled.

This feature is not suitable for all applications. Microsoft says (at https://technet.microsoft.com/en-us/library/gg162709%28v=WS.10%29.aspx):

Because of the overhead associated with moving TCP/IP processing to the network adapter, TCP Chimney Offload offers the most benefit to applications that have long-lived connections and transfer large amounts of data. Servers that perform database replication, function as file servers, or perform backup functions are examples of computers that may benefit when you enable TCP Chimney Offload.

With the different operating systems versions, this feature is by default in different states:

Windows OS Default state of TCP Chimney Offload
Windows Server 2003 enabled
Windows Server 2008 disabled
Windows Server 2008 R2 automatic
Windows Server 2012 disabled

With all of these changes to the OS, which setting should we use for SQL Server? In general, for all of these operating systems, I recommend that TCP Chimney Offload be disabled – because you can see odd connectivity problems in any other state. Notice in the above quote that Microsoft says that this feature is best used for applications with long-lived connections that transfer large amounts of data – hopefully your OLTP database is performing lots of short-lived connections and they are not transferring large amounts of data (if they are, contact us… we can help you with that!). Some of the error messages that you can encounter are:

[Microsoft][ODBC SQL Server Driver][DBNETLIB] General Network error. Check your network documentation

ERROR [08S01] [Microsoft][SQL Native Client]Communication link failure

System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 – An existing connection was forcibly closed by the remote host.)

These errors are not exclusive to having problems with the TCP Chimney Offload. Additionally, they may only occur during times of high network load on the server.


Do you keep upgrading hardware to improve

SQL Server performance issues without seeing any benefits?

You need a Health Check from SQL Solutions Group.

Learn More


To determine the Current TCP Chimney Offload Setting and to Disable it

In typical Microsoft format, this also varies between different operating system versions.

For Windows Server 2003, you need to check the registry. From a DOS command prompt, run:

reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\PARAMETERS /v EnableTCPChimney

If disabled, this will have a value of 0x0; if enabled, it will have a value of 0x1.

To disable, from an elevated DOS command prompt, run:

From Windows Server 2008 on, you can check the setting with this DOS command:
netsh INT tcp show GLOBAL

To disable it run the following from an elevated DOS command prompt:
netsh INT tcp SET GLOBAL chimney=disabled

Please share this

This Post Has One Comment

  1. MELANIE

    Disabling Chimney Offload State (in all versions as you stated above – including 2012 & 2008 R2) — is that true if your servers are virtualized?

Leave a Reply

Related Articles