Advanced Topics in
Communication Networks
Fall 2018

© Google

This class will introduce students to advanced, research-level topics in the area of communication networks, both theoretically and practically. Coverage will vary from semester to semester. Repetition for credit is possible, upon consent of the instructor. During the Fall Semester of 2018, the class will concentrate on network programmability and network data plane programming.

The website is under construction. Stay tuned for more details about the lecture!


Sept 19 Materials for the first lecture are online.
Sept 19 Please bring your laptop to the exercise session and install the VM that we provide.
Detailed instructions are here (use your nethz credentials to sign in).
If you don't have a laptop, please contact us during the exercise session.
Sept 18 Website with tentative schedule for 2018 goes live

Weekly lectures in the first part of the semester


Ungraded theoretical and practical exercises as well as paper readings


Graded practical project performed in groups

Tentative timeline


Professor: Laurent Vanbever ()

Research group: Networked Systems


  •   Head


Location & time

Lecture: Thursday 8 am–10 am in LFW B 3

Exercice sessions: Thursday 10 am–12 pm in LFW B 3


The goal of this lecture is to introduce students to the latest advances in the area of computer networks, both theoretically and practically. The course will be divided in two main blocks. The first block (~7 weeks) will interleave classical lectures with practical exercises and paper readings. The second block (~6 weeks) will consist of a practical project involving real network hardware and which will be performed in small groups (~3 students). During the second block, lecture slots will be replaced by feedback sessions where students will be able to ask questions and get feedback about their project. The last week of the semester will be dedicated to student presentations and demonstrations.

During the Fall Semester 2018, the class will focus on programmable network data planes and will involve developing network applications on top of the the latest generation of programmable network hardware: Barefoot Network’s Tofino switch ASICs. By leveraging data-plane programmability, these applications can build deep traffic insights to, for instance, detect traffic anomalies (e.g. using Machine Learning), flexibly adapt forwarding behaviors (to improve performance), speed-up distributed applications (e.g. Map Reduce), or track network-wide health. More importantly, all this can now be done at line-rate, at forwarding speeds that can reach Terabits per second.


Traditionally, computer networks have been composed of "closed" network devices (routers, switches, middleboxes) whose features, forwarding behaviors and configuration interfaces are exclusively defined on a per-vendor basis. Innovating in such networks is a slow-paced process (if at all possible): it often takes years for new features to make it to mainstream network equipments. Worse yet, managing the network is hard and prone to failures as operators have to painstakingly coordinate the behavior of heterogeneous network devices so that they, collectively, compute a compatible forwarding state. Actually, it has been shown that the majority of the network downtimes are caused by humans, not equipment failures.

Network programmability and Software-Defined Networking (SDN) have recently emerged as a way to fundamentally change the way we build, innovate, and operate computer networks, both at the software and at the hardware level. Specifically, programmable networks now allow: (i) to adapt how traffic flows in the entire network through standardized software interfaces; and (ii) to reprogram the hardware pipeline of the network devices, i.e. the ASICs used to forward data packets.

This year, the course will focus on reprogrammable network hardware/ASICs. It will involve hands-on experience on the world's fastest programmable switch to date (i.e. Barefoot Tofino switch ASIC).

Among others, we'll cover the following topics:

  • The fundamentals and motivation behind network programmability;
  • The design and optimization of network control loops;
  • The use of advanced network data structures adapted for in-network execution;
  • The P4 programming language and associated runtime environment;
  • Hands-on examples of in-network applications solving hard problems in the area of data-centers, wide-area networks, and ISP networks.

The course will be divided in two blocks of 7 weeks. The first block will consist in traditional lectures introducing the concepts along with practical exercises to get acquainted with programmable data planes. The second block will consist of a (mandatory) project to be done in groups of few students (~3 students). The project will involve developing a fully working network application and run it on top of real programmable network hardware. Students will be free to propose their own application or pick one from a list. At the end of the course, each group will present its application in front of the class.

The final grade will be based on the project (50%) and a final oral exam (50%).

Prerequisites / Notice

  • Communication Networks (227-0120-00L), or equivalents
  • Good programming skills (in any language) are expected as both the exercices and the final project will involve coding.

Performance assessment

  • ECTS credits: 6 credits
  • The class is based on one mandatory project assignment (50%) and a final oral exam (50%).
  • Exam type: session examination (oral)
Part 1
Lectures and exercises (tentative)
Week 1
Sept 20 Lecture 1 Course organization, SDN history, introduction to PISA and P4
Exercise 1

Please bring your laptop to the exercise session and install the VM that we provide.
Detailed instructions are here (use your nethz credentials to sign in).
If you don't have a laptop, please contact us during the exercise session.

The instructions and code templates for the exercises are on GitLab (use your nethz credentials to sign in).

Week 2
Sept 27 Lecture 2 Developing P4 applications
Exercise 2
Week 3
Oct 4 Lecture 3 Developing stateful applications
Exercise 3
Week 4
Oct 11 Lecture 4 Data structures
Exercise 4
Week 5
Oct 18 Lecture 5 Control plane integration
Exercise 5
Week 6
Oct 25 Lecture 6 Advanced applications
Exercise 6
Week 7
Nov 1 Lecture 7 Briefing on projects and example applications
Exercise 7
Part 2
Group projects
Week 8—13
Nov 8 — Dec 13 Group projects

More details coming soon

Week 14
Dec 20 Group project presentations

More details coming soon