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 ...
随机推荐
- Linux基础第一课——基础知识了解
前言 发展历史 linus 林纳斯 赫尔辛基大学 在自己的笔记本上安上自己写的操作系统 基于Linux内核 Linux内核 也是基于unix内核开发出来 unix 不开源 只能军方和大学使用 Linu ...
- STM32学习之路-LCD(2)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011791262/article/details/27711881 这些天一直在研究LCD的初始化 ...
- mpvue 应用 Vant Weapp框架开发微信小程序
今天在使用mpvue开发微信小程序的过程中需要实现一个底部上拉选择列表的功能,因为之前做过H5微信公众号的开发,使用的就是有赞的Vant-ui,所以第一时间就想到了有赞的Vant Weapp UI框架 ...
- 微信支付的notify.php中如何获取订单号(php版)
不要直接使用demo中的notify.php,重写notify.php,继承WxPayNotify(可参考微信api),具体如下: require_once "WxPay.Api.php&q ...
- Unicode,GBK,GB2312,UTF-8概念基础(转载)
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog 对字符编码与Unicode,IS ...
- leetcode70—Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- extern C的用法解析
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程式语 ...
- Java java.text.ParseException: Unparseable date
用java将字符串转换成Date类型是,会出现java.text.ParseException: Unparseable date异常. 例如下面的这段代码就会出现上面的异常: public bool ...
- python 字典,元组,对象,数组取值方法
def create(self,cr,uid,vals,context=None): if context is None: context ={} if vals.get('name','/')== ...
- 20155334 《网络攻防》 Exp6 信息搜集与漏洞扫描
20155334 Exp6 信息搜集与漏洞扫描 一.实验问题回答 哪些组织负责DNS,IP的管理? 答:互联网名称与数字地址分配机构 ICANN ,该机构决定了域名和IP地址的分配.负责协调管理DNS ...