added 3 bmv2 examples: copy_to_cpu, meter, TLV_parsing
This commit is contained in:
59
examples/README.md
Normal file
59
examples/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# P4 Code Samples
|
||||
|
||||
## Introduction
|
||||
|
||||
This directory includes P4 code samples, meant to be run on bmv2, which
|
||||
illustrates several more advanced features of P4. The following samples are
|
||||
included:
|
||||
|
||||
- `copy_to_cpu`: how to use the `clone_ingress_to_egress primitive` to clone the
|
||||
packet, encapsulate it and send it to a special port.
|
||||
- `meter`: how to use indirect meters in P4.
|
||||
- `TLV_parsing`: how to parse IPv4 options
|
||||
|
||||
All examples are orgranized the same way, with a `p4src` directory containing
|
||||
the P4 source code, and a `README` file describing the P4 program and explaining
|
||||
how to run a quick demonstration.
|
||||
|
||||
## Obtaining required software
|
||||
|
||||
To complete the exercises, you will need to clone 2 p4lang Github repositories
|
||||
and install their dependencies. To clonde the repositories:
|
||||
|
||||
- `git clone https://github.com/p4lang/behavioral-model.git bmv2`
|
||||
- `git clone https://github.com/p4lang/p4c-bm.git p4c-bmv2`
|
||||
|
||||
The first repository ([bmv2](https://github.com/p4lang/behavioral-model)) is the
|
||||
second version of the behavioral model. It is a C++ software switch that will
|
||||
behave according to your P4 program. The second repository
|
||||
([p4c-bmv2](https://github.com/p4lang/p4c-bm)) is the compiler for the
|
||||
behavioral model: it takes P4 program and output a JSON file which can be loaded
|
||||
by the behavioral model.
|
||||
|
||||
Each of these repositories come with dependencies. `p4c-bmv2` is a Python
|
||||
repository and installing the required Python dependencies is very easy to do
|
||||
using `pip`: `sudo pip install -r requirements.txt`.
|
||||
|
||||
`bmv2` is a C++ repository and has more external dependencies. They are listed
|
||||
in the
|
||||
[README](https://github.com/p4lang/behavioral-model/blob/master/README.md). If
|
||||
you are running Ubuntu 14.04+, the dependencies should be easy to install (you
|
||||
can use the `install_deps.sh` script that comes with `bmv2`). Do not forget to
|
||||
build the code once all the dependencies have been installed:
|
||||
|
||||
- `./autogen.sh`
|
||||
- `./configure`
|
||||
- `make`
|
||||
|
||||
## Before starting the exercises
|
||||
|
||||
You need to tell us where you cloned the `bmv2` and `p4c-bm` repositories
|
||||
:). Please update the values of the shell variables `BMV2_PATH` and
|
||||
`P4C_BM_PATH` in the `env.sh` file - located in this directory. Note that if you
|
||||
cloned both repositories in the same directory as this one (`tutorials`), you
|
||||
will not need to change the value of the variables.
|
||||
|
||||
You will also need to run the `veth_setup.sh` script included in this directory
|
||||
as `sudo` to setup the veth interfaces needed by the switch.
|
||||
|
||||
That's all :)
|
||||
Reference in New Issue
Block a user