实验二:SDN 基础操作学习

  1. Mininet 可视化工具创建拓扑
  2. Mininet 拓扑动态更改
  3. Mininet 连接控制器
  4. 流表操作

Mininet 可视化工具创建拓扑

Mininet 2.2.0 以上版本自带

1. 进入 mininet/example 

在~目录下操作

cd ~
cd mininet/example

2. 启动 miniedit.py 

sudo ./miniedit.py

界面如下:


3. 自定义拓扑:拖拽设备到画布 

4. 配置 Mininet 设备属性 
① 设置控制器属性
长按右键控制器图标-选择「Properties」
修改 Controller Type

点击OK,开启 miniedit 的终端变化:

② 配置交换机属性
填写 16位 DPID,更改 Switch Type

③ 配置主机属性
设置主机 IP 地址

④ 配置全局属性
菜单栏 - Edit - Preferences
勾选:Start CLI 和 OpenFlow 1.3

IP Base 默认设置了网段,刚才第③步骤可以不填。

5. 点击左下角 Run 

观察打开 miniedit.py 的终端变化


6. mininet 基础命令 
① 使用 dump 命令查看网络节点信息
② 使用 net 命令查看链路端口对应信息
③ 使用 nodes 查看节点信息
④ 使用 links 查看链路连接状态

7. 保存拓扑图 

菜单栏选择:File - Export Level 2 Script 保存


创建好后,终端 CTRL+C 关闭 miniedit
8. 验证下次使用 

打开新的终端Ctrl+Alt+T

cd mininet/examples
sudo python sdnsy.py

9. 退出mininet 

exit

10. 如果再次使用Mininet报错,RTENETLINK answers:File exists 

sudo mn -c

清空一下缓存再使用。

mininet 拓扑动态更改

已经启动 mininet 拓扑条件下
1. 增加主机

py net.addHost('h4')

