HTTP download speed difference in windows 7 vs Linux
I have a strange situation regarding a Windows PC which is showing limited internet transfer speeds for no apparent reason. If I am performing the same test on Linux box then I am getting good speed.
Upon intense debugging, I am able to diagnose and find out the root cause of the problem.
It was/is Windows HTTP packet fragmentation that happens locally. Basically its
how windows compile HTTP headers locally so found a fix to it.
We came across some TCP settings which restrict download speed in the windows
box, hence in order to permit download of large files, have modified below
settings:
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
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.