Compound TCP: Difference between revisions

Content deleted Content added
Supported platforms: Show, don't tell.
 
(57 intermediate revisions by 32 users not shown)
Line 1:
{{Short description|TCP congestion avoidance algorithm for Windows Vista and Server 2008}}
'''Compound TCP''' (CTCP) is a [[Microsoft]] algorithm that was introduced as part of the [[Windows Vista]] and Window Server 2008 [[Transmission Control Protocol|TCP]] stack. It is designed to aggressively adjust the sender's [[congestion window]] to optimise TCP for connections with large [[bandwidth-delay product]]s while trying not to harm [[fairness measure|fairness]] (as can occur with [[HSTCP]]). It is also available for Linux, as well as for Windows XP and Windows Server 2003 via a hotfix.<ref>[http://support.microsoft.com/kb/949316 A hotfix that adds Compound TCP (CTCP) support to computers that are running Windows Server 2003 or Windows XP is available]</ref>
{{Use American English|date=January 2019}}
{{Use mdy dates|date=January 2019}}
{{update|date=December 2016}}
'''Compound TCP''' (CTCP) is a [[Microsoft]] algorithm that was introduced as part of the [[Windows Vista]] and Window Server 2008 [[Transmission Control Protocol|TCP]] stack. It is designed to aggressively adjust the sender's [[congestion window]] to optimise TCP for connections with large [[bandwidth-delay product]]s while trying not to harm [[fairness measure|fairness]] (as can occur with [[HSTCP]]). It is also available for Linux, as well as for Windows XP and Windows Server 2003 via a hotfix.<ref>[http://support.microsoft.com/kb/949316 A hotfix that adds Compound TCP (CTCP) support to computers that are running Windows Server 2003 or Windows XP is available]<name="CTCPDownlevel"/ref>
 
==Principles of operation==
Like [[FAST TCP]] and [[TCP Vegas]], Compound TCP uses estimates of queueingqueuing delay as a measure of congestion; if the queueingqueuing delay is small, it assumes that no links on its path are congested, and rapidly increases its rate. Unlike However, unlike FAST and Vegasthem, it does not seek to maintain a constant number of packets queued.
 
Compound TCP maintains two congestion windows: a regular [[Additive increase/multiplicative decrease|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 queueingqueuing is experienced, the delay window gradually 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 queueingqueuing 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.{{Citation needed|date=April 2013}}
 
Descriptions of Compound TCP can be found in a conference paper,<ref>{{cite book |doi=10.1109/INFOCOM.2006.188|chapter=A Compound TCP Approach for High-Speed and Long Distance Networks |title=Proceedings IEEE INFOCOM 2006. 25TH IEEE International Conference on Computer Communications |year=2006 |last1=Tan |first1=K. |last2=Song |first2=J. |last3=Zhang |first3=Q. |last4=Sridharan |first4=M. |pages=1–12 |isbn=1-4244-0221-2 |s2cid=1741788 }}</ref> an Internet-Draft,<ref>{{cite news |last1=Tan |first1=Kun |last2=Sridharan |first2=Murari |last3=Bansal |first3=Deepak |last4=Thaler |first4=Dave |title=Compound TCP: A New TCP Congestion Control for High-Speed and Long Distance Networks |url=https://tools.ietf.org/html/draft-sridharan-tcpm-ctcp-02 |newspaper=Ietf Datatracker |language=en}}</ref> and a US patent.<ref>{{cite web |title=Compound transmission control protocol [US7577097B2] |url=https://patents.google.com/patent/US7577097 |website=Google Patents |language=en |date=22 March 2005}}</ref>
==Supported platforms==
===Windows Vista/2008/7===
 
===Windows 2003 &and XP x64===
CTCP is enabled by default in computers running beta versions of Windows Server 2008 and disabled by default in computers running Windows Vista and 7.
A hotfix is available that adds CTCP support to 64 bit Windows XP and Windows Server 2003.<ref name="CTCPDownlevel">[http://support.microsoft.com/kb/949316 A hotfix that adds Compound TCP (CTCP) support to computers that are running Windows Server 2003 or Windows XP is available]</ref>
 
The following registry key can be set to '''1''' to enable, or '''0''' to disable:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPCongestionControl
 
===Windows Vista/2008/7===
CTCP is enabled by default in computers running beta versions of Windows Server 2008 and disabled by default in computers running Windows Vista and 7.
 
CTCP can be enabled with the command:
Line 20 ⟶ 30:
Parameter "Add-On Congestion Control Provider" will either have a value of "none" if CTCP is disabled or "ctcp" if it is enabled.
 
===Windows 8= and up==
Since Windows 8, Windows uses [[Windows PowerShell|PowerShell]] command [https://technet.microsoft.com/en-us/library/hh826132(v=wps.630).aspx Set-NetTCPSetting] to modify the congestion control algorithm. Around 2018, Microsoft moved from CTCP to using CUBIC in Windows 10 and the Xbox, because it was seen as very delay sensitive and also worked poorly in data centre, where delay variation was an issue.
netsh cannot set congestion provider to ctcp under Windows 8. There currently is no way to set that option under Windows 8.<ref name="CTCPWindows8Unavailable">[http://social.technet.microsoft.com/Forums/en-US/w8itpronetworking/thread/f55027d7-f4cf-4681-96b5-b530c9dab7e0 TechNet Social thread on the netsh congestion provider problem under Windows 8]</ref>
 
===Windows 2003 & XP x64===
A hotfix is available that adds CTCP support to 64 bit Windows XP and Windows Server 2003.<ref name="CTCPDownlevel">[http://support.microsoft.com/kb/949316 A hotfix that adds Compound TCP (CTCP) support to computers that are running Windows Server 2003 or Windows XP is available]</ref>
 
The following registry key can be set to '''1''' to enable, or '''0''' to disable:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPCongestionControl
 
===Linux===
In addition to Windows, CTCP was also ported to [[Linux]] {{cspan|by Angelo P. Castellani.|date=November 2022}}. A patch derived from this was developed at Caltech, which included CTCP's TUning By Emulation (TUBE)., The patch wasand only availablereleased to researchers due to [[software patent]]s.<ref>{{cite web |url=http://netlab.caltech.edu/lachlan/ctcp/ |title=Compound TCP in Linux |accessdate=2011-01-04 |url-status=dead|archiveurl=https://web.archive.org/web/20080802222857/http://netlab.caltech.edu/lachlan/ctcp/ |archivedate=2008-08-02 }}</ref>{{better source|date=November 2022}} Since kernel version 2.6.17 the module has been incompatible and fails to compile due to kernel API changes.<ref>http://netlab.caltech.edu/lachlan/ctcp/</ref>
 
==See also==
Line 37 ⟶ 41:
* [[Transmission Control Protocol#Development|Transmission Control Protocol — Development]]
 
== References ==
{{reflist|2}}
 
== External links ==
* [http://tools.ietf.org/html/draft-sridharan-tcpm-ctcp Compound TCP Internet-Draft]
* [https://web.archive.org/web/20060424082735/http://research.microsoft.com/research/pubs/view.aspx?type=Technical%20Report&id=940 "A Compound TCP Approach for High-speed and Long Distance Networks"] July 2005
* [http://www.microsoft.com/technet/community/columns/cableguy/cg1105.mspx Performance Enhancements in the Next Generation TCP/IP Stack], The Cable Guy
* [http://research.microsoft.com/wnen-us/projects/ctcp.aspx/ The Compound TCP for High-speed and Long Distance Networks], Microsoft Research publication
* [https://web.archive.org/web/20070110215723/http://www.networkperformancedaily.com/2006/12/vistas_tcpip_promises_and_peri.html Vista's TCP/IP Promises and Perils], Article at Network Performance Daily
* [https://web.archive.org/web/20080802222857/http://netlab.caltech.edu/lachlan/ctcp/ Caltech's Compound TCP patch for Linux]
* Enabling CTCP on 2003/XP x64: [http://blog.tiensivu.com/aaron/archives/1537-KB-949316-Add-Compound-TCP-CTCP-support-to-XP-and-Server-2003.html] {{Webarchive|url=https://web.archive.org/web/20080506141517/http://blog.tiensivu.com/aaron/archives/1537-KB-949316-Add-Compound-TCP-CTCP-support-to-XP-and-Server-2003.html |date=May 6, 2008 }},[http://blog.tiensivu.com/aaron/archives/901-Compound-TCP-congestion-control-algorithm-in-Vista-can-make-lossyhigh-latency-connections-behave-better..html] {{Webarchive|url=https://web.archive.org/web/20080430113637/http://blog.tiensivu.com/aaron/archives/901-Compound-TCP-congestion-control-algorithm-in-Vista-can-make-lossyhigh-latency-connections-behave-better..html |date=April 30, 2008 }}
* [http://www.hamilton.ie/net/delay_tests_final.pdf Report on experimental evaluation of Compound TCP] [http://www.hamilton.ie Hamilton Institute] and [http://netlab.caltech.edu Caltech], March 2008.
* [http://www.comp.nus.edu.sg/~wuxiucha/research/reactive/publication/ctcp_study.pdf A simulation-based study of Compound TCP] {{Dead link|date=May 2016}} July 14, 2008
 
{{DEFAULTSORT:Compound Tcp}}
[[Category:TransmissionTCP Controlcongestion Protocolcontrol]]