P4: high-level language for programming protocol-independent packet processors
The ONRC, in collaboration with Barefoot Networks, Google, Intel, Microsoft, and Princeton University, proposed P4 as a high-level language for programming protocol-independent packet processors.
P4 works in conjunction with SDN control protocols like OpenFlow. In its current form, OpenFlow explicitly specifies protocol headers on which it operates. This set has grown from 12 to 41 fields in a few years, increasing the complexity of the specification while still not providing the flexibility to add new headers. P4 now represents a straw-man proposal for how OpenFlow should evolve in the future.
We have three goals:
- Reconfigurability in the field: Programmers should be able to change the way switches process packets once they are deployed
- Protocol independence: Switches should not be tied to any specific network protocols – recent research has demonstrated the feasibility of such a fully reconfigurable switch chip, labeled RMT
- Target independence: Programmers should be able to describe packet-processing functionality independently of the specifics of the underlying hardware.
To realize the benefits of P4, we require a compiler to translate specifications from a high-level, abstract language like P4 to a flexible, reconfigurable hardware like RMT. We are working on different aspects of compilers that effectively translate logical packet processing specifications from P4 to low-level switch configurations. Currently, we are looking at the problem of mapping control plane, match-action lookup tables to physical memory blocks in different reconfigurable switch pipelines. We are studying different solutions to the mapping problem – from greedy heuristics to more flexible Integer Linear Programming (ILP) solutions. Ultimately, we seek fast, efficient, and scalable mapping algorithms that provide low latency, low power solutions across a set of packet switching architectures.
Visit p4.org for the open source P4 specification, compiler, and other tool chain
Use of the SDxCentral service directory is governed by our Terms of Service, including without limitation those sections under the headings "CONTENT", "LICENSING AND OTHER TERMS APPLYING TO CONTENT POSTED ON THE SDXCENTRAL SITES", "INDEMNITY; DISCLAIMER; LIMITATION OF LIABILITY" AND "COPYRIGHTS". Under no circumstances will SDxCentral be liable in any way for any Content, including, but not limited to, liability for any errors or omissions in any Content or for any loss or damage of any kind incurred as a result of the use of any Content posted, emailed or otherwise transmitted via the Sites.