Content deleted Content added
m →top: capitalization |
m Bot: link syntax and minor changes |
||
Line 20:
== History ==
The programming language P4 was originally described in a SIGCOMM CCR paper in 2014 titled “Programming Protocol-Independent Packet Processors”<ref>{{cite web|url=http://www.sigcomm.org/node/3503|title=P4: Programming Protocol-Independent Packet Processors|date=July 2014|accessdate=7 April 2015}}</ref> – the alliterative name shortens to “P4”. The first P4 workshop took place in June, 2015
==Design==
Line 29:
===Protocol independence===
P4 is designed to be '''protocol-independent''', meaning that the language has no native support even for common
===Reconfigurability===
Protocol independence and the abstract language model allow for '''reconfigurability''' – P4 targets should be able to change the way they process packets (perhaps multiple times) after they are deployed. This capability is traditionally associated with forwarding planes built on [[History of general-purpose CPUs|general-purpose CPUs]] or [[network processor]]s, rather than the fixed function [[Application-specific integrated circuit|ASICs]].
==Components==
Line 38:
===Parsing logic===
P4 allows the specification of custom packet header parsing logic
===Headers===
Line 47:
===Stateful processing===
P4 allows the programmer to maintain state in the form of registers, counters and meters
===Generic match action tables===
The primary component of a P4 program is a set of user-defined match action tables. P4 treats all match action tables as generic, leaving the user to add their match-action rules via the control plane.
====Match-action processing====
Fundamental to P4 is the concept of '''match-action pipelines'''. Conceptually, forwarding network packets or frames can be broken down into a series of table lookups and corresponding header manipulations. In P4 these manipulations are known as “actions” and generally consist of things such as copying byte fields from one ___location to another based on the lookup results on learned forwarding state.
====Tables====
Line 59:
====Actions====
'''Actions''' in P4 describe packet field and [[metadata]] manipulations. In P4 context, metadata is information about a packet that is not directly derived from the parser, such as the input interface that the frame arrived on. English descriptions of an example action might be “decrement the IPv4 [[Time to live|TTL]] field by one” or “copy the MAC address from the output port table into the outgoing packet header.”
==Control flow==
|