P4语言环境安装(一)前端编译器p4c、后端编译器p4c-bm2-ss

这个P4安装环境是在2020-2-8安装的,安装环境卡了我好几天,把遇到的问题记录下来,有需要的同学可以参考一下,要是说错了或者有问题的话,评论或mail:[email protected]联系我都可以。

P4语言组织官网:https://p4.org/

本文安装代码就是从官网引导的p4language上下载的。

介绍

我看P4是刚看了三四十小时,大都用在安装环境了,觉得它就是一个控制修改数据流的语言,提供一个标准的结构,方便用户对控制平面和数据平面进行修改。

我理解的P4开发流程就是四步

  1. 程序员写P4程序。
  2. 把P4程序通过p4c(前端编译器)生成JSON和P4I文件,P4I是干什么用的我还不知道,知道了就把这内容添加上。
  3. JSON导入到p4c_bm2_ss(后端编译器)生成一个配置文件。
  4. 将配置文件导入到bmv2(非商用的软件交换模型),用于检测第一步P4程序写的对不对。

根据实际的交换结构的不同,我理解的第三步的后端编译器应该变化,仿真模型也应该用实际模型。

本文就是安装第一步的p4c和第三步p4c_bm2_ss,前端后端编译器。

安装步骤

首先要有个ubuntu系统,Ubuntu 18.04.4 下载:https://cn.ubuntu.com/download

如果用虚拟机的话,vmware workstation pro 下载:
https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/15_0

安装ubuntu系统时,一定要
内存分配空间要大于8G,小于8G,C++编译会报错,
硬盘空间建议大于40G,我安装时出现了三次安装空间不足的情况,最后直接分配了50G。

INSTAL:
下面的操作步骤完全是根据github上p4lang/p4c的README.MD里执行的,对遇到一些问题进行说明,可以读README时,结合下面操作步骤看。

右键桌面打开terminal,输入命令:

#在如果没有安装git,执行下面命令,从github上下载代码用
sudo apt-get install git
#安装p4c所需依赖,执行后需要安装一会
sudo apt-get install 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 python3-pip
tcpdump
#安装数据包处理程序
pip3 install scapy ply
#安装documentation building 这个需要五六个小时吧 
#网上说改变改变数据下载源或者搭个梯子会快很多 有兴趣的大佬可以看看怎么弄 弄成了教教我就更感谢了 
sudo apt-get install -y doxygen graphviz texlive-full
#安装protobuf依赖
sudo apt-get install autoconf automake libtool curl make g++ unzip

然后在https://github.com/protocolbuffers/protobuf/releases/tag/v3.11.3,根据自己的需要下载解压protobuf安装包,我可能只会用到C++,就下载了protobuf-cpp-3.11.3.tar.gz,每个包都包括C++,比如你需要C++和pyton,就下protobuf-python-3.11.3.tar.gz。

如果按Readme里执行下载protobuf,make check时会报找不到google_test路径,所以一定下载上面网址提供的protobuf压缩包。

#进入解压好的文件夹,我是安装在/home/guido(user_name)/路径下
cd /home/guido/protobuf-cpp-3.11.3/
cd protobuf-3.11.3/
#生成configure脚本
./autogen.sh
#检查系统配置
./configure
#执行代码编译操作 生成可执行文件
make
#检查编译结果,会用一阵时间
make check
#安装prptobuf
sudo make install
#更新库缓存
sudo ldconfig
#依赖安装完成

P4C里面包含几个后端编译器,这些编译器也需要安装一些依赖,如果不安装的话make check会报错。

因为需要用p4c-bm2-ss这个后端编译器,所以还是把依赖给安装了,步骤如下:

安装nanomsg 1.1.5 下载网址:https://github.com/nanomsg/nanomsg/releases

#我是安装在/home/guido(user_name)/路径下
#进入nanomsg-1.1.5文件夹下
cd nanomsg-1.1.5
#创建进入build文件夹
mkdir build
cd build
#生成安装程序
cmake ..
cmake --build .
ctest .
sudo cmake --build . --target install
sudo ldconfig

安装nnpy

#安装python-pip
sudo apt install python-pip
#我是安装在/home/guido(user_name)/路径下
git clone https://github.com/nanomsg/nnpy
#进入nnpy文件夹
cd /home/guido/nnpy
#安装nnpy
pip install nnpy    

安装Thrift v0.13.0 下载网址:https://github.com/apache/thrift/releases

#我是安装在/home/guido(user_name)/路径下
#进入Thrift v0.13.0文件夹
cd thrift-0.13.0
#安装依赖 
sudo apt-get install libssl-dev libboost-system-dev libboost-thread-dev libboost_filesystem-dev
#生成配置脚本
./bootstrap.sh
#执行配置脚本
./configure
#生成可执行文件
sudo make
#安装 make check会报错 但能安装 库里的readme文件也没让check 所以我就没把精力放在这了 应该不是个问题 
sudo make install

安装eBPF依赖

sudo apt-get install clang llvm libpcap-dev libelf-dev iproute2 net-tools
pip3 install pyroute2 ply==3.8 scapy==2.4.0

安装Graphs依赖

sudo apt-get install libboost-graph-dev

正式安装P4C

#我是在/home/guido(user_name)/路径下,克隆github中的p4c库,等一会
git clone --recursive https://github.com/p4lang/p4c.git
#进入p4c文件夹下
cd /home/guido/p4c
#更新新版软件
sudo apt-get update
sudo apt-get upgrade
#创建进入build文件夹
mkdir build
cd build
#编译生成makefile,cmake根据用户需要可以配置一些选项,p4c的readme有介绍,我使用默认配置。
cmake ..
#makefile编译生成可执行文件,开4个进程同时执行,需要等一会。
make -j4
#检查编译结果,需要等一会。
make -j4 check
#安装
sudo make install

到这就全部安装完了,我零零散散装了十来天,昨天想把中间遇到的坑找不到的依赖总结一下,又重新装了一下,和有需要的同学分享一下。
别着急,遇到问题就把error放到百度上搜,基本都能解决。

猜你喜欢

转载自www.cnblogs.com/guidoahead/p/12286278.html