Watch 1 Star 1 Fork 1

poohdang / p4_envShellMIT

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
在Ubuntu18.04 上快速搭建P4实验环境 spread retract

Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

为了那些不必要的痛苦(在Ubuntu中搭建P4实验环境)

本教程是对P4编程理论与实践(2)—快速上手一文环境安装部分的整理,针对 Ubuntu18.04 作调整,提供shell脚本自动下载、编译及安装各个实验模块。

demo

请不要直接运行脚本而不浏览其内容! 安装过程中出现问题,尝试查看FAQ获取帮助。


实验环境

  • 操作系统:Ubuntu18.04 LTS (Ubuntu16.04同样适用)
  • python 2.7.xpip2
#(如果需要)安装python2.7和pip2
$ sudo apt install python python-pip python-dev

由于系统自带python3,请确保默认的pythonpip指向python2
通过python -Vpip -V查看

  • 推荐系统内存 2G 及以上
  • 推荐swap分区 1G及以上

实验模块介绍

Github项目 功能 来自于
mininet 网络仿真器 Mininet
protobuf 谷歌开发的数据交换格式,作为 PI 的依赖模块 Google
grpc 远程程序调用(RPC)框架,作为 PI 的依赖模块 Google
bmv2 支持P4编程的软件交换机 P4lang
PI P4-runtime库,南向协议 P4lang
p4c p4c 编译器 P4lang
tutorials P4官方提供的快速上手教程 P4lang

环境搭建

开始之前

  1. 安装必要的依赖和编译工具
$ sudo apt-get update

$ sudo apt-get install build-essential automake cmake -y

$ sudo apt-get install net-tools tcpdump curl git -y

$ sudo apt-get install 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 libssl-dev  -y

$ sudo apt-get install libgc-dev libfl-dev libgmp-dev libboost-iostreams-dev \
      libboost-graph-dev llvm pkg-config python-scapy python-ipaddr python-ply \
      libreadline-dev -y

$ python -m pip install psutil
$ python -m pip install crcmod
  1. 设置工作目录并下载安装脚本
$ echo "P4_HOME=~/Workspace/P4" >> ~/.bashrc  #可以自定义工作目录,此处为示例
$ source ~/.bashrc
$ cd $P4_HOME
$ git clone https://gitee.com/poohdang/p4_env.git
$ cd p4_env

下载源代码

方法一:从Github上直接下载 (部分模块国内用户可能下载速度过慢)
$ ./p4-git.sh
方法二:百度网盘下载本教程提供的源码压缩包 (下载于2020年4月8日)

链接: https://pan.baidu.com/s/1EZCZa1ZIYg-9maxj_E8P8Q
链接: https://pan.baidu.com/s/19ZV9ptL-4LOuX3_JDtM0Zw
提取码: ndmn

编译并安装

$ ./p4-env.sh

快速开始第一个P4实验

$ cd tutorials/exercises/basic
$ make
mininet> ...

退出

mininet> exit
$ sudo make stop
$ sudo make clean

查看basic/README.md文件获取basic实验的详细说明

FAQ

为什么分为两个脚本?

将下载工作与编译/安装工作分离,同时提供下载工作完成后的压缩包。

为什么在p4-git.sh 中特别指定protobufgrpc的版本?

满足PI对两者的最低版本要求。可进入PI的主页进行确认,并按需对脚本进行更改。

问题反馈

评论区,或 ndsczx@foxmail.com

LICENSE

MIT

Comments ( 0 )

Sign in for post a comment

Shell
1
https://gitee.com/poohdang/p4_env.git
git@gitee.com:poohdang/p4_env.git
poohdang
p4_env
p4_env
master

Help Search

205735 778617b6 1899542 205747 347fc4a1 1899542