控制器网络环路的检测方法、装置及控制器与流程

文档序号:13890184阅读:437来源:国知局

本发明涉及通讯领域,特别是涉及一种控制器网络环路的检测方法、装置及控制器。



背景技术:

在传统网络(ip/ethernet)中,网络连接或配置错误都比较容易导致网络中出现转发环路,使设备对广播、组播以及未知单播等报文进行重复发送,造成网络资源的浪费甚至导致网络瘫痪。

如图1所示,为控制/转发分离的sdn(软件定义网络或控制器网络,softwaredefinednetwork)网络示意图,在控制/转发分离的sdn方案下,存在以下问题:1、如果控制器域外网络(例如,网关设备上的接入(access)口)发生环路,则发生广播风暴导致网络瘫痪,对网络设备构成极大威胁。2、如果上送控制器,则对控制平面的性能和安全也构成威胁,例如,环路场景下主机的频繁迁移会上送到控制器。

总之,在控制/转发完全分离的sdn方案下,没有一种方法能够发现控制器域外网络是否存在环路,一旦发生环路,广播风暴会导致网络瘫痪。



技术实现要素:

本发明提供一种控制器网络环路的检测方法、装置及控制器,用以解决现有技术的如下问题:在控制/转发完全分离的sdn方案下,没有一种方法能够发现控制器域外网络是否存在环路,一旦发生环路,广播风暴会导致网络瘫痪。

为解决上述技术问题,一方面,本发明提供一种控制器网络环路的检测方法,包括:控制器将具有预定特征的检测报文发送至交换机,以使所述交换机在域外设备的接入口广播所述检测报文;在所述控制器接收到来自所述交换机的报文的情况下,所述控制器判断所述报文是否具有所述预定特征;在所述报文具有所述预定特征的情况下,所述控制器确定所述控制器的域外网络发生环路。

可选的,在所述控制器接收到来自所述交换机的报文的情况下,所述控制器判断所述报文是否具有所述预定特征,包括:在所述控制器确定第一预定时间间隔内接收到所述交换机返回的报文的情况下,所述控制器判断所述报文是否具有所述预定特征。

可选的,所述控制器将具有预定特征的检测报文发送至交换机,包括:所述控制器按照第二预定时间间隔周期性的将具有所述预定特征的检测报文发送至交换机。

可选的,所述控制器确定所述控制器的域外网络发生环路,包括:在当前检测周期未收到所述交换机返回的报文、且下一个检测周期还未开始的情况下,所述控制器按照第三预定时间间隔记录所述域外设备的主机迁移事件的次数;所述控制器判断所述主机迁移事件的次数是否大于所述外域设备在所述第三预定时间间隔内的预定迁移阈值;在所述主机迁移事件的次数大于所述预定迁移阈值的情况下,所述控制器确定所述控制器的域外网络发生环路。

可选的,所述方法还包括:在没有收到所述报文或者收到的所述报文不具有所述预定特征的情况下,所述控制器确定所述控制器的域外网络没有发生环路。

另一方面,本发明还提供一种控制器网络环路的检测装置,包括:发送模块,用于将具有预定特征的检测报文发送至交换机,以使所述交换机在域外设备的接入口广播所述检测报文;特征判断模块,用于在所述控制器接收到来自所述交换机的报文的情况下,判断所述报文是否具有所述预定特征;确定模块,用于在所述报文具有所述预定特征的情况下,确定所述控制器的域外网络发生环路。

可选的,所述特征判断模块,具体用于在所述控制器确定第一预定时间间隔内接收到所述交换机返回的报文的情况下,判断所述报文是否具有所述预定特征。

可选的,所述发送模块,还用于按照第二预定时间间隔周期性的将具有所述预定特征的检测报文发送至交换机。

可选的,所述确定模块包括:记录单元,用于在当前检测周期未收到所述交换机返回的报文、且下一个检测周期还未开始的情况下,按照第三预定时间间隔记录所述域外设备的主机迁移事件的次数;次数判断单元,用于判断所述主机迁移事件的次数是否大于所述外域设备在所述第三预定时间间隔内的预定迁移阈值;确定单元,用于在所述主机迁移事件的次数大于所述预定迁移阈值的情况下,确定所述控制器的域外网络发生环路。

可选的,所述装置还包括:所述确定模块,还用于在没有收到所述报文或者收到的所述报文不具有所述预定特征的情况下,确定所述控制器的域外网络没有发生环路。

另一方面,本发明还提供一种控制器,包括:上述的控制器网络环路的检测装置。

