P4编程环境搭建
本文参照了sdnlab上相关文章的搭建推荐。 使用的系统环境为ubuntu 18.04
组件介绍
主要安装五个组件:
- BMv2:是一款支持P4编程的软件交换机
- p4c:是一款P4的编译器
- PI:是P4 runtime的实现,用于控制平面对数据平面的控制。
- mininet:这个之前用过,是一个虚拟的网络拓扑搭建软件。
- p4 tutorials :提供了用于学习的示例代码。例如负载均衡,简单的隧道机制以及源路由等。
额外说一个
- scapy:一个python库,提供构建数据包,抓包,解析包等的功能。
开始搭建
这里介绍一个个组件安装的搭建,然后最后会有一个一键安装的脚本。
搭建前的准备
这里我们先创建一个P4的目录,然后加入一下环境变量
1 //创建一个p4的文件夹目录 2 mkdir ~/P4 3 //进入目录 4 cd ~/P4 5 //写入环境变量 6 echo "P4_HOME=$(pwd)" >> ~/.bashrc 7 //更新环境变量 8 source ~/.bashrc
安装Protocol
1 sudo apt-get install autoconf automake libtool curl make g++ unzip 2 git clone https://github.com/google/protobuf.git 3 ./autogen.sh 4 ./configure 5 make 6 make check 7 sudo make install 8 sudo ldconfig
这里比较比较建议加上git checkout v3.2.0
安装bmv2
在p4目录中
1 git clone https://github.com/p4lang/behavioral-model.git bmv2 2 cd ~/P4/bmv2 3 //安装依赖 4 ./install_deps.sh 5 //编译bmv2 6 ./autogen.sh 7 ./configure 8 make 9 //安装bmv2 10 sudo make install 11 //更新共享库 12 sudo idconfig 13 //测试 14 sudo make check
安装p4c
这里从陈翔学长哪里剽到了一个直接安装p4c的脚本 installp4c.sh
原来的安装方法
1 git clone --recursive https://github.com/p4lang/p4c.git 2 //安装依赖 3 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 4 //用于生成文档 5 sudo apt-get install -y doxygen graphhviz texlive-full 6 //构建 7 mkdir build 8 cd build 9 cmake .. [-DCMAKE_BUILD_TYPE=RELEASE|DEBUG] [-DCMAKE_INSTALL_PREFIX=<path>] [-DENABLE_DOCS=ON (default off)] [-DENABLE_P4RUNTIME_TO_PD=OFF (default on)] 10 //安装 11 sudo make install
安装PI
1 git clone git@github.com:p4lang/PI.git 2 //安装依赖 3 sudo apt-get install libjudy-dev libreadline-dev 4 git submodule update --init --recursive 5 //配置 6 ./autogen.sh 7 ./configure [--with-bmv2] [--with-proto] 8 9 make
关于这个参数,可以去原库中看readme
安装mininet
这个可以参考以前源码安装mininet的blog 源码安装mininet
安装p4-tutorials
1 git clone https://github.com/p4lang/tutorials
这里大致的组件就安装完了。
一键安装
这里是sdnlab上P4编程理论与实践提供的一键配置。 p4-quick 先安装依赖
sudo apt-get update sudo apt-get install automake cmake libjudy-dev libpcap-dev libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libevent-dev libtool flex bison pkg-config g++ libssl-dev -y 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 tcpdump curl -y sudo apt-get install libreadline6 libreadline6-dev python-pip -y 这里如果提示废弃就 sudo apt install libreadline-dev sudo pip install psutil sudo pip install crcmod
其中部分仓库克隆非常的慢,建议搞个梯子会快很多。
然后运行上述那个p4-quick的env_up.sh脚本,就可以搭建完成了。
其实在安装过程中有许多与上述内容有所出入的修改,在后续在一一说明。