On the surface, Windows Vista’s TCP Auto-Tuning feature sounds like a great idea. For those of you who are not familiar with what it does, the Microsoft Windows Core Networking group describes it in detail.
At any given time, the amount that TCP can send is governed by three factors: the congestion window, the receive window and the number of bytes available to send. Without using TCP window scaling (which is disabled by default in previous versions of Windows), the maximum receive window a receiver can advertise is 64K bytes. Since the congestion window is usually greater than 64K bytes in high-bandwidth/high-latency networks, the receive window is often the limiting factor if the application is submitting enough data. In previous versions of Windows, users can work around this problem by setting the TcpWindowSize registry key value. However, TcpWindowSize is a global setting applied to all connections, and it’s often hard for users to know the appropriate window size to set. To address this issue in Windows Vista, we implemented TCP auto-tuning. It enables TCP window scaling by default and automatically tunes the TCP receive window size based on the bandwidth delay product (BDP) and the rate at which the application reads data from the connection. With TCP auto-tuning, we have seen 1000% (10x) throughput improvements in internal testing over underutilized wide-area network links.
While this all sounds great, practically speaking there are many instances where the auto-tuning feature is more trouble than it’s worth. Due to incompatibilities with certain routers and web sites, the auto-tuning feature may actually bring your browser to a stand-still or even result in a complete crash. Thankfully disabling the feature is pretty painless.
To disable auto-tuning, from the command prompt enter the following line:
netsh interface tcp set global autotuning=disabled
Should you ever need to re-enable it just use the following command:
netsh interface tcp set global autotuning=normal
For more information about the auto-tuning feature see the Microsoft Windows Core Networking blog post on Advances in Windows Vista TCP/IP.