Running the exercises can race: $ make run mkdir -p build pcaps logs p4c-bm2-ss --p4v 16 --p4runtime-file build/basic.p4info --p4runtime-format text -o build/basic.json basic.p4 sudo python ../../utils/run_exercise.py -t topology.json -b simple_switch_grpc Reading topology file. Building mininet topology. Switch port mapping: s1: 1:h1 2:s2 3:s3 s2: 1:h2 2:s1 3:s3 s3: 1:h3 2:s1 3:s2 Configuring switch s3 using P4Runtime with file s3-runtime.json - Using P4Info file build/basic.p4info... - Connecting to P4Runtime server on 127.0.0.1:50053 (bmv2)... - Setting pipeline config (build/basic.json)... Traceback (most recent call last): File "../../utils/run_exercise.py", line 408, in <module> exercise.run_exercise() File "../../utils/run_exercise.py", line 207, in run_exercise self.program_switches() File "../../utils/run_exercise.py", line 312, in program_switches self.program_switch_p4runtime(sw_name, sw_dict) File "../../utils/run_exercise.py", line 284, in program_switch_p4runtime proto_dump_fpath=outfile) File "/home/p4/tutorials/utils/p4runtime_lib/simple_controller.py", line 120, in program_switch bmv2_json_file_path=bmv2_json_fpath) File "/home/p4/tutorials/utils/p4runtime_lib/switch.py", line 85, in SetForwardingPipelineConfig self.client_stub.SetForwardingPipelineConfig(request) File "/usr/local/lib/python2.7/dist-packages/grpc/_interceptor.py", line 141, in __call__ return call_future.result() File "/usr/local/lib/python2.7/dist-packages/grpc/_channel.py", line 272, in result raise self grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.PERMISSION_DENIED, Not master)> ../../utils/Makefile:27: recipe for target 'run' failed make: *** [run] Error 1 Fix that by waiting for one response after sending MasterArbitrationUpdate. Signed-off-by: Alex Badea <alex.badea@keysight.com>
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 several modules:
- Introduction and Language Basics
- P4Runtime and the Control Plane
- Monitoring and Debugging
- Advanced Behavior
Presentation
The slides are available online and in the P4_tutorial.pdf in the tutorial directory.
Obtaining required software
If you are starting this tutorial at the Spring 2018 P4 Developer Day, 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 passwordp4
and issue the commandsudo shutdown -r now
- When the machine reboots, you should have a graphical desktop machine with the required software pre-installed.
To install dependencies by hand, please reference the vm installation scripts. They contain the dependencies, versions, and installation procedure. You can run them directly on an Ubuntu 16.04 machine:
sudo ./root-bootstrap.sh
sudo ./user-bootstrap.sh
Description
Languages
P4
42.9%
Python
41.3%
Shell
6.7%
Emacs Lisp
4.2%
Vim Script
2.5%
Other
2.4%