Lecture: Advanced Networked Systems (SS24)

This lecture-based course will cover concepts and designs for modern networked systems adopted by the Internet and cloud data centers to meet the ever-increasing demands of data transfer and computation driven by big data and machine learning applications. Specific topics include: networking fundamentals (refresher), data center networks (architectures, congestion control), software-defined networks (SDN, OpenFlow), programmable networks (P4, eBPF/XDP), programmable network device architectures (RMT, SmartNICs), in-network computing (caching, aggregation). Much of the course will be based on discussions of cutting-edge research topics, complemented with hands-on programming assignments.

Cour­se In­for­ma­ti­on

Learning Goals

Upon completion of this course, students will be able to learn the following.

  • Gain knowledge of current research topics in networked systems.
  • Understand the design of these new networked systems technologies and reason about the design choices therein.
  • Build complex networked systems by applying some of these designs, analyze and evaluate the merits and limitations of these designs, and explain the design choices for the built systems.

 

Meth­od of As­sess­ment

Assessment will consist of two parts:

  • Study achievement: You will pass the study achievement if you obtain no less than 25 out of the 50 points for the lab assignments. Bonus grades will be awarded if you score high for these lab assignments; details will follow in the first lecture.
  • Written exam: You will pass the course if you obtain no less than half of the points for the final written exam. There will be non-graded exercises to help you prepare for the exam throughout the course. 

 

Read­ing Ma­ter­i­al

There is no set textbook for this course. We will mostly use reseearch papers as reading material, which will be published along with the lectures.

 

Pre­requis­ite

Knowledge of computer networks, operating systems, programming languages, C/C++ and Python programming in the Linux environment, and a keen interest in understanding how things work under the hood. Ability to read scientific papers professionally. Ability to code in a complex setting.

Te­a­ching Ma­te­ri­al

All teaching materials are released here. If you would like to use them in your own course and would like to have access to source files, please get in touch. 

Lecture Slides

  • Lecture 1: Introduction [pdf]
  • Lecture 2: Networking Fundamentals [pdf]
  • Lecture 3: Network Transport [pdf]
  • Lecture 4: Data Center Networks [pdf]
  • Lecture 5: Data Center Transport [pdf]
  • Lecture 6: Software Defined Networking [pdf]
  • Lecture 7: Programmable Data Plane [pdf]
  • Lecture 8: Programmable Switch Architecture [pdf]
  • Lecture 9: In-Network Computing [pdf]
  • Lecture 10: Network Monitoring [pdf]
  • Lecture 11: Network Function Virtualization [pdf]
  • Lecture 12: Host Networking [pdf]
  • Lecture 13: Machine Learning for Networking [pdf]

 

Exercise Sheets

  • Exercise 1: Networking Fundamentals [pdf]
  • Exercise 2: Network Transport [pdf]
  • Exercise 3: Data Center Networking [pdf]
  • Exercise 4: Programmable Networks A [pdf]
  • Exercise 5: Programmable Networks B [pdf]

 

Lab Assignments

  • Lab0: Welcome and Warm-Up [pdf]
  • Lab1: Hey Switches and Routers [pdf]
  • Lab2: Network Topologies Are Fun [pdf]
  • Lab3: Data Center on Your Computer [pdf]
  • Lab4: Your Network, Your Say [pdf]
  • Lab5: Switches Do Dream of Machine Learning [pdf]