MS Windows

Windows 7 / Windows Vista

Windows Vista/7 includes TCP Autotuning. It will use up to a 16 MB maximum receive window.

Vista/7 also includes "Compound TCP (CTCP)", which is similar to cubic on Linux. To enable this, set the following:

   netsh interface tcp set global congestionprovider=ctcp

If you even need to disable / re-enable autotuning, here are the commands:

   netsh interface tcp set global autotuninglevel=disabled
netsh interface tcp set global autotuninglevel=normal

Note: You have to have administrator rights for these commands to work.
To launch a command prompt with administrator rights:

Click start
Type CMD.EXE in the search box
select yes in the UAC dialog box.

There is no way to adjust the default TCP buffer in Vista/7, which is 64 KB. Also, the Windows Vista/7 autotuning algorithm is not used unless the RTT is greater than 1 ms, so single stream TCP will be throttled on a LAN by this small default TCP buffer.

Note: We have received reports that on Windows 2008 R2 server, TCP window scale is broken when the RTT is between 1 and 8ms. Hopefully there will be a patch soon.

For more information:

Recommended: Windows 7, Vista, 2008 Tweaks
  TCP Receive Window Auto-Tuning in Vista
  Enterprise Networking with Windows Vista

Windows XP

Note that the tuning settings described here may decrease performance of hosts connected at rates of OC3 (155 Mbps) or less, such as home users on Cable/DSL connections.

 The easiest way to tune TCP under Windows XP is to get DrTCP from "DSL Reports". Set the "Tcp Receive Window" to your computed BDP (e.g. 4000000), turn on "Window Scaling" "Selective Acks", and "Time Stamping".

Other programs that allow you to edit Windows TCP settings include SG TCP Optimizer.

To verify the changes, you can use the Windows Registry editor to verify the following:

 # turn on window scale and timestamp option
# set default TCP receive window size
# set max TCP send/receive window sizes (max you can set using setsockopt call)

For more information:

Windows network tuning.
Useful: TCP Configuration Parameters
  TCP/IP Implementation Details
  Windows 2000/XP Registry Tweaks