Please consider donating:


IP Autotuning in Vista

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, Microsoft has 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, the developers have seen 1000% (10x) throughput improvements in internal testing over underutilized wide-area network links.


However, this new feature doesn’t work with clients, servers and devices that don’t support this option. (By default, all of the previous versions of Windows have the option turned off by default), and some OS’es (such as embedded Linux OS’es in wireless routers) don’t like the option at all, and tend to trip over the option … 


Have you ever noticed that your wireless Linksys/Netgear/Dlink router stops working after a while, especially when your Vista is copying a vast amount of data thru the wireless router ?   If you didn’t experience this behaviour with older versions of Windows, then you may want to disable IP Autotuning.  To be honest, as long as you don’t communicate with other Vista computers or Windows 2008 servers, you wouldn’t benefit from it at all…  If you’re doing a lot of small transfers, you would even see extra overhead because of the "window size negotiation" process…



So how to your control IP autotuning under Vista ?


To check the current status :


c:\netsh interface tcp show global


Querying active state…

TCP Global Parameters
Receive-Side Scaling State          : enabled
Chimney Offload State               : enabled
Receive Window Auto-Tuning Level    : disabled
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled


To disable IP autotuning :


c:\netsh interface tcp set global autotuning=disabled



To enable IP autotuning (default Vista behaviour)


C:\netsh interface tcp set global autotuning=normal



© 2008, Peter Van Eeckhoutte (corelanc0d3r). All rights reserved.

Comments are closed.

Corelan Training

We have been teaching our win32 exploit dev classes at various security cons and private companies & organizations since 2011

Check out our schedules page here and sign up for one of our classes now!


Want to support the Corelan Team community ? Click here to go to our donations page.

Want to donate BTC to Corelan Team?

Your donation will help funding server hosting.

Corelan Team Merchandise

You can support Corelan Team by donating or purchasing items from the official Corelan Team merchandising store.

Protected by Copyscape Web Plagiarism Tool

Corelan on Slack

You can chat with us and our friends on our Slack workspace:

  • Go to our facebook page
  • Browse through the posts and find the invite to Slack
  • Use the invite to access our Slack workspace
  • Categories