P4环境搭建-ubuntu 18.04,20.04

  • 更新.ubuntu20.04版本快速安装!!!
  • 0. 环境与前言
  • 1. 准备工作!!
  • 2. 安装步骤
  • 3. 遇到的问题与解决方法

更新.ubuntu20.04版本快速安装!!!

https://github.com/jafingerhut/p4-guide
认真阅读:https://github.com/jafingerhut/p4-guide/blob/master/bin/README-install-troubleshooting.md

$ sudo apt install git
$ git clone https://github.com/jafingerhut/p4-guide
$ ./p4-guide/bin/install-p4dev-v5.sh |& tee log.txt

只需要3G,只需要几分钟就能弄完!!!冲啊!

0. 环境与前言

我的环境:ubuntu 18.04 (4G内存40G磁盘空间)
安装P4环境的日期:2020.11.23
参考资料:https://github.com/jafingerhut/p4-guide

       看了网上的很多资料,最初是根据别人的博客进行安装的,跟着别人的教程走还是遇到了很多问题,没有成功。最后,还是选择了https://github.com/jafingerhut/p4-guide 上的脚本进行安装,依旧遇到了一些问题,然后终于成功了!

       在此重新梳理了一下安装流程与步骤,并且记录下我遇到的问题和解决方案,希望大家安装顺利!!!

1. 准备工作!!

       由于从github上clone很慢,经常会卡住不动,所以,在此把所有需要用到的github上的内容导入到gitee网站中(从github导入到gitee网站中很快,在ubuntu上从gitee上clone也会很快)。

以https://github.com/jafingerhut/p4-guide为例,步骤如下:

  1. 进入gitee网站注册用户
  2. 新建库并导入
    点击网站右上角+,选择新建仓库。选择页面最下方的 导入已有仓库 ,填入github上的url ,创建仓库。
P4环境搭建-ubuntu 18.04,20.04_第1张图片 P4环境搭建-ubuntu 18.04,20.04_第2张图片
  1. 此时在ubuntu上,就可以将git clone https://github.com/jafingerhut/p4-guide.git 语句转换成
git clone https://gitee.com/自己的名字/p4-guide.git

我已经导入好了所有的库,大家如果懒得导入的话,可以用我已经导入好的,即将文章中所有“自己的名字”改成 hahahawt 就是我的仓库。

2. 安装步骤

  1. 新建p4文件夹,复制 p4-guide到p4文件夹。
$ mkdir p4
$ cd p4
$ sudo apt install git
$ git clone https://gitee.com/自己的名字/p4-guide
  1. 根据不同的操作系统选择参考资料p4-guide中的不同安装脚本。
    由于我的环境是Ubuntu 18.04,我选择的是 /bin/install-p4dev-v2.sh,打开此脚本。
$ gedit ./p4-guide/bin/install-p4dev-v2.sh
  1. 打开脚本,查看所有要从github上clone的链接,将对应链接按照“1. 准备工作”所示,导入到gitee中,并且替换脚本中的链接。具体包括:
  • https://github.com/google/protobuf 替换成 https://gitee.com/自己的名字/protobuf
  • https://github.com/google/grpc.git 替换成 https://gitee.com/自己的名字/grpc.git
  • https://github.com/p4lang/PI 替换成 https://gitee.com/自己的名字/PI
  • https://github.com/p4lang/behavioral-model.git 替换成 https://gitee.com/自己的名字/behavioral-model.git
  • https://github.com/p4lang/p4c.git 替换成 https://gitee.com/自己的名字/p4c.git
  • https://github.com/mininet/mininet 替换成 https://gitee.com/自己的名字/mininet

举例:将shell文件中的

$ git clone https://github.com/p4lang/PI

替换成

$ git clone https://gitee.com/hahahawt/PI

 

  1. 除了上述链接以外,还有一些需要下载子模块的,也需要导入到gitee中。如果在脚本中有以下语句,则需要下载对应子模块。
$ git submodule update --init --recursive

       在install-p4dev-v2.sh脚本中,可以发现需要下载submodule的包括grpc、PI和p4c。

       以grpc为例,在对应gitee库中,打开.gitmodules文件,将所有关于子模块的github链接也按照“1. 准备工作”所示导入到gitee中,并且更改 .gitmodules文件中对应url的内容,替换为自己导到gitee后的链接。如下图所示:

P4环境搭建-ubuntu 18.04,20.04_第3张图片 P4环境搭建-ubuntu 18.04,20.04_第4张图片

       到此,所有需要用到的github上的库都已经更换成功了,此时,gitee上包含的库如下图所示:

P4环境搭建-ubuntu 18.04,20.04_第5张图片 P4环境搭建-ubuntu 18.04,20.04_第6张图片 P4环境搭建-ubuntu 18.04,20.04_第7张图片 P4环境搭建-ubuntu 18.04,20.04_第8张图片
  1. 进入p4文件夹,运行脚本。
$ ./p4-guide/bin/install-p4dev-v2.sh |& tee log.txt

       其中 |& log.txt表示将终端显示的内容同时保存至log.txt中,以便后续查看。
 

  1. 等待… 直至出错或者clone处卡住。
    此处我就卡住了,具体方法和注意事项,见“3. 遇到的问题与解决方法”。

  2. 如果没有卡住的话,全部运行完毕后,可以选择运行官方实例进行测试

$ git clone https://gitee.com/自己的名字/tutorials
$ cd tutorials/exercises/basic
$ cp -f solution/basic.p4 ./
$ make run

       然后自动进入到mininet中

mininet> pingall
P4环境搭建-ubuntu 18.04,20.04_第9张图片

       可以选择输入mininet的其他语句,进行测试,最后退出。

mininet> exit
  1. 安装成功!!

3. 遇到的问题与解决方法

问题:在安装中clone grpc的子模块时卡住了,并没有按照.gitmodules上更改后的路径进行下载。

解决:停止shell脚本运行,手动clone相关模块。进入grpc/third_party中,逐个克隆子模块。此时要打开grpc 文件夹下的.gitmodules查看所有需要用到的模块。

$ cd grpc
$ cat .gitmodules
$ cd third_party
$ git clone -b 3.0.x https://gitee.com/hahahawt/protobuf.git
$ git clone https://gitee.com/hahahawt/udpa.git
... ...
... ...

       注意!!有些模块有指定的分支!千万不要克隆错误! 我就是因为没有下载对应的分支导致make出现了很多错误… …
例如:

P4环境搭建-ubuntu 18.04,20.04_第10张图片

       当手动clone后,再继续运行安装的shell文件即可,这里我是把之前在shell文件中已经安装过的模块注释掉后,再重新运行的脚本。

你可能感兴趣的:(软件安装与使用,SDN,软件定义网络,网络,网络协议,网络互联,计算机网络)