P4 behavioral-model: BMv2

今天是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目錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章