您的位置:首页 > 其它

P4 compiler(p4factory) 的安装和使用

2016-07-11 11:00 176 查看
最近在研究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 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SDN P4 compiler