Compound TCP (CTCP) can speed up TCP Slow Start

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 KB949316 (Hotfix for Win2k3 enables CTCP)

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