The Case for Moving Congestion Control Out of the Datapath
- Akshay Narayan ,
- Frank Cangialosi ,
- Prateesh Goyal ,
- Srinivas Narayana ,
- Mohammad Alizadeh ,
- Hari Balakrishnan
ACM HotNets |
With Moore’s law ending, the gap between general-purpose processor speeds and network link rates is widening. This trend has led to new packet-processing “datapaths” in endpoints, including kernel bypass software and emerging SmartNIC hardware. In addition, several applications are rolling out their own protocols atop UDP (e.g., QUIC, WebRTC, Mosh, etc.), forming new datapaths different from the traditional kernel TCP stack. All these datapaths require congestion control, but they must implement it separately because it is not possible to reuse the kernel’s TCP implementations. This paper proposes moving congestion control from the datapath into a separate agent. This agent, which we call the congestion control plane (CCP), must provide both an expressive congestion control API as well as a specification for datapath designers to implement and deploy CCP. We propose an API for congestion control, datapath primitives, and a user-space agent design that uses a batching method to communicate with the datapath. Our approach promises to preserve the behavior and performance of in-datapath implementations while making it significantly easier to implement and deploy new congestion control algorithms.