Implementation of TCP-Africa for Linux 2.6

By Dana Jansens

COMP 3000 Course Project
Carleton University

TCP-Africa[1] is a conjestion control algorithm for the TCP protocol. The abstract from the original paper stated:

High capacity data transfers over the Internet routinely fail to meet end-to-end performance expectations. The default transport control protocol for best effort data traffic is currently TCP, which does not scale well to 100Mbps and higher networks over long distances. In congestion avoidance TCP is not swift enough to fully utilize resources over paths with a high delay bandwidth product. First attempts to alleviate this problem by equipping TCP with increased aggressiveness have shown the disadvantage of poor fairness with the ubiquitous standard TCP-Reno, or in some cases, even among two connections running over the same path. We propose a new delay sensitive congestion avoidance mode (TCP-Africa) that allows for scalable, aggressive behavior in large underutilized links, yet falls back to the more conservative TCP-Reno algorithm once links become well utilized and congestion is imminent. Through ns2 simulations we argue for the safety, efficiency, and fairness of TCP-Africa.

I implemented the TCP-Africa algorithm as a kernel module for the Linux 2.6 kernel. Around the same time, the YeAH-TCP algorithm was also implemented, a similar hybrid algorithm based on the work of TCP-Africa and others, and was added to the mainline kernel.

The code is available under the terms of the GNU GPL version 2: tcp_africa.diff, tcp_africa.c.


[1] King, Baranium, Riedi. TCP-Africa: An Adaptive and Fair Rapid Increase Rule for Scalable TCP. In Proceedings IEEE INFOCOM, Vol. 2005, pp 1838-1848.