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!

News

Dec 21 The first iteration of course is now officially over! Check out the exam instructions
Nov 2 Use this link to register for the group project (nethz login).
Oct 31 Project proposals are now online.
Oct 31 Materials for the seventh lecture are online.
Oct 24 Materials for the sixth lecture are online.
Oct 17 Materials for the fifth exercise session are online.
Oct 10 Materials for the fourth lecture are online.
Oct 3 Materials for the third lecture are online.
Sept 26 Materials for the second lecture are online.
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
Lectures
Lectures

Weekly lectures in the first part of the semester

Exercises
Exercises

Ungraded theoretical and practical exercises as well as paper readings

Project
Project

Graded practical project performed in groups

Tentative timeline

Contact

Professor: Laurent Vanbever ()

Research group: Networked Systems

Assistants:

  •   Head

Slack: adv-net18.slack.com

Location & time

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

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

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

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 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
Materials
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
Materials Interesting readings
Exercise 2

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

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

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

Week 4
Oct 11 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 5
Oct 18 No lecture

Exercise session takes place as usual from 10am — 12pm.

Exercise 5

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

Week 6
Oct 25 Lecture 6 Hardware-based P4 target and Advanced applications (Part 1)
Materials
  • Slides (mostly a recap on sketches, see/print slides below)
  • Programmable Data Plane at Terabit Speeds, Barefoot Networks: Slides, Video
  • NetCache: Balancing Key-Value Stores with Fast In-Network Caching: Slides, Paper
  • NetChain: Scale-Free Sub-RTT Coordination: Slides, Paper
Exercise 6

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

Week 7
Nov 1 Lecture 7 Advanced applications (Part 2) and Briefing on projects
Materials Group projects
Exercise 7

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

Part 2
Group projects
Week 8—13
Nov 8 — Dec 13 Group projects

More details coming soon

Week 14
Dec 20 Group project presentations
Exam instructions