CS 856: Programmable Networks (Winter 2023)

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):


The final grade for the course will be based on the following components:

Reviews (25%): A major component of this course is reading, reviewing, and discussing networking and systems papers. In preparation for in-class discussions, students are expected to write reviews for two papers each week. Each review should be ~500 words and contain the following sections, following the typical format of reviews in networking and systems conferences: Paper Presentation (15%): Each paper discussion starts by a 10-minute presentation by a student. Specifically, the presenter will describe the context and motivation behind the paper, the main problem the paper is trying to solve, the main design choices and/or techniques used in the solution, a summary of evaluation results, and 4-5 discussion questions. Each student is expected to do 1-2 presentations.

Assignments (10%): There are two assignments, each comprising 5% of the final grade. The purpose of the assignments is for the students to gain hands-on experience in using some of the common techniques and technologies used in programmable networks. One assignment focuses on implementing a simple network functionality using P4, one of the most common languages for programming the network data plane. The other assignment focuses on analyzing the correctness of a simple network functionality using existing analysis tools. Assignments are to be completed by each student individually.

Project (50%): Student are expected to work (individually or in groups) on original research projects related to programmable networks. There are four deliverables for the project:


Following is the schedule of lectures and paper discussions.

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

Faculty of Math's Statement on Mental Health and Diversity

Mental Health Support: The Faculty of Math encourages students to seek out mental health support if needed.

On-campus Resources: Off-campus Resources: Diversity: It is our intent that students from all diverse backgrounds and perspectives be well served by this course, and that students’ learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In particular:

Note for Students with Disabilities

AccessAbility Services, located in Needles Hall, Room 1401, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with AccessAbility at the beginning of each academic term.

University Policy on Academic Integrity

Academic Integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. The Office of Academic Integrity’s website contains detailed information on University of Waterloo policies for students and faculty. This site explains why Academic Integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in--and out--of the classroom.

Grievance: A student who believes that a decision affecting some aspect of their university life has been unfair or unreasonable may have grounds for initiating a grievance. Please read Policy 70, Student Petitions and Grievances, Section 4. When in doubt, please be certain to contact the department's administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for their actions (Check the Office of Academic Integrity’s website for more information). A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about "rules" for group work/collaboration should seek guidance from the course instructor, academic advisor, or the graduate/undergraduate associate dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline.

Avoiding Academic Offenses: Most students are unaware of the line between acceptable and unacceptable academic behaviour, especially when discussing assignments with classmates and using the work of other students. For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Office of Academic Integrity's site on Academic Misconduct and the Faculty of Mathematics' site on Academic Integrity.

Appeals: A decision made or penalty imposed under Policy 70, Student Petitions and Grievances (other than a petition) or Policy 71, Student Discipline may be appealed if a ground for an appeal can be established. For more information, refer to Policy 72 - Student Appeals.

Land Acknowledgement

We acknowledge that we live and work on the traditional territory of the Neutral, Anishinaabeg and Haudenosaunee peoples. The University of Waterloo is situated on the Haldimand Tract, the land promised to the Six Nations that includes six miles on each side of the Grand River.


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.