Antonin Bas e535f0429c Fix MRI exercise solutions for recent bmv2 versions
Starting with version 1.11, bmv2 conforms with the P4_16 spec and
push_front no longer marks new headers as valid. With this commit, we
add calls to setValid after calls to push_front. For people using older
bmv2 versions, this means that the new header will be marked valid twice
in a row, which should not be an issue.
2018-04-15 08:37:21 -07:00
..
2017-10-03 16:30:47 -04:00

P4 Tutorial

Introduction

Welcome to the P4 Tutorial!

We've prepared a set of exercises to help you get started with P4 programming, organized into four modules:

  1. Introduction
  1. Monitoring and Debugging
  1. Advanced Data Structures
  1. Dynamic Behavior

Obtaining required software

If you are starting this tutorial at SIGCOMM 2017, then we've already provided you with a virtual machine that has all of the required software installed.

Otherwise, to complete the exercises, you will need to either build a virtual machine or install several dependencies.

To build the virtual machine:

  • Install Vagrant and VirtualBox
  • cd vm
  • vagrant up
  • Log in with username p4 and password p4 and issue the command sudo shutdown -r now
  • When the machine reboots, you should have a graphical desktop machine with the required software pre-installed.

To install dependences by hand:

  • git clone https://github.com/p4lang/behavioral-model.git
  • git clone https://github.com/p4lang/p4c
  • git clone https://github.com/p4lang/tutorials Then follow the instructions for how to build each package. Each of these repositories come with dependencies, which can be installed using the supplied instructions. The first repository (behavioral-model) contains the P4 behavioral model. It is a C++ software switch that will implement the functionality specified in your P4 program. The second repository (p4c) is the compiler for the behavioral model. It takes P4 program and produces a JSON file which can be loaded by the behavioral model. The third repository (tutorial) is the P4 Tutorial itself. You will also need to install mininet. On Ubuntu, it would look like this:
$ sudo apt-get install mininet