P4 compiler(p4factory) 的安装和使用

最近在研究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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章