Paxos Made Switch-y

By: 
Huynh Tu Dang, Marco Canini, Fernando Pedone, Robert Soulé
Appears in: 
CCR April 2016

The Paxos protocol is the foundation for building many fault-tolerant distributed systems and services. This paper posits that there are significant performance benefits to be gained by implementing Paxos logic in network devices. Until recently, the notion of a switchbased implementation of Paxos would be a daydream. However, new flexible hardware is on the horizon that will provide customizable packet processing pipelines needed to implement Paxos. While this new hardware is still not readily available, several vendors and consortia have made the programming languages that target these devices public. This paper describes an implementation of Paxos in one of those languages, P4. Implementing Paxos provides a critical use case for P4, and will help drive the requirements for data plane languages in general. In the long term, we imagine that consensus could someday be offered as a network service, just as point-to-point communication is provided today.

Public Review By: 
Matteo Varvello

This paper describes an implementation of Paxos, a very popular consensus protocol, in P4, a programming language for flexible hardware. Such implementation aims at accelerating Paxos by shifting some of its application-level logic into network forwarding elements. The paper describes few modifications to Paxos dictated by such “switchy” design; for example, messages originated as part of the Paxos protocol need to be replaced by forwarding decisions. The paper also discusses potential extensions of P4 that would simplify the deployment of applications with such complex logics. The main reviewer’s concern was that the paper is a bit light, especially lacking a quantification of the impact of several design decisions linked with the usage of P4. However, the paper provides an interesting use case for P4 and the lessons learned can further help researchers in this field. Open sourcing the code by the authors was also particularly appreciated [1].