Slow / Stalled Downloads in Windows

Download frustration

No that is not me.

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:
http://support.microsoft.com/kb/934430

 

Instructions to remove the issue:

  1. Enter a command prompt as Administrator – Click Start / Type ‘CMD‘ / right-click on cmd.exe / click ‘Run as Administrator’.
  2. You can view your current TCP Global Parameters by typing ‘netsh interface TCP show global‘.  You will see something like this;

    TCP Auto-Tuning

    Show Global

  3. Disabling the Auto-Tuning type ‘netsh interface tcp set global autotuninglevel=disabled’.  You will get a response of ‘ok’

    Disable Auto-Tuning

    Disable

  4. You can run the Show Global Command again to see the difference. ‘netsh interface TCP show global
TCP Auto-Tuning

Note the difference

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).

New Web Server

One of the easier project so far was a new web server.  Our old web server was the same server as our aging Exchange 2003 server so to increase performance and remove some of the hard drive burden from Exchange I made a new Windows 2008 R2 server and transferred all web services.  Working with the webmaster we successfully cleaned up all broken links and had the page working within a few hours.

Like I said, one of my easier projects.

New Servers

24 Cores

The time is well overdue for a server refresh.  After researching and discussions we decided to purchase four Dell PowerEdge R715s.  Each with two AMD Opteron processors for a total of 24 cores per server.  We maxed out the ram at 64GB for each server.  All connected to a PowerVault md3200i iSCSI SAN with 1.2 TB of storage.  All of our current physical servers, and the few virtual server we have, will eventually transition over to the Citrix XenServer 5.6 environment I am building on these servers.  In the end we will have a total of about fourteen virtual servers running.  The specs will give us ample speed plus have room to grow.  I am sure the server count will increase before I finish the virtualization.

Anticipating the growth we purchased Windows Server 2008 R2 DataCenter.  This give us unlimited server installs.  The estimate is ten server installs to break even making this decision easier for us.  A decent article I found on ZDNet explains the theory well.  The simplicity of being able to install another server when the need comes without having to worry about licensing is worth the cost to me either way.

Planned Virtual Servers:

  1. Domain Controller 1
  2. Domain Controller 2
  3. File Server
  4. Web Server
  5. CRM server
  6. Citrix XenApp 1
  7. Citrix XenApp 2
  8. QuickBooks Server
  9. Network services server
  10. Exchange 2010 server
  11. Print Server
  12. SQL server
  13. ERP Server
  14. Domain Admin Remote login server – This allows the domain admins to login remotely to administer the entire network from offsite.