The congestion control plane is a new API for writing congestion control algorithms. It provides three benefits:
To get started using CCP, please see our guide. It provides detailed setup instructions for running existing algorithms on CCP and a tutorial for writing new algorithms.
To learn more, please refer to our SIGCOMM 2018 paper.
If you have questions, you can reach us at ccp@csail.mit.edu
.
We have implemented several components in the CCP ecosystem:
libccp
is a convenience library which, given an IPC mechanism and the definitions of various congestion control primitives in the context of a datapath, can communicate with Portus
to run a congestion control algorithm.](https://github.com/ccp-project/ccp-kernel) implements a Linux kernel TCP datapath using the pluggable TCP API. We have also [
explored` an ebpf-powered Linux datapath.ccp-mtcp
is a fork of mTCP, a TCP stack on top of DPDK, which implements CCP support.ccp-quic
hosts a patch to QUIC which implements CCP support.ccp-mvfst
: Facebook’s production QUIC datapath, mvfst, includes support for CCP algorithms.We also have spoken with other datapath authors who are interested or in the process of implementing CCP datapaths as an easy way to support congestion control.
Finally, we have implemented or are aware of various congestion control algorithm implementations (bbr, copa, nimbus, Verus, BIC-DCTCP and more). If you have implemented a congestion control algorithm using CCP, or are considering doing so, please get in touch with us!
CCP algorithms perform similarly to their in-datapath counterparts. While we evaluate this more thoroughly in the paper, it it simplest to view this demo, comparing the Linux kernel implementation of BBR:
The CCP implementation of BBR performs similarly:
Should you wish to replicate the experiments in our paper, this set of scripts may be useful.