Advanced Topics in
Communication Networks
Fall 2019

© 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 2019, 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!

News

Nov 14 Solutions for the last exercise session are online.
Oct 30 Group Projects registration page is online
Oct 29 Materials for the sixth exercise session are online.
Oct 29 Solutions for the fourth exercise session are online.
Oct 29 Materials for the last lecture are online.
Oct 22 Solutions for the third exercise session are online.
Oct 22 Materials for the fifth exercise session are online.
Oct 21 Materials for the fifth lecture are online.
Oct 15 Materials for the fourth exercise session are online.
Oct 15 Materials for the fourth lecture are online.
Oct 8 Materials for the third exercise session are online.
Oct 8 Materials for the third lecture are online.
Sep 30 Materials for the second exercise session are online.
Sep 30 Materials for the second lecture are online.
Sep 24 Materials for the first lecture are online.
Sep 24 Materials for the first exercise session are online.
Sept 12 If you have questions about the lecture, one teaching assistant will be there on Tuesday 17 between 1pm and 2pm in the official lecture hall (ML H 44).
Sept 11 The tentative schedule for 2019 is now online. Please note that the lecture officially starts in week 2, on Tuesday September 24.

Contact

Professor: Laurent Vanbever ()

Research group: Networked Systems

Assistants:

  •   Head

Slack: adv-net19.slack.com

Location & time

Lecture: Tuesday 1 pm–3 pm in ML H 44

Exercise sessions: Tuesday 3 pm–5 pm in ML H 44

Objectives

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 2019, 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.

Content

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 exercises 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
Sep 17 No lecture Lecture starts in week 2

If you have questions about the lecture, will be in the classroom between 1pm and 2pm.

Please 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 immediately.

Week 2
Sep 24 Lecture 1 Course organization, SDN history, introduction to PISA and P4
Materials
Exercise 1

Please bring your laptop to the exercise session and install the VM that we provide.
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 3
Oct 1 Lecture 2 Developing P4 applications
Materials Interesting readings
Exercise 2

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

Week 4
Oct 8 Lecture 3 Stateful programming and probabilistic data structures (Part 1)
Materials Interesting readings
Exercise 3

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

Week 5
Oct 15 Lecture 4 Probabilistic data structures (Part 2)
Materials
Exercise 4

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

Week 6
Oct 22 Lecture 5 Hardware-based P4 target and Advanced applications (Part 1)
Materials
Exercise 5

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

Week 7
Oct 29 Lecture 6 Advanced applications (Part 2) and Briefing on projects
Materials
Exercise 6

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

Part 2
Projects
Week 8
Nov 5 First meeting about the projects
Exercise 7

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

Week 9—13
Nov 12 — Dec 17 Group projects
Week 14
Dec 17 Project presentations