Disable TCP Auto-Tuning to Solve Slow Network (Vista / Windows 7 / Windows 2008) | ![]() |
| Written by Misha Hanin |
Symptoms That's what some of the clients experienced at different times:
Root cause I have found that these problems might exist due to the new re-written TCP stack in Windows Vista that aims to take full advantage of hardware improvements such as gigabit networking. Among others, there is a new feature that was introduced in Windows Vista - Receive Window Auto-Tuning Level for TCP connections. This TCP Auto-Tuning feature enables TCP window scaling by default so the TCP receive window size is automatically tuned for each individual connection based on the bandwidth delay product (BDP) and the rate at which the application reads data from the connection. As a result, there is no longer need in manually changing the TcpWindowSize registry key value which applies to all connection. Theoretically, with TCP Auto-Tuning feature enabled network connection throughput in Windows Vista, Windows 7, or Windows 2008 should be set up for the best performance and efficiency without any registry tweaks or hacks. However, this is not always the case, and may cause some Internet related issues and problems. Solution The solution (which can probably be viewed by some as a workaround) to the above problems is to disable the TCP/IP Auto-Tuning in Windows Vista, Windows 7, or Windows 2008. The following are the solution implementation instructions: Check the state or current setting of TCP Auto-Tuning
netsh interface tcp show global The system will display the following text on screen, where you can check on the Auto-Tuning setting: Querying active state… Disable TCP Auto-Tuning
netsh interface tcp set global autotuning=disabled Any adverse effects? According to my experience, disabling auto tuning of TCP Window Size should not cause any negative effects. Just keep in mind that the TCP Window Size will always be at the default value without ability to optimize it for each connection. Anyway, should you notice any undesirable side effect after turning off the auto tuning feature, simply re-enable it back. That's how you do it: Enable TCP Auto-Tuning
netsh interface tcp set global autotuning=normal |
