2006 2006 is over, come again next year! Presentations

Recent congestion control advancements in Linux


This paper is about the recent advancements in congestion control for networks in the Linux kernel. Specifically I focus on the TCP congestion framework, the implementation of the DCCP protocol stack and the restructuring of large parts of the TCP code base.

Linux has had multiple TCP congestion methods added to it and the subsequent growth of the codebase has made development difficult. As a result a congestion control framework has been introduced.

In this paper I outline how the congestion control framework was used to implement TCP-Nice. TCP-Nice is a congestion control mechanism that drops the transmit rate of a TCP flow when there is congestion, much like nice does for CPU usage by processes in the Unix operating system.

The rationale behind Datagram Congestion Control Protocol (DCCP) and the current status of the protocol is also discussed. I then outline the implementation of the DCCP protocol in the Linux kernel and the lessons learned on kernel development in this area.

At present there is an effort to abstract much of the TCP codebase and move it into a generic IP implementation. The reasoning behind this is to facilitate the implementation of new protocols like DCCP and to improve the implementation of existing protocols such as SCTP. An assessment of this infrastructure with regard to the implmentation of new protocols is provided.

Conclusions are drawn on the current state of congestion control protocol development in the Linux kernal, along with a statement of the future work in this area.


Netem -

TCP congestion framework by Stephen Hemminger -

TCP protocol abstraction is being done by Arnaldo Carvalho de Melo in Dave Miller's net 2.6.14 git tree -;a=summary

DCCP homepage -

Linux DCCP implementation being led by Arnaldo -

Ian McDonald

I am currently undertaking a PhD in regards to congestion control and have previously had 15 years in the workforce. I am currently developing DCCP for Linux which is in the process of being merged into the kernel