https://github.com/p4lang/behavioral-modelpython
一、安裝工具git
install_deps.sh github
二、編譯behavioral-modeljson
./autogen.sh
./configure
make
[sudo] make install # if you need to install bmv2 //沒意義工具
三、測試測試
make checkui
四、安裝p4c-bmspa
git下載代碼:https://github.com/p4lang/p4c-bmrest
sudo pip install -r requirements.txt
sudo pip install -r requirements_v1_1.txt if you are interested in compiling P4 v1.1 programs
sudo python setup.py installrouter
derek@ubox16:~$ p4c-bmv2 --version
1.11.0-e389bd34
五、在mininet上運行
1)編譯json
cd target/simple_router
p4c-bmv2 --json simple_router.json simple_router.p4
2)運行
cd mininet
sudo python 1sw_demo.py --behavioral-exe ../targets/simple_router/simple_router --json ../targets/simple_router/simple_router.json
mininet>pingall //不通
3)配置table
再開一個終端:
- cd targets/simple_router
- ./runtime_CLI < commands.txt
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
4)讀寫表項
開一個終端:
cd tools
./runtime_CLI.py --thrift-port 9090
RuntimeCmd: show_tablesforward [implementation=None, mk=routing_metadata.nhop_ipv4(exact, 32)]ipv4_lpm [implementation=None, mk=ipv4.dstAddr(lpm, 32)]send_frame [implementation=None, mk=standard_metadata.egress_port(exact, 9)]RuntimeCmd: table_info forwardforward [implementation=None, mk=routing_metadata.nhop_ipv4(exact, 32)]********************************************************************************_drop []set_dmac [dmac(48)]RuntimeCmd: forward [implementation=None, mk=routing_metadata.nhop_ipv4(exact, 32)]********************************************************************************_drop []set_dmac [dmac(48)]RuntimeCmd: forward [implementation=None, mk=routing_metadata.nhop_ipv4(exact, 32)]********************************************************************************_drop []set_dmac [dmac(48)]