layout | title | group | data | presenters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
default |
ACM SIGCOMM 2017 Tutorial (Full-Day): P4: Programming the Network Data Plane |
Tutorials |
|
|
This hands-on tutorial will provide a comprehensive introduction to the P4 language. Attendees will learn how to express novel data-plane applications in the P4 language, and how to compile, execute, and evaluate P4 programs using Mininet, a network emulation framework.
{% include presenters.html presenters=page.presenters %}
{% include program.html type="tutorial-p4" data=page.data %}
P4 is a new programming language for describing how network packets should be processed on a variety of targets ranging from general-purpose CPUs to network processors, FPGAs, and custom ASICs. P4 was designed with three goals in mind: (i) protocol independence: devices should not “bake in” specific protocols; (ii) field reconfigurability: programmers should be able to modify the behavior of devices after they have been deployed; and (iii) portability: programs should not be tied to specific hardware targets.
The P4 community has created—and continues to maintain and develop—a language specification, a set of open-source tools (compilers, debuggers, code analyzers, libraries, software P4 switches, etc.), and sample P4 programs with the goal of making it easy for P4 users to quickly and correctly author new data-plane behaviors. New ideas are being developed in P4, prototyped as new forwarding behaviors, and published at some of the top conferences in networking. Existing data-plane features typically realized in a fixed-function logic are also being authored in P4.
The most recent update to the P4 language specification incorporates features designed to embrace functional and architectural heterogeneity of various targets while keeping the language core simple and clean. The new specification also offers features to improve portability and composability of a P4 program, allowing P4 consumers and target providers to reuse their code. Second, the P4 development environment has also been evolving. The P4 community now has a more powerful compiler, along with an architecture-independent software P4 switch. There are now several P4-programmable targets, including programmable NICs, high-end switching chips, and even software switches such as OVS and eBPF. Finally, P4 has become an increasingly popular choice for developing novel data-plane designs. Examples include P4 programs that realize in-band network telemetry, L4 connection load-balancing, path-condition-aware adaptive routing, a better NetFlow, and even Paxos. We believe there are many opportunities for academic researchers to help evolve the design of the language, discover new implementation techniques, and develop use cases.
-
Background on P4 language (joint with P4→FPGA workshop)
-
Demonstration of implementing features in P4
-
Hands-on training with P4 development environment
-
Compiler
-
Debugger
-
Behavioral model and hardware targets
-
Lab Exercises
-
-
Mini-Workshop
-
Research problems
-
Teaching resources
-
Getting involved
-
Panel discussion
-
The tutorial will be useful to researchers, students, and practitioners alike (engineers, network admins, network architects, and developers). Attendees will be expected to bring their own laptops. We will provide a VM image containing all necessary packages and tools. The P4 language specifications is publicly available on the P4 website under an Apache license. Key development tools (front-end compiler and software switch capable of running P4 programs) are available as open-source tools. We have given version of this tutorial at various venues, including previous SIGCOMMs, the P4 workshop, P4 Bootcamp, ONS Webniars, etc.