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.
In the course project students implement ARP, ICMP and TCP protocols in userspace using a Linux TUN/TAP device. The framework given overloads client-side socket calls (with $LD_PRELOAD) and does basic Ethernet frame processing. Students implement socket(), connect(), send(), recv(), and close() calls (including TCP/IP packet headers, MTU payload packing, TCP state machine processing, ACK generation and processing) and show that their client-side code can successfully communicate with an unmodified Linux/server for a data exchange.
All slides are available at https://github.com/animeshtrivedi/animeshtrivedi.github.io/tree/master/files/2020/anp.