1

I have a strange situation regarding a Windows 7 Home Premium PC which is showing limited internet transfer speeds for no apparent reason.

The setup:

  • internal gigabit LAN, behind a TP-Link WDR3600 router running DD-WRT
  • fiber internet connection with 100Mbit/s download, 8Mbit/s upload
  • Windows 7 Home Premium PC connected via wired interface (gigabit)
  • Virtualbox Linux guest Virtual Machine running on the Windows PC
  • The VM has its network interface bridged on the wired host interface, and has a LAN IP address
  • on the same LAN there's a NAS providing files over HTTP (gigabit)
  • no HTTP proxy setup in windows, "automatically detect settings" is disabled in the LAN settings menu in Windows
  • QoS is disabled in the router
  • all tests are done via gigabit ethernet

Facts:

  • Transfer speeds from the internet aren't getting past ~20Mbit/s on the Windows PC, despite the internet connection not being saturated.
  • The exact same internet download from the Linux VM reaches the connection's limit of 100Mbit/s with no issues. This is true when the download is piped to /dev/null but also when it's written to disk
  • Downloading a file from the NAS to the Windows PC over HTTP hits ~600Mbit/s transfer speeds easily
  • MTU in both Windows and Linux is the same
  • Tried disabling Large Segment Offload on the wired network interface (windows), with no effect
  • Switched between Firefox, Chrome, and IE with no change in results
  • Speedtest.net in Windows reaches the 100/8 transfer speeds

Some discarded hipotheses:

  • not a hardware issue, since the Linux VM can download fast using the same interface, and LAN downloads also work fine
  • not a router issue, VM downloads are fast
  • not an internet connection issue, VM downloads are fast
  • not a disk speed limitation, VM downloads to disk are fast
  • not a browser-specific issue
  • not a fragmentation issue, MTU is the same in Windows and VM

Some possibilities:

  • Windows TCP stack limitation, or configuration related to HTTP

Any idea what's going on here? Why is Windows not taking up all the bandwidth it can?

1

Well, after some investigation it seems to have been a problem with Windows 7 TCP receive window scaling.

These were my initial TCP settings:

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : disabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : disabled
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.


C:\Windows\system32>netsh interface tcp show heuristics
TCP Window Scaling heuristics Parameters
----------------------------------------------
Window Scaling heuristics         : enabled
Qualifying Destination Threshold  : 3
Profile type unknown              : normal
Profile type public               : normal
Profile type private              : restricted
Profile type domain               : normal

My ethernet connection is classified as a "home" network, which seems to fall under the "Profile type private" category in the heuristics output.

According to this excellent article, disabling the heuristics should fix the issue.

Thus I did:

# disable heuristics
C:\Windows\system32>netsh interface tcp set heuristics wsh=disabled
Ok.

# enable receive-side scaling
C:\Windows\system32>netsh int tcp set global rss=enabled
Ok.

# manually set autotuning profile
C:\Windows\system32>netsh interface tcp set global autotuning=experimental
Ok.

# set congestion provider
C:\Windows\system32>netsh interface tcp set global congestionprovider=ctcp
Ok.

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : experimental
Add-On Congestion Control Provider  : ctcp
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled

After changing these settings downloading is fast again, hitting the internet connection's limit.

0

The issue with slow download speeds under Windows 7 and Windows Server 2008 R2 is due to a bug in TCP/IP stack. If between location A and location B you have very low latency (1-8 ms), you will notice slower than normal download speed. Apply KB2675785 from Microsoft https://support.microsoft.com/en-us/kb/2675785 to resolve the issue.

  • Please read the question again carefully. Your answer does not answer the original question. OP's issue is with his internet connection not a LAN connection to a Windows Server. – DavidPostill Feb 8 '16 at 22:08
  • 1
    I read the issue again and I stand by my response. The KB mentioned in my response is not limited to LAN-LAN connections or Windows Server. please read the KB description again. – INTEQ Feb 9 '16 at 22:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.