P4运行环境搭建

P4的运行环境包括以下组件:

  • protobuf
  • p4c
  • behavioral-model
  • grpc
  • PI
  • mininet

如果按照github上给的脚本内容进行安装可能会出现各种版本和兼容的问题,而且P4的组件有些对Ubuntu的版本有依赖,所以Ubuntu的版本也要选对。

总而言之,博主试过很多方法,借鉴了网上各个博客和官网的教程,发现到最后即使能全部安装完毕所有组件,在运行的时候也会出现各种错误。而且安装组件的过程也非常麻烦~

但是救世主来啦!我在上一段解决bug的痛苦过程中,在github社区发现了一个P4开发者jafingerhut,他在社区中给了个他写的脚本库,可以一键安装所有组件!

他的安装教程链接如下:p4-guide/README-install-troubleshooting.md at master · jafingerhut/p4-guide (github.com)

下面是我整理出来的安装过程和避坑指南:

一、安装全新的Ubuntu

在vmware上安装Ubuntu的过程这篇文章就不写了,大伙可以找其他博主的教程。我建议的版本是Ubuntu 20.04。

我要强调的最重要的一点是:Ubuntu最好是新安装的!!!因为如果你之前在Ubuntu上安装过相关组件,那路径可能被污染了,而这个教程中安装脚本好像是会指定路径下载的,到时候可能会出现版本冲突或无法识别等一系列奇怪问题。

所以我建议有条件最好重新安装个虚拟机,从头开始!再不济也要保证虚拟机上没有安装过P4的相关组件的历史。

二、安装运行环境

首先保证代理在虚拟机中运行起来了。这个非常重要!!!

然后在根目录下执行以下命令:

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

其中install-p4dev-v5.sh需要根据Ubuntu版本的不同而改变,版本关系如下:

ScriptVersions of Ubuntu it works onFree disk space requiredTime to run on 2015 MacBook Pro with VirtualBoxData downloaded from Internetprotobufgrpc
install-p4dev-v6.sh22.04, 20.04, 18.0413 GB100 mins2 GBv3.18.1v1.43.2
install-p4dev-v5.sh20.042 GB3 mins250 MBv3.6.1v1.16.1 ?
install-p4dev-v4.sh20.04, 18.0412 GB100 mins2 GBv3.6.1v1.17.2

三、测试

在以上命令运行完后我们需要对组件进行测试。github提供的tutorials教程是个很好的选择。

测试步骤如下:

$ git clone https://github.com/p4lang/tutorials
$ cd tutorials/exercises/basic
$ cp solution/basic.p4 basic.p4
$ make run

现在你应该看到一个Mininet命令提示符。尝试在拓扑中的主机之间进行ping操作:

mininet> h1 ping h2
mininet> pingall

ping会失败,因为每个交换机都是根据basic.p4进行编程的,它会在到达时丢弃所有数据包。我们需要扩展此文件,以便它转发数据包。这是后面要做的工作,只要出现mininet就是成功啦!

在mininet命令行输入exit退出每个xterm和Mininet命令行。然后,停止mininet:

make stop

然后要删除所有pcap、构建文件和日志,执行以下操作:

make clean

如果以上步骤都没问题,那么恭喜你成功安装P4啦!!!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值