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官网可以得知其支持的平台.编译器 ...
随机推荐
- foreach传值
- 常用关于时间的一些设置。获取当前时间后30天;判断时间段一年内;Date转String,String转Date
//获取当前时间后30天(之前也可),天数不限可修改1 var data = new Date(); var date1 = newe Date(date); date2 = date1.se ...
- Vue路由钩子 afterEach beforeEach区别
vue-router作为vue里面最基础的服务,学习一段时间,对遇到的需求进行一些总结 使用vue-cli作为开发前提 vue-router已经配置好了 路由写法 routes: [ { path ...
- Elasticsearch 映射操作
一.创建 语法: PUT /索引库名称/_mapping/类型名称 { "properties": { "字段名": { "type": 类 ...
- telent connection refused
1.问题场景 Centos7 做flume案例时,telnet hadoop-senior03.itguigu.com 44444 总是Connection redused, Trying 192.1 ...
- django之路由分组,反向解析,有名,无名分组
路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态的概念 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',vi ...
- Git安装配置(Windows)
下载Git并安装 下载地址:https://git-scm.com/ 安装一般默认即可 配置用户信息 配置之前最好已经有了Github的账号,如果没有可以先去注册一个 安装后打开Git Bash gi ...
- C指针(2)——指针在函数中的应用(程序讲解)
3-1.c指针用作函数参数 #include<stdio.h> typedef unsigned char uint8_t; //类型自定义,通过typedef语句重新把unsigned ...
- HyperLedger Fabric 1.4 多机多节点部署(10.3)
多机多节点指在多台电脑上部署多个组织和节点,本案例部署一个排序(orderer)服务,两个组织(org1,org2)和四个节点(peer),每个组织包括两个节点,需要五台计算机,计算机配置如下: 多机 ...
- [SGU223]Little Kings(状压DP)
随便DP一下 Code #include <cstdio> int sta[150],cnt[150],tp,n,k; long long dp[12][144][150],Ans; in ...