本文時間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更唯一
p4-hlir和p4c-bm 編譯工具
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Ubuntu18.04.3 安裝 Nvidia DeepStream 並在 P4 顯卡上解碼取幀存圖
芳樽清酒酌流年
2020-06-29 17:36:37
P4學習筆記(三)P4編程語言簡介
0pandas0
2020-06-17 07:45:23
P4學習筆記(二)一個簡單P4交換機實現
0pandas0
2020-06-17 07:45:23
P4學習筆記(一)初識P4
0pandas0
2020-06-17 07:45:23
P4(Perforce): p4python實現同步數據到本地
Allan_shore_ma
2020-05-13 20:22:40
p4factory 入門
JasonTang1992
2020-02-21 05:06:12
perforce使用心得(持續更新中)
fgupupup
2019-08-28 16:00:08
P4編程環境搭建+實現tutorials中basic的案例
我爱学习hh
2019-07-06 10:56:49
軟件目錄結構規範
leiwenbin627
2018-11-22 02:20:45
json和pickle數據序列化和反序列化
leiwenbin627
2018-11-22 02:20:45
內置函數
leiwenbin627
2018-11-12 02:46:10
生成器&迭代器
leiwenbin627
2018-11-10 02:16:14
裝飾器
leiwenbin627
2018-11-04 02:43:40
編輯器練習
leiwenbin627
2018-11-03 02:46:56
P4 behavioral-model: BMv2
iteye_5484
2018-09-17 07:56:11