Paper: Stateless Load-Aware Load Balancing in P4

Together with my students, Benoit Pit–Claudel (X15) and Yoann Desmouceaux (X11), as well as my colleague Mark Townsley, and my good friend Pierre Pfister (X08), I have committed a paper entitled “Stateless Load-Aware Load Balancing in P4” — part of our “Infrastructure for Big Data” initiative, and essentially demonstrating the ability to implement the ground-breaking load balancer 6LB in hardware.

The paper was presented this week at the 1st P4 European Workshop (P4EU) this week:

Abstract:

Leveraging the performance opportunities offered by programmable hardware, stateless load-balancing architectures allowing line-rate processing are appealing. Moreover, it has been demonstrated that significantly fairer load-balancing can be achieved by an architecture that considers the actual load of application instances when dispatching connection requests. Architectures which maintain per-connection state for resiliency and/or track application load state for fairness are, however, at odds with hardware-imposed memory constraints. Thus, a desirable load-balancer for programmable hardware would be both stateless and able to dispatch queries to application instances according to their current load.

This paper presents SHELL, a stateless application-aware load-balancer combining (i) a power-of-choices scheme using IPv6 Segment Routing to dispatch new flows to a suitable application instance from among multiple candidates, and (ii) the use of a covert channel to record/report which flow was assigned to which candidate in a stateless fashion. In addition, consistent hashing versioning is used to ensure that connections are maintained to the correct application instance, using Segment Routing to “browse” through the history when needed. The stateless design of SHELL makes it suitable for hardware implementation, and this paper describes the implementation of a P4-NetFPGA prototype. A performance evaluation of this SHELL implementation demonstrates throughput and latency characteristics comparable to other stateless load-balancing implementations, while enabling application instance-load-aware dispatching and significantly increasing per-connection consistency resiliency.

Oh, and that other picture? Well, immediately after submitting the camera-ready version of the paper, I happened to be in Japan for business, walking down a street in Roppongi … seeing “SHELLs cafe”…