Windows Vista, like Windows XP SP2 or Windows XP SP3, has also limit the number of concurrent simultaneous half-open TCP connections or sync packets that the system can establish at any one time. To make thing worse, the TCP/IP network protocol stack in Windows Vista has been rewritten so that Windows Vista can auto adapt and optimize network settings according to network connection configuration. The changes to Windows Vista networking may make peer-to-peer downloading and uploading such as BitTorrent (BT) network crawling at slow speed.

P2P users using BitTorrent client such as uTorrent, BitComet, ABC, Azureus, or eDonkey network client such as eMule resorts to various workarounds in order to speed up the torrents download speed. Other than the usual port forwarding in router, firewall setting to unblock the BT client or other P2P client, and tweaking of options in the client itself, some users use patched tcpip.sys that remove the half-open connection limit imposed by Microsoft.

If you don’t want to modify or patch the the tcpip.sys of the system, here’s another workaround which you can try if the change will solve the slow download problem and increase the P2P BitTorrent or ED2K download speed.

By default, Windows Vista enables Receive Window Scaling and uses a RWIN (TCP/IP Receive Window) of 256 bytes with a scale factor of 8 (256^2*8=64K bytes) when performing the handshake, which allows the maximum size of RWIN at 16,776,960 bytes. Some older routers, switches, servers or network equipment do not negotiate the scale factor, and will always communicate with a RWIN of 65536 bytes. Thus in when Windows Vista connects with 256 bytes RWIN, the connection speed will have slow start or dropped automatically.

The following command will set the TCP Auto Tuning feature to highly restricted, which allows the TCP/IP window to grow beyond its default value, and instructs Windows Vista to use RWIN of 16,384 bytes with a scale factor of 2 (16384^2*2=64K bytes), with a maximum size of 262,140 bytes. Open an elevated command prompt to run the command.

netsh interface tcp set global autotuninglevel=highlyrestricted

If restricting TCP/IP Auto Tuning level doesn’t help, try the other values possible for the autoTuningLevel parameter:

  • disabled – Fix the receive window at the default value, which is 65536 bytes RWIN.
  • highlyrestricted – Allow for the receive window to grow beyond the default value, but do so very conservatively.
  • restricted – Allow for the receive window to grow beyond the default value, but limit such growth in some scenarios.
  • normal – Allow for the receive window to grow to accommodate almost all scenarios.
  • experimental – Allow for the receive window to grow to accommodate extreme scenarios.

Reboot the computer after changing this setting. The changing the autotuninglevel will also solve problems such as slow loading of website’s web page, or web site sending data slowly or drops the data completely as described in KB929868, or other slow connection problem such as slow downloading of POP3 email.