2. 增加链路(主机h4和交换机s2

py net.addLink(s2,net.get('h4'))

3. 交换机新增端口,连接主机

py s2.attach('s2-eth3')

4. 新增主机配置 IP 地址

py net.get('h4').cmd('ifconfig h4-eth0 10.4')

5. links 查看结果

mininet 连接控制器

1. 启动控制器

开启终端1
启动 Ryu 应用(二层交换)

ryu-manager ryu/app/simple_switch.py


2. 启动 mininet 拓扑

再开启终端2, 用刚才自己创建的拓扑

cd mininet/examples
sudo python sdnsy.py

3. Ryu 接收到 PACKET-IN 消息

4. mininet 测试连通性

在mininet 终端页面

pingall


5. mininet 测试带宽

iperf h1 h2

流表操作

1. 启动控制器

在 ryu 文件夹内操作

cd ryu/
ryu-manager ryu/app/simple_switch.py

2. 启动mininet

打开新的终端Ctrl+Alt+T

cd mininet/examples
sudo python sdnsy.py

3. mininet 查看当前流表

网络拓扑刚创建,没有数据流传输,初始流表为空

dpctl dump-flows


4. pingall 产生PACKET-IN数据包

simple_switch 应用会处理 Packet-in 并下发流表

pingall

5. 再次查看流表

dpctl dump-flows


6. 删除所有流表

dpctl del-flows


7. 查看流表,验证删除结果

dpctl dump-flows


8. 手动添加流表,实现数据转发

dpctl add-flow in_port=1,ations=output:2
dpctl add-flow in_port=2,ations=output:1


9. 查看流表,验证添加结果

dpctl dump-flows

观察到两个交换机均添加了这两条流

10. ping,验证流表

h1 ping h2

可以 ping 通

h1 ping h3

由于流表匹配项是in_port=1,执行的action是转发到端口2,所以h1 ping h3时,流表匹配,全部转发到端口2,到达不了h3,ping不通

11. 数据包丢弃的流表操作

交换机丢弃所有端口2传入的数据包

① 手动添加流表

dpctl add-flow in_port=2,actions=drop

② 查看流表结果

dpctl dump-flows


③ ping 查看流表是否作用

pingall

发现 ping 不通,流表项起作用


12. 流表优先级
① 先删除所有流表

dpctl del-flows

② pingall 通过应用:simple_switch 下发流

pingall

③ 添加数据包丢弃流表

dpctl add-flow in_port=2,actions=drop

④ 查看流表结果

dpctl dump-flows


⑤ 验证pingall 是否仍然连通

pingall

结果仍然能够 ping 通
思考:为什么这次主机间还可以通信?不是已经添加 drop 了么?

13. 删除指定流表

删除交换机 s1 条件字段中包含 in_port=1 的所有流表,并查看当前流表

sh ovs-ofctl del-flows s1 in_port=2
dpctl dump-flows

SDN 教程[2]: SDN基础操作相关推荐

  1. 【保姆级教程】Docker基础操作篇-Dokerfile(含源码)

    Docker系列文章: 你好!Docker[概念+源码+保姆式教程] [保姆级教程]Docker进阶操作篇-Compose(含源码) Docker常用命令 [保姆级教程]VMware+CentOS 7 ...

  2. Python3入门教程:Excel 基础操作(上)

    人生苦短,我选Python 不知道各位同学有没有见过有关 Python 操作 Excel 的广告.小编是见过好多次的,还只需 ¥9.9 就能学习,今天小编就为大家带来免费的 Python 操作 Exc ...

  3. 【总目录1】基础操作、保姆教程、Office、PhotoShop、科普总结大全

    首先,关于为什么要写博客,可以看一下我的第一篇博客:我的第一篇博客 . 如果想写好一篇博客,可以查看:关于CSDN博客中Markdown编辑器和数学公式LaTeX的基本使用. 本目录主要为基础操作.保 ...

  4. 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作

    励志这东西,是有时间期限的. 不要期待一个刺激就可以顺利地改变你, 一个人的动力归根结底只能来源于自己. 你只有换着法子地激励自己, 直到它变成你血液的一部分. 你只有不停跌倒, 才能学会怎样用自己的 ...

  5. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  6. 结果显示窗口如何缩小_【操作教程】零基础如何学习PS与Sai?

    小伙伴们大家好呀~今天鳗鱼君给零基础的小伙伴们带来一篇PS.SAI的操作干货教程. 字字是干货,特别硬核,希望大家收藏加关注,也希望漫域视觉的这篇文章能够帮助到你~ 加入QQ群:715087165,有 ...

  7. gis导出栅格数据为什么不能tif_GIS基础操作教程(3)--点数据操作【附带练习数据】...

    又到了专栏更新的时候了,接下来的几期专栏我会系统性的讲一讲GIS的基础操作.在几个月前专栏里我分享过栅格数据的平移.裁剪.镶嵌(需要的同学可以点进专栏看一看),FLOW MAP的专题制作.这期文章我想 ...

  8. 计算机应用基础任务化教程试题及答案,计算机应用基础任务化教程windows7office2010试卷(带操作题)及答案.doc...

    计算机应用基础任务化教程windows7office2010试卷(带操作题)及答案 一.单项选择题:(20分)1.下列选项中,属于计算机外部设备的是( )A 主板 B CPU C 硬盘 D 鼠标2.当 ...

  9. ArcGIS Pro 简明教程(2)基础操作和简单制图

    ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...

最新文章

  1. iOS App 连接外设的几种方式
  2. 美国《时代》周刊公布年度25大最佳发明名单
  3. 超越 一切还刚刚开始
  4. 分布式技术比较(RPC,CORBA,WebService)
  5. CF1037H Security(SAM)
  6. MySQL concat()函数
  7. leetcode —— 238. 除自身以外数组的乘积
  8. 记一次Kafka集群的故障恢复
  9. 【华为云技术分享】云小课 | 容灾切换:业务一键切换到容灾站点
  10. 需求分析解决方案文案,展示图文结合的文案的视觉感。运用屏幕摄影师Snaglt实现屏幕图像文本捕获与编辑,为技术文案的编写提供素材支持。
  11. IT计算机实习:JAVA实习报告范文(一)
  12. 用C++可编程管线渲染obj模型
  13. Android之adb安装apk
  14. 金属、指纹、全网通该有的都有 中兴小鲜3正式发布
  15. Springboot实现发送邮件功能
  16. 高洛峰2015年新版视频发布
  17. 文件浏览 视频播放器
  18. SMS发送WapPush
  19. word2vec聚类
  20. 聊天机器人中的深度学习

热门文章

  1. 有的项目是没有seting ,.project文件的,import时not project found处理办法
  2. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端
  3. js前端判断登录超时即清除登录状态
  4. div+css(一)
  5. 小白也能写前端?推荐一款超实用的app----JsHD调试器,助你写出炫酷的网页!
  6. 基于CentOS7系统环境下的Snort3安装指南
  7. 方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
  8. oracle删除字段约束条件,Oracle 数据库中关于对表字段约束的操作(设置、删除、查询)...
  9. 美国研究生院计算机数据科学排名,美国研究生数据科学专业排名
  10. vba调用python代码_Python替代Excel Vba系列(终):vba中调用Python