Visualizing how TCP window scaling improves throughput

Prior to IETF’s RFC 1323, the 16 bits allotted to describe the receive window size was limited to a maximum value of 65,535 bytes. Window scaling permits receive windows up to a gigabyte large through a scale factor defined in the first SYN and this approach was adopted in Windows and Linux in the 2000s:

image

In Windows 7 you can disable scaling factor with the following autotuninglevel command:

image 

image

 

In the latter case, the receive window’s max value is pegged at 64KB, while in the former, the window is left shifted 2 bits for a scaling factor of 2^2, or 256KB.  Using Microsoft’s TCP analyzer on a 5MB test file at 100 rtt it’s clear that in this case the scaled window allows a 2x improvement in throughput:

 

image