最近在研究SDN P4 的编译器(p4factory),以下是关于P4的安装和简要使用。

p4factory安装

1.下载P4源码
github上(https://github.com/p4lang/p4factory) 有开源的P4源码下载,在这里,我采用的是ssh的下载方式。

git clone git@github.com:p4lang/p4factory.git

记得此步骤需要在自己电脑上设置ssh key,不然会提示no RSA,具体设置比较简单,自行百度。

2.安装git submodules

cd p4factory
git submodule update –init –recursive

3.下载安装依赖 (以下命令均在…/p4factory下执行)

./install_deps.sh

这一步要注意了:
1.官方readme上的运行环境明确写明是Ubuntu 14.04,亲测12.04不能使用(apt-get install thrift-compiler会失败),更高版本的Ubuntu应该也能用;
2.关于在虚拟机安装的,最重要的一点,内存一定要够大,不然这步会失败(因为宿主机的系统是Ubuntu12.04,由于种种原因没有升级系统,于是在虚拟机上装了个Ubuntu14.04,分配1G内存,重复多次Readme上的安装步骤,都没有成功,居然也没有提示是内存不够0.0,后来在google上才发现了这个困扰已久的问题,于是果断跑去服务器虚拟机上装了个8G的Ubuntu14.04,内存大,任性,终于运行成功了。

4.设定veth和makefile,安装完毕
第3步通过之后,接下来应该没什么问题了。

sudo ./tools/veth_setup.sh
./autogen.sh
./configure

5.启动
接下来进入p4factory/target,target里面的便是完整的model了,随便选择一个编译就可以了,下面选择的是simple_router

  cd p4factory/targets/simple_router/make bmsudo ./behavioral-model

启动如下:

p4@ubuntu:~/p4factory/targets/simple_router$ sudo ./behavioral-model
[sudo] password for p4:
No PD RPC server address specified, using 127.0.0.1:9090
No listener specified, switch will run in standalone modeP4 Program:  simple_routerStarting RPC server on port 9090

至此,p4factory安装完毕了。

p4factory的简单使用

下面简要介绍一下p4 compiler的使用,compiler一般分为前端(front)和后端(back),p4–>target switch的编译器也是,这里的前端主要是生成P4的依赖关系图(TDG),有利于分析流水线的步骤和挖掘流水线的并发性,而后端主要就是做映射了,把流表映射到各个流水级里。这里主要是简单使用p4factory生成TDG。
其实很简单,我们选择一个完整的P4程序(p4factory/target里面的每一个model就是完整的p4程序里),这里,我们采用上述的simple_router。

cd p4factory/targets/simple_router/p4src
p4-graphs simple_router.p4

就会在 …/simple_router的文件夹上生成3个png文件了:
simple_router.parser.png simple_router.ingress.tables_dep.png simple_router.tables.png

具体的代码和关系依赖接下来再分析。

参考链接:
1 https://github.com/p4lang/p4factory
2 https://takeshi.tw/%E6%9E%B6%E8%A8%AD-p4-%E6%A8%A1%E6%93%AC%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83/

P4 compiler(p4factory) 的安装和使用相关推荐

  1. P4使用Ubuntu中安装教程

    /*************************************/ 补充,2020年5月11日 13点18分 有同学说网络环境啥的,获取安装包比较困难,我把大概要用的安装包放到百度网盘了, ...

  2. Run P4 without P4factory - A Simple Example In Tutorials. -2

    Reference:Github-Tutorial Exercise 2: Implementing TCP flowlet switching 实验准备: 参考之前的博客:Run P4 withou ...

  3. 最新KEIL-MDK安装详细教程(包括对Compiler 5的安装)

    下载KEIL的安装包 KEIL官网的网址:https://www.keil.com 软件下载的具体网址: Keil Product Downloads 一下是具体的教程,在官网上下载的速度会较慢,也可 ...

  4. python compiler库_Python之compiler:compiler库的简介、安装、使用方法之详细攻略

    Python之compiler:compiler库的简介.安装.使用方法之详细攻略 目录 compiler库的简介 compiler库的安装 compiler库的使用方法 compiler库的简介 根 ...

  5. Python之compiler:compiler库的简介、安装、使用方法之详细攻略

    Python之compiler:compiler库的简介.安装.使用方法之详细攻略 目录 compiler库的简介 compiler库的安装 compiler库的使用方法 compiler库的简介 根 ...

  6. Keil(MDK-ARM)如何补充安装旧的编译器 AC5(ARM Compiler 5)

    目录 一.前言 二.下载 1. 进入 Arm Developer 官网 2. 下载 ARM Compiler 5 安装包 3. 下载完成 三.安装 1. 开始安装 2. 安装过程 3. 安装完成 四. ...

  7. led显示屏P4安装方式功能详细介绍

    led显示屏P4是点间距为4mm的室内全彩led显示屏,点密度为62500点/㎡,2015年以前led显示屏P4是比较高大上的一款产品,点间距比较小,清晰度高.随着led灯珠封装技术的不断发展, le ...

  8. linux matlab runtime,linux 环境 MATLAB Runtime 安装

    安装 MUTsigcv 软件时需要用到MATLAB环境,安装过程如下: 环境下载:https://ww2.mathworks.cn/products/compiler/matlab-runtime.h ...

  9. CentOS6下Xen 4.1的安装(编译linux3.0内核)

    一.    准备工作 a)    一台计算机(是否支持intel-VT或AMD-V均可) 注:支持intel-VT或AMD-V技术可以实现全虚拟化(full virtualization),不支持的话 ...

最新文章

  1. 谷歌AI发布“会动的”3D物体数据集,附带标记边界框、相机位姿、稀疏点云,网友:快给我的AR模型用上...
  2. .net程序员的盲点(八):泛型
  3. 终于等到你!GitHub 终于支持 multi-line comments!
  4. iam身份验证以及访问控制_如何将受限访问IAM用户添加到EKS群集
  5. 配置 Syslog 守护程序
  6. Servlet体系及方法
  7. 未定义函数或变量 'wavplay'。原因:2014a已经移除函数
  8. 多线程中,static函数与非static函数的区别?
  9. 通过HttpClient转发/调用HTTP请求
  10. 3月最新彩虹发卡网完整运营版+高仿优云宝模板
  11. 【FTP工具】8UFTP工具是我自己比较经常用的,推荐。
  12. python使用influxdb-client管理InfluxDB的bucket
  13. 王立柱《c语言》3.5.5
  14. 微信小程序 生成UUID
  15. web全栈-第一讲:web开发基本知识点
  16. 华中科技大学计算机与网络,华中科技大学计算机通信与网络实验报告-基于NS2的协议分析实验...
  17. 农村环境保护之平时作业三
  18. 5G组网和非独立组网
  19. 经济基础知识(初级)【15】
  20. 2017年英语四级作文

热门文章

  1. 2018年最全Go语言实战抽奖系统教程
  2. Scrapy爬取知乎Python专题精华,连答主头像都给爬下来,不放过一切
  3. 真的是神坑啊,Eureka服务无法注册的问题
  4. 微型计算机实验报告,微型计算机实验报告1
  5. 刷酸记录(迪维维A酸乳膏)20190906-0908
  6. 智障的wordpress更换主题之旅
  7. return R.ok()
  8. 教你玩Robocode(5)——调试技巧
  9. 全国首张数字人民币保单成功出单
  10. mysql的数据类型,列类型,字段类型