P4编程环境搭建
本文参照了sdnlab上相关文章的搭建推荐。 使用的系统环境为ubuntu 18.04
组件介绍
主要安装五个组件:
- BMv2:是一款支持P4编程的软件交换机
- p4c:是一款P4的编译器
- PI:是P4 runtime的实现,用于控制平面对数据平面的控制。
- mininet:这个之前用过,是一个虚拟的网络拓扑搭建软件。
- p4 tutorials :提供了用于学习的示例代码。例如负载均衡,简单的隧道机制以及源路由等。
额外说一个
- scapy:一个python库,提供构建数据包,抓包,解析包等的功能。
开始搭建
这里介绍一个个组件安装的搭建,然后最后会有一个一键安装的脚本。
搭建前的准备
这里我们先创建一个P4的目录,然后加入一下环境变量
//创建一个p4的文件夹目录
mkdir ~/P4
//进入目录
cd ~/P4
//写入环境变量
echo "P4_HOME=$(pwd)" >> ~/.bashrc
//更新环境变量
source ~/.bashrc
安装Protocol
sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone https://github.com/google/protobuf.git
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig
这里比较比较建议加上git checkout v3.2.0
安装bmv2
在p4目录中
git clone https://github.com/p4lang/behavioral-model.git bmv2
cd ~/P4/bmv2
//安装依赖
./install_deps.sh
//编译bmv2
./autogen.sh
./configure
make
//安装bmv2
sudo make install
//更新共享库
sudo idconfig
//测试
sudo make check
安装p4c
这里从陈翔学长哪里剽到了一个直接安装p4c的脚本installp4c.sh
原来的安装方法
git clone --recursive https://github.com/p4lang/p4c.git
//安装依赖
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
//用于生成文档
sudo apt-get install -y doxygen graphhviz texlive-full
//构建
mkdir build
cd build
cmake .. [-DCMAKE_BUILD_TYPE=RELEASE|DEBUG] [-DCMAKE_INSTALL_PREFIX=<path>] [-DENABLE_DOCS=ON (default off)] [-DENABLE_P4RUNTIME_TO_PD=OFF (default on)]
//安装
sudo make install
安装PI
git clone git@github.com:p4lang/PI.git
//安装依赖
sudo apt-get install libjudy-dev libreadline-dev
git submodule update --init --recursive
//配置
./autogen.sh
./configure [--with-bmv2] [--with-proto] make
关于这个参数,可以去原库中看readme
安装mininet
这个可以参考以前源码安装mininet的blog 源码安装mininet
安装p4-tutorials
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脚本,就可以搭建完成了。
其实在安装过程中有许多与上述内容有所出入的修改,在后续在一一说明。
P4编程环境搭建的更多相关文章
- P4编程环境搭建遇到的问题与解决方法
在经历了无数的折腾之后,算是折腾,最后采用的是陈翔学长的脚本加上可爱的shell调整装好的. 链接:p4Install 也许是ubuntu18.04的问题,也有可能是我自己把这个系统折腾的有点杂乱的原 ...
- Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和a ...
- Qt在Windows下的三种编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...
- Qt在Mac OS X下的编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- Qt4.8在Windows下的三种编程环境搭建
Qt4.8在Windows下的三种编程环境搭建 Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了X系统的各种Linux和Unix ...
- unix网络编程环境搭建
unix网络编程环境搭建 网络编程 环境 1.点击下载源代码 可以通过下列官网中的源代码目录下载最新代码: http://www.unpbook.com/src.html 2.解压文件 tar -xz ...
- ArduinoYun教程之Arduino编程环境搭建
ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino ...
- Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- Qt在Windows下的三种编程环境搭建(图文并茂,非常清楚)good
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...
随机推荐
- [异常笔记]启动DFS报错:Cannot find configuration directory: /etc/hadoop
[hadoop@master ~]$ start-dfs.sh Incorrect configuration: namenode address dfs.namenode.servicerpc-ad ...
- jQuery获取Select option 选择的Text和 Value
获取一组radio被选中项的值:var item = $('input[name=items][checked]').val();获取select被选中项的文本var item = $("s ...
- 利用ascii码生成26个英文字母
<script> let a = ""; for (var i = 65; i < 91; i++) { a += String.fromCharCode(i); ...
- redis的docker化安装
只需要关注几点: 端口映射 配置文件映射 持久化映射 要做的就是拉取官方镜像并把关注的几个点处理一下就好了: docker pull redis docker run -d -p : -v /data ...
- Echarts+百度地图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Macbook下安装memcached
参考文献: https://blog.csdn.net/weixin_41827162/article/details/82049520 感谢大佬 安装memcached需要Homebrew 注意点: ...
- Maximum sum
描述 Given a set of n integers: A={a1, a2,-, an}, we define a function d(A) as below: t1 t2 d(A) = max ...
- WMI、WQL语言、WQL测试工具wbemtest.exe
Windows Management Instrumentation (WMI) 是 Windows 操作系统的一个组件,允许通过编程方式访问应用程序.服务和其他计算机组件的管理信息(例如,配置设置和 ...
- 北京Uber优步司机奖励政策(10月19日~10月25日)
用户组:优步北京人民优步A组(适用于10月19日-10月25日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万 ...
- python的bif介绍
Python是面向对象的解释性程序设计语言,Python的语法简洁,特点是用空白符作为语句缩进. BIF(bulit in function)内置函数,就是Python自身提供的函数功能,编程者直接使 ...