本发明在控制器侧设置了环路检测机制,将具有预定特征的检测报文发送至交换机,以让交换机广播该检测报文,如果控制器收到来自交换机的报文,且报文还具有预定特征,则确定控制器的域外网络发生环路,就可以根据接收到报文的相关信息来确定是哪个位置发生了环路,检测结果准确,解决现有技术的如下问题:在控制/转发完全分离的sdn方案下,没有一种方法能够发现控制器域外网络是否存在环路,一旦发生环路,广播风暴会导致网络瘫痪。

附图说明

图1是现有技术中sdn网络示意图示意图;

图2是本发明第一实施例中控制器网络环路的检测方法的流程图;

图3是本发明第二实施例中控制器网络环路的检测装置的结构示意图;

图4是本发明第二实施例中控制器网络环路的检测装置确定模块的结构示意图;

图5是本发明第四实施例中控制器网络环路的检测方法的流程图。

具体实施方式

为了解决现有技术的如下问题:在控制/转发完全分离的sdn方案下,没有一种方法能够发现控制器域外网络是否存在环路,一旦发生环路,广播风暴会导致网络瘫痪;本发明提供了一种控制器网络环路的检测方法、装置及控制器,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。

本发明第一实施例提供一种控制器网络环路的检测方法,该方法的流程如图2所示,包括步骤s202至s206:

s202,控制器将具有预定特征的检测报文发送至交换机,以使交换机在域外设备的接入口广播检测报文;

s204,在控制器接收到来自交换机的报文的情况下,控制器判断报文是否具有预定特征;

s206,在报文具有预定特征的情况下,控制器确定控制器的域外网络发生环路。

本发明实施例在控制器侧设置了环路检测机制,将具有预定特征的检测报文发送至交换机,以让交换机广播该检测报文,如果控制器收到来自交换机的报文,且报文还具有预定特征,则确定控制器的域外网络发生环路,就可以根据接收到报文的相关信息来确定是哪个位置发生了环路,检测结果准确,解决现有技术的如下问题:在控制/转发完全分离的sdn方案下,没有一种方法能够发现控制器域外网络是否存在环路,一旦发生环路,广播风暴会导致网络瘫痪。

在通常情况下,需要给控制器设置一个等待接收到交换机返回报文的时间,而不是无休止的等待,在设置时,可以根据距离控制器最远端的设备能够返回报文的时间来设置等待时间,但环路一般都是发生在交换机侧,如果发生环路,收到报文的时间会远远小于设置的等待时间。具体实现时,控制器判断第一预定时间间隔(等待时间)内是否接收到交换机返回的报文;控制器在收到报文的情况下,再判断报文是否具有预定特征。

在控制器发送检测报文时,可以是用户单次触发控制器将具有预定特征的检测报文发送至交换机,即在用户想要对系统是否存在环路进行检测时再触发该功能;当然,也可以是系统自动进行环路检测,则控制器按照第二预定时间间隔周期性的将具有预定特征的检测报文发送至交换机。上述的第二预定时间间隔可以设置的较短,例如30分钟、1小时等,当然,也可以设置很长时间,例如,1天、10天等。

如果第二预定时间间隔设置的比较长,那当前检测周期在第一预定时间间隔内没有收到交换机返回的报文、且下一个检测周期还未开始的情况下,还是会存在生成环路的风险,因此,在该段时间内,控制器按照第三预定时间间隔记录域外设备的主机迁移事件的次数,当然,主机迁移时间的迁移位置和迁移时间都是主机迁移事件包括的,此处着重统计次数。随后,控制器判断主机迁移事件的次数是否大于外域设备在第三预定时间间隔内的预定迁移阈值,并在主机迁移事件的次数大于预定迁移阈值的情况下,控制器确定控制器的域外网络发生环路。

如果没有收到报文或者收到的报文不具有预定特征,则控制器确定控制器的域外网络没有发生环路。

例如,通过上述检测方法,就可以确定图1中的哪个node的端口产生了环路,进而解决该问题。

本发明第二实施例提供了一种控制器网络环路的检测装置,该装置的结构示意如图3所示,包括:

发送模块10,用于将具有预定特征的检测报文发送至交换机,以使交换机在域外设备的接入口广播检测报文;特征判断模块11,与发送模块10耦合,用于在控制器接收到来自交换机的报文的情况下,判断报文是否具有预定特征;确定模块12,与特征判断模块11耦合,用于在报文具有预定特征的情况下,确定控制器的域外网络发生环路。

其中,特征判断模块11具体用于在所述控制器确定第一预定时间间隔内接收到所述交换机返回的报文的情况下,判断报文是否具有预定特征。

