21.1 What is XCP?

XCP is a congestion control protocol that can be applied to any transport protocol. It performs especially well in very high delay-bandwidth product networks. Typically in large bandwidth-delay product networks, efficiency of TCP goes down in the event of multiple of packet losses and becomes unstable irrespective of queueing schemes used. However in similar environments, XCP, using a control theory based feedback model, achieves much more efficiency, stability and fairness by sending feedback from the network to the sender for setting the data flow into the network.

XCP's scalability results from the fact that it requires no per-flow state in the router to calculate the feedback. Most router-assisted congestion control systems maintain per-flow information used to allocate the resources. XCP keeps very little information in the router, and this information is chosen to minimize both the amount of router state and the per-packet operations needed to update that state.

For generality, XCP divides the resource allocation function between two controllers: a congestion controller that ensures that flows use all available capacity, and a fairness controller that ensures that flows are allocated the capacity fairly. Most congestion control systems fail to make this division, much less to implement as two conceptually distinct systems. This division allows a clear exposition and implementation of two basic resource allocation functions in XCP. XCP sources send additional information about their current round-trip times and router-assigned throughput in each packet. XCP routers insert feedback into the packets that is interpreted by the sources.

Although XCP may be implemented for any transport protocol, however as an initial test it has been implemented in TCP. The next section gives details of the way XCP is implemented in ns.

Tom Henderson 2011-11-05