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
This commit is contained in:
parent
aa4298859f
commit
09dba5c63d
1
P4D2_2017_Fall/exercises/basic_tunnel/Makefile
Normal file
1
P4D2_2017_Fall/exercises/basic_tunnel/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -90,7 +90,7 @@ parser MyParser(packet_in packet,
|
|||||||
************ C H E C K S U M V E R I F I C A T I O N *************
|
************ C H E C K S U M V E R I F I C A T I O N *************
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
control MyVerifyChecksum(in headers hdr, inout metadata meta) {
|
control MyVerifyChecksum(inout headers hdr, inout metadata meta) {
|
||||||
apply { }
|
apply { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "basic_tunnel.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"multiswitch": {
|
|
||||||
"auto-control-plane": true,
|
|
||||||
"cli": true,
|
|
||||||
"pcap_dump": true,
|
|
||||||
"bmv2_log": true,
|
|
||||||
"links": [["h1", "s1"], ["s1", "s2"], ["s1", "s3"], ["s3", "s2"], ["s2", "h2"], ["s3", "h3"]],
|
|
||||||
"hosts": {
|
|
||||||
"h1": {
|
|
||||||
},
|
|
||||||
"h2": {
|
|
||||||
},
|
|
||||||
"h3": {
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"s1": {
|
|
||||||
"entries": "s1-commands.txt"
|
|
||||||
},
|
|
||||||
"s2": {
|
|
||||||
"entries": "s2-commands.txt"
|
|
||||||
},
|
|
||||||
"s3": {
|
|
||||||
"entries": "s3-commands.txt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
#cd build
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
16
P4D2_2017_Fall/exercises/basic_tunnel/topology.json
Normal file
16
P4D2_2017_Fall/exercises/basic_tunnel/topology.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" },
|
||||||
|
"s2": { "cli_input" : "s2-commands.txt" },
|
||||||
|
"s3": { "cli_input" : "s3-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["s1", "s2"], ["s1", "s3"],
|
||||||
|
["s3", "s2"], ["s2", "h2"], ["s3", "h3"]
|
||||||
|
]
|
||||||
|
}
|
1
P4D2_2017_Fall/exercises/calc/Makefile
Normal file
1
P4D2_2017_Fall/exercises/calc/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -19,7 +19,7 @@ switch in Mininet to test its behavior.
|
|||||||
|
|
||||||
1. In your shell, run:
|
1. In your shell, run:
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
make
|
||||||
```
|
```
|
||||||
This will:
|
This will:
|
||||||
* compile `calc.p4`, and
|
* compile `calc.p4`, and
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "calc.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"mininet": {
|
|
||||||
"num-hosts": 2,
|
|
||||||
"switch-config": "calc.config"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
#cd build
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
12
P4D2_2017_Fall/exercises/calc/topology.json
Normal file
12
P4D2_2017_Fall/exercises/calc/topology.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["h2", "s1"]
|
||||||
|
]
|
||||||
|
}
|
@ -176,7 +176,7 @@ There are several ways that problems might manifest:
|
|||||||
4. `ecn.p4` compiles and all rules are installed. Packets go through
|
4. `ecn.p4` compiles and all rules are installed. Packets go through
|
||||||
and the logs show that the queue length was not high enough to set
|
and the logs show that the queue length was not high enough to set
|
||||||
the ECN bit. Then either lower the threshold in the p4 code or
|
the ECN bit. Then either lower the threshold in the p4 code or
|
||||||
reduce the link bandwidth in `p4app.json`
|
reduce the link bandwidth in `topology.json`
|
||||||
|
|
||||||
#### Cleaning up Mininet
|
#### Cleaning up Mininet
|
||||||
|
|
||||||
|
1
P4D2_2017_Fall/exercises/load_balance/Makefile
Normal file
1
P4D2_2017_Fall/exercises/load_balance/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -24,7 +24,7 @@ up a switch in Mininet to test its behavior.
|
|||||||
|
|
||||||
1. In your shell, run:
|
1. In your shell, run:
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
make
|
||||||
```
|
```
|
||||||
This will:
|
This will:
|
||||||
* compile `load_balance.p4`, and
|
* compile `load_balance.p4`, and
|
||||||
@ -64,7 +64,7 @@ with parameters supplied by the control plane as part of the rule.
|
|||||||
|
|
||||||
In this exercise, the control plane logic has already been
|
In this exercise, the control plane logic has already been
|
||||||
implemented. As part of bringing up the Mininet instance, the
|
implemented. As part of bringing up the Mininet instance, the
|
||||||
`run.sh` script will install packet-processing rules in the tables of
|
`make` script will install packet-processing rules in the tables of
|
||||||
each switch. These are defined in the `s1-commands.txt` file.
|
each switch. These are defined in the `s1-commands.txt` file.
|
||||||
|
|
||||||
**Important:** A P4 program also defines the interface between the
|
**Important:** A P4 program also defines the interface between the
|
||||||
@ -112,12 +112,12 @@ messages, some should be received by each server.
|
|||||||
|
|
||||||
There are several ways that problems might manifest:
|
There are several ways that problems might manifest:
|
||||||
|
|
||||||
1. `load_balance.p4` fails to compile. In this case, `run.sh` will
|
1. `load_balance.p4` fails to compile. In this case, `make` will
|
||||||
report the error emitted from the compiler and stop.
|
report the error emitted from the compiler and stop.
|
||||||
|
|
||||||
2. `load_balance.p4` compiles but does not support the control plane
|
2. `load_balance.p4` compiles but does not support the control plane
|
||||||
rules in the `sX-commands.txt` files that `run.sh` tries to install
|
rules in the `sX-commands.txt` files that `make` tries to install
|
||||||
using the BMv2 CLI. In this case, `run.sh` will report these errors
|
using the BMv2 CLI. In this case, `make` will report these errors
|
||||||
to `stderr`. Use these error messages to fix your `load_balance.p4`
|
to `stderr`. Use these error messages to fix your `load_balance.p4`
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ detailed and can help pinpoint logic errors in your implementation.
|
|||||||
|
|
||||||
#### Cleaning up Mininet
|
#### Cleaning up Mininet
|
||||||
|
|
||||||
In the latter two cases above, `run.sh` may leave a Mininet instance
|
In the latter two cases above, `make` may leave a Mininet instance
|
||||||
running in the background. Use the following command to clean up
|
running in the background. Use the following command to clean up
|
||||||
these instances:
|
these instances:
|
||||||
|
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "load_balance.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"multiswitch": {
|
|
||||||
"auto-control-plane": true,
|
|
||||||
"cli": true,
|
|
||||||
"pcap_dump": true,
|
|
||||||
"bmv2_log": true,
|
|
||||||
"links": [["h1", "s1"], ["s1", "s2"], ["s1", "s3"], ["s3", "s2"], ["s2", "h2"], ["s3", "h3"]],
|
|
||||||
"hosts": {
|
|
||||||
"h1": {
|
|
||||||
},
|
|
||||||
"h2": {
|
|
||||||
},
|
|
||||||
"h3": {
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"s1": {
|
|
||||||
"entries": "s1-commands.txt"
|
|
||||||
},
|
|
||||||
"s2": {
|
|
||||||
"entries": "s2-commands.txt"
|
|
||||||
},
|
|
||||||
"s3": {
|
|
||||||
"entries": "s3-commands.txt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
16
P4D2_2017_Fall/exercises/load_balance/topology.json
Normal file
16
P4D2_2017_Fall/exercises/load_balance/topology.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" },
|
||||||
|
"s2": { "cli_input" : "s2-commands.txt" },
|
||||||
|
"s3": { "cli_input" : "s3-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["s1", "s2"], ["s1", "s3"],
|
||||||
|
["s3", "s2"], ["s2", "h2"], ["s3", "h3"]
|
||||||
|
]
|
||||||
|
}
|
1
P4D2_2017_Fall/exercises/mri/Makefile
Normal file
1
P4D2_2017_Fall/exercises/mri/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -31,7 +31,7 @@ switch in Mininet to test its behavior.
|
|||||||
|
|
||||||
1. In your shell, run:
|
1. In your shell, run:
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
make
|
||||||
```
|
```
|
||||||
This will:
|
This will:
|
||||||
* compile `mri.p4`, and
|
* compile `mri.p4`, and
|
||||||
@ -46,7 +46,7 @@ switch in Mininet to test its behavior.
|
|||||||
2. We want to send a low rate traffic from `h1` to `h2` and a high
|
2. We want to send a low rate traffic from `h1` to `h2` and a high
|
||||||
rate iperf traffic from `h11` to `h22`. The link between `s1` and
|
rate iperf traffic from `h11` to `h22`. The link between `s1` and
|
||||||
`s2` is common between the flows and is a bottleneck because we
|
`s2` is common between the flows and is a bottleneck because we
|
||||||
reduced its bandwidth to 512kbps in p4app.json. Therefore, if we
|
reduced its bandwidth to 512kbps in topology.json. Therefore, if we
|
||||||
capture packets at `h2`, we should see high queue size for that
|
capture packets at `h2`, we should see high queue size for that
|
||||||
link.
|
link.
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ with parameters supplied by the control plane as part of the rule.
|
|||||||
|
|
||||||
In this exercise, the control plane logic has already been
|
In this exercise, the control plane logic has already been
|
||||||
implemented. As part of bringing up the Mininet instance, the
|
implemented. As part of bringing up the Mininet instance, the
|
||||||
`run.sh` script will install packet-processing rules in the tables of
|
`make` script will install packet-processing rules in the tables of
|
||||||
each switch. These are defined in the `sX-commands.txt` files, where
|
each switch. These are defined in the `sX-commands.txt` files, where
|
||||||
`X` corresponds to the switch number.
|
`X` corresponds to the switch number.
|
||||||
|
|
||||||
@ -204,11 +204,11 @@ got a packet
|
|||||||
|
|
||||||
There are several ways that problems might manifest:
|
There are several ways that problems might manifest:
|
||||||
|
|
||||||
1. `mri.p4` fails to compile. In this case, `run.sh` will report the
|
1. `mri.p4` fails to compile. In this case, `make` will report the
|
||||||
error emitted from the compiler and stop.
|
error emitted from the compiler and stop.
|
||||||
2. `mri.p4` compiles but does not support the control plane rules in
|
2. `mri.p4` compiles but does not support the control plane rules in
|
||||||
the `sX-commands.txt` files that `run.sh` tries to install using the BMv2 CLI.
|
the `sX-commands.txt` files that `make` tries to install using the BMv2 CLI.
|
||||||
In this case, `run.sh` will report these errors to `stderr`. Use these error
|
In this case, `make` will report these errors to `stderr`. Use these error
|
||||||
messages to fix your `mri.p4` implementation.
|
messages to fix your `mri.p4` implementation.
|
||||||
3. `mri.p4` compiles, and the control plane rules are installed, but
|
3. `mri.p4` compiles, and the control plane rules are installed, but
|
||||||
the switch does not process packets in the desired way. The
|
the switch does not process packets in the desired way. The
|
||||||
@ -220,16 +220,16 @@ packets on each interface. Use `tcpdump -r <filename> -xxx` to print
|
|||||||
the hexdump of the packets.
|
the hexdump of the packets.
|
||||||
4. `mri.p4` compiles and all rules are installed. Packets go through
|
4. `mri.p4` compiles and all rules are installed. Packets go through
|
||||||
and the logs show that the queue length is always 0. Then either
|
and the logs show that the queue length is always 0. Then either
|
||||||
reduce the link bandwidth in `p4app.json`.
|
reduce the link bandwidth in `topology.json`.
|
||||||
|
|
||||||
#### Cleaning up Mininet
|
#### Cleaning up Mininet
|
||||||
|
|
||||||
In the latter two cases above, `run.sh` may leave a Mininet instance
|
In the latter two cases above, `make` may leave a Mininet instance
|
||||||
running in the background. Use the following command to clean up
|
running in the background. Use the following command to clean up
|
||||||
these instances:
|
these instances:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mn -c
|
make stop
|
||||||
```
|
```
|
||||||
|
|
||||||
## Next Steps
|
## Next Steps
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "mri.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"multiswitch": {
|
|
||||||
"auto-control-plane": true,
|
|
||||||
"cli": true,
|
|
||||||
"pcap_dump": true,
|
|
||||||
"bmv2_log": true,
|
|
||||||
"links": [["h1", "s1"], ["h11", "s1"], ["s1", "s2", "0", 0.5], ["s1", "s3"], ["s3", "s2"], ["s2", "h2"], ["s2", "h22"], ["s3", "h3"]],
|
|
||||||
"hosts": {
|
|
||||||
"h1": {
|
|
||||||
},
|
|
||||||
"h2": {
|
|
||||||
},
|
|
||||||
"h3": {
|
|
||||||
},
|
|
||||||
"h11": {
|
|
||||||
},
|
|
||||||
"h22": {
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"s1": {
|
|
||||||
"entries": "s1-commands.txt"
|
|
||||||
},
|
|
||||||
"s2": {
|
|
||||||
"entries": "s2-commands.txt"
|
|
||||||
},
|
|
||||||
"s3": {
|
|
||||||
"entries": "s3-commands.txt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
#cd build
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
@ -1,6 +1,6 @@
|
|||||||
table_set_default ipv4_lpm drop
|
table_set_default ipv4_lpm drop
|
||||||
table_set_default swtrace add_swtrace 1
|
table_set_default swtrace add_swtrace 1
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.1.1/32 => 00:00:00:00:01:01 1
|
table_add ipv4_lpm ipv4_forward 10.0.1.1/32 => 00:00:00:00:01:01 2
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.1.11/32 => 00:00:00:00:01:0b 2
|
table_add ipv4_lpm ipv4_forward 10.0.1.11/32 => 00:00:00:00:01:0b 1
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.2.0/24 => 00:00:00:02:03:00 3
|
table_add ipv4_lpm ipv4_forward 10.0.2.0/24 => 00:00:00:02:03:00 3
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.3.0/24 => 00:00:00:03:02:00 4
|
table_add ipv4_lpm ipv4_forward 10.0.3.0/24 => 00:00:00:03:02:00 4
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
table_set_default ipv4_lpm drop
|
table_set_default ipv4_lpm drop
|
||||||
table_set_default swtrace add_swtrace 2
|
table_set_default swtrace add_swtrace 2
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.2.2/32 => 00:00:00:00:02:02 1
|
table_add ipv4_lpm ipv4_forward 10.0.2.2/32 => 00:00:00:00:02:02 2
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.2.22/32 => 00:00:00:00:02:16 2
|
table_add ipv4_lpm ipv4_forward 10.0.2.22/32 => 00:00:00:00:02:16 1
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.1.0/24 => 00:00:00:01:03:00 3
|
table_add ipv4_lpm ipv4_forward 10.0.1.0/24 => 00:00:00:01:03:00 3
|
||||||
table_add ipv4_lpm ipv4_forward 10.0.3.0/24 => 00:00:00:03:03:00 4
|
table_add ipv4_lpm ipv4_forward 10.0.3.0/24 => 00:00:00:03:03:00 4
|
||||||
|
18
P4D2_2017_Fall/exercises/mri/topology.json
Normal file
18
P4D2_2017_Fall/exercises/mri/topology.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3",
|
||||||
|
"h11",
|
||||||
|
"h22"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" },
|
||||||
|
"s2": { "cli_input" : "s2-commands.txt" },
|
||||||
|
"s3": { "cli_input" : "s3-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["h11", "s1"], ["s1", "s2", "0", 0.5], ["s1", "s3"],
|
||||||
|
["s3", "s2"], ["s2", "h2"], ["s2", "h22"], ["s3", "h3"]
|
||||||
|
]
|
||||||
|
}
|
1
P4D2_2017_Fall/exercises/scrambler/Makefile
Normal file
1
P4D2_2017_Fall/exercises/scrambler/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -23,7 +23,7 @@ up a switch in Mininet to test its behavior.
|
|||||||
|
|
||||||
1. In your shell, run:
|
1. In your shell, run:
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
make
|
||||||
```
|
```
|
||||||
This will:
|
This will:
|
||||||
* compile `scrambler.p4`, and
|
* compile `scrambler.p4`, and
|
||||||
@ -61,7 +61,7 @@ with parameters supplied by the control plane as part of the rule.
|
|||||||
|
|
||||||
In this exercise, the control plane logic has already been
|
In this exercise, the control plane logic has already been
|
||||||
implemented. As part of bringing up the Mininet instance, the
|
implemented. As part of bringing up the Mininet instance, the
|
||||||
`run.sh` script will install packet-processing rules in the tables of
|
`make` script will install packet-processing rules in the tables of
|
||||||
each switch. These are defined in the `sX-commands.txt` files, where
|
each switch. These are defined in the `sX-commands.txt` files, where
|
||||||
`X` corresponds to the switch number.
|
`X` corresponds to the switch number.
|
||||||
|
|
||||||
@ -92,12 +92,12 @@ Follow the instructions from Step 1. This time, your message from
|
|||||||
There are several issues that might arise when developing your
|
There are several issues that might arise when developing your
|
||||||
solution:
|
solution:
|
||||||
|
|
||||||
1. `scrambler.p4` fails to compile. In this case, `run.sh` will
|
1. `scrambler.p4` fails to compile. In this case, `make` will
|
||||||
report the error emitted from the compiler and stop.
|
report the error emitted from the compiler and stop.
|
||||||
|
|
||||||
2. `scrambler.p4` compiles but does not support the control plane
|
2. `scrambler.p4` compiles but does not support the control plane
|
||||||
rules in the `sX-commands.txt` files that `run.sh` tries to install
|
rules in the `sX-commands.txt` files that `make` tries to install
|
||||||
using the BMv2 CLI. In this case, `run.sh` will report these errors
|
using the BMv2 CLI. In this case, `make` will report these errors
|
||||||
to `stderr`. Use these error messages to fix your `scrambler.p4`
|
to `stderr`. Use these error messages to fix your `scrambler.p4`
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ help pinpoint logic errors in your implementation.
|
|||||||
|
|
||||||
#### Cleaning up Mininet
|
#### Cleaning up Mininet
|
||||||
|
|
||||||
In the latter two cases above, `run.sh` may leave a Mininet instance
|
In the latter two cases above, `make` may leave a Mininet instance
|
||||||
running in the background. Use the following command to clean up
|
running in the background. Use the following command to clean up
|
||||||
these instances:
|
these instances:
|
||||||
|
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "scrambler.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"multiswitch": {
|
|
||||||
"auto-control-plane": true,
|
|
||||||
"cli": true,
|
|
||||||
"pcap_dump": true,
|
|
||||||
"bmv2_log": true,
|
|
||||||
"links": [["h1", "s1"], ["s1", "s2"], ["s1", "s3"], ["s3", "s2"], ["s2", "h2"], ["s3", "h3"]],
|
|
||||||
"hosts": {
|
|
||||||
"h1": {
|
|
||||||
},
|
|
||||||
"h2": {
|
|
||||||
},
|
|
||||||
"h3": {
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"s1": {
|
|
||||||
"entries": "s1-commands.txt"
|
|
||||||
},
|
|
||||||
"s2": {
|
|
||||||
"entries": "s2-commands.txt"
|
|
||||||
},
|
|
||||||
"s3": {
|
|
||||||
"entries": "s3-commands.txt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
#cd build
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
16
P4D2_2017_Fall/exercises/scrambler/topology.json
Normal file
16
P4D2_2017_Fall/exercises/scrambler/topology.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" },
|
||||||
|
"s2": { "cli_input" : "s2-commands.txt" },
|
||||||
|
"s3": { "cli_input" : "s3-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["s1", "s2"], ["s1", "s3"],
|
||||||
|
["s3", "s2"], ["s2", "h2"], ["s3", "h3"]
|
||||||
|
]
|
||||||
|
}
|
1
P4D2_2017_Fall/exercises/source_routing/Makefile
Normal file
1
P4D2_2017_Fall/exercises/source_routing/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
include ../../utils/Makefile
|
@ -31,14 +31,14 @@ bring up a network in Mininet to test its behavior.
|
|||||||
|
|
||||||
1. In your shell, run:
|
1. In your shell, run:
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
make
|
||||||
```
|
```
|
||||||
This will:
|
This will:
|
||||||
* compile `source_routing.p4`, and
|
* compile `source_routing.p4`, and
|
||||||
* start a Mininet instance with three switches (`s1`, `s2`, `s3`) configured
|
* start a Mininet instance with three switches (`s1`, `s2`, `s3`) configured
|
||||||
in a triangle, each connected to one host (`h1`, `h2`, `h3`).
|
in a triangle, each connected to one host (`h1`, `h2`, `h3`).
|
||||||
Check the network topology using the `net` command in mininet.
|
Check the network topology using the `net` command in mininet.
|
||||||
You can also change the topology in p4app.json
|
You can also change the topology in topology.json
|
||||||
* The hosts are assigned IPs of `10.0.1.1`, `10.0.2.2`, etc
|
* The hosts are assigned IPs of `10.0.1.1`, `10.0.2.2`, etc
|
||||||
(`10.0.<Switchid>.<hostID>`).
|
(`10.0.<Switchid>.<hostID>`).
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ path, so that source routing would be transparent to end-hosts?
|
|||||||
|
|
||||||
There are several ways that problems might manifest:
|
There are several ways that problems might manifest:
|
||||||
|
|
||||||
1. `source_routing.p4` fails to compile. In this case, `run.sh` will
|
1. `source_routing.p4` fails to compile. In this case, `make` will
|
||||||
report the error emitted from the compiler and stop.
|
report the error emitted from the compiler and stop.
|
||||||
2. `source_routing.p4` compiles but switches or mininet do not start.
|
2. `source_routing.p4` compiles but switches or mininet do not start.
|
||||||
Do you have another instance of mininet running? Did the previous
|
Do you have another instance of mininet running? Did the previous
|
||||||
@ -133,7 +133,7 @@ There are several ways that problems might manifest:
|
|||||||
|
|
||||||
#### Cleaning up Mininet
|
#### Cleaning up Mininet
|
||||||
|
|
||||||
In the cases above, `run.sh` may leave a Mininet instance running in
|
In the cases above, `make` may leave a Mininet instance running in
|
||||||
the background. Use the following command to clean up these
|
the background. Use the following command to clean up these
|
||||||
instances:
|
instances:
|
||||||
|
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"program": "source_routing.p4",
|
|
||||||
"language": "p4-16",
|
|
||||||
"targets": {
|
|
||||||
"multiswitch": {
|
|
||||||
"auto-control-plane": true,
|
|
||||||
"cli": true,
|
|
||||||
"pcap_dump": true,
|
|
||||||
"bmv2_log": true,
|
|
||||||
"links": [["h1", "s1"], ["s1", "s2"], ["s1", "s3"], ["s3", "s2"], ["s2", "h2"], ["s3", "h3"]],
|
|
||||||
"hosts": {
|
|
||||||
"h1": {
|
|
||||||
},
|
|
||||||
"h2": {
|
|
||||||
},
|
|
||||||
"h3": {
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"s1": {
|
|
||||||
},
|
|
||||||
"s2": {
|
|
||||||
},
|
|
||||||
"s3": {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
P4APPRUNNER=../../utils/p4apprunner.py
|
|
||||||
mkdir -p build
|
|
||||||
tar -czf build/p4app.tgz * --exclude='build'
|
|
||||||
#cd build
|
|
||||||
sudo python $P4APPRUNNER p4app.tgz --build-dir ./build
|
|
16
P4D2_2017_Fall/exercises/source_routing/topology.json
Normal file
16
P4D2_2017_Fall/exercises/source_routing/topology.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hosts": [
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3"
|
||||||
|
],
|
||||||
|
"switches": {
|
||||||
|
"s1": { "cli_input" : "s1-commands.txt" },
|
||||||
|
"s2": { "cli_input" : "s2-commands.txt" },
|
||||||
|
"s3": { "cli_input" : "s3-commands.txt" }
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
["h1", "s1"], ["s1", "s2"], ["s1", "s3"],
|
||||||
|
["s3", "s2"], ["s2", "h2"], ["s3", "h3"]
|
||||||
|
]
|
||||||
|
}
|
@ -111,6 +111,7 @@ cd ..
|
|||||||
# Tutorials
|
# Tutorials
|
||||||
pip install crcmod
|
pip install crcmod
|
||||||
git clone https://github.com/p4lang/tutorials
|
git clone https://github.com/p4lang/tutorials
|
||||||
|
git checkout p4d2_2017_fall
|
||||||
sudo mv tutorials /home/p4
|
sudo mv tutorials /home/p4
|
||||||
sudo chown -R p4:p4 /home/p4/tutorials
|
sudo chown -R p4:p4 /home/p4/tutorials
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user