Data Center TCP


DCTCP is an enhancement to the TCP congestion control algorithm for data center networks. It leverages Explicit Congestion Notification (ECN), a feature which is increasingly becoming available in modern data center switches. DCTCP sources extract multi-bit feedback on congestion from the single-bit stream of ECN marks by estimating the fraction of marked packets. In doing so, DCTCP sources react to the extent of congestion, not just the presence of congestion as in TCP.  This finer level of control allows DCTCP to operate with very low buffer occupancies while simultaneously achieving high throughput.


  1. Analysis of DCTCP: Stability, Convergence, and Fairness

  2. Mohammad Alizadeh, Adel Javanmard, and Balaji Prabhakar

  3. SIGMETRICS 2011.

  4. Data Center TCP (DCTCP)

  5. Mohammad Alizadeh, Albert Greenberg, David A. Maltz, Jitendra Padhye, Parveen Patel, Balaji Prabhakar, Sudipta Sengupta, and Murari Sridharan

  6. SIGCOMM 2010.


  1. Analysis of DCTCP: Stability, Convergence, and Fairness, SIGMETRICS 2011, San Jose, June 9, 2011.

  1. Data Center TCP (DCTCP), SIGCOMM 2010, New Dehli, India, August 31, 2010.

  1. This talk introduced the ECN-hat algorithm which influenced the development of DCTCP.

  2. In Defense of TCP, Workshop on “The Future of TCP: Train-wreck or Evolution?”, Stanford, April 1, 2008.


Linux Download

A DCTCP patch (version 1.1.0) is now available. The patch applies to Linux

  1. dctcp-

Latest and previous versions are also available here on GitHub.

ns-2 Simulation Download

A DCTCP implementation for ns-2 is now available. The patch applies to ns-2.35.

  1. dctcp-ns2-rev1.0.tar.gz


  1. Stanford

        Mohammad Alizadeh

        Abdul Kabbani

        Masato Yasuda (visiting from NEC Japan)      

        Balaji Prabhakar

  1. Microsoft

       Albert Greenberg

       David A. Maltz

       Jitendra Padhye      

       Parveen Patel

       Sudipta Sengupta

       Murari Sridharan

Figure: Queue length measured on a Broadcom 1Gbps switch. Two long flows are launched from distinct 1Gbps ports to a common 1Gbps port. For DCTCP, the marking threshold, K, is set to 20 packets (30KBytes) at the switch. Both TCP and DCTCP achieve full throughput in the experiment.