Papers › Restructuring Endpoint Congestion Control

Restructuring Endpoint Congestion Control

20 Aug 2018SIGCOMM '18 2018 8archive 2025-07-28

Akshay Narayan, Frank Cangialosi, Deepti Raghavan, Prateesh Goyal Srinivas Narayana, Radhika Mittal, Mohammad Alizadeh, Hari Balakrishnan

Overview: CCP provides a simple and convenient programming interface for writing real, scalable implementations of congestion control algorithms in user-space, so you can focus purely on the algorithmic details and not battle the Linux kernel. Write algorithms in Rust or Python rather than C, without having to ever recompile the kernel and without worrying about crashing the kernel. Your algorithm also instantly runs on any other datapath we support (Google QUIC and mTCP-on-DPDK at the moment). If you implement a new algorithm on CCP, please let us know and we will add your project to a list of new algorithms we maintain. Abstract: This paper describes the implementation and evaluation of a system to implement complex congestion control functions by placing them in a separate agent outside the datapath. Each datapath—such as the Linux kernel TCP, UDP-based QUIC, or kernel-bypass transports like mTCP-on-DPDK—summarizes information about packet round-trip times, receptions, losses, and ECN via a well-defined interface to algorithms running in the off-datapath Congestion Control Plane (CCP). The algorithms use this information to control the datapath’s congestion window or pacing rate. Algorithms written in CCP can run on multiple datapaths. CCP improves both the pace of development and ease of maintenance of congestion control algorithms by providing better, modular abstractions, and supports aggregation capabilities of the Congestion Manager, all with one-time changes to datapaths. CCP also enables new capabilities, such as Copa in Linux TCP, several algorithms running on QUIC and mTCP/DPDK, and the use of signal processing algorithms to detect whether cross-traffic is ACK-clocked. Experiments with our user-level Linux CCP implementation show that CCP algorithms behave similarly to kernel algorithms, and incur modest CPU overhead of a few percent.

PaperPDFCode

Code

ccp-project/portus mentioned in paper report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

Not run by Syntology. Nothing on this page verifies that the listed code works.

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections