CS 595 Applications of Programmable Networking (Fall 2023)

One of the most significant recent advances in data networking concerns its programmability. Programmability in networking can be used to achieve higher performance, better utilization, and new capabilities.
After taking this course, students will be better equipped to understand and use the capabilities of modern network equipment.

This seminar course explores recent research and product trends in programmable networking. The course blends tutorials on programmable networking with seminar discussions of research papers.
Students may also individually elect to work on a scoped project that builds on ESnet's open-source Smart NIC platform.

Learning goals:
Knowledge of recent research on programmable networking.
Identification of development trends in this area.
Familiarity with techniques used in research and deployed systems.
Developing skills to analyze and discuss research results.


Course info

Instructor: Nik Sultana, Department of Computer Science, Illinois Institute of Technology
Lecture Time: MW 10:00-11:15 CT    Lecture Location: Stuart Building 204
TA: Mohammad Firas Sada (msada@hawk)
Office Hours: Mondays at 08:00-09:00 (: Away on 11/13)
Announcements, Discussion and Q&A: On the course mailing list.
Course content: This page.
Grading: Participation (5%), Assignments (15%), Seminars (40%), Either Project or further Seminar Presentations (40%).
Policies: See the syllabus & policies page.
Books and material:

Demo day

Photo of the class at demo day.
Watch the project presentations from demo day!

Calendar


Color code used in the calendar below:
Lecture Presentation No class Tutorial

MondayTuesday WednesdayThursday Friday
Aug 21
LEC 1: Introduction & Overview
Aug 22
Aug 23
LEC 2 Networking review
Preparation: Read Chapter 1 of Computer Networks.
Aug 24
Aug 25
Aug 28
PRE: Intro to Programmable Networking
Reading: An Intellectual History of Programmable Networks
Aug 29
Aug 30
PRE: DPDK as an Offload Engine for P4 SmartNIC Applications
Aug 31
Sep 01
Sep 04
Labor Day -- No Classes
Sep 05
Sep 06
TUT 1: Intro to ESnet platform
Preparation: Ensure you can access Airfield.
Assigned: First assignment.
Sep 07
Sep 08
Sep 11
PRE: The P4 language
Reading: P4: Programming Protocol-Independent Packet Processors
Sep 12
Sep 13
PRE: Software-Defined WAN
Reading: Managing hierarchy, partitioning, and asymmetry for availability and scale in Google's Software-Defined WAN
Sep 14
Sep 15
Sep 18
TUT 2: Introduction to P4
Assigned: Second assignment.
Sep 19
Sep 20
TUT 3: Further P4 features
DUE: Assignment 1
Sep 21
Sep 22
Sep 25
TUT 4: Examples of P4 programs
DUE: Assignment 2
Assigned: Third assignment.
Sep 26
Sep 27
PRE: Edge Computing
Reading: Generating P4 Code for the Application Layer
Sep 28
Sep 29
Oct 02
PRE: Machine Learning
Reading: Scaling Distributed Machine Learning with In-Network Aggregation
Oct 03
Oct 04
TUT 5: More advanced P4 examples
DUE: Assignment 3
Oct 05
Oct 06
Oct 09
Fall Break Day -- No Classes
Oct 10
Oct 11
PRE: Network management
Reading: Memory Management in ActiveRMT: Towards Runtime-programmable Switches
Oct 12
Oct 13
Oct 16
PRE: Architecture
Reading: Software Resolved Networks: Rethinking Enterprise Networks with IPv6 Segment Routing
Oct 17
Oct 18
Project/Reading
DUE: Project Proposals
Oct 19
Oct 20
Oct 23
LEC 3: Guest lecture by Mario Baldi and Chris Neely (AMD)
"P4 Applications with programmable ASICs and FPGAs: Production deployments and research"
Oct 24
Oct 25
PRE: Programmability
Reading: RFC 8986: SRv6 Network Programming
Oct 26
Oct 27
Oct 30
PRE: Performance
Reading: Unleashing SmartNIC Packet Processing Performance in P4
Oct 31
Nov 01
PRE: Project updates
Nov 02
Nov 03
Nov 06
PRE: Testing
Reading: Understanding the Micro-Behaviors of Hardware Offloaded Network Stacks with Lumina
Nov 07
Nov 08
PRE: Offloading
Reading: RingLeader: Efficiently Offloading Intra-Server Orchestration to NICs
Nov 09
Nov 10
Nov 13
PRE: Project updates
Nov 14
Nov 15
LEC 4: Guest lecture by Vladimir Gurevich (P4ica)
"Interfacing with the data plane using control plane APIs" (slides)
Nov 16
Nov 17
Nov 20
TUT 6: Using Alveo FPGA NICs in the local testbed
See this VNC tutorial to access the testbed resources.
Nov 21
Nov 22
Thanksgiving Break -- No Classes
Nov 23
Thanksgiving Break --
No Classes
Nov 24
Thanksgiving Break --
No Classes
Nov 27
TUT 7: Using Alveo FPGA NICs on FABRIC
See this tutorial on getting started with FABRIC.
DUE: Project
Nov 28
Nov 29
PRE: Project Presentations
Nov 30
Dec 01