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下来之后需要根据自身电脑的配置信息,修改源代码相关路径信息;建议使用火狐、谷歌浏览器。
七、参考材料
http://www.sdnlab.com/1785.html
http://www.cnblogs.com/qq952693358/p/6195385.html
NSP4——Network Simulator for P4的更多相关文章
- Network Simulator for P4(NSP4) src内容介绍
Structure What's NSP4? src source code introduction What's NSP4? NSP4是一个用于P4的网络仿真工具,旨在简化P4的环境部署和运行,将 ...
- Fedora 23安装 NS2 (network simulator 2)
1 实验环境 OS: Fedora 23 workstation 2 实验步骤 ( 参考了:http://www.isi.edu/nsnam/ns/ns-build.html) 本次实验的实验环境: ...
- HPE Comware Lab - Simulator
http://h20565.www2.hpe.com/hpsc/swd/public/readIndex?sp4ts.oid=7107838&ac.admitted=1405352934644 ...
- 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?
0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
- R统计分析处理
[翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...
- 【NS2仿真】RTP协议安装
来自: http://personales.upv.es/fboronat/Research/NS2_RTP/NS2_RTP_RTCP_module.htm 文件:http://pan.baidu.c ...
- R语言-神经网络包RSNNS
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- Machine and Deep Learning with Python
Machine and Deep Learning with Python Education Tutorials and courses Supervised learning superstiti ...
随机推荐
- BZOJ3673/3674:可持久化并查集
Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...
- 【洛谷】【单调栈】P1823 音乐会的等待
[题目描述:] N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见 ...
- 选择当天一周一月导出excel表格
<a href="javascript:;" class="fr btn btn-primary radius mt-6 mr-10" onclick=& ...
- Python中__init__()方法注意点
此文转自https://www.cnblogs.com/zyxstar2003/archive/2011/03/21/1989954.html 1.__init__并不相当于C#中的构造函数,执行它的 ...
- jpa实例
ORM框架新的JPA ORM规范:1)JPA为POJO提供持久化标准规范.2)JPA的使用:Hibernate与TopLink以及OpenJpa都提供了JPA的实现.3)JPA主要技术: A.ORM ...
- rabbitmq安装错误集
1.安装依赖yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC- ...
- Ubuntu 重新安装声卡驱动
有的时候ubuntu 的声卡不能用,没有声音也不能使用麦克风,所有很困惑,查看声卡驱动的时候不显示声卡的驱动,所有我们要自己安装声卡驱动, 1.下载驱动包这是比较新的声卡驱动,1.0.20 $ wge ...
- [笔记] ubuntu下添加windows的字体
方法如下: 第一步:将windows下喜欢的字体文件copy到一个文件夹中,例如将XP里WINDOWS/FONTS中的字体文件(本人比较贪心,把整个文件夹copy了过来……),在linux中命名为xp ...
- 面试题之O(n)内旋转字符串
样例: 字符串“abcd1234"左移3位结果为”234abcd1“ K:左移位数 L:字符串长度 方案1:暴力 O(K * L) 可以每次将数组中的元素左移一位,循环K次. abcd123 ...
- Jquery属性练习
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...