Professional Documents
Culture Documents
deep dive
Richard Cziva
rcziva@es.net
7th September 2017
Agenda
• 9:30 – P4 motivation, language overview
• OpenFlow vs P4
• SDN today
• ~10:30 – P4 demos, example applications
• Ipv4 forwarding switch
• Calculator (run 1+1 on your router!)
• Multi-hop route inspection (in-network telemetry)
• Tracking per-flow TCP retransmissions
• Discussions: data plane programmability @ESnet
From: https://p4lang.github.io/p4-spec/docs/P4-16-v1.0.0-spec.html
Deparser
Parser
packet Table 1 Table 2 Table n packet
Start else
parser MyParser(){
If Ethernet state start { transition parse_ethernet; }
else state parse_ethernet {
Ethernet? Reject
packet.extract(hdr.ethernet);
If TCP If UDP transition select(hdr.ethernet.etherType) {
TYPE_IPV4: parse_ipv4;
TCP UDP default: accept;
}
Accept }…
}
From: https://p4lang.github.io/p4-spec/docs/P4-16-v1.0.0-spec.html
Compile with
myprogram.p4 myprogram.json
p4c-bm API
load
bmv2-ss
Dataplane
1 + 1?
H1 P4 switch
2