3-1openflow协议原理以及应用(packet包广播风暴)实践

文章讲述了在Mininet中使用OpenFlow13时,如何通过Ryu控制器解决OpenFlow1.0版本限制带来的问题,包括如何构建自定义拓扑并处理广播风暴,以及如何使用STP实例控制器来修复网络异常。
摘要由CSDN通过智能技术生成

在Mininet中,其自带的控制器是采用是OpenFlow 1.0版本。因此如果在开发中使用mininet内置的控制器(使用端口6653),即使拓扑构建和ovs自定义时声明使用openflow13,但是由于采用的控制器版本受限,ovs与控制器协商后也只能采用1.0版本交互
。因此,我们在进行实际开发和实践的时候为了使用方便,一般都是采用独立的控制器,如ryu,但是ryu控制器中,也有一些app实例是用openflow1.0版本,比如
root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch.py
这里的实例 simple_switch.py是使用1.0(也就是openflow v1)

如果项目需要流表用openflow13,则要用对应的控制器实例,如simple_switch_13.py:
root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch_13.py

一,以下是基于openflow13的协议原理实践

1、启动RYU控制器
root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch_13.py
2、编写要构建的拓扑代码(或用mininet启动时自带的,s1 h1 h2

3、启动wireshark ,选择lo口,做好监听准备(在root权限下)
4、运行mn命令(默认拓扑)
mn --controller=remote,ip=127.0.0.1,port=6633 --switch=ovs,protocols=OpenFlow13
操作截图:
在这里插入图片描述
图1
在这里插入图片描述图2

OVS与RYU控制器的数据交互截图(由截图可见是openflow13版本,,v1(open flow1.0)v4
在这里插入图片描述
图3
二、扩展(使用自定义拓扑的方式)
1 拓扑定义(以下代码topo_37_ryu_of13.py)


class MyTopo(Topo):
    def __init__(self):
        # Initialize topology 以下建立的是有环的拓扑,将可以观察到网络的广播风暴(openflow包风暴)
        Topo.__init__(self)

        # Add hosts
        h1 = self.addHost('h1')
        h2 = self.addHost('h2')
        h3 = self.addHost('h3')

        # Add switches
        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')
        s3 = self.addSwitch('s3')
        s4 = self.addSwitch('s4')
        s5 = self.addSwitch('s5')

        # Add links
        self.addLink(h1, s1)
        self.addLink(h2, s1)
        self.addLink(h3, s5)
        self.addLink(s1, s2)
        self.addLink(s1, s3)
        self.addLink(s2, s4)
        self.addLink(s3, s4)
        self.addLink(s4, s5)

topos = {'mytopo':( lambda: MyTopo() )}

2、启动mininet命令
root@zmq-virtual-machine:/home/zmq/Desktop# mn --custom=/mnt/hgfs/vmshare/topo_37_ryu_of13.py --topo=mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch=ovs,protocols=OpenFlow13
启动控制器:root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch_13.py

3测试结果:
在运行控制器的终端可以看到大量的packet包(风暴),注意这里不是ping等数据包(还没有业务数据)网络建立阶段已经有风暴导致无法正常转发数据业务包,如ping不通(图5)
在这里插入图片描述
图4
在这里插入图片描述
图5
4、排除安全故障
在软件定义网络中,广播风暴有可能是协议本身的漏洞导致的,但是一些人为的因素也会导致网络异常,主要是要解决环路问题。
我们可以通过自定义控制器的方式,或采用 simple_switch_stp_13.py 实例控制器观察效果
操作过程:
(1)在mininet中使用exit强行退出网络
(2)在运行控制器的终端使用使用ctrl+c中断控制网络
(3)在运行控制器的终端使用root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch_stp_13.py 重新启动命令
(4)启动mininet命令
root@zmq-virtual-machine:/home/zmq/Desktop# mn --custom=/mnt/hgfs/vmshare/topo_37_ryu_of13.py --topo=mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch=ovs,protocols=OpenFlow13
(5)观察过程:
从运行结果可以看到stp的生成过程,在生成树稳定后,网络将达到正常的数据转发效果

在这里插入图片描述
启动控制器:root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch_stp_13.py

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值