Correctly functioning congestion control (CC) is crucial to the efficient operation of the Internet and IP networks in general. CC dynamically balances a flow's throughput against the inferred impact on the network, lowering throughput to protect the network as required.
The FreeBSD operating system's TCP stack currently utilises the defacto standard NewReno loss-based CC algorithm, which has known problems coping with many aspects of modern data networks like lossy or large bandwidth/delay paths.
There is significant and ongoing work both in the research community and industry to address CC related problems, with a particular focus on TCP because of its ubiquitous deployment and use.
CAIA's ongoing work with FreeBSD's TCP stack and congestion control implementation has progressively matured. This project aims to refine our prototypes and integrate them into FreeBSD.
- Integrate support for modularised congestion control algorithms into the kernel.
- Integrate the Khelp framework into the kernel.
- Add the Enhanced Round Trip Time (ERTT) Khelp module to allow support for delay-based congestion control algorithms.
- Add modular implementations of the existing NewReno and five new congestion control algorithms - CUBIC, HTCP, Vegas, HD and CHD.
- Characterise and compare the performance of the new modularised TCP stack running NewReno against the existing unmodularised TCP stack.
The project has concluded.