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
- A Compound TCP Approach for High-speed and Long Distance Networks, K. Tan, J. Song, Q. Zhang, M. Sridharan, Microsoft Research Technical Report MS-TR-2005-86, July 2005 (abstract,PDF)
- A Compound TCP Approach for High-speed and Long Distance Networks, K. Tan, J. Song, Q. Zhang, M. Sridharan, Infocom'06 (PDF)
- Kun Tan's Compound TCP page, including a publication list
- Performance Enhancements in the Next Generation TCP/IP Stack, The Cable Guy, Microsoft TechNet, November 2005. Contains a short section on Compound TCP
- Evaluation of TCP Congestion Control Algorithms on the Windows Vista Platform, Y. Li, SLAC Technical Note SLAC-TN-06-005, June 2006 (PDF)
- CTCP: Improving TCP-Friendliness Over Low-Buffered Network Links, K. Tan, J. Song, M. Sridharan, C. Ho, Microsoft Technical Report (PDF)
- Compound TCP (draft-sidharan-tcpm-ctcp-00.txt), M. Sridharan, presentation at IETF 69, July 2007 (PDF)
- Compound TCP: A New TCP Congestion Control for High-Speed and Long Distance Networks, M. Sridharan, K. Tan, D. Bansal, D. Thaler, October 2007, Internet-Draft (work in progress) draft-sridharan-tcpm-ctcp-01.txt
– Main.SimonLeinen - 26 Feb 2007 - 19 Jan 2011