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
Discussion Questions:
- Q1: What types of applications might be good candidates for network acceleration, and why? Registered users for the Credit bearing course, click here to submit your thoughts on Canvas. Open learners, please use the Slack channel #introduction-to-dpp
- Q2: How does moving Paxos logic into the network help application performance? Registered users for the Credit bearing course, click here to submit your thoughts on Canvas. Open learners, please use the Slack channel #introduction-to-dpp
- Q3 What are some challenges in verifying the correctness of a P4 program? Registered users for the Credit bearing course, click here to submit your thoughts. Open learners, please use the Slack channel #introduction-to-dpp
Discussion Questions:
- Q1: What are some challenges when applying P4 for 5G networks? Registered users for the Credit bearing course, click here to submit your thoughts. Open learners, please use the Slack channel #introduction-to-dpp
- Q2: Why is the P4 compiler so important? Registered users for the Credit bearing course, click here to submit your thoughts. Open learners, please use the Slack channel #introduction-to-dpp
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