Advanced Network Programming Homepage (XB_0048)

In our deeply interconnected world, many details of networking may appear cryptic to its users. In Sep-Oct 2020, together with Lin Wang, I designed and gave a new course called Advanced Network Programming for BSc. final year students at VU Amsterdam. Advanced Network Programming (ANP) course is aimed at teaching students about the recent networking research (research-oriented teaching) in general-purpose cloud computing. At the same time with the practical work, students are trained in state-of-the-practice networking tools used in everyday Linux networking stack (tcpdump, ping, traceroute, arping, netcat).

In 2023 - the course was co-taught with Balakrishnan Chandrasekaran, Matthijs Jansen, and Jesse Donkervliet.

The networking stack Figure 1: Topics covered in ANP course

Table of Contents

Lecture Content

The goal of the course is to (i) make students aware of the internals of end-host and data center networking advancements; (ii) show practical tools to debug and analyze the Linux stack; (iii) teach low-level nitty and gritty details by implementing network protocols. We cover the following topics in 2023 (Animesh covers lecture 1-6, Bala/Matthijs cover lectures 7-11):

  1. Introduction: Evolution of socket, DMA, Interrupt storms, SGE capabilities.
  2. Networking Concepts: MTU, Segmentation, stateful and stateless Offloading.
  3. Linux Internals: NAPI, SoftIRQs, SKB, rx/tx paths, zcopy stacks.
  4. Multicore Networking: Interrupt balancing, multi-queue NICs, RSS, RPS, XFS, MegaPipe.
  5. Userspace Stacks: Packet processing, Netmap, DPDK, mTCP.
  6. RDMA Networking: RDMA networking, low-latency networking, history.
  7. WAN and BGP: Inter-domain routing, internet architecture.
  8. Content Delivery Networks: Caching, routing, replication, fault tolerance.
  9. Congestion Control: Why congestion control, inter/intra data center considerations.
  10. Cellular Networks (5/6G): Emerging cellular communication architectures.
  11. Networking for real-time online gaming: Networking needs for online, real-time applications such as gaming.

Editable versions of slides 1-6 are available here https://drive.google.com/drive/folders/1o12Qgzj1xFBf-xIcAeALqUN1Gx8iMr29?usp=drive_link. Others to follow soon…

Practical Work

In the course project students develop a working TCP/IP protocol in the userspace. The project consists of five key milestones:

  1. Welcome to the machine: setup the coding infrastructure and familarize yourself with Linux networking tools (tcpdump, ping, traceroute, arping, netcat) and RFC 793.
  2. Is anyone out there?: implement the ARP protocol and resolve IP addresses to mac addresses.
  3. Hey you: implement socket(), connect() calls with the TCP three-way handshake
  4. Careful With That Data, Eugene: implement send(), recv(), and close() calls with acknowledgements, retransmission, timeouts.
  5. Another Graph in the Wall: performance analysis of your TCP stack, and compare it with the Linux stack in terms of bandwidth and latencies offered.

Open source material

License

This course content are distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0), https://creativecommons.org/licenses/by/4.0/


Jekyll theme inspired by researcher