Alex Badea 2fe7ddf108 p4runtime lib: wait for MasterArbitrationUpdate to complete (#166)
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>
2018-06-06 15:01:33 -04:00
2018-06-06 08:34:10 -04:00
2018-06-01 02:54:33 -04:00
2018-06-01 02:54:33 -04:00
2015-09-30 17:20:24 -07:00
2018-06-06 08:34:10 -04:00
2018-06-06 08:34:10 -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 several modules:

  1. Introduction and Language Basics
  1. P4Runtime and the Control Plane
  1. Monitoring and Debugging
  1. 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 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 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
P4 dili tutoriallarinin Turkce cozumleri
Readme 59 MiB
Languages
P4 42.9%
Python 41.3%
Shell 6.7%
Emacs Lisp 4.2%
Vim Script 2.5%
Other 2.4%