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 ...
随机推荐
- [C++] set与multiset的常用函数
参考资料:[C++ STL]Set和Multiset set 与 multiset set不允许重复 multiset允许重复 例: set : 1 2 3 4 5 6 multiset : 1 2 ...
- tomcat 启动,停止,查看端口,日志位置
1.启动之前先看看是否已经启动tomcat ,避免端口被占用 ps -ef|grep tomcat 2.启动:进入tomcat下的“bin”目录 输入命令:./startup.sh 3.查看tomca ...
- docker 端口映射错误解决方法
今天搞了半天shipyard,在网页上打开时无法显示容器和镜像,最后发现是docker端口映射错误,由于防火墙未关闭: 4月 12 18:51:29 localhost firewalld[757]: ...
- springboot 定制错误页面
项目中经常遇到的异常情况 400-Bad Request 401-Unauthorized If the request already included Authorization credenti ...
- MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途(转)
本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式 ...
- C# httpRequest Soap请求
一般添加web服务引用是.NET用代理类模式 创建SOAP请求代理类,代理类是.NET开发工具VS自动给你生成. 下面用一般HTTP的模式有时候可能更合适,原理是构造SOAP请求的XML后POST过去 ...
- 2017-2018 Exp6 信息搜集与漏洞扫描 20155214
目录 Exp6 信息搜集与漏洞扫描 实验内容 信息收集 漏洞扫描 知识点 Exp6 信息搜集与漏洞扫描 收集渗透目标的情报是最重要的阶段.如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性. ...
- 2017-2018-2 《网络对抗技术》 20155319 第二周 Exp1 PC平台逆向破解(5)M
2017-2018-2 <网络对抗技术> 20155319 第二周 Exp1 PC平台逆向破解(5)M 一.实践目标 1.1实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件 ...
- HTML5 本地存储实现购物车功能
在家休陪产假,无聊,看自己以前的项目,突然发现之前写的购物车都是用数据库实现的,数据库实现购物车原则上没什么问题,但是需要和数据库交互,这样无意之间降低了程序的效率.今天突发奇想,如果能用HTML5本 ...
- ActiveMQ 的安装与使用(springboot版本)
一.安装 上官网下载tar包 http://activemq.apache.org/ tar -zxvf 后进入bin/linux-86-64 ./activimq start 启动 二.使用 pom ...