Several months ago I noticed that my Windows 7 computer would stop downloading anything from the internet in my work network. However, when I went home and connected to that network there was no issues. Making this even more puzzling any Linux or XP machine on the network could download anything while on the work network. So Linux and XP are okay with no issues, only Windows 7 computers had issue but only on the work network. A little later I noticed that my Windows 2008 R2 servers were experiencing the same download issues. A few searches on the internet I found that the TCP receive windows auto-tuning feature is broken in Vista, 7, and 2008 R2. I also found the fix! Since then Microsoft released a Hot Fix patch but I still feel the simple command line works best because it is simple and gets the job done. Even the fix page is confusing. A bit annoying but now we need to do this to every new computer coming in since we are finally phasing out our XP machines with Windows 7. Below are the simple instructions. I am assume Windows 7 or Windows 2008 Server R2, this works for both.
The reason this is happening is because of the Sonicwall we have in place. I did some reading about the interaction but cannot speak intelligently on the exact reasons. I did find a PDF by Sonicwall which talk about their global VPN client but it still holds true for computers behind the Sonicwall on the internal network.
Process 3: TCP Applications on Vista are Slow
The issue is caused by Windows Scaling being handled incorrectly by the firewall device. To manually disable windows scaling, run the following command from the command prompt:
“netsh interface tcp set global autotuning=disabled”
Refer to the following URL for more information on this problem:
Instructions to remove the issue:
- Enter a command prompt as Administrator – Click Start / Type ‘CMD‘ / right-click on cmd.exe / click ‘Run as Administrator’.
- You can view your current TCP Global Parameters by typing ‘netsh interface TCP show global‘. You will see something like this;
- Disabling the Auto-Tuning type ‘netsh interface tcp set global autotuninglevel=disabled’. You will get a response of ‘ok’
- You can run the Show Global Command again to see the difference. ‘netsh interface TCP show global‘
The default setting is ‘Normal’, the possible settings you can use in the above command are:
- disabled: uses a fixed value for the tcp receive window. Limits it to 64KB (limited at 65535).
- highlyrestricted: allows the receive window to grow beyond its default value, very conservatively
- restricted: somewhat restricted growth of the tcp receive window beyond its default value
- normal: default value, allows the receive window to grow to accommodate most conditions
- experimental: allows the receive window to grow to accommodate extreme scenarios (not recommended, it can degrade performance in common scenarios, only intended for research purposes. It enables RWIN values of over 16 MB).