1. clone项目工程
在home目录下新建p4lang文件夹
$ mkdir ~/p4lang
$ cd ~/p4lang/
安装git,下载bmv2、p4c-bmv2到p4lang文件夹下
$ sudo apt install git
$ git clone https://github.com/p4lang/behavioral-model.git bmv2
$ git clone https://github.com/p4lang/p4c-bm.git p4c-bmv2
2. 安装bmv2
进入bmv2目录
$ cd ~/p4lang/bmv2
安装依赖
$ ./install_deps.sh
编译bmv2
$ ./autogen.sh
$ ./configure
$ make
安装bmv2
$ sudo make install
更新共享库
$ sudo ldconfig
单元测试,如果出错用sudo
$ make check
3. 安装p4c-bmv2
$ cd ~/p4lang/p4c-bmv2
$ sudo pip install -r requirements.txt
$ sudo python setup.py install
测试是否安装成功
$ p4c-bmv2 -h
4. 运行
$ cd ~/p4lang/bmv2/tools
root权限下,创建虚拟网络端口
# ./veth_setup.sh
编写p4源码,在p4源码文件目录下,生成对应json文件
# p4c-bmv2 –json <path to JSON file> <path to P4 file>
json文件放到simple_switch目录下,root权限下,运行simple_switch,并加载json文件
# sudo ./simple_switch -i 0@<iface0> -i 1@<iface1> <path to JSON file>
写好CLI命令文件commands.txt,root权限下,加载CLI命令
# ./runtime_CLI.py < commands.txt
用scapy发包、wireshark收包进行测试