Compute Engineering Workshop P 4 specifying data planes

  • Slides: 17
Download presentation
Compute Engineering Workshop P 4: specifying data planes http: //P 4. org San Jose,

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” •

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

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

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

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

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

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 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

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.

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;

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);

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

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)) { 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

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

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

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

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