Compound TCP was developed by Microsoft for the "Vista" operating system. It combines two types of congestion control mechanisms: TCP Reno's loss-based congestion control and TCP Vegas' delay-based congestion control. Compound TCP strives for good utilization of paths with a high bandwidth/delay product, and at the same time tries to be "fair" to other TCP variants when there is contention for resources. An additional design goal was that it should work well even when network buffers are small.


Windows Vista and Server 2008 implementations


Compound TCP is disabled by default on Windows 7 and Vista, but enabled in Windows Server 2008. To enable it, use


netsh interface tcp set global congestionprovider=ctcp


To disable, use


netsh interface tcp set global congestionprovider=none


from a privileged command shell.


Linux Compound-TCP code


The authors of YeAH-TCP have developed an implementation of Compound TCP for Linux, based on the existing Vegas code. Based on this, a more recent compound TCP implementation for Linux has been made, incorporating new features from the Internet Draft "draft-sridharan-tcpm-ctcp-01.txt".


Empirical Results


A comment in the BufferBloat debate quotes some measurement results over a broadband Internet connection. The results seem to indicate that Compound TCP indeed improves performance in that it reduced the size of queues at the bottleneck, and also reduced the variation in queue size. This is what one would expect, because Compound TCP explicitly includes a delay-based congestion control mechanism. But it's still nice that an actual improvement can be measured in a common real-life situation.


References



– Main.SimonLeinen - 26 Feb 2007 - 19 Jan 2011