- TCP window scale option
The TCP window scale option is an option to increase the TCP receive window size above its maximum value of 65,536 bytes. This TCP option, along with several others, is defined in IETF RFC 1323 which deals with Long-Fat networks, or LFN.
In fact, the throughput of a communication is limited by two windows:
congestion window and receive window. The first one tries not to exceed the capacity of the network (congestion control) and the second one tries not to exceed the capacity of the receiver to process data (flow control). The receiver may be overwhelmed by data if for example it is very charged (such as a Web server). Each TCP segment contains the current value of the receive window. If for example a sender receives an ack which acknowledges byte 4000 and specifies a receive window of 10000 (bytes), the sender will not send packets after byte 14000, even if the congestion window allows it.Why is this option needed?
This window scale option is needed for efficient transfer of data when the
bandwidth-delay product is greater than 64K. For instance, if a T1 transmission line of 1.5Mbits/second was used over a satellite link with a 513 millisecondround trip time (RTT), the bandwidth-delay product is (1500000*.513) = 769,500 bits or 96,188 bytes. Using a maximum buffer size of 64K only allows the buffer to be filled to 68% of the theoretical maximum speed of 1.5Mbits/second, or 1.02 Mbit/s.By using the window scale option, files can be transferred at nearly 1.5Mbit/second utilizing nearly all of the available bandwidth.
This option is also useful when sending large files greater than 64KB over slow networks.
By using the window scale option, the receive window size may be increased up to a maximum value of 1
gigabyte (1,073,741,824 bytes). This is done by specifying a one byte shift count in the header options field. The true receive window size is left shifted by the value in shift count. A maximum value of 14 may be used for the shift count value.Configuration of operating systems
Windows
TCP Window Scaling is implemented in Windows 2000, XP, Server 2003 and Vista operating systems. Vista has enabled it by default, while the other operating systems implement it as an option. [ [http://support.microsoft.com/kb/224829 Description of Windows 2000 and Windows Server 2003 TCP Features ] ] [ [http://msdn2.microsoft.com/en-us/library/ms819736.aspx TCP Receive Window Size and Window Scaling ] ] Because many routers and firewalls do not properly implement TCP Window Scaling, it can cause a user's Internet connection to malfunction intermittently for a few minutes, then appear to start working again for no reason. If "diagnose problem" is selected in Vista, an error message will be displayed "cannot communicate with primary DNS server." [ [http://www.tech-recipes.com/rx/1744/vista_tcp_cannot_communicate_primary_dns_server Vista: TCP Window Scaling Errors - Cannot communicate with Primary DNS Server - Tech-Recipes.com ] ]
There is also an issue if a firewall doesn't support the TCP extensions. [ [http://support.microsoft.com/kb/934430 Network connectivity may fail when you try to use Windows Vista behind a firewall device ] ]
And Outlook has performance issues (slow downloadrate). [ [http://support.microsoft.com/kb/940226/en-us How to troubleshoot performance issues in Outlook 2007] ]
Linux
Linux kernel s (from 2.6.8, August 2004) have enabled TCP Window Scaling by default. It chooses the good value of the option by default. The configuration parameters are found in the /proc filesystem, see pseudo-file /proc/sys/net/ipv4/tcp_window_scaling and its companions /proc/sys/net/ipv4/tcp_rmem and /proc/sys/net/ipv4/tcp_wmem (more information: man tcp, section sysctl).Sources
Wikimedia Foundation. 2010.