今天是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