Content deleted Content added
NapoliRoma (talk | contribs) Note that the P4 Consortium is now just the P4 Project |
m Update broken link to P4 paper |
||
(6 intermediate revisions by 6 users not shown) | |||
Line 7:
{{Infobox programming language
| name = P4
| logo = P4-logo.svg
| paradigm = [[compiled language|compiled]], [[Domain-specific language|___domain-specific]], [[imperative programming|imperative]]
| year = {{start date and age|2013}}
| developer = [[Open Networking Foundation]]
| latest_release_version = version 1.2.
| latest_release_date = {{start date and age|df=yes|
| license = [[Apache Licence|Apache]]-style
| website = {{URL|https://p4.org}}
Line 21 ⟶ 22:
== History ==
P4 was originally described in a 2014 [[Computer Communication Review|SIGCOMM ''CCR'']] paper titled “Programming Protocol-Independent Packet Processors”<ref>{{cite web
|url=
|title=P4: Programming Protocol-Independent Packet Processors
|author1=P. Bosshart
Line 36 ⟶ 37:
|date=July 2014
|work=[[Computer Communication Review]]
|access-date=
}}</ref>—the alliterative name shortens to "P4". The first P4 workshop took place in June 2015 at [[Stanford University]].<ref>{{cite web |title=1st P4 Workshop |url=https://p4.org/events/2015-06-04-p4-workshop/ |website=P4 Official Website |date=4 June 2015 |accessdate=1 August 2019}}</ref> An updated specification of P4, called P4-16, was released between 2016 and 2017,<ref name="P4-16">{{cite web |title=Specifications |url=https://p4.org/specs/ |website=P4 Official Website |accessdate=7 June 2022}}</ref> replacing P4-14, the original specification of P4.
==Design==
As the language is specifically targeted at packet forwarding applications, the list of requirements or design choices is somewhat
===Target independence===
Line 58 ⟶ 59:
===Headers===
Header definitions describe packet formats and provide names for the fields within the packet. The language allows customized header names and fields of arbitrary length, although many header definitions use widely known protocol names and fields widths. For example, an [[IEEE 802.3|802.3]] Ethernet header definition might be called “Ethernet” and consist of
===Parsers===
|