In Windows since Windows Vista, including Windows 7, Windows 8, Windows 8.1 and Windows 10, Microsoft incorporates new TCP/IP stack which features Auto Tuning capability. The Auto Tuning function able to adjust and optimize TCP/IP connection based on network utilization in order to increase the transfer rate throughput. In theory the new stack suppose to do so, however, in practical, Auto Tuning feature may not work correctly to bring better performance for network downloading and web surfing.

Other than the various network and Internet connectivity problems that may happens, Auto Tuning may also cause reduce the rate of establishing network connection, especially when using third-party driver for the network card. Other possible problems are Windows Live Messenger slow sign in process or unable to login, slow speed when viewing shared resources in LAN environment, or slow download speed when using multi-thread multiple-concurrent-connection programs such as FlashGet, BT clients such as uTorrent, BitComet and etc. comparing with the download speed possible to get in Windows XP.

All these symptoms may not caused by “Auto Tuning”, however, trying to disable Auto Tuning on TCP/IP in Windows to verify if the problems have been solved is a good way to ensure that it’s not the culprit.

Disable Receive Window Auto-Tuning Level on TCP/IP

  1. Open a command prompt with administrator rights.
  2. Input the following command, and press Enter when done:
    netsh int tcp set global autotuninglevel=disable
  3. Restart the system.

If the problem still exists, it’s more likely caused by other reasons such as maximum concurrent connection attempt limit (no longer applied in Windows Vista SP2 or Windows Server 2008 SP2 or later). In this case, we can re-enable the Auto Tuning for good.

Enable Receive Window Auto-Tuning Level on TCP/IP

  1. Open a command prompt with administrator rights.
  2. Input the following command, and press Enter when done:
    netsh int tcp set global autotuninglevel=normal
  3. Restart the system.
Note
Windows has the ability to automatically change its own TCP Window auto-tuning behavior to a more conservative state, overriding any custom setting on autotuninglevel parameter set by user. This behavior is due to TCP Window Scaling heuristics. When Windows Scaling heuristics is in effect, the netsh int tcp show global command displays the following message:

** The above autotuninglevel setting is the result of Windows Scaling heuristics overriding any local/policy configuration on at least one profile.

In such behavior, normally the “restricted” or “highlyrestricted” value is applied to Receive Window Auto-Tuning Level setting by force. Both “restricted” or “highlyrestricted” settings limit the ability of receive window to grow beyond its default value. To prevent such behavior and enforce the user-set custom TCP Windows auto-tuning level, disable the TCP Windows Scaling Heuristics.

Check and view the TCP Window Scaling Heuristics Parameters

netsh interface tcp show heuristics

Disable TCP Window Scaling Heuristics

netsh interface tcp set heuristics disabled

Run the above commands in elevated command prompt (with admin priviledges) before setting the autotuninlevel value. OK is shown when the command is accepted by the OS.