Welcome to module 1: January 24 – March 13, 2022

Learning Outcomes – Introduction to Data Plane Programming (DVAD41)

January 24 – March 13, 2022

During the initial seven course weeks, the focus will be on familiarizing oneself with the online learning spaces, connecting with peers and facilitators. In addition, you will start reading about the theoretical foundations of data plane programming in order to gain a comprehensive understanding of the area. You will get a basic introduction to the P4 language, and can work on three basic labs, that will make you familiar with programming in P4. For that, you will be getting access to a Virtual machine that comes preinstalled with developing environment and mininet network emulator. On the discussion slack, you will share expectations, background knowledge, as well as your own experiences and practices.

Week 2: 31/1-6/2/2022

Watch the video

Watch Robert Soulé deliver his Keynote for the ACM SIGCOMM 2018 workshop Netcompute: “The Network is the Computer: Running Distributed Services on Programmable Switches”. Watch the video until around 50 minutes.

Watch Gergeley Pongracz (Ericsson Research, Hungary) talk about Programmable Data Planes and why they are important for 5G. The interview was recorded at Kista (Sweden) in late 2018.

Read the articles

Click here to get information about how to find and acquire the articles.
Additional reading (for interested) can be found in the following quite extensive and actively updated reading list maintained by Roberto Bifulco, Stefan Schmid and Gábor Rétvári: https://rg0now.github.io/prog_dataplane_reading_list/README.html

P4 Lab Environment

It is time now to get started with setting up a lab equipment on your laptop or machine to start playing around with P4. We have provided a Git which you can use to download all required software for the practical exercises. We’ve adapted a set of exercises to help you get started with P4 programming. They are a set of basic exercises for this module, some exercises focus on load balancing in data center networks (for DVAD42) and some on network monitoring (for DVAD43). Some exercises have been originally developed for ACM SIGCOMM 2017 and P4D2 2018 EAST, some we have developed on our own. We have provided information for obtaining the required software and getting you started on our Gitlab https://git.cse.kau.se/courses/dvad40/vt19.

Checkout the code using git clone https://git.cse.kau.se/courses/dvad40/vt19.git

It will create a directory which will host all the development environment. Go into this directory with cd vt19/P4lab/vm

Caveat! The VM installs only if you use the command vagrant up inside the cloned directory where the Vagrant file is located. This depends on where you checked out your files to. There is a subdirectory called VM. Go into this subdirectory and use then vagrant up.

To build the software, check out the guide on our Obtaining required software.

A guide on using git can be found here.

In order to complete the P4 exercises for this course, you will need to either build a virtual machine or install several dependencies. The building of the VM can take some time (like 30 minutes) so please be patient and grab a cup of coffee:-). Once you have installed the VM, log in to the P4 account and check out the exercises. In the next webinar we will walk you through the exercises to help you getting started.

Alternatively, we put the image of the VM on google drive. You can import it into VirtualBox but it is 6 GB in size.
The version for 2022 course instance is available here.

Assignments week 2

No Quiz this week. Instead, we focus on discussion posts. The first set of questions relate to the video  ACM SIGCOMM 2018 workshop Netcompute: “The Network is the Computer: Running Distributed Services on Programmable Switches”

Discussion Questions:

The second set of questions relate to the video interview with Gergeley Pongracz (Ericsson Research).

Discussion Questions:

The third set of questions relate to the article R. Bifulco, G. Rétvári: A Survey on the Programmable Data Plane: Abstractions, Architectures, and Open Problems. The paper makes the point that an important aspect of programmable data plane architectures is finding the right abstractions.

Discussion Questions:

  • Q1: What kind of abstractions are important to identify for programmable data planes, and why? Registered users for the Credit bearing course, click here to submit your thoughts. Open learners, please use the Slack channel #introduction-to-dpp
  • Q2: The authors discuss the difference between packet state and global state. What is the difference? Why is it difficult to have stateful programmable dataplanes? What would be a usecase to have them stateful (what can you do with stateful dataplanes that you cannot do with stateless dataplanes)? Registered users for the Credit bearing course, click here to submit your thoughts. Open learners, please use the Slack channel #introduction-to-dpp