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.