实现时,发送模块10,还用于按照第二预定时间间隔周期性的将具有预定特征的检测报文发送至交换机。在发送模块10周期性的发送检测报文时,就等于是控制器自动进行环路检测,提供了一种自动状态下的环路检测机制,无需人工操作。上述的第二预定时间间隔可以设置的较短,例如30分钟、1小时等,当然,也可以设置很长时间,例如,1天、10天等。

如果第二预定时间间隔设置的比较长,那当前检测周期在第一预定时间间隔内没有收到交换机返回的报文、且下一个检测周期还未开始的情况下,还是会存在生成环路的风险。

因此,本实施例实现时,确定模块12还可以设置一种优选的结构,其结构示意如图4所示,包括:记录单元121,用于在当前检测周期未收到交换机返回的报文、且下一个检测周期还未开始的情况下,按照第三预定时间间隔记录域外设备的主机迁移事件的次数;次数判断单元122,与记录单元121耦合,用于判断主机迁移事件的次数是否大于外域设备在第三预定时间间隔内的预定迁移阈值;确定单元123,与次数判断单元122耦合,用于在主机迁移事件的次数大于预定迁移阈值的情况下,确定控制器的域外网络发生环路。

实现时,确定模块12,还用于在没有收到报文或者收到的报文不具有预定特征的情况下,确定控制器的域外网络没有发生环路。

本发明第三实施例还提供了一种控制器,其包括上述第二实施例中的控制器网络环路的检测装置。本领域技术人员根据上述记载可以知晓如何将上述的检测装置设置在控制器中,此处不再赘述。

为了能够及时发现网络中的环路,以避免对整个网络造成严重影响,需提供一种监测机制,本发明第四实施例提供了一种控制器网络环路的检测方法,以便在网络中出现环路时,能及时通知用户检查网络连接和配置情况,并能够自动关闭出问题的端口以消除环路,这种机制就是环路监测机制。当网络中出现环路时,环路监测机制发送告警信息(trap)通知用户;同时端口发生环路时,还可根据用户事先配置的保护策略,选择应对的保护策略。

在实现时,控制器在任何时候、任何一个接入(access)口上收到一个由控制器发出的广播报文,即可以认为环路发生,控制器应产生严重级别的告警,指明具体的端口,由管理员负责进行处理或者执行必要的保护动作(如,down掉某端口,或对某端口进行限速等操作)。本实施例的控制器网络环路的检测方法如图5所示,包括步骤s501至s507。

s501,下发匹配规则到交换机,规则可包括目的mac、源mac及报文中payload携带的特征字段等(向所有域内交换机下发)。

s502,控制器周期性发出检测报文,通过pktout发送给交换机,交换机在access口上广播发出特征报文。

s503,交换机根据匹配规则通过pktin将报文上送至控制器。

s504,控制器解析pktin报文,执行环路检测判断,以判断是否发生了环路,即判断pktin报文是否是控制器自身发出的检测报文。如果是自身发出的检测报文,则执行s505,否则,执行s507。

s505,确认控制器的域外网络发生环路。

s506,如发生环路,控制器可上报告警给网管,也可通过控制器,告知交换机执行既定的保护策略(如,shutdown端口;禁止端口mac学习;对端口限速等操作)。

s507,确认未发生环路,等待下一个检测周期到来,并返回s501重复执行。此处可以设置每个检测周期发送检测报文的时间间隔。默认时间间隔为30s。根据控制器的压力情况,灵活设置发送检测报文的时间间隔,避免造成负荷。

当然了,本实施例是设置了自动检测过程,因此,在s507过程后是返回到s501继续等待下一个检测周期到来,然而,如果不设置重复检测的周期,仅根据用户需求进行检测,就可以设置一个主动检测开关,在需要检测时打开主动检测开关即可。

上述步骤具体实现时,控制器下发流表要求交换机匹配指定特征上送报文,并周期性主动在access口(l2口、l3口等)发送广播检测报文,收到上送的控制器发出的检测报文判为环路发生。

如果上述检测报文的时间间隔设置的较长,则下一个检测周期就会到来的较晚,因此,在当前检测周期检测报文发送并未收到交换机返回的报文,且下一个检测周期还没有到来时,需要一种补充的检测机制,即监控控制器网络域中的主机迁移事件,即判断主机是否频繁迁移或者access口是否收到设备发出的报文。该过程中,记录一定数量主机最近若干次迁移的记录,包括上线位置和时间戳。对于迁移频度大于一定阈值的主机,则认为发生环路,可产生上报trap告警或者通知。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1