TCP is the basic end-to-end transport protocol of the Internet, and its congestion control algorithm is fundamental to efficient, high-performance, and stable network operation. The TCP congestion control algorithm has been highly successful over many orders of magnitude in Internet growth, but recently it has begun to reach its limits. Making a significant advance in TCP congestion control to overcome these limits is a strategic technological problem for the Internet.
Gigabit file transfers, lossy wireless links, and high latency connections are all driving TCP congestion control outside of its natural operating regime. The resulting performance problems are of great concern for important scientific applications of the network. While there has been substantial research on this issue, most proposals are either tweaks to Van Jacobson’s algorithm or modified queue management techniques, or both. The requirement of extreme scalability together with robustness has inhibited serious proposals for using explicit feedback from congested routers, until now.
The recently-developed Explicit Control Protocol (XCP) represents a major advance in Internet congestion control. XCP delivers the highest possible application performance over a broad range of network infrastructure, including extremely high speed and very high delay links that are not well served by TCP. In so doing, it achieves maximum link utilizations and wastes no bandwidth due to packet loss. XCP is novel in separating the efficiency and fairness policies of congestion control, enabling routers to quickly make use of available bandwidth while conservatively managing the allocation of bandwidth to flows. XCP is built upon a new principle: carrying per-flow congestion state in packets. XCP packets carry a congestion header through which the sender requests a desired throughput. Routers make a fair per-flow bandwidth allocation without maintaining any per-flow state. Thus, the sender learns of the bottleneck router’s allocation in a single round trip.
The fundamental algorithm of XCP has been developed and published by Dina Katabi of MIT and Mark Handley of ICIR. Simulations indicate that XCP is powerful and scalable. In collaboration with Prof. Katabi, ISI is currently developing a BSD (Unix) implementation of XCP, funded by the NSF under the OptIPuter medium ITR, by DARPA, and by ISI.
The performance issues associated with TCP congestion control in these environments are summarized here.
The relationship of XCP to some other congestion control research is summarized here.
The description of XCP was first published by Dina Katabi and Mark Handley in ACM SIGCOMM 2002.
XCP has been analyzed and simulated but implementations do not yet exist. We are beginning the process of taking XCP from theory to practice.
Our goals are to:
11/05/2006: Spec updated, getting ready to publish as an experimental RFC (draft-falk-xcp-spec-02.txt, html).
10/17/2005: XCP-nodiv code release. Protocol specification, (draft-falk-xcp-spec-01.txt, html), updated to match.
10/19/2004: Spec updated, released as an Internet draft (draft-falk-xcp-spec-00.txt, html).
10/19/2004: Updated kernel implementation and tools for evaluating XCP are available here.
02/16/2004: First experimental results presented at PFLDnet2004.
02/13/2004: Pre-Beta XCP code BSD platform available, draft spec available.
08/15/2003: Alpha XCP code for BSD platform.
05/05/2003: Preliminary end-system code complete.
01/02/2003: Implementation kicks off at ISI.
BSD end-system and router kernel implementations come in three different releases.
Release 3.0: Based on FreeBSD 6.0. It features a new logging tool, debug header changes, new sysctls and includes some test scripts for verification.
Release 2.0: Based on FreeBSD 5.3. Queueing has changed to involve altq, sysctls have been added along with IPv6 support.
Release 1.0: Based on FreeBSD 4.8. This code reflects a small change in that the calculation of cwnd/rtt has been moved to the end host. This change removes the division operation from the per packet processing performed at the router.
Readme file can be found here. Source code tar ball can be found here. Extra tools can be found here.
A tarball of a recent ns-2 distribution (ns-2.28) containing XCP code matching the implementation is available here.
Send mail to firstname.lastname@example.org but be sure to subscribe here first. Mailing list archives can be found here.
last modified: October 17, 2005