1fa9 Compound TCP (CTCP) can speed up TCP Slow Start | Network | Smallvoid.com

Compound TCP (CTCP) can speed up TCP Slow Start

14 August 2009 by Snakefoot | Comment » | Trackback Off
Microsoft have implemented their own homemade congestion provider as an alternative to the standard TCP congestion provider. It is called Compound TCP (CTCP) and attempts to help certain connection types where TCP Slow Start takes forever:
  • High bandwidth connections requiring very large receive windows (RWIN)
  • Lossy connections requires lots of retransmission if the RWIN is too large.
These types of connection are becoming more common, as more international companies want to connect their different long distance offices with high speed connections.

TCP slow start is a way to probe the network connection, where one "slowly" increases the TCP Send Window as one verifies that the network connection can handle it. If retransmissions are required then it will slow down the growth of the TCP Send Window. If having a high bandwidth and high latency connection, then it might take an hour or more for TCP to make use of the full bandwidth. CTCP allows the TCP Send Window to grow faster, even if retransmissions are needed, but only if it detects that network connection can handle it.

To change the congestion provider to CTCP (default on Windows 2008):

netsh interface tcp set global congestionprovider=ctcp

To revert the congestion provider to default TCP (default on Windows Vista):

netsh interface tcp set global congestionprovider=none

More Info Wiki - Compound TCP
More Info Microsoft Research - Document about CTCP
More Info Cable Guy - Compound TCP
More Info MS KB 949316 (Hotfix for Win2k3 enables CTCP)

Related Configure initial congestion window to speed up TCP slow start
Related TCP/IP RWIN Auto-Tuning

Updated: 10 October 2012

Leave a comment


NB! Use the Forum for computer help and off-topic questions.

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>


0