Instructor | Mina Tahmasbi Arashloo |
Schedule | Tuesdays and Thursdays, 1:00 PM - 2:20 PM |
Contact | Email. Please prefix the subject line of your email with [CS856] for a timely reply. |
Office Hours | By appointment. |
Prerequisites | Familiarity with basic networking concepts such as different networking layers (e.g., data link, network, and transport layers), forwarding and routing, and common protocols (e.g., Ethernet, IP, UDP, TCP, HTTP, and DNS), through CS 456/656 or an equivalent course. |
Location | DC 2568 |
Modern computer networks are complex distributed systems, with thousands of heterogeneous software and hardware components working together to deliver traffic from sources to destinations. They serve applications that demand much more than basic network connectivity, asking for certain levels of performance and reliability from the network. Meeting these growing expectations requires running new and increasingly sophisticated algorithms and protocols in networking software and hardware.
As such, as networks continue to grow in complexity, scale, and speed, it is simply not sustainable to operate and manage them by manually configuring a fixed set of algorithms and protocols through low-level command-line interfaces. That is why the networking community has spent the last decade rethinking how to design and operate networks using programming abstractions and automation. This includes, but is not limited to, designing programmable network hardware, developing domain-specific languages for programming it, and building automated tools to analyze and implement network functionality by distributing high-level programs across the network, compiling them to low-level instructions for the underlying hardware, or verifying their correctness.
In this course, we will study the literature on how programming abstractions and automation have been applied in different parts of the networking ecosystem and the benefits that have followed. Specifically, we will discuss the following (tentative list):
Topic | Dates | Slides | Papers for Review | Other Resources | Project and Assignments |
---|---|---|---|---|---|
0. Course Introduction | Tue - Jan 10 | [lec00] | |||
1. SDN and OpenFlow | Thu - Jan 12 Tue - Jan 17 |
[lec01] | 4D, Frenetic | OpenFlow, NetKAT | |
2. Programming the Data Plane with P4 | Thu - Jan 19 Tue - Jan 24 |
[lec02] | P4, P416 | p4.org, Domino, Mantis, MicroP4, P4All | |
3. Programmable Switch Architectures | Thu - Jan 26 Tue - Jan 31 |
[lec03] | RMT, JYV+15 | dRMT, FlexCore, Trio Menshen | Project proposal is due, Assignment 1 is released |
4. "Smart" Network Interface Cards | Thu - Feb 2 Tue - Feb 7 |
[lec04] | AccelNet, iPipe | TBD | |
5. Programming Software Network Stacks | Thu - Feb 9 Tue - Feb 14 |
[lec05] | OvS, CCP | TBD | |
6. Applications to Traditional Networks | Thu - Feb 16 | [lec06] | TBD | Assignment 1 is due | |
Reading Week | |||||
6. Applications to Traditional Networks (Continued) | Tue - Feb 28 | [lec07] | Fibbing, Propane | ||
7. Network Verification | Thu - Mar 2 Tue - Mar 7 |
[lec08] | p4v, RCDC | TBD | Project progress report is due and Assignment 2 is released |
8. Flexible & Fine-Grained Network Monitoring | Thu - Mar 9 Tue - Mar 14 |
[lec09] | Sonata, UnivMon | TBD | |
9. Applications to Transport and Network QoS | Thu - Mar 16 Tue - Mar 21 |
[lec10] | HPCC, AFQ | TBD | Assignment 2 is due |
10. In-Network Computing | Thu - Mar 23 Tue - Mar 28 |
[lec11] | ATP | TBD | |
11. Miscellaneous | Thu - Mar 30 | [lec12] | TBD | ||
Project Presentations: Thu - Apr 4 & Tue - Apr 6 Final Project Report Due Mon - Apr 10 |
4D | Albert Greenberg, Gisli Hjalmtysson, David A. Maltz, Andy Myers, Jennifer Rexford, Geoffrey Xie, Hong Yan, Jibin Zhan, Hui Zhang. A clean slate 4D approach to network control and management. ACM SIGCOMM CCR 2005. |
Frenetic | Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, David Walker. Frenetic: A network programming language. ACM ICFP 2011. |
OpenFlow | Nick McKeown, Tom Anderson, Hari Balakrishnan, Guru Parulkar, Larry Peterson, Jennifer Rexford, Scott Shenker, Jonathan Turner. OpenFlow: enabling innovation in campus networks. ACM SIGCOMM CCR 2008. |
NetKAT | Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, David Walker. NetKAT: Semantic foundations for networks. ACM POPL 2014. |
P4 | Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger et al. P4: Programming protocol-independent packet processors. ACM SIGCOMM CCR 2014. |
P416 | Mihai Budiu, Chris Dodd. The P416 programming language. ACM SIGOPS OSR 2017. |
Domino | Anirudh Sivaraman, Alvin Cheung, Mihai Budiu, Changhoon Kim, Mohammad Alizadeh, Hari Balakrishnan, George Varghese, Nick McKeown, Steve Licking. Packet transactions: High-level programming for line-rate switches. ACM SIGCOMM 2016. |
Mantis | Liangcheng Yu, John Sonchack, Vincent Liu. Mantis: Reactive programmable switches. ACM SIGCOMM 2020. |
MicroP4 | Hardik Soni, Myriana Rifai, Praveen Kumar, Ryan Doenges, Nate Foster. Composing dataplane programs with µP4. ACM SIGCOMM 2020. |
P4All | Mary Hogan, Shir Landau-Feibish, Mina Tahmasbi Arashloo, Jennifer Rexford, David Walker. Modular switch programming under resource constraints. USENIX NSDI 2022. |
RMT | Pat Bosshart, Glen Gibb, Hun-Seok Kim, George Varghese, Nick McKeown, Martin Izzard, Fernando Mujica, Mark Horowitz. Forwarding metamorphosis: Fast programmable match-action processing in hardware for SDN. ACM SIGCOMM 2013. |
JYV+15 | Lavanya Jose, Lisa Yan, George Varghese, Nick McKeown. Compiling packet programs to reconfigurable switches. USENIX NSDI 2015. |
dRMT | Sharad Chole, Andy Fingerhut, Sha Ma, Anirudh Sivaraman, Shay Vargaftik, Alon Berger, Gal Mendelson et al. dRMT: Disaggregated programmable switching. ACM SIGCOMM 2017. |
FlexCore | Jiarong Xing, Kuo-Feng Hsu, Matty Kadosh, Alan Lo, Yonatan Piasetzky, Arvind Krishnamurthy, Ang Chen. Runtime programmable switches. USENIX NSDI 2022. |
Trio | Mingran Yang, Alex Baban, Valery Kugel, Jeff Libby, Scott Mackie, Swamy Sadashivaiah Renu Kananda, Chang-Hong Wu, Manya Ghobadi. Using Trio: juniper networks' programmable chipset-for emerging in-network applications. ACM SIGCOMM 2022. |
Menshen | Tao Wang, Xiangrui Yang, Gianni Antichi, Anirudh Sivaraman, and Aurojit Panda. Isolation mechanisms for high-speed packet-processing pipelines. USENIX NSDI 2022. |
AccelNet | Daniel Firestone, Andrew Putnam, Sambhrama Mundkur, Derek Chiou, Alireza Dabagh, Mike Andrewartha, Hari Angepat et al. Azure Accelerated Networking: SmartNICs in the public cloud. USENIX NSDI 2018. |
iPipe | Ming Liu, Tianyi Cui, Henry Schuh, Arvind Krishnamurthy, Simon Peter, and Karan Gupta. Offloading distributed applications onto SmartNics using iPipe. ACM SIGCOMM 2019. |
OvS | Ben Pfaff, Justin Pettit, Teemu Koponen, Ethan Jackson, Andy Zhou, Jarno Rajahalme, Jesse Gross et al. The design and implementation of Open vSwitch. USENIX NSDI 2015. |
CCP | Akshay Narayan, Frank Cangialosi, Deepti Raghavan, Prateesh Goyal, Srinivas Narayana, Radhika Mittal, Mohammad Alizadeh, and Hari Balakrishnan. Restructuring endpoint congestion control.. ACM SIGCOMM 2018. |
Fibbing | Stefano Vissicchio, Olivier Tilmans, Laurent Vanbever, and Jennifer Rexford. Central control over distributed routing. ACM SIGCOMM 2015. |
Propane | Ryan Beckett, Ratul Mahajan, Todd Millstein, Jitendra Padhye, and David Walker. Don't mind the gap: Bridging network-wide objectives and device-level configurations. ACM SIGCOMM 2016. |
p4v | Jed Liu, William Hallahan, Cole Schlesinger, Milad Sharif, Jeongkeun Lee, Robert Soulé, Han Wang, Călin Caşcaval, Nick McKeown, and Nate Foster. P4v: Practical verification for programmable data planes. ACM SIGCOMM 2018. |
RCDC | Karthick Jayaraman, Nikolaj Bjørner, Jitu Padhye, Amar Agrawal, Ashish Bhargava, Paul-Andre C. Bissonnette, Shane Foster et al. Validating datacenters at scale. ACM SIGCOMM 2019. |
Sonata | Arpit Gupta, Rob Harrison, Marco Canini, Nick Feamster, Jennifer Rexford, and Walter Willinger. Sonata: Query-driven streaming network telemetry. ACM SIGCOMM 2018. |
UnivMon | Zaoxing Liu, Antonis Manousis, Gregory Vorsanger, Vyas Sekar, and Vladimir Braverman. One sketch to rule them all: Rethinking network flow monitoring with UnivMon. ACM SIGCOMM 2016. |
HPCC | Yuliang Li, Rui Miao, Hongqiang Harry Liu, Yan Zhuang, Fei Feng, Lingbo Tang, Zheng Cao et al. HPCC: High Precision Congestion Control. ACM SIGCOMM 2019. |
AFQ | Naveen Kr Sharma, Ming Liu, Kishore Atreya, and Arvind Krishnamurthy. Approximating fair queueing on reconfigurable switches. USENIX NSDI 2018. |
ATP | ChonLam Lao, Yanfang Le, Kshiteej Mahajan, Yixi Chen, Wenfei Wu, Aditya Akella, and Michael Swift. ATP: In-network aggregation for multi-tenant learning. USENIX NSDI 2021. |