P4环境配置
因为之后使用的时候PI那块还是有问题,建议谨做参考,安装还是最好用一用官方的tuorials里面的虚拟机脚本
0.准备
基础环境ubuntu 18.04 LTS
使用trojan终端代理,不然一些下载太慢了
ubuntu换源到阿里云
在~目录新建P4目录并且加入环境变量
1
2
3
4mkdir P4
cd P4
echo"P4_HOME=$(pwd)">> ~/.bashrc
source ~/.bashrc安装依赖包
1
2sudo apt-get install -y cmake g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev libboost-graph-dev llvm pkg-config python python-scapy python-ipaddr python-ply tcpdump doxygen graphviz texlive
sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump cmake## 两个参考里面的可能有重复下面都是在P4文件夹进行的工作
所有的make都巨慢,合理安排好时间
1. 安装依赖库protocol
参考了这个依赖库github的C++环境的README;
安装依赖并且git clone
1
2
3
4
5sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh其中 git submodule update –init –recursive 必做,这会下载好相应的googletest文件,忽略这一步会在make check报错
然后build以及安装,下面步骤耗时较长:
1
2
3
4
5./configure
make
make check
sudo make install
sudo ldconfig # refresh shared library cache.更新共享库
2. 安装PI以及它的依赖
参考PI的 github网站https://github.com/p4lang/PI 安装
首先安装gRPC V1.17.2
1
2
3
4
5
6
7
8
9git clone https://github.com/google/grpc.git
cd grpc/
git checkout tags/v1.17.2
git submodule update --init --recursive # 这步耗时较长,一定要代理
make #也可以make -j4 表示用四个核make,j后面这个数量可以自己设定
sudo make install
sudo ldconfig
# Install gRPC Python Package 这步安装挺慢的
sudo pip install grpcio然后安装PI –with-proto,(To include
p4runtime.proto
in the build, please runconfigure
with--with-proto
.)1
2
3
4
5
6./autogen.sh
./configure --with-proto
make
make check
sudo make install
sudo ldconfig
3. 安装bmv2
建议先阅读原来的github库(https://github.com/p4lang/behavioral-model)
安装操作
1
2
3
4cd ~/P4
git clone https://github.com/p4lang/behavioral-model.git
cd behavioral-model
sudo ./install_deps.sh #脚本安装依赖库终端代理的好处在于这些脚本如果不是终端代理下载会异常慢以至于不得不手动转换到gitee安装
安装依赖库因为要编译其他第三方库也异常的慢
1
2
3
4
5
6./autogen.sh
./configure --enable-debugger --with-pi
make
sudo make install
sudo sudo ldconfig
cd ..
4. 安装p4c
下载库
1
2
3
4
5
6
7
8
9cd ~/P4
git clone --recursive https://github.com/p4lang/p4c.git
cd p4c
mkdir build
cd build
cmake ..
make -j4 #4线程编译
sudo make install
cd ../..这步如果make -j4后面make check 会花很多时间然后有可能报错
5. 下载p4 tutorials
1 | git clone https://github.com/p4lang/tutorials |
目前的目录:
1 | P4 |
6. 解决实验出现的bug
在做实验的时候出现了陆陆续续的bug,还需要:
No module named psutil
1
2
3
4wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz
tar -zxvf psutil-2.1.3.tar.gz
cd psutil-2.1.3
python setup.py installNo module named google.protobuf.internal
1
pip install protobuf
根据https://github.com/p4lang/behavioral-model/tree/main/targets/simple_switch_grpc 安装simple_switch_grpc
安装之后还是P4 switch s1 did not start correctly,根据issuehttps://github.com/p4lang/tutorials/issues/107 ,还需要:
1
sudo ldconfig
至此可以编译basic实验
安装之后进行P4runtime的时候出现报错 :No module named rpc 尚未解决 因此建议还是使用官方的vagrant
PS: 最后发现其实最标准的安装操作是根据tutorials(https://github.com/p4lang/tutorials)里面的vm里面的两个脚本安装(为啥要手动还不是因为网速太慢