◦ Wireless Internet Laboratory • Department of Computer Science • ITRI Intern • Was a Information Technology Service Center Network & System Engineer @ NCTU before • GitHub: @sufuf3 • Twitter: @sufuf3149 About Me 2
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 3
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 4
Benefits 2014 P4: Programming Protocol-Independent Packet Processors 2008 Software Defined Networking (SDN) with OpenFlow Before 2008 Traditional Network 8
• The problems of traditional network are ◦ Closed equipment ▪ Software bundled with hardware ▪ Vendor-specific CLI interfaces ◦ Networks are hard to evolve ▪ Networks are stuck in the past • Routing algorithms change very slowly • Network management extremely primitive ◦ Networks design not based on formal principles ▪ Networks used to be simple • Basic Ethernet/IP straightforward ▪ New control requirements have led to complexity • ACLs, VLANs, TE, Middleboxes, DPI,… ◦ … etc. Traditional network problem • Why P4 ◦ Motivation ◦ Benefits 9
network control plane from the forwarding plane (data plane) ◦ Control plane controls several devices ◦ The network control to become directly programmable SDN • Why P4 ◦ Motivation ◦ Benefits Ref: https://www.sdxcentral.com/sdn/definitions/inside-sdn-architecture/ 10
This set has grown from 12 to 41 fields in a few years, increasing the complexity of the specification while still not providing the flexibility to add new headers. Using P4 to solve Openflow problems • Why P4 ◦ Motivation ◦ Benefits Versio n Date Header Fields OF 1.0 Dec 2009 12 fields (Ethernet, TCP/IPv4) OF 1.1 Feb 2011 15 fields (MPLS, inter-table metadata) OF 1.2 Dec 2011 36 fields (ARP, ICMP, IPv6, etc.) OF 1.3 Jun 2012 40 fields OF 1.4 Oct 2013 41 fields Ref: https://www.sigcomm.org/sites/default/files/ccr/papers/2014/July/0000000-0000004.pdf 12
packet parsing & processing in the field • Protocol independence ◦ Switches should not be tied to any specific network protocols. ◦ Controller should be able to specify ▪ A packet parser for extracting header fields with particular names and types ▪ A collection of typed match + action tables that process these headers • Target independence ◦ Programmers should be able to describe packet-processing functionality independently of the specifics of the underlying hardware. The goals of P4 • Why P4 ◦ Motivation ◦ Benefits Ref: https://www.sigcomm.org/sites/default/files/ccr/papers/2014/July/0000000-0000004.pdf 13
new protocols • Reduce complexity - Remove unused protocols • Efficient use of resources - flexible use of tables • Greater visibility - New diagnostic techniques, telemetry, etc. • Software style development - rapid design cycle, fast innovation, fix data plane bugs in the field • You keep your own ideas Think programming rather than protocols... Benefits of P4 (Cont’d) • Why P4 ◦ Motivation ◦ Benefits Ref: https://p4.org/assets/P4_tutorial_01_basics.gslide.pdf 15
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 16
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 18
series of fields • Parsers ◦ Specifies how to identify headers & valid header sequences within packets • Tables (match + action tables) ◦ The mechanism for performing packet processing • Actions ◦ P4 supports construction of complex actions from simpler protocol-independent primitives. These complex actions are available within match + action tables. • Control Program ◦ Determines the order of tables that are applied to a packet. A simple imperative program describe the flow of control between match + action tables Key Components of P4 19
Template ◦ Approach ▪ Target ▪ Architecture Ref: https://p4.org/assets/P4_tutorial_01_basics.gslide.pdf Term Explanation P4 Target An embodiment of a specific hardware implementation P4 Architecture Provides an interface to program a target via some set of P4-programmable components, externs, fixed components 22
must perform: ◦ Update the source and destination MAC addresses ◦ Decrement the time-to-live (TTL) in the IP header ◦ Forward the packet out the appropriate port • Topology • Source code • Explain 26 • Have a single table: the control plane will populate with static rules • Each rule will map an IP address to the MAC address and output port for the next hop • Already defined the control plane rules
standard_metadata_t standard_metadata) { state start { transition parse_ethernet; } state parse_ethernet { packet.extract(hdr.ethernet); transition select(hdr.ethernet.etherType) { TYPE_IPV4: parse_ipv4; default: accept; } } state parse_ipv4 { packet.extract(hdr.ipv4); transition accept; } } Parser (Cont’d) Parsers are functions that map packets into headers and metadata, written in a state machine style • packet_in: reads its input from a packet_in • in: read-only • out: are treated as a storage • inout: both in & out 37
standard_metadata_t standard_metadata) { state start { transition parse_ethernet; } state parse_ethernet { packet.extract(hdr.ethernet); transition select(hdr.ethernet.etherType) { TYPE_IPV4: parse_ipv4; default: accept; } } state parse_ipv4 { packet.extract(hdr.ipv4); transition accept; } } Every parser has three predefined states • start • accept • reject Parser (Cont’d) select statement that can be used to branch in a parser 38
variables, create tables, instantiate externs, etc. • Functionality specified by code in apply statement • Represent all kinds of processing that are expressible as DAG(Directed Acyclic Graph): ◦ Additional forms of packet processing (updating checksums) ◦ Match-Action Pipelines ◦ Deparsers Controls control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } Evaluating a program that has several instantiations of the same component. parameters of control • Controls ◦ CV ◦ Ingress ◦ Egress ◦ CC ◦ Deparser 40
to do something to update some of the headers’ value. • How does the switch update the headers’ value? 1. Write some logical program to deal with them ▪ Action function 2. Does the actions according to the rules which are sent from the SDN controller ▪ Table function Controls (Cont’d) • Controls ◦ CV ◦ Ingress ◦ Egress ◦ CC ◦ Deparser 42
◦ Reside in tables; invoked automatically on table match. ◦ Can be declared inside a control or globally ◦ Parameters have type and direction ◦ Variables can be instantiated inside ◦ Many standard arithmetic and logical operations are supported • Controls ◦ CV ◦ Ingress ◦ Egress ◦ CC ◦ Deparser 43
◦ Specifies what data to match on and match kind ◦ Specifies a list of possible actions ◦ Optionally specifies a number of table properties ▪ Size ▪ Default action ▪ Static entries ▪ etc. ◦ Each table contains one or more entries (rules) ◦ An entry contains: ▪ A specific key to match on ▪ A single action that is executed when a packet matches the entry ▪ Action data (possibly empty) Controls (Cont’d) • Controls ◦ CV ◦ Ingress ◦ Egress ◦ CC ◦ Deparser 44
• P4 16 does not provide a separate language for packet deparsing • Deparsing is done in a control block that has at least one parameter of type packet_out • packet_out extern is defined in core.p4: emit(hdr): serializes header if it is valid • Advantages: ◦ Makes deparsing explicit...but decouples from parsing control MyDeparser(packet_out packet, in headers hdr){ apply { packet.emit(hdr.ethernet); packet.emit(hdr.ipv4); } } https://github.com/p4lang/tutorials/blob/master/P4D2_2018_East/exercises/basic/solution/basic.p4#L1 58-L163 • Controls ◦ CV ◦ Ingress ◦ Egress ◦ CC ◦ Deparser 51
of the V1Switch package constructor have been evaluated (instances of MyParser, MyVerifyChecksum ...). • Their signatures are matched w/ the V1Switch declaration • The result of the program evaluation is the value of the main variable Switch V1Switch( MyParser(), MyVerifyChecksum(), MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() ) main; https://github.com/p4lang/tutorials/blob/master/P4D2_2018_East/exercises/basic/solution/basic.p4#L1 69-L176 53
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 54
• Supports both P4 14 and P4 16 • Provides a standard frontend and midend which can be combined with a target-specific backend to create a complete P4 compiler • The compiler supports several backends: ◦ p4c-bmv2 – targets the behavioral model ◦ p4c-ebpf, p4c-graphs, p4test … etc. • Repository: https://github.com/p4lang/p4c Eg. $ p4c -b bmv2-ss-p4org program.p4 -o program.bmv2.json • Tools ◦ P4 Compiler ◦ P4 Runtime ◦ PTF ◦ P4 Container • Environments ◦ BMv2 ◦ Network Devices 56
Compiler ◦ P4 Runtime ◦ PTF ◦ P4 Container • Environments ◦ BMv2 ◦ Network Devices • Framework for control plane software to control forwarding plane ◦ https://github.com/p4lang/PI ◦ Initial contribution by Google and Barefoot • Work-in-progress by the p4.org API WG • Protobuf-based API definition ◦ p4runtime.proto ◦ gRPC as a possible RPC transport • P4 program-independent ◦ API doesn’t change with the P4 program • Enables field-reconfigurability ◦ Ability to push new P4 program without recompiling deployed switches • A runtime API & protocol for controlling data-plane programs • Can be used for local or remote control plane 58
The second version of the P4 software switch • A simulation environment to run the P4 software switch, standalone or in Mininet • Allows you to easily simulate new architectures by implementing new externs • Enabling you to organize the forwarding elements as needed • Repository: https://github.com/p4lang/behavioral-model • Tools ◦ P4 Compiler ◦ P4 Runtime ◦ PTF ◦ P4 Container • Environments ◦ BMv2 ◦ Network Devices 64
could refer to all P4 tutorials: https://github.com/p4lang/tutorials • This hands-on is ref to https://github.com/p4lang/tutorials/tree/master/P4D2_2018_ East/exercises/ecn 67
L3 forwarding • Allows end-to-end notification of network congestion without dropping packets • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution Ref: https://github.com/p4lang/tutorials/tree/master/P4D2_2017_Fall 69
in the ipv4.ecn field • Each switch may change the value to 3 if the queue size is larger than a threshold • The receiver copies the value to sender, and the sender can lower the rate • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution • Type of Service field • DSCP(DiffServ Code Points RFC 2474) + ECN (RFC 3168) Ref: https://en.wikipedia.org/wiki/Type_of_service 70
Non ECN-Capable Transport, Non-ECT ◦ 10: ECN Capable Transport, ECT(0) ◦ 01: ECN Capable Transport, ECT(1) ◦ 11: Congestion Encountered, CE • For packets originating from ECT, ECN-capable switches set the CE bit upon congestion ◦ E.g., observed queue depth > threshold • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution Ref: https://github.com/p4lang/tutorials/tree/master/P4D2_2017_Fall 71
OS & HW requirement ▪ OS: Ubuntu 16.04 64-bits ▪ CPU: at least 2 cores ▪ RAM: at least 2G ▪ Disk: at least 25G ◦ Build your env by yourself (not root), after finish OS installation ◦ Download VM (ovf file) https://goo.gl/VQRFPt $ wget -O setup.sh https://goo.gl/EHgk4v && sudo bash setup.sh && wget -O - https://goo.gl/NKaau7 | bash Before Hands-on • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution Ref: https://github.com/sufuf3/p4-install-environment https://github.com/p4lang/tutorials/tree/master/P4D2_2018_East 72
README: https://github.com/p4lang/tutorials/tree/master/P4D2_2018_East/ exercises/ecn • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution 73
◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution control MyEgress(inout headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { apply { /* * TODO: * - if ecn is 1 or 2 * - compare standard_metadata.enq_qdepth * with threshold and set hdr.ipv4.ecn to 3 if larger */ } } • Before https://github.com/p4lang/p4c/blob/master/p4include/v1model.p4#L 51 75
• On h2 run $ ./receive.py > h2.log • $ grep tos h2.log • What is ECN • Before Hands-on ◦ Obtaining software ◦ Get code • Steps ◦ Run starter code ◦ Implement ◦ Run solution tos = 0x1 tos = 0x1 tos = 0x1 tos = 0x1 tos = 0x3 tos = 0x3 tos = 0x3 tos = 0x3 tos = 0x3 tos = 0x3 tos = 0x1 tos = 0x1 tos = 0x1 tos = 0x1 78
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 79
SilkRoad[1] ◦ Low Latency Congestion Control – NDP[2] ◦ Fast In-Network cache for key-value stores – NetCache[3] ◦ In-band Network Telemetry – INT[4] ◦ Consensus at network speed – NetPaxos[5] ◦ ... and much more [1] Miao, Rui, et al. "SilkRoad: Making Stateful Layer-4 Load Balancing Fast and Cheap Using Switching ASICs." SIGCOMM, 2017. [2] Handley, Mark, et al. "Re-architecting datacenter networks and stacks for low latency and high performance.” SIGCOMM, 2017. [3] Xin Jin et al. “NetCache: Balancing Key-Value Stores with Fast In-Network Caching.” To appear at SOSP 2017 [4] Kim, Changhoon, et al. "In-band network telemetry via programmable dataplanes.” SIGCOMM. 2015. [5] Dang, Huynh Tu, et al. "NetPaxos: Consensus at network speed.” SIGCOMM, 2015 What can you do with P4? 80
Telemetry (INT) ◦ A framework ◦ Designed to allow the collection and reporting of network state, by the data plane ◦ Without requiring intervention or work by the control plane ◦ Spec: https://p4.org/assets/INT-current-spec.pdf 81
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 82
• With P4, SDN programmers can design these goals ◦ Can keep the new ideas secret ▪ Don’t have to let switch chip vendor know ◦ Unique features in every network 83
• Key Components of P4 • P4 16 Language • Explain Basic Forwarding P4 code • P4 Tools & Environments • Hands-On • What can you do with P4? • Conclusion • Additional Outline 84