Rename Project (again) And Describe Purpose
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
@@ -1,12 +1,43 @@
|
||||
## P4CE: P4 Continuous Evolution
|
||||
## 🏎️ GP4: Generalized P4
|
||||
|
||||
_P4CE_[^pronounce] is a P4 parser and runtime written in Swift that supports an _evolved_ version of P4.
|
||||
"P4 is a high-level language for programming protocol-independent packet processors"[^1] and it is awesome. The language is robust and includes many features that make writing
|
||||
|
||||
[^pronounce]: The acronym is pronounced "p force".
|
||||
- _packet_ parsing pipelines easy to write,
|
||||
- _packet_ transformation pipelines easy to write,
|
||||
- _packet_ routing pipelines easy to write.
|
||||
|
||||
### Evolved How?
|
||||
The adjacent ecosystem is great, too: There are now myriad tools available that make it possible to write applications to configure the _packet_ parsing, transformation and routing pipelines written in P4.
|
||||
|
||||
Coming soon.
|
||||
For example, a developer could use P4 to write code that parses raw bytes received from the network into a structured representation of headers/payloads used to transmit those bytes. A developer could use P4 to write a tool that designates the fields of the parsed packet that a network administrator could name when definining configuration for modifying (or not) a parsed packet and defining configuration about how (even _if_) to route the packet. In such a scenario, the system administrator might use a CLI and write
|
||||
|
||||
```console
|
||||
PI CLI> table_add ipv4_lpm 10.0.0.1/24 => set_nhop 10.0.0.1 1
|
||||
```
|
||||
|
||||
which the system running the P4 code written by the developer could read when making a routing decision. Later, if the system administrator wanted to change the way packets were routed, they could use the CLI and write
|
||||
|
||||
|
||||
```console
|
||||
PI CLI> table_add ipv4_lpm 10.0.0.1/24 => set_nhop 10.0.0.2 1
|
||||
```
|
||||
|
||||
and the system running the P4 code written by the developer would immediately start to route _packets_ differently.
|
||||
|
||||
So, why is _packet_ highlighted?
|
||||
|
||||
|
||||
Because we believe that thinking about P4 in exactly the way described above -- after dropping the word _packet_ -- makes it a perfect system for building general-purpose parsing, transformation and routing pipelines. Although there are many ways such tools could be used, we believe that a generalized P4 system would be a perfect candidate for writing online, streaming ETL pipelines (c.f., [Apache Kafka](https://kafka.apache.org/)) or log filter/classification pipelines (c.f., [Sigma](https://sigmahq.io/)).
|
||||
|
||||
Our goal is to build generalized P4 (GP4): The best of P4 and a little more.
|
||||
|
||||
Please join us!
|
||||
|
||||
[^1]: Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George Varghese, and David Walker. 2014. P4: programming protocol-independent packet processors. SIGCOMM Comput. Commun. Rev. 44, 3 (July 2014), 87–95. https://doi.org/10.1145/2656877.2656890
|
||||
|
||||
### Benefits
|
||||
|
||||
1. Reuse the extensive existing work from the P4 community.
|
||||
2. ... more coming soon.
|
||||
|
||||
### Status
|
||||
|
||||
|
||||
Reference in New Issue
Block a user