You are here:   Home Tips & Tricks Disable TCP Auto-Tuning to Solve Slow Network (Vista / Windows 7 / Windows 2008)

Disable TCP Auto-Tuning to Solve Slow Network (Vista / Windows 7 / Windows 2008)

E-mail
Written by Misha Hanin   

Disable TCP Auto-Tuning to Solve Slow Network (Vista / Windows 7 / Windows 2008)Since Windows Vista has emerged, more and more IT professionals have been reporting issues with their high speed broadband Internet connections: some incompatibilities, conflict problems, and errors. The situation didn't ease up with the release of Windows 7 and Windows 2008 (including 2008 R2). I ran into these problems several times at my clients so a decision was made to perform a deeper research and nail down a proper solution.


Symptoms

That's what some of the clients experienced at different times:

  • Poor intermittent network performance
  • Slow network loading
  • Unable to open and load some websites or webpages using Internet Explorer or Firefox. The blue loading bar keeps running for a long time, but the pages fail to load.
  • Java applets fail to download and open
  • Cannot receive email or download from POP3 mail server using some email clients (Thunderbird would be a one example). No mail arrived although users may see the message “receiving 1 of 3 messages”, and eventually the receiving process will time out with the error "0×800CCC19 timeout".
  • Slow email sending or retrieval using Thunderbird and other clients.

 

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

  • Open elevated command prompt with administrator’s privileges.
  • Type the following command and press Enter:

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… 

TCP Global Parameters

———————————————-

Receive-Side Scaling State : enabled

Chimney Offload State : enabled

Receive Window Auto-Tuning Level : normal

Add-On Congestion Control Provider : none

ECN Capability : disabled

RFC 1323 Timestamps : disabled

Disable TCP Auto-Tuning

  • Open elevated command prompt with administrator’s privileges.
  • Type the following command and press Enter:
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

  • Open elevated command prompt with administrator’s privileges.
  • Type the following command and press Enter:
netsh interface tcp set global autotuning=normal




Did you find this article helpful? Please support curuit.com - Donate $2