P4 compiler(p4factory) 的安装和使用
2016-07-11 11:00
176 查看
最近在研究SDN P4 的编译器(p4factory),以下是关于P4的安装和简要使用。
github上(https://github.com/p4lang/p4factory) 有开源的P4源码下载,在这里,我采用的是ssh的下载方式。
记得此步骤需要在自己电脑上设置ssh key,不然会提示no RSA,具体设置比较简单,自行百度。
2.安装git submodules
3.下载安装依赖 (以下命令均在…/p4factory下执行)
这一步要注意了:
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步通过之后,接下来应该没什么问题了。
5.启动
接下来进入p4factory/target,target里面的便是完整的model了,随便选择一个编译就可以了,下面选择的是simple_router
启动如下:
至此,p4factory安装完毕了。
其实很简单,我们选择一个完整的P4程序(p4factory/target里面的每一个model就是完整的p4程序里),这里,我们采用上述的simple_router。
就会在 …/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/
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 bm sudo ./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 mode P4 Program: simple_router Starting 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/
相关文章推荐
- 在 Linux 上使用开源软件创建 SDN
- 使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
- 深度开放与融合——H3C SDN架构解析
- F5荣获网络优化类别年度最佳HP AllianceOne合作伙伴奖项
- 主机托管IDC数据中心,SDN网络将大数据转化为信息资本
- 关于SDN和OpenFlow 它们的特点和区别
- 1.什么是SDN?
- 解决“C compiler cannot create executables”的错误
- IntelliJ IDEA编译Android项目比Eclipse慢
- Error C3867解决方法
- 使用autoconf、automake进行外部编译
- Visual Web Developer 2005 速成版 生成DLL的问题
- assert 的两种用法
- Linux如何配置nVIDIA显卡驱动
- javascript的编写、调试
- 软件项目版本号的命名格式
- Tech memo of imx27 pdk (1) -- For kernel building on imx27 pdk with ltib
- 电子书籍下载网址
- C# 静态构造函数
- codeblock和C99标准