Today, we are witnessing a Cambrian explosion of applications with widely different network requirements (e.g., video conferencing, AR/VR, remote surgery). Yet network operators still rely on low-level commands when configuring network devices and use archaic tools (e.g., ping, traceroute, Wireshark) when troubleshooting connectivity or performance issues. As a result, the Internet, or the network of networks, is showing its limits: unplanned outages due to misconfigurations or cyberattacks are happening more frequently with bigger and broader impacts.
Luckily, programmability is extending its reach to every corner of digital communication these days. Open, programmable, and software-driven networks allow us to develop innovative ways of managing networks, where deeply-programmable network devices are now a commodity (e.g., programmable switches, SmartNICs).
In this class, we will learn about Software-Defined Networking (SDN) and programmable networks. We will learn what kind of problems they have solved and what new challenges they have introduced. Specific topics include (tentative list): traditional networks and their problems, the history of SDN and programmable networks, state-of-the-art programmable platforms (e.g., Intel Tofino, SmartNICs), languages for programmable networks (e.g., OpenFlow, P4), real-world applications and deployments, network verification, and AI/ML + networking.
This course does not have official prerequisites. Basic knowledge and familiarity with computer networks will be helpful (e.g., TCP/IP layers, the concept of packet headers, etc), but these are not required to succeed in this class!
This course counts towards the “Computer Systems” area.
- Time: Mon, Wed 2:00pm - 3:15pm
- Location: Rice Hall 032
- Instructor: Hyojoon Kim
- Email: email@example.com
- Office: Rice Hall 501
- Presentations: 25%. Presentation that summarizes a conference/journal paper.
- Reviews: 25%. Reviews of conference/journal papers.
- Assignments: 10%. Multiple class assignments.
- Project: 40%. One class project.