IEEE International Conference on High Performance Switching and Routing
17-20 June 2018 – Bucharest, Romania

P4 Tutorial at HPSR’18

Tutorial on P4, a Language for the Future Programmable Network Devices

The tutorial is only a few days away! For those of you planning to join us, we have created a virtual machine that has all of the software needed to complete the P4 tutorial. The virtual machine image can be downloaded from (approx. 2.5 GB). Since downloading the image can take 30-60 minutes depending on the speed of your network connection, we advise you to download it in advance prior to the tutorial.

After having the image downloaded, you need to install VirtualBox ( In VirtualBox, the downloaded image file can be imported by selecting “File -> Import Appliance”. To boot the virtual machine, select “IEEE_HPSR_2018-P4_Tutorial” and click on the “Start” button. The login name and the password are both “p4”.

Further readings:
* P4-16 Language Specification (1.0.0):
* P4-16 Cheat Sheet:

About P4

P4 ( is a candidate language for the future programmable network devices that can be used for describing how network packets should be processed on a variety of hardware targets ranging from general-purpose CPUs to custom ASICs. Its main goals are 1) protocol independence: devices are not tied to existing protocols and new headers can be introduced easily; 2) reconfigurability: the behavior of the devices can be modified in run-time and 3) portability: the P4 program is independent of the hardware target. The packet processing model of P4 is quite similar to how OpenFlow works. There is a parsing phase at the beginning and a deparsing phase at the end. The former phase extracts the packet header structures and the contained data for further processing, the latter phase rebuilds the headers before sending out. The business logic is between these two phases, implementing a series of lookups in predefined match/action tables, branching on whether the lookup resulted in a hit or a miss. The real power of P4 lies here, describing these tables, lookups, and actions in an abstract, straightforward manner with the freedom of defining any kind of protocol headers.

Since its creation in 2013, P4 has been gaining adoption at an exponential rate, rapidly becoming the standard way to describe packet processing pipelines. The potential of the language to describe common networking tasks has already been showcased by some preliminary works. Today, a hectic ecosystem of open source software tools is maintained and developed by the P4 community. 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. On 16th March it was announced that P4 will become a project of the Open Networking Foundation (ONF) and the Linux Foundation portfolio.

This half-day tutorial will introduce the audience to the latest version of P4 language (P4-16), providing attendees with the required knowledge to start developing and prototyping their own ideas on data plane logic. After introducing some basic examples including L2 forwarding and L3 routing, more complex use cases like BNG, mobile GW and VXLAN-based data center GW will be presented in a hands-on training session using available P4 development tools and compilers.

The tutorial will be useful to researchers, students, and practitioners from network admins and network architects to developers. Attendees are expected to bring their own laptops since we will provide a pre-configured VM image containing all necessary open-source tools and P4 programs. We advise the participants to pre-install. Approximately 10GB of free disk space is required for the virtual machine.

Date and Time

Sunday, June 17th, from 16:00 to 18:00


P Gyanesh Kumar Patra – Ph.D. candidate at University of Campinas, Brazil. His primary interests are in SDN and programmable dataplane. He has nearly five years of industry experience working on network operating systems, data center protocol like QCN, SPB, etc. He also worked as a visiting researcher at Ericsson Research, Hungary. Currently, he is pursuing his thesis on building cross-platform software switch for programmable dataplanes.

Péter Vörös – ELTE Eötvös Loránd University, Budapest, Hungary (Communication Networks Laboratory) Péter Vörös received the MSc degree and graduated in the doctoral school in computer science from the Eötvös Loránd University,
Budapest, Hungary, in 2014, and 2017 respectively. He is currently a doctoral candidate and working as an assistant lecturer at the Department of Information Systems, Eötvös Loránd University. He is recently working on projects in the topics of network security, traffic analytics and programmable data planes. He is one of the developers of the open-source multi-target P4 compiler called T4P4S.

Sándor Laki – ELTE Eötvös Loránd University, Budapest, Hungary (Communication Networks Laboratory) Sándor Laki received the MSc and PhD degrees in computer science from the Eötvös Loránd University, Budapest, Hungary, in 2007 and 2015, respectively. He is currently working as an assistant professor at the Department of Information Systems, Eötvös Loránd University. His research interests focus on active and passive network measurement techniques, traffic analytics, resource sharing, programmable data planes and their application for new networking solutions. He is the author of more than 25 peer-reviewed papers and demo papers including publications at JSAC, INFOCOM, ICC and SIGCOMM. He is one of the key contributors of the open-source multi-target P4 compiler development project called T4P4S.