第二次sdn实验:

1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况。

本次使用python脚本fattree生成拓扑,这样方便设置路由器的转发端口号。

python代码:

  1. """Custom topology example
  2. Adding the 'topos' dict with a key/value pair to generate our newly defined
  3. topology enables one to pass in '--topo=mytopo' from the command line.
  4. """
  5. from mininet.topo import Topo
  6. from mininet.net import Mininet
  7. from mininet.node import RemoteController, CPULimitedHost
  8. from mininet.link import TCLink
  9. from mininet.util import dumpNodeConnections
  10. class MyTopo(Topo):
  11. "Simple topology example."
  12. def __init__(self):
  13. "Create custom topo."
  14. # Initialize topology
  15. Topo.__init__(self)
  16. host1 = self.addHost('h1')
  17. host2 = self.addHost('h2')
  18. host3 = self.addHost('h3')
  19. host4 = self.addHost('h4')
  20. host5 = self.addHost('h5')
  21. host6 = self.addHost('h6')
  22. switch1 = self.addSwitch('s1')
  23. switch2 = self.addSwitch('s2')
  24. self.addLink(host1, switch1, 1, 1)
  25. self.addLink(host2, switch1, 1, 2)
  26. self.addLink(host3, switch1, 1, 3)
  27. self.addLink(switch1, switch2, 4, 4)
  28. self.addLink(host4, switch2, 1, 1)
  29. self.addLink(host5, switch2, 1, 2)
  30. self.addLink(host6, switch2, 1, 3)
  31. topos = {'mytopo': (lambda: MyTopo())}

运行以及端口连接展示:

2.直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义。(需要再开启一个终端进行操作)

h1 -- h4互通

h2 -- h5互通

h3 -- h6互通

其余主机不通

①使用如下OVS命令实现s1接收从h1、h2和h3传来的包,并从端口4发出

  1. sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096\>vlan_vid,output:4//将h1进入s1的包打上vlan tag,从端口4发出
  2. sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097\>vlan_vid,output:4//将h2进入s1的包打上vlan tag,从端口4发出
  3. sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098\>vlan_vid,output:4//将h3进入s1的包打上vlan tag,从端口4发出

②使用如下OVS命令实现s2接收从h4、h5和h6传来的包,并从端口4发出

  1. sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096\>vlan_vid,output:4//将h4进入s2的包打上vlan tag,从端口4发出
  2. sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097\>vlan_vid,output:4//将h5进入s2的包打上vlan tag,从端口4发出
  3. sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098\>vlan_vid,output:4//将h6进入s2的包打上vlan tag,从端口4发出

③使用如下OVS命令实现s1接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3

  1. sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=0,actions=pop_vlan,output:1
  2. //将从端口4的包去除vlan tag, 并根据tag进行转发端口1
  3. sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=1,actions=pop_vlan,output:2
  4. //将从端口4的包去除vlan tag, 并根据tag进行转发端口2
  5. sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=2,actions=pop_vlan,output:3
  6. //将从端口4的包去除vlan tag, 并根据tag进行转发端口3

④使用如下OVS命令实现s2接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3

  1. sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=0,actions=pop_vlan,output:1
  2. //将从端口4的包去除vlan tag, 并根据tag进行转发端口1
  3. sudoovsofctlOOpenFlow13addflows2priority=1,dl_vlan=1,actions=pop_vlan,output:2
  4. //将从端口4的包去除vlan tag, 并根据tag进行转发端口2
  5. sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=2,actions=pop_vlan,output:3
  6. //将从端口4的包去除vlan tag, 并根据tag进行转发端口3

终端输入:

3.直接在Open vSwitch查看流表,提交OVS命令执行结果。

4.提交主机连通性测试结果,验证流表的有效性。

5.利用Wireshark抓包,分析验证特定报文 。(此处应该选择转换器的第四个端口)

SDN实验2的更多相关文章

  1. SDN实验---Mininet实验(玩转流表)

    一:实验目的 (一)案例目的 (二)实验内容 (三)网络拓扑结构 二:OpenFlow流表实验准备 (一)使用Python设置网络拓扑 --- tree_topo.py from mininet.to ...

  2. SDN实验---Ryu的应用开发(二)Learning Switch

    一:自学习交换机(二层MAC交换机)的编程思路 (一)明确问题 如何实现软件定义的自学习交换机? (二)设计解决方案 通过控制器来实现自学习交换算法,然后指导数据平面实现交换机操作 (三)确定具体的技 ...

  3. SDN实验---Ryu的应用开发(一)Hub实现

    补充: (一)Ubuntu下安装Notepadqq 背景:为什么安装Notepadqq Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组.但是可惜的是N ...

  4. SDN实验---OVS了解(转载)

    转载自:https://opengers.github.io/openstack/openstack-base-use-openvswitch/ 一:Open vSwitch介绍 (一)介绍 在过去, ...

  5. SDN实验---Ryu的应用开发(四)北向接口RESTAPI

    一:推文 软件定义网络基础---REST API概述 软件定义网络基础---REST API的设计规范 二:掌握Ryu基本RESTAPI使用方法 (一)Ryu的RESTAPI (二) REST应用样例 ...

  6. SDN实验---Ryu的应用开发(四)基于跳数的最短路径转发原理

    一:实现最短跳数转发 (一)原理 推文:迪杰斯特拉算法和弗洛伊德算法 二:代码实现 (一)全部代码 from ryu.base import app_manager from ryu.controll ...

  7. SDN实验---Ryu的应用开发(三)流量监控

    一:实现流量监控 (一)流量监控原理 其中控制器向交换机周期下发获取统计消息,请求交换机消息------是主动下发过程 流速公式:是(t1时刻的流量-t0时刻的流量)/(t1-t0) 剩余带宽公式:链 ...

  8. SDN实验---Mininet实验(模拟多数据中心带宽实验)

    补充:NameError: name 'buffer' is not defined >>> import sys >>> ,): ... buffer = mem ...

  9. SDN实验---使用git安装Mininet

    0:补充Ubuntu截屏 截全屏 printscreen 截取当前窗口 alt + printscreen 截取任意矩形 shift + printscreen 截取全屏到剪切板 ctrl + pri ...

随机推荐

  1. maven的基础入门

    Maven是Java世界中一个很好使的项目管理工具,关于[好使]这个特性从项目的使用量上就能体现出来,虽然说现在有更好使的Gradle,但是Maven的地位也不会那么轻易被撼动,支持者还是多多. Ma ...

  2. JS 学习笔记

    在JS中两个对象不能用“==” 或者“===” 来比较,如果硬是要比较的话,始终返回的是false var x = new String("Bill"); var y = new ...

  3. windows环境下 mysql 忘记root密码时的解决办法

    1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\MySQL Serv ...

  4. 记第一次使用NET CORE 2.2 完成的DEMO部署在LINUX并且上线

    .NET CORE 这么久了一直没有成功打通过,今天花了点儿时间做了一个小DEMO,首次完成并且部署上线.记录一下. DEMO中只是测试了一下从MSSQL中获取数据,并且显示在页面上,涉及到了数据库连 ...

  5. Jenkins的使用(二)-------MSBuild

    六.构建 左边菜单栏    Manage Jenkins --->ManagePlugins--->可选插件,然后搜索 MSBuild,并安装 添加ssh插件后新增了两种 1.使用MSBu ...

  6. 设计模式之(十二)享元模式(Flyweight)

    享元模式思想 就以小时候导锅来说吧(导锅是我家乡的方言,就是用细沙把一个模型锅的形状拓下来,然后把铝水倒进模型中,就导好一个锅了.小时候很喜欢看的,可惜现在看不到了.上个图片回忆下)了解了这个过程后就 ...

  7. es6的let与const

    es6新增命令let,用于声明变量,他与var的不同主要有三点: let有块级作用域 let没有变量提升 同级作用域内,let不可以重复定义 let有块级作用域: es5 for(var i=0;i& ...

  8. Java中 / 和 %

    Java中 / 和 % 每天积累一些 Java 的知识点,补充自己的不足. 今天在刷面试题的碰到 % ,一下子还真想不起来这个运算符的作用,赶紧重温一下,这里我写了个小代码来体现 / 和 % 的区别. ...

  9. Robot Framework常用关键字

    虽然通过RIDE提供"填表"一样的写测试用例的方式.但它却支持强大的关键字功能,以及可以开发关键字的扩展能力. Comment 注释功能,也可以使用python中的"#& ...

  10. eclipse 搭建springboot项目pom.xml报错

    1. 报错信息 2. 解决方法 在pom.xml文件中加入maven版本修改 <maven-jar-plugin.version>3.1.1</maven-jar-plugin.ve ...