May 15, 2005
TCP Window Scaling
Recent versions of the 2.6 Linux kernel activate TCP window scaling by default. The problem is that apparently many content inspection devices do not handle this TCP option properly. The end result is that they strip the option from the resulting packet as it passes through the device. The scaling option works in conjunction with the TCP window size field to determine the actual TCP window size. The scaling option is a multiplier that is applied to the TCP window size value. The problem is that if an end device that supports window scaling increases the TCP window size beyond that which is supported in the traditional TCP window size field then it increments the scaling factor and the TCP window size value returns to a very small value (since it gets multiplied by the scaling factor). When the other side receives the packet the scaling option's been stripped so all it sees is a very small window size. This dramatically affects TCP's performance. Where I've seen problems typically are on mail servers. Large emails or emails with attachments end up triggering this problem and ultimately end up timing out. Packet traces show a lot of packet retransmissions once the transfer has reached a certain point. This problem is commonly seen on Fedora Core 2 mail servers. The fix is to deactivate TCP window scaling. Originally this was done by setting "net.ipv4.tcp_default_win_scale = 0" in /etc/sysctl.conf, but this may have changed in more recent kernels. This will cause TCP performance to return to normal.Posted 5 years, 3 months ago on May 15, 2005
The trackback url for this post is http://www.colynx.com/~bsneddon/blog/bblog/trackback.php/3/
The trackback url for this post is http://www.colynx.com/~bsneddon/blog/bblog/trackback.php/3/
Comments have now been turned off for this post