今天是10/15/2016,如果時間太久請移步https://github.com/p4lang/behavioral-model參考最新信息。
BMv2是一個交換機模擬引擎,和p4-factory不同,不依靠代碼生成,而是根據p4c-bm編譯生成的JSON動態生效。
安裝:
===================================================
因爲之前安裝了p4-factory,所以相關軟件可能已經安裝好,如果缺東西,請參考github
還是ubuntu1404:
git clone https://github.com/p4lang/behavioral-model.git
cd behavioral-model
./autogen.sh
./configure --with-pdfixed
make
[b]sudo make install[/b]
sudo ldconfig
#注意內存要夠大,我的vm 1.5G內存要切換到runlevel 1才編譯成功。
#make install 會安裝bm開頭的命令和simple_switch,用於啓動bmv2, 編譯switch項目必須
#運行simple_switch, 如果提示libruntimestubs.so.0找不到,需要運行sudo ldconfig
啓動:
=======================================================
啓動BMv2參考前面文章安裝p4c-bm, 然後執行:
tools/veth_setup.sh
p4c-bm --json simple_router.json targets/simple_router/simple_router.p4 //生成JSON文件
[b]sudo[/b] targets/simple_router/simple_router [b]--log-console[/b] -i 0@veth2 -i 1@veth4 simple_router.json
[quote]Thrift port was not specified, will use 9090
Adding interface veth2 as port 0
Adding interface veth4 as port 1
Thrift server was started[/quote]
設備成功啓動~
#Targets下面各個目錄的啓動腳本都一樣,建議看看其它參數。
#沒有--log-console出錯居然看不到。操作端口需要sudo權限
然後新開一個窗口運行[b]tools/runtime_CLI.py[/b], 在命令窗口中運行命令來操作BMv2的表、端口、
[quote]RuntimeCmd: port_add veth4 2
RuntimeCmd: show_ports
port # iface name status extra info
==================================================
0 veth0 UP
1 veth2 UP
2 veth4 UP
[/quote]
查看targets/simple_router/commands.txt裏面有更多命令可以參考。
Mininet:
===================================
上面單獨啓動BMv2還是不方便用veth需要自己綁定到交換機或者容器去測試,這裏有個現成的方式:
sudo python mininet/1sw_demo.py --behavioral-exe targets/simple_router/simple_router --json targets/simple_router/simple_router.json
啓動後一樣h1 ping h2不通,因爲轉發表還沒配置。在新窗口中運行:
tools/runtime_CLI.py < targets/simple_router/commands.txt
導入規則之後mininet窗口h1 ping h2成功。
開發自己的p4模型:
===================================
應該是這樣:
1. 寫好p4文件
2. 用p4c-bm編譯成json
3. 啓動mininet加載json
4. 啓動runtime_CLI.py配置
====================================
BMv2可以定製,如果你是設備商或者芯片廠家,要定義自己的設備來模擬,需要生成參考doxgen:
doxgen Doxfile
生成的文檔在doxgen-out目錄
P4 behavioral-model: BMv2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
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
p4lang quick start: p4-factory
iteye_5484
2018-09-17 07:56:11