150 Commits

Author SHA1 Message Date
Irevoire
d8fb2ee21b [p4runtime] change dead ecn reference to mri reference (#244) 2019-03-22 13:59:07 -04:00
Antonin Bas
33b30be0b8 Install missing psutil Python package
Required by utils/netstat.py

Fixes #237
2019-02-26 10:38:19 -08:00
Nate Foster
6a5e60c6a9
Update README.md
Add disclaimer for folks running the bootstrapping scripts manually.
2019-02-10 18:00:30 -05:00
David Lu
a264b3de05 Update README.md (#220)
Modify the title "Step 2" to "Step 1" and "Step 3" to "Step 2" because there is no "Step 1"
2019-01-08 10:54:37 -05:00
Mohammad Riftadi
41873db58d Changed vagrant box from fso to lasp. (#206) 2018-10-11 14:19:02 +02:00
sibanez12
7ff3af57fb Adding P4 cheat cheet and its latex source files. (#201) 2018-10-05 15:52:35 -04:00
Antonin Bas
e3ef4d14db Better output for debugging P4Runtime gRPC errors
P4Runtime uses a "complex" error message format to report errors for
batched Write & Read RPC requests. Some effort is required to parse the
error messages appropriately in order to print some useful debugging
information.
2018-09-25 23:33:34 -07:00
Matthew Davis
56a462ea32 Basic tunnel readme (#197)
* basic_tunnel README says starter code uncompilable

* basic_tunnel README says starter code uncompilable
2018-09-07 13:50:36 -04:00
Matthew Davis
873dce7aea made vm bootstrap non-interactive (#195) 2018-09-03 14:53:19 -04:00
Nate Foster
cedbf5b8b2 Remove extra slides (#192) 2018-08-20 07:37:29 +02:00
Nate Foster
763b95a880 Final edits for SIGCOMM tutorial (#191)
* Final updates for SIGCOMM '18

* Final updates for SIGCOMM '18
2018-08-20 05:20:39 +02:00
sibanez12
6ccdbc34bd Updated README to add link to P4 Cheat Sheet on google drive. (#168) 2018-06-07 19:08:58 -04:00
Brian O'Connor
6c37638818 Updating p4runtime solution (#171) 2018-06-07 18:09:48 -04:00
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
Nate Foster
ac588a2f5d
Final edits (#165)
* Final instructions tidying

* Instructions

* Add final slides
2018-06-06 08:34:10 -04:00
Carmelo Cascone
948a890700 Fixed P4Runtime spelling (#162)
As agreed in the P4 API WG
2018-06-01 14:16:13 -04:00
Carmelo Cascone
08445e0b18 Fixed location of pcaps and bmv2 logs (#161)
* Fixed location of pcaps and bmv2 logs

Also added reference to P4Runtime request logs to welcome message

* Fixed pcap/log location for Thrift/CLI-based switch class
2018-06-01 14:15:39 -04:00
Nate Foster
37021092df
Small fixes to README.md (#160) 2018-06-01 02:56:49 -04:00
Nate Foster
dc08948a34
P4 Developer Day 2018 Spring (#159)
* Repository reorganization for 2018 Spring P4 Developer Day.

* Port tutorial exercises to P4Runtime with static controller (#156)

* Switch VM to a minimal Ubuntu 16.04 desktop image

* Add commands to install Protobuf Python bindings to user_bootstrap.sh

* Implement P4Runtime static controller for use in exercises

From the exercise perspective, the main difference is that control plane
rules are now specified using JSON files instead of CLI commands. Such
JSON files define rules that use the same name for tables, keys, etc. as
in the P4Info file.

All P4Runtime requests generated as part of the make run process are
logged in the exercise's “logs” directory, making it easier for students
to see the actual P4Runtime messages sent to the switch.

Only the "basic" exercise has been ported to use P4Runtime.
The "p4runtime" exercise has been updated to work with P4Runtime
protocol changes.

Known issues:
- make run hangs in case of errors when running the P4Runtime controller
    (probably due to gRPC stream channel threads not terminated properly)
- missing support for inserting table entries with default action
    (can specify in P4 program as a workaround)

* Force install protobuf python module

* Fixing Ctrl-C hang by shutdown switches

* Moving gRPC error print to function for readability

Unforuntately, if this gets moved out of the file, the process hangs.
We'll need to figure out how why later.

* Renaming ShutdownAllSwitches -> ShutdownAllSwitchConnections

* Reverting counter index change

* Porting the ECN exercise to use P4 Runtime Static Controller

* updating the README in the ecn exercise to reflect the change in rule files

* Allow set table default action in P4Runtime static controller

* Fixed undefined match string when printing P4Runtime table entry

* Updated basic_tunnel exercise to use P4Runtime controller.

* Changed default action in the basic exercise's ipv4_lpm table to drop

* Porting the MRI exercise to use P4runtime with static controller

* Updating readme to reflect the change of controller for mri

* Update calc exercise for P4Runtime static controller

* Port source_routing to P4 Runtime static controller (#157)

* Port Load Balance to P4 Runtime Static Controller (#158)
2018-06-01 02:54:33 -04:00
Georgios Nikolaidis
e7e6899d5c Added advanced Heavy Hitter Detection example (#136)
* Added advanced Heavy Hitter Detection example

* Changed directory location

* Restored skeleton version

* Added files for common run infra with the other tutorials

* Updated readme

* Autogenerate setup rules

* Commends in simple_router.p4

* Fix typos

* Removed commended out lines
2018-04-25 00:56:09 -07:00
Nate Foster
494706bd60
Delete DEFAULT_SERVER_URL (#135) 2018-04-17 21:10:41 -04:00
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
Matthew Davis
ce104fe2bc Fixed broken link (#119)
Please let me know if I'm not supposed to edit this file directly. I have not used tocdoc before, but judging by the comments it seems ok to edit this way.
2018-03-06 22:50:05 -05:00
robh2
27997d391c Small tweaks to the VM. (#118)
* Added guest additions dependency.

* Fix Emacs syntax highlighting.
2018-03-06 20:48:16 -05:00
robh2
97f31560ca Adding P4D2_2018_East Folder (#116)
* Copying P4D2 Fall 2017 into P4D2 2018 East.

* Updated P4D2_2018_East VM.  Added vagrant URL workaround, cdrom to VM.  Updated to latest commits of BMV2, p4c, PI.  Known issue with p4runtime exercise.

* Applied patch from @antoninbas in  and updated solution
2018-03-04 03:50:22 -05:00
Jed Liu
89277b5542 A slightly less vague TODO. (#98) 2017-11-13 15:47:40 -08:00
Jed Liu
7a3fd6bc12 Copyediting. (#93) 2017-11-13 15:19:29 -08:00
Robert Soule
12fc3ab9ac Added missing topology file. Set VIM background to dark. 2017-11-10 13:53:20 -08:00
Brian O'Connor
5b4b075a43 Updating slides PDF (#92) 2017-11-10 09:33:40 -08:00
Florian Klink
c7c51edb79 fix typo clonde -> clone in some READMEs (#91) 2017-11-10 05:43:34 -08:00
sibanez12
3ae98d14b9 Updated basic_tunnel exercise README (#90)
* Adding initial implementation of basic_encap example

* Updated basic_encap example to count the number of valid packets

* Updated basic_encap example to put encapsulation layer after Ethernet
header.

* Added solution file for basic_encap example

* Changed the name of the basic_encap example to basic_tunnel and called
the new header myTunnel. Also changed the myTunnel field names slightly.

* Updated the README file for the basic_tunnel exercise. Also added topo.pdf
image to serve as a reference during implementation.

* Updated basic/README.md to point to basic_tunnel as the next exercise.

* Updated the README for basic to point to basic_tunnel.

Updated the starter code for basic_tunnel to look like basic
solution with todo comments.

Updated send.py and receive.py to be able to send both plain IP
packets and tunneled IP packets.

Updated basic_tunnel.p4 to have same control flow as p4runtime
exercise.

* Updated the basic and basic_tunnel README files to remove references
to the old run.sh script.

Updated TODO list in basic_tunnel README

* Updated README files to indicate logs are in /tmp

* Updated README for basic_tunnel exercise to specify the etherType
field value.
2017-11-09 22:37:26 -08:00
Mina Tahmasbi Arashloo
f9202394dd updating todos in mri (#88) 2017-11-09 11:25:15 -08:00
Brian O'Connor
5c757fca09 Copying mininet_p4 from behavioral-model repo (#86)
Updating the P4Switch class to use different mechanism
for checking when the switch is listening on the Thrift
port. This might fix an issues where Mininet hangs on
start.
2017-11-08 12:25:59 -08:00
Mina Tahmasbi Arashloo
727b4f82f4 Adding figures to ECN and MRI exercises (#84)
* adding a figure of the network setup to ecn

* adding a figure of the network setup for MRI
2017-11-08 11:51:27 -08:00
Brian O'Connor
b41473fcc0 Updating check_switch_started in p4runtime_switch.py (#85)
The previous implementation had a race conditiona between the
socket check and the BMv2 startup. Sometimes, if the check happen
just before (or as) BMv2 was trying to bind the port, it would
not be able to bind it. This solution uses psutil's equivalent
to 'netstat' to determine whether is BMv2 has bound the port yet.

Also, some minor README and comment improvements.
2017-11-08 11:48:15 -08:00
Brian O'Connor
b2161b8a27 VM Updates (#83)
- Minor fixes to p4runtime exercise and README
- Adding p4runtime/solution
- Adding p4runtime/topology.json
- Updating .gitignore to include solution directory and topology.json
- Fixing root-bootstrap to exit on errors
- Updating VM name in Vagrantfile
- Setting up VM to automatically log 'p4' user in on startup
2017-11-08 08:13:17 -08:00
sibanez12
9af6750bec Updated README files for exercises (#82)
* Adding initial implementation of basic_encap example

* Updated basic_encap example to count the number of valid packets

* Updated basic_encap example to put encapsulation layer after Ethernet
header.

* Added solution file for basic_encap example

* Changed the name of the basic_encap example to basic_tunnel and called
the new header myTunnel. Also changed the myTunnel field names slightly.

* Updated the README file for the basic_tunnel exercise. Also added topo.pdf
image to serve as a reference during implementation.

* Updated basic/README.md to point to basic_tunnel as the next exercise.

* Updated the README for basic to point to basic_tunnel.

Updated the starter code for basic_tunnel to look like basic
solution with todo comments.

Updated send.py and receive.py to be able to send both plain IP
packets and tunneled IP packets.

Updated basic_tunnel.p4 to have same control flow as p4runtime
exercise.

* Updated the basic and basic_tunnel README files to remove references
to the old run.sh script.

Updated TODO list in basic_tunnel README

* Updated README files to indicate logs are in /tmp
2017-11-07 13:52:01 -08:00
Brian O'Connor
3d4a2f5748 Adding starter code and solution for p4runtime exercise (#81)
Summary of changes:
- Adding the p4runtime starter code and solution.
- Adding NO_P4, BMV2_SWITCH_EXE and P4C_ARGS to utils/Makefile
- Updated p4runtime/Makefile to use variables
- Adding conversion functions for match and action param values
- Separating P4Info and P4Runtime libraries
- Updating global README and adding p4runtime/README.md
- Disabling screen saver on VM GUI
- Adding desktop icons for Terminal, Wireshare and Sublime Text
- Updating topo.pdf -> png for Markdown viewing in basic_tunnel and
  p4runtime READMEs
2017-11-07 07:54:58 -08:00
sibanez12
ce7c3c372b Updated basic* README files (#80)
* Adding initial implementation of basic_encap example

* Updated basic_encap example to count the number of valid packets

* Updated basic_encap example to put encapsulation layer after Ethernet
header.

* Added solution file for basic_encap example

* Changed the name of the basic_encap example to basic_tunnel and called
the new header myTunnel. Also changed the myTunnel field names slightly.

* Updated the README file for the basic_tunnel exercise. Also added topo.pdf
image to serve as a reference during implementation.

* Updated basic/README.md to point to basic_tunnel as the next exercise.

* Updated the README for basic to point to basic_tunnel.

Updated the starter code for basic_tunnel to look like basic
solution with todo comments.

Updated send.py and receive.py to be able to send both plain IP
packets and tunneled IP packets.

Updated basic_tunnel.p4 to have same control flow as p4runtime
exercise.

* Updated the basic and basic_tunnel README files to remove references
to the old run.sh script.

Updated TODO list in basic_tunnel README
2017-11-06 19:56:27 -08:00
alex1230608
65a4334734 Updates README.md of load_balance and mri (#79) 2017-11-05 07:21:37 -08:00
sibanez12
6c82b6fbe7 Updates to basic_tunnel and basic (#78)
* Adding initial implementation of basic_encap example

* Updated basic_encap example to count the number of valid packets

* Updated basic_encap example to put encapsulation layer after Ethernet
header.

* Added solution file for basic_encap example

* Changed the name of the basic_encap example to basic_tunnel and called
the new header myTunnel. Also changed the myTunnel field names slightly.

* Updated the README file for the basic_tunnel exercise. Also added topo.pdf
image to serve as a reference during implementation.

* Updated basic/README.md to point to basic_tunnel as the next exercise.

* Updated the README for basic to point to basic_tunnel.

Updated the starter code for basic_tunnel to look like basic
solution with todo comments.

Updated send.py and receive.py to be able to send both plain IP
packets and tunneled IP packets.

Updated basic_tunnel.p4 to have same control flow as p4runtime
exercise.
2017-11-03 21:03:06 -07:00
Robert Soule
66c2cba1b5 Cleaned up links 2017-11-03 20:39:37 -07:00
Robert Soule
e9950f9905 Removed scrambler. 2017-11-03 20:35:00 -07:00
Robert Soule
b086127c54 Merge branch 'master' of github.com:p4lang/tutorials 2017-11-03 20:30:19 -07:00
Robert Soule
0557b61f2f Removed Hula 2017-11-03 20:30:11 -07:00
Robert Soule
bd0a39d5ac
Removed redundant crcmod install. (#77) 2017-11-03 16:56:25 -07:00
alex1230608
dcc8744592 Update exercises basic_tunnel and calc (#76) 2017-11-03 14:42:14 -07:00
theojepsen
786ceecf07 Updated VM (#75)
* Updated ecn exercise to work with new util scripts

* Bugfix and print port mapping in run_exercise.py

* updateded bootstrap for vm
2017-11-03 12:23:05 -07:00
Robert Soule
09dba5c63d
Updates the examples to use the new build scripts (except Hula). (#74)
* Added Makefile and topology.jsons for all examples.

* use branch

* Updated MRI exercise (#73)

* Updated MRI exercise

* Updated basic_tunnel.p4 for changes to p4 lang

* updated other examples
2017-11-03 12:20:44 -07:00
Brian O'Connor
aa4298859f Updates for p4runtime example (#71)
* Created p4runtime exercise directory with draft P4 program

* Updating VM

- Adding p4 to vboxsf group for VirtualBox Shared Folders
- Adding gRPC Python package for p4 runtime
- Setting up VM to use 2 CPUs

* Updating .gitignore for PyCharms and Mac OS

* Adding P4RuntimeSwitch type and support in run_exercises

If the grpc switch target is used, we will instantiate a P4RuntimeSwitch.
Ideally, this will get merged with BMv2's P4Switch and can be removed

* Adding p4 runtime and p4info browser libraries

Also, adding a Makefile for this project
2017-11-03 10:52:04 -07:00