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脚本,就可以搭建完成了。

其实在安装过程中有许多与上述内容有所出入的修改,在后续在一一说明。

posted @ 2019-01-31 14:38  水喵桑  阅读(6549)  评论(17编辑  收藏  举报