Compute Engineering Workshop P 4 specifying data planes







![How does it work? Programmable parser eth vlan ipv 4 Payload Packet (byte[]) Programmable How does it work? Programmable parser eth vlan ipv 4 Payload Packet (byte[]) Programmable](https://slidetodoc.com/presentation_image/24f52d25cd941c4e0aecb3c272197cdf/image-8.jpg)




![Control-Flow control ingress { apply(port); if (valid(vlan_tag[0])) { apply(port_vlan); } apply (bridge_domain); if (valid(mpls_bos)) Control-Flow control ingress { apply(port); if (valid(vlan_tag[0])) { apply(port_vlan); } apply (bridge_domain); if (valid(mpls_bos))](https://slidetodoc.com/presentation_image/24f52d25cd941c4e0aecb3c272197cdf/image-13.jpg)




- Slides: 17

Compute Engineering Workshop P 4: specifying data planes http: //P 4. org San Jose, March 11, 2015 Mihai Budiu ENGINEERING WORKSHOP

P 4 Language Consortium • “Open for participation by any individual or corporation” • No membership fees. • http: //p 4. org • Language spec v 1. 0. 2 • Coming soon (3/2015): FOSS release of a reference P 4 implementation ENGINEERING WORKSHOP

What do we want to achieve? Switch Currently most useful if you have your own network playground Standard protocols Your own protocols Datacenter ENGINEERING WORKSHOP

Benefits Implement (new) protocols • • Vx. LAN: 175 lines SAI: 543 lines Low overhead (high speed) Flexible forwarding policies Improved signaling, monitoring, and troubleshooting Change functionality with software upgrades Use only what you need ENGINEERING WORKSHOP

P 4 Scope Traditional switch Control plane Data plane Control plane P 4 -defined switch Table mgmt. Control traffic Packets P 4 Program P 4 table mgmt. Data plane ENGINEERING WORKSHOP

Q: Which data plane? A: Any data plane! Control plane Programmable switches FPGA switches Programmable NICs Software switches You name it… Data plane ENGINEERING WORKSHOP

Data plane programmability Programmable blocks P 4 P 4 Fixed function ENGINEERING WORKSHOP
![How does it work Programmable parser eth vlan ipv 4 Payload Packet byte Programmable How does it work? Programmable parser eth vlan ipv 4 Payload Packet (byte[]) Programmable](https://slidetodoc.com/presentation_image/24f52d25cd941c4e0aecb3c272197cdf/image-8.jpg)
How does it work? Programmable parser eth vlan ipv 4 Payload Packet (byte[]) Programmable match-action units Headers eth mtag ipv 4 eth ipv 4 mtag err port bcast Headers Queuing Metadata Programmable reassembly Packet ENGINEERING WORKSHOP

P 4 language Programmable parser Programmable match-action units Programmable reassembly State-machine; bitfield extraction Table lookup and update; bitfield manipulation; control flow Bitfield assembly No: memory (pointers), loops, recursion, floating point ENGINEERING WORKSHOP

Parsing = State machines header_type ethernet_t { fields { dst. Addr : 48; src. Addr : 48; ether. Type : 16; } } Eth VLAN IPv 4 IPv 6 TCP New parser parse_ethernet { extract(ethernet); return select(latest. ether. Type) { 0 x 8100 : parse_vlan; 0 x 800 : parse_ipv 4; 0 x 86 DD : parse_ipv 6; } } ENGINEERING WORKSHOP

Match � table ipv 4_lpm { reads { ipv 4. dst. Addr : lpm; } actions { set_next_hop; drop; } } Lookup key dst. Addr action 0. * drop 10. 0. 0. * set_next_hop 224. * drop 192. 168. * drop 10. 0. 1. * set_next_hop ENGINEERING WORKSHOP

Actions action set_nhop(nhop_ipv 4_addr, port) { modify_field(metadata. nhop_ipv 4_addr, nhop_ipv 4_addr); modify_field(standard_metadata. egress_port, port); add_to_field(ipv 4. ttl, -1); } dst. Addr action 0. * drop 10. 0. 0. * set_next_hop nhop_ipv 4_addr port 224. * drop 10. 0. 0. 10 1 192. 168. * drop 10. 0. 1. 10 2 10. 0. 1. * set_next_hop ENGINEERING WORKSHOP
![ControlFlow control ingress applyport if validvlantag0 applyportvlan apply bridgedomain if validmplsbos Control-Flow control ingress { apply(port); if (valid(vlan_tag[0])) { apply(port_vlan); } apply (bridge_domain); if (valid(mpls_bos))](https://slidetodoc.com/presentation_image/24f52d25cd941c4e0aecb3c272197cdf/image-13.jpg)
Control-Flow control ingress { apply(port); if (valid(vlan_tag[0])) { apply(port_vlan); } apply (bridge_domain); if (valid(mpls_bos)) { apply(mpls_label); } retrieve_tunnel_vni(); if (valid(vxlan) or valid(genv) or valid(nvgre)) { apply(dest_vtep); apply(src_vtep); } } M/A M/A M/A ENGINEERING WORKSHOP

Reassembly Driven by header types add_header(ipv 6); remove_header(vlan); ENGINEERING WORKSHOP

Table contents management Control plane Manage tables contents (Tied to P 4 program) Data plane ENGINEERING WORKSHOP

P 4 Summary Simple language • Parsing, bit-field manipulation, table lookup, control flow, packet reassembly Efficient execution (high speed switching) Simple cost model Abstract resources Portable Expressive: • New protocols, forwarding policies, monitoring and instrumentation ENGINEERING WORKSHOP

Control plane The P 4 Programming. Language Interface Data plane ENGINEERING WORKSHOP