Sharing CPUs via Endpoint Congestion Control

Software network processing relies on dedicated cores and hardware isolation to ensure appropriate throughput guarantees. Such isolation comes at the expense of low utilization in the average case, and severely restricts the number of network processing functions one can execute on a host. In this paper we propose that multiple processing functions should simply share a CPU core, turning the CPU into a special type of "link". We use multiple NIC receive queues and the FastClick suite to test the feasibility of this approach. We find that, as expected, per core throughput decreases when more processes are contending; however the decrease is not dramatic: around 10% drop with 10 processes, and 50% in the worst case where the processing is very cheap (bridging). We also find that the processor is not shared fairly when the different functions have different per packet costs. Finally, we implement and test in simulation a solution that enables efficient CPU sharing by sending congestion signals proportional to per-packet cost for each flow. This enables endpoint congestion control (e.g. TCP) to react appropriately and share the CPU fairly.

[1]  Carlo Contavalli,et al.  Maglev: A Fast and Reliable Software Network Load Balancer , 2016, NSDI.

[2]  Luigi Rizzo,et al.  netmap: A Novel Framework for Fast Packet I/O , 2012, USENIX ATC.

[3]  Costin Raiciu,et al.  Datacenter Scale Load Balancing for Multipath Transport , 2016, HotMiddlebox@SIGCOMM.

[4]  Katerina J. Argyraki,et al.  RouteBricks: exploiting parallelism to scale software routers , 2009, SOSP '09.

[5]  Omar Elloumi,et al.  RED behavior with different packet sizes , 2000, Proceedings ISCC 2000. Fifth IEEE Symposium on Computers and Communications.

[6]  Mark Handley,et al.  The resource pooling principle , 2008, CCRV.

[7]  Costin Raiciu,et al.  Lost in Network Address Translation: Lessons from Scaling the World's Simplest Middlebox , 2015, HotMiddlebox@SIGCOMM.

[8]  Joseph Naor,et al.  Near optimal placement of virtual network functions , 2015, 2015 IEEE Conference on Computer Communications (INFOCOM).

[9]  Mark Handley,et al.  Improving datacenter performance and robustness with multipath TCP , 2011, SIGCOMM.

[10]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[11]  Laurent Mathy,et al.  Fast userspace packet processing , 2015, 2015 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS).

[12]  Florian Schmidt,et al.  Unikernels Everywhere: The Case for Elastic CDNs , 2017, VEE.

[13]  Mark Handley,et al.  Design, Implementation and Evaluation of Congestion Control for Multipath TCP , 2011, NSDI.