8:00 – 8:30am
8:30 – 9:00am
$ git clone https://github.com/p4lang/tutorials
$ cd tutorials/P4D2_2017_Fall/vm/
$ vagrant up
sudo shutdown -r now
When the machine reboots, you should have a graphical desktop machine with the required software pre-installed.
9:00 – 9:10am
9:10 – 10:45am
Session 1 will provide a hand-on introduction to P4. Students will start by implementing a “Hello World”-style application to gain an understanding of P4 concepts. The lesson will progressively introduce core language features, such as header/metadata types, packet parsers, and controls. By the end of this session, students will be able to implement a basic IP router.
10:45 – 11:15am
11:15 – 12:00pm
Session 2 will cover software tools that are essential to developing P4 applications. Students will learn how to invoke the the P4 compiler, run the debugger, and start a P4 software switch. This session will also introduce the control-plane interfaces via P4 Runtime, a protocol-independent API auto-generated from the definition of a packet processing pipeline written in P4.
12:00 – 1:30pm
1:30 – 3:00pm
Session 3 will focus on a set of labs related to network monitoring and debugging. In this session, students will gain a deeper understanding of P4 language concepts, including custom headers and intrinsic metadata. In the first exercise, students will implement Explicit Congestion Notification (ECN) to set a congestion bit in a packet header when the queue depth exceeds a threshold. In the second exercise, MRI, students will implement a simplified version of In-Band Network Telemetry to track the path that packets travel through the network.
3:00 – 3:30pm
3:30 – 4:50pm
Session 4 covers advanced data structures. In this session, students will implement two data-plane applications. In the first, source routing, end-hosts specify paths through the network by using a stack of labels in the packet header. The switch must “pop” each label and forward out the appropriate interface. In the second, students will implement a network calculator. Packets containing arithmetic expressions are sent to a switch. The switch will evaluate the expressions, and return the results back to the sender.
4:50 – 5:00pm
5:00 – 5:10pm
5:10 – 6:00pm
6:00 – 7:00pm