Welcome to the P4 website.

In 2013 a group of us* came together to define P4, a high-level language for programming future flexible network switches. P4 has three goals:
  1. Protocol independence: Switches should not be tied to any specific network protocols.
  2. Target independence: Programmers should be able to describe packet processing functionality independently of the specifics of the underlying hardware.
  3. Reconfigurability in the field: Programmers should be able to change the way switches process packets once they are deployed.

About the P4 Consortium and This Web Site

The main purpose of The P4 Language Consortium is to create a thriving open source community to perfect the P4 language and encourage its widespread adoption to design network systems. We hope P4 will encourage the creation and availability of more flexible forwarding chips, and allow network designers and operators to decide how packets are processed in their networks.

The consortium intends to use this site for the following:

  • To distribute the P4 language specification; see the Spec tab
  • To make available any open source code that supports P4; for example
    • Switch simulators
    • Example P4 programs
    • P4 compilers
    • P4 and network debuggers and other tools.
  • To promote the activities of the P4 community and provide useful resources for developers. See the the Resources tab.
*Authors of the P4 paper: Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George Varghese, Dave Walker.