15 May 2014 | Pat Bosshart†, Dan Daly*, Glen Gibb†, Martin Izzard†, Nick McKeown†, Jennifer Rexford**, Cole Schlesinger**, Dan Talayco†, Amin Vahdat*, George Varghese†, David Walker**
The paper introduces P4, a high-level language for programming protocol-independent packet processors, designed to work in conjunction with SDN control protocols like OpenFlow. The authors propose P4 as a future evolution of OpenFlow, aiming to achieve three main goals: reconfigurability in the field, protocol independence, and target independence. They argue that the current OpenFlow specification is becoming increasingly complex and inflexible, with a growing number of header fields and limited extensibility. P4 aims to address these issues by allowing programmers to define packet parsing and processing logic independently of the underlying hardware, enabling dynamic reconfiguration and support for new packet formats.
The paper outlines an abstract forwarding model that generalizes how packets are processed in different forwarding devices and technologies. It describes the configuration and population phases of the forwarding process, where configuration sets the parser and match-action stages, while population adds or removes entries to these tables. The authors propose a two-step compilation process: first, expressing packet processing programs using an imperative language (P4), and second, translating these programs into target-specific configurations through a compiler.
A detailed example, the $m$ Tag, is provided to illustrate how P4 can be used to implement a custom packet processing solution. The example demonstrates how P4 can be used to add a hierarchical label to packets, combining features of MPLS and simple tags. The paper concludes by discussing the potential of P4 to enable more flexible and future-proof network switches, contributing to the broader goal of software-defined networking (SDN).The paper introduces P4, a high-level language for programming protocol-independent packet processors, designed to work in conjunction with SDN control protocols like OpenFlow. The authors propose P4 as a future evolution of OpenFlow, aiming to achieve three main goals: reconfigurability in the field, protocol independence, and target independence. They argue that the current OpenFlow specification is becoming increasingly complex and inflexible, with a growing number of header fields and limited extensibility. P4 aims to address these issues by allowing programmers to define packet parsing and processing logic independently of the underlying hardware, enabling dynamic reconfiguration and support for new packet formats.
The paper outlines an abstract forwarding model that generalizes how packets are processed in different forwarding devices and technologies. It describes the configuration and population phases of the forwarding process, where configuration sets the parser and match-action stages, while population adds or removes entries to these tables. The authors propose a two-step compilation process: first, expressing packet processing programs using an imperative language (P4), and second, translating these programs into target-specific configurations through a compiler.
A detailed example, the $m$ Tag, is provided to illustrate how P4 can be used to implement a custom packet processing solution. The example demonstrates how P4 can be used to add a hierarchical label to packets, combining features of MPLS and simple tags. The paper concludes by discussing the potential of P4 to enable more flexible and future-proof network switches, contributing to the broader goal of software-defined networking (SDN).