p4-hlir和p4c-bm 编译工具

本文时间10/15/2016,如果时间久远请参考网站 以免被旧信息误导

p4-hlir项目解析p4,可以看成p4语言的python解析器,生成对应的python对象。
基于这个解析结果可以再加上模板输出json或者c, 或者RTL,或者DPDK,或者NP的微码。。

BMv2可以看成是一个设备或者模拟器,p4c-bm就是调用p4-hlir解析p4,生成BMv2配置所需的json文件和远程调用接口。所以一个p4模型被mininet模拟的picture是这样的:

p4 -> p4-hlir -> p4c-bm -> BMv2 -> mininet

p4c-bm安装会把p4-hlir一并安装:
git clone https://github.com/p4lang/p4c-bm.git
cd p4c-bm
sudo pip install -r requirements_v1_1.txt
sudo python setup.py install
至此/usr/local/bin下面就有了p4开头的编译、校验、图片生成命令。

p4-validate用来检查p4语法

p4-shell simple_router.p4
这是python界面,h对象包含了HLIR已经解析出的对象,用法参见https://github.com/p4lang/p4-hlir

p4-graph,这个项目不见了,原来跑到这里。这个命令会在当前目录下生成几个图片来描述Table/parser关系。

p4c-bmv2
--json 生成P4的Json格式
--pd 生成 PD C++ code
--p4-v1.1 if your input program is a P4 v1.1 program

进入p4-factory的targets/simple_router/p4src,编译一下p4模型:
p4c-bmv2 --json JSON simple_router.p4
这时候JSON文件就生成了,打开看看是不是很眼熟?
1. metadata跟header_type放在一起
2. headers成员里面有个metadata:true/false来标记
3. headers里面还有standard_metadata
4. 还有parsers/actions组。。。

至于怎么用BMv2或者mininet跑起来请看下一篇

如果你有自己的设备,CPU/FPGA/NP或者其它想支持P4的设备,可以用p4-hlir用python解析生成代码,或者基于p4c-bmv2输出的JSON生成代码或者执行文件。

BMv2j记得不是生成代码,而是加载JSON作为配置,如果代码效率要求不高应该可以这么用。

BTW,P4这个名字本来是Perforce的缩写,一个版本管理工具,P4全名是Programming Protocol independent Packet Processing, PPiPP更唯一
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值