This repo creates a P4 Language Tutorials Environment in a Docker container on Barge with Vagrant instantly.
- VirtualBox
- Vagrant
- Docker Community Edition Client (optional)
$ vagrant up
$ vagrant ssh
[bargee@barge ~]$ docker run -it --rm --privileged -v /lib/modules:/lib/modules:ro -v /vagrant/tutorials:/home/p4/tutorials --name p4-tutorials --hostname p4-barge ailispaw/p4-tutorials:v2
p4@p4-barge:~$
p4@p4-barge:~$ cd tutorials/exercises/basic
p4@p4-barge:~/tutorials/exercises/basic$ make build
mkdir -p build pcaps logs
p4c-bm2-ss --p4v 16 --p4runtime-file build/basic.p4info --p4runtime-format text -o build/basic.json basic.p4
p4@p4-barge:~/tutorials/exercises/basic$ make run
mkdir -p build pcaps logs
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
.
.
.
mininet>
Because it doesn't have a GUI window, we can not use mininet's (g|x)term command.
You can use the ./contrib/term.sh
script in another terminal instead.
- Open another terminal.
- Then,
$ vagrant ssh
[bargee@barge ~]$ /vagrant/contrib/term.sh h1
root@<h1>:~#
- Or if you have Docker client in your local machine, you can log into the node directly.
$ ./contrib/term.sh h1
root@<h1>:~# ifconfig
h1-eth0 Link encap:Ethernet HWaddr 00:00:00:00:01:01
inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1416 (1.4 KB) TX bytes:90 (90.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)