Compound TCP
From Wikipedia, the free encyclopedia
Compound TCP (CTCP) is a Microsoft algorithm that is part of the Windows Vista and Window Server 2008 TCP stack. It is designed to aggressively adjust the sender's congestion window to optimise TCP for connections with large bandwidth-delay products while trying not to harm fairness (as can occur with HSTCP). It is also available for Windows XP and Windows Server 2003 via a hotfix. [1]
Contents |
[edit] Principles of operation
Like FAST TCP and TCP Vegas, compound TCP uses estimates of queueing delay as a measure of congestion; if the queueing delay is small, it assumes that no links on its path are congested, and rapidly increases its rate. However, unlike FAST and Vegas, it does not seek to maintain a constant number of packets queued.
Compound TCP maintains two congestion windows: a regular AIMD window and a delay-based window. The size of the actual sliding window used is the sum of these two windows. The AIMD window is increased the same way that TCP Reno increases it. If the delay is small, the delay-based window increases rapidly to improve the utilisation of the network. Once queueing is experienced, the delay window graudally decreases to compensate for the increase in the AIMD window. The aim is to keep their sum approximately constant, at what the algorithm estimates is the path's bandwidth-delay product. In particular, when queueing is detected, the delay-based window is reduced by the estimated queue size to avoid the problem of "persistent congestion" reported for FAST and Vegas. Thus, unlike TCP-Illinois and its precursor TCP Africa, Compound TCP can reduce its window in response to delay. This increases its fairness to Reno.
[edit] Supported platforms
[edit] Windows Vista/2008
CTCP is enabled by default in computers running beta versions of Windows Server 2008 and disabled by default in computers running Windows Vista. CTCP can be enabled with the command:
netsh interface tcp set global congestionprovider=ctcp
or disabled with the command:
netsh interface tcp set global congestionprovider=none
[edit] Windows 2003 & XP x64
A hotfix is available that adds CTCP support to 64 bit Windows XP and Windows Server 2003. [1]
The following registry key can be set to 1 to enable, or 0 to disable:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPCongestionControl
[edit] Linux
In addition to Windows, CTCP has also been ported to Linux by Angelo P. Castellani. A patch derived from this has been developed at Caltech, which includes CTCP's TUning By Emulation (TUBE).
[edit] See also
- TCP congestion avoidance algorithm
- Explicit Congestion Notification
- Transmission Control Protocol#Development_of_TCP
[edit] References
[edit] External links
- "A Compound TCP Approach for High-speed and Long Distance Networks" July 2005
- Performance Enhancements in the Next Generation TCP/IP Stack, The Cable Guy
- The Compound TCP for High-speed and Long Distance Networks, Microsoft Research publication
- Vista's TCP/IP Promises and Perils, Article at Network Performance Daily
- Caltech's Compound TCP patch for Linux
- Enabling CTCP on 2003/XP x64: [1],[2]

