NSP4——Network Simulator for P4
NSP4——Network Simulator for P4
一、前言
NSP4旨在为P4开发者,创建一个可视化的P4流表管理及拓扑建立工具,帮助P4开发者,更好的调试自己的P4程序。此开发工具是基于开源控制器Ryu中的开源应用gui_topology所改编的应用,并编写了可视化web界面,让开发者更直观的查看P4的运行时配置。
源码可查看我们的github链接:https://github.com/Emil-501/NSP4
二、运行环境介绍
- P4开发环境(实验环境搭架,请参照此篇博客Run P4 without P4factory)
- 控制器Ryu (请参照RYU入门教程)
三、程序主要功能及程序架构
1、程序主要功能
- 动态生成底层拓扑
- 查看底层拓扑视图
- 查看指定P4交换机的table及table entry
- 下发table entry
- 删除table entry
2、程序架构
四、P4程序示例
参考源码请见:https://github.com/Emil-501/NSP4/tree/master/p4src
此P4程序结构,需动态配置table结构如下:
table-name | match-key | action |
---|---|---|
smac | ethernet.srcAddr | mac_learn; _nop |
mcast_src_pruning | standard_metadata.instance_type | _nop; _drop; |
dmac | ethernet.dstAddr | forward; broadcast |
五、实验过程
(一)通过Ryu应用的启动命令,启动NSP4,并将P4程序放在NSP4/src下,如github链接:https://github.com/Emil-501/NSP4所示结构
$ ryu-manager ./app/p4web/p4web.py //后面为NSP4应用所在路径
该源码请查看:https://github.com/Emil-501/NSP4/tree/master/p4web
(二)进入浏览器,输入127.0.0.1:8080,进入web界面
(三)建立mininet P4 网络拓扑
输入对应的拓扑信息:
在右侧可得得到相应的可视化拓扑信息:
(四)输入以下命令启动底层的mininet;通过net命令查看拓扑,拓扑建立正确
$ sudo ./run_demo.sh
输入net命令
mininet> net
(五)点击指定交换机,如图8所示;可以查看得到相应的table界面,如图9所示,可得到与四、P4程序示例相符的table结构
图8
图9
(五)下发Table entry
对S1的dmac表,下发如图所示的entry:
可得到相应的流表信息已显示在web界面上:
通过底层的P4运行时命令,也可查看到下发的entry信息:
(六)删除Table entry
删除刚刚下发Table entry:
通过底层的P4运行时命令,也可查看到刚刚下发entry信息已被删除:
六、存在及待优化问题
界面美观程度较为一般,功能仅仅包括上述所示,缺少查看counter之类的功能;clone下来之后需要根据自身电脑的配置信息,修改源代码相关路径信息;建议使用火狐、谷歌浏览器。