修复生成树协议转发状态异常的方法及堆叠设备
技术领域
本发明涉及堆叠技术领域,具体涉及修复生成树协议(STP,SpanningTree Protocol)转发状态异常的方法及堆叠设备。
背景技术
智能弹性架构(IRF,Intelligent Resilient Framework)也称为堆叠,是一种软件虚拟化技术。它的核心思想是将多台设备连接在一起,进行必要的配置后,虚拟化成一台设备。使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力,实现多台设备的协同工作、统一管理和不间断维护。IRF有很多优点,一旦主(Master)设备故障,系统会迅速自动选举新的Master,以保证业务不中断,从而实现了设备的1:N备份。
多实例生成树协议(MSTP,Multiple Spanning Tree Protocol)是由电气和电子工程师协会(IEEE,Institute of Electrical and Electronics Engineers)制定的802.1s标准定义,它可以弥补STP、快速生成树协议(RSTP,RapidSpanning Tree Protocol)和按虚拟局域网生成树(PVST,Per VLAN SpanningTree)协议的缺陷,既可以快速收敛,也能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。
目前,网络中无论是接入层、汇聚层,还是核心层,这些网络层次上的设备越来越广泛使用IRF技术来提高网络的可靠性。特别是在数据中心越来越集中庞大的趋势下,对设备的处理性能的要求也越来越高,应用堆叠技术能够很好地满足这一需求。图1给出了传统的网络拓扑示意图,图2为引入了IRF技术后的网络拓扑示意图,将图1和图2对比,可以发现,IRF技术已经应用到了接入层、汇聚层和核心层设备中。随着网络用户的增多,网络中的数据流量也呈现出极大的增长,链路聚合也广泛地应用于网络设备之间,它不仅增加了链路带宽,也增加了链路的可靠性。IRF与链路聚合技术很好地融合在一起,对网络的可靠性提供了很好的保障。
目前,网络中仍然根据接入层、汇聚层和核心层来部署网络设备,接入层设备属于较低端的设备,处理性能和流量转发性能有限,而汇聚层的流量较大,因而设备性能都较强大,核心层设备的要求则更高,处理性能更加强大。由于数据流量可能在一段集中时间内突发到汇聚层或核心层设备上,会对设备处理性能造成极大压力,中央处理单元(CPU,Central Processing Unit)可能会出现使用率很高的情况,而这段时间内可能会导致某些协议的计算和处理无法及时响应,而导致数据丢失和不一致的情况出现。
图3给出了IRF与链路聚合技术融合的典型组网图,如图3所示,当堆叠交换机A处理大量上CPU的数据时,很容易导致像MSTP这样耗计算量和内存的协议不能及时得到调度,会出现聚合口A1上某些成员口的状态与聚合口状态不一致,特别是分布在其他堆叠成员设备上的聚合成员口。比如MSTP计算出聚合口A1是禁止转发(discarding)状态,然后会通知所有成员口a1~a4将自己置为discarding,由于CPU繁忙或堆叠链路拥塞,可能会出现通知消息丢失而导致a3和a4没有接收到,从而导致a3和a4接口仍然保持原来的转发状态。
另一种情况,当聚合口有STP状态变化时,需要下发新的状态给各个聚合成员所在接口板,当堆叠交换机存在大量接口板的情况下,可能会出现有的接口板CPU不忙,有的接口板CPU很忙的情形,这样也会造成处理STP消息不及时的问题,从而导致本接口板上的聚合成员口的STP状态与其他成员口状态不一致的问题。
由上所述,IRF与链路聚合技术融合后存在如下缺点:
1、当堆叠设备的CPU使用率很高时,由于CPU使用率很高可能无法及时处理MSTP模块的各种事件和消息,会导致跨框的链路聚合口可能存在个别成员口MSTP转发状态与聚合口不一致的情况。
2、当堆叠设备的CPU使用率很高时,设备无法及时检测到或无法准确检测出聚合成员口STP状态不一致问题。
3、聚合口有STP状态变化时需要将状态下发到不同接口板上,考虑不同接口板上处理的顺序会有时间差,也可能会出现短时间聚合成员口STP状态不一致问题。
4、当出现聚合成员口的MSTP转发状态与聚合口不一致时,网络中可能会出现网络环路,从而使CPU忙的情况更加恶化。
发明内容
本发明提供修复STP转发状态异常的方法及堆叠设备,以在堆叠设备的聚合成员口的STP转发状态不一致时及时修复。
本发明的技术方案是这样实现的:
一种修复生成树协议STP转发状态异常的方法,该方法包括:
第一堆叠设备的主用主控板周期性检测本板的CPU的使用率,当发现CPU的使用率在预设第一时长内持续高于门限值时,或者,发现任一聚合口的STP转发状态变化时,通知本堆叠设备的各接口板将各成员口的STP转发状态发送给对端第二设备,以使得:第二设备判断第一堆叠设备的同一聚合口的不同成员口上的STP转发状态是否相同,若不同,则认为第一堆叠设备的该聚合口的STP转发状态出现异常;
当第一堆叠设备接收到第二设备发来的指示聚合口的STP转发状态异常通知时,将该聚合口的STP转发状态发送给各接口板,以便:各接口板将该聚合口的各成员口的STP转发状态调整为与该聚合口一致。
所述第一堆叠设备运行STP、或者快速生成树协议RSTP,或者多生成树协议MSTP。
当所述第一堆叠设备运行MSTP时,
所述发现任一聚合口的生成树协议STP转发状态变化为:发现任一聚合口的任一实例的MSTP转发状态变化;
所述通知各接口板将各成员口的STP转发状态发送给对端第二设备为:通知各接口板将各成员口的各实例的MSTP转发状态发送给对端第二设备;
所述第二设备判断第一堆叠设备的同一聚合口的不同成员口上的STP转发状态是否相同为:针对第一堆叠设备的同一聚合口的每个实例,第二设备判断该实例在该聚合口的不同成员口上的MSTP转发状态是否相同;
所述第一堆叠设备接收到第二设备发来的指示聚合口的STP转发状态异常通知为:第一堆叠设备接收到第二设备发来的指示一聚合口的一实例的MSTP转发状态异常通知;
所述将该聚合口的STP转发状态发送给各接口板为:将该聚合口的所述实例的MSTP转发状态发送给各接口板;
所述各接口板将该聚合口的各成员口的STP转发状态调整为与聚合口一致为:各接口板将该聚合口的各成员口的所述实例的MSTP转发状态调整为与该聚合口的所述实例一致。
所述通知各接口板将各成员口的STP转发状态发送给对端第二设备包括:
各接口板获取本板上各成员口的STP转发状态,将各成员口的STP转发状态通过链路汇聚控制协议LACP报文,或者链路层发现协议LLDP报文,或者设备链路检测协议DLDP报文发送给第二设备。
所述第一堆叠设备接收到第二设备发来的指示聚合口的STP转发状态异常通知为:
第一堆叠设备的各接口板接收到第二设备发来的指示一聚合口的STP转发状态异常通知;
所述第一堆叠设备接收到第二设备发来的指示聚合口的STP转发状态异常通知之后、将该聚合口的STP转发状态发送给各接口板之前进一步包括:
第一堆叠设备的各接口板将指示一聚合口的STP转发状态异常通知转发给主控板,同时启动定时器;
且,所述各接口板将该聚合口的各成员口的STP转发状态调整为与该聚合口一致为:
对于任一接口板,若在定时器超时前接收到主控板发来的该聚合口的STP转发状态,则将该聚合口的各成员口的STP转发状态调整为与该聚合口一致;否则,将该聚合口的各成员口的STP转发状态设置为禁止转发Discarding状态。
一种堆叠设备,包括:主控板和接口板,其中:
主控板:当作为主用主控板时,周期性检测本板的CPU的使用率,当发现CPU的使用率在预设第一时长内持续高于门限值时,或者,发现任一聚合口的STP转发状态变化时,向各接口板发送STP转发状态传输通知;
接口板:当接收到主控板发来的STP转发状态传输通知时,将本板上各聚合成员口的STP转发状态发送给对端第二设备;当接收到第二设备发来的指示一聚合口的STP转发状态异常通知时,向主控板获取该聚合口的STP转发状态,将本板上该聚合口的各成员口的STP转发状态调整为与该聚合口一致。
所述堆叠设备运行STP、或者RSTP,或者MSTP。
所述接口板进一步用于,当向主控板获取该聚合口的STP转发状态时,若发现在预设等待时长内未接收到主控板返回的该聚合口的STP转发状态,则将本板上该聚合口的各成员口的STP转发状态设置为Discarding。
所述接口板进一步用于,当接收到对端堆叠设备发来的各成员口的STP转发状态时,将该各成员口的STP转发状态发送给主控板;将主控板发来的指示聚合口的STP转发状态异常的通知发送给对端堆叠设备;
所述主控板进一步用于,当接收到各接口板发来的对端堆叠设备的各聚合成员口的STP转发状态,针对对端堆叠设备的每个聚合口,判断该聚合口的不同成员口上的STP转发状态是否相同,若否,则将指示该聚合口的STP转发状态异常的通知发送给各接口板。
一种设备,包括:接口板和主控板,其中:
接口板:当接收到对端堆叠设备发来的各聚合成员口的STP转发状态时,将该各聚合成员口的STP转发状态发送给主控板;将主控板发来的指示聚合口的STP转发状态异常的通知发送给对端堆叠设备;
主控板:当接收到各接口板发来的对端堆叠设备的各聚合成员口的STP转发状态,针对对端堆叠设备的每个聚合口,判断该聚合口的不同成员口上的STP转发状态是否相同,若否,则将指示该聚合口的STP转发状态异常的通知发送给各接口板。
一种主控板,位于堆叠设备上,该主控板包括:检测模块、STP模块和链路聚合模块,其中:
检测模块:当本板作为主用主控板时,周期性检测本板的CPU使用率,当发现CPU的使用率在预设第一时长内持续高于门限值时,向链路聚合模块发送告警消息;
STP模块:当本板作为主用主控板时,若发现任一聚合口的STP转发状态变化,向链路聚合模块发送告警消息;当接收到本堆叠设备的任一接口板发来的聚合口STP转发状态获取请求时,将该聚合口的STP转发状态下发给该接口板;
链路聚合模块:当接收到检测模块发来的告警消息时,向本堆叠设备的各接口板发送STP转发状态传输消息,以通知各接口板将各成员口的STP转发状态发送给对端第二设备。
所述STP模块运行STP,或者RSTP,或者MSTP。
所述链路聚合模块进一步用于,当接收到本堆叠设备的各接口板上报的对端设备的各成员口的STP转发状态时,针对属于同一聚合口的各成员口,判断各成员口的STP转发状态是否一致,若否,则向本堆叠设备的各接口板返回指示该聚合口的STP转发状态异常的通知。
一种接口板,位于堆叠设备上,该接口板包括:链路聚合模块和STP模块,其中:
链路聚合模块:当接收到本堆叠设备的主用主控板发来的STP转发状态传输消息时,向STP模块发送STP转发状态获取请求,将STP模块返回的各成员口的STP转发状态发送给对端设备;当接收到对端设备发来的指示聚合口的STP转发状态异常的通知时,向STP发送携带该聚合口标识的告警消息;
STP模块:接收链路聚合模块发来的STP转发状态获取请求,将本板上各成员口的STP转发状态返回给链路聚合模块;当接收到链路聚合模块发来的告警消息时,向主用主控板获取该消息指示的聚合口的STP转发状态,将本板上该聚合口的各成员口的STP转发状态调整为与该聚合口一致。
该接口板运行STP,或者RSTP,或者MSTP。
所述STP模块进一步用于,当向主用主控板获取该消息指示的聚合口的STP转发状态时,若在预设等待时长内未接收到主用主控板返回的该聚合口的STP转发状态,则将本板上该聚合口的各成员口的STP转发状态设置为Discarding。
所述链路聚合模块进一步用于,接收对端设备发来的各成员口的STP转发状态,将该各成员口的STP转发状态发送给主用主控板;当接收到主用主控板返回的指示对端设备的聚合口的STP转发状态异常的通知时,将该通知转发给对端设备。
与现有技术相比,本发明在堆叠设备的聚合成员口的STP转发状态不一致时,能够及时发现并修复,同时降低了堆叠设备的CPU的负担。
附图说明
图1为传统的网络拓扑示意图;
图2为现有的引入了IRF技术后的网络拓扑示意图;
图3为现有的IRF与链路聚合技术融合的典型组网图;
图4为本发明实施例提供的IRF与链路聚合融合的组网示意图;
图5为本发明实施例提供的当图4所示组网运行MSTP时,修复聚合成员口的MSTP转发状态不一致的方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图4为本发明实施例提供的IRF与链路聚合融合的组网示意图,如图4所示,堆叠设备A与设备B互连。其中,堆叠设备A包括堆叠成员1和堆叠成员2,堆叠成员1包括一个主控板、一个或多个接口板,堆叠成员2也包括一个主控板、一个或多个接口板,设当前堆叠成员1的主控板为主用主控板,堆叠成员2的主控板为备用主控板。任一主控板都包括:检测模块、链路聚合模块和STP模块,任一接口板都包括:链路聚合模块和STP模块。主用主控板可控制、管理堆叠成员1、2的所有接口板。设备B上包括:主控板上的链路聚合模块和接口板上的链路聚合模块。其中,堆叠设备A可如图3所示的堆叠交换机A,设备B可如图3所示的交换机B。
需要说明的是,图4中对于堆叠成员1、2分别只画出了一个接口板,在实际应用中,堆叠成员1、2可能都包含多个接口板,此时,各接口板的内部结构以及与主用主控板的连接关系与图4中的两个接口板都类同。另外,当堆叠设备A的主用主控板故障时,会发生主备倒换,备用主控板升级为主用主控板,开始对堆叠设备A的各接口板进行控制、管理,主备倒换过程与现有技术相同,不再赘述。
另外,STP共包含三种协议:STP、RSTP和MSTP。MSTP与其他两种STP:STP和RSTP的区别在于:MSTP为多实例,STP和RSTP为单实例。对于STP和RSTP组网环境,其实施方式与MSTP组网环境类同,区别仅在于:对于STP和RSTP组网环境,实施方式仅针对一个实例,其具体实现可由MSTP组网环境的实施方式直接地、毫无疑义地得出。
以下以MSTP组网环境为例,给出在图4所示组网中,避免MSTP转发状态不一致的具体实施方法:
图5为本发明实施例提供的当图4所示组网运行MSTP时,修复聚合成员口的MSTP转发状态不一致的方法流程图,在本实施例中,堆叠设备为堆叠交换机,如图5所示,其具体步骤如下:
步骤501:对于任一堆叠交换机A,该堆叠交换机A的主用主控板的检测模块周期性检测主用主控板的CPU使用率。
步骤502:当堆叠交换机A的主用主控板的检测模块发现主用主控板的CPU的使用率在预设时长t1内持续达到a%以上,则向主用主控板的链路聚合模块发送告警消息。
t1、a可根据经验设定。
另外,当堆叠交换机A的主用主控板的MSTP模块计算出聚合口的任一实例的转发状态变化时,考虑到不同接口板的处理性能会有差异,从而处理的顺序会有时间差,此时该MSTP模块也可以向主用主控板的链路聚合模块发送告警消息。上述告警消息可携带聚合口标识,或者聚合口标识+实例编号。
步骤503:堆叠交换机A的主用主控板的链路聚合模块接收该告警消息,向交换机A的各接口板的链路聚合模块发送组装转发状态类型长度值(TLV,Type Length Value)消息。
在实际应用中,步骤503中,主用主控板的链路聚合模块可以向所有聚合口的各成员口所在的接口板的链路聚合模块发送组装转发状态TLV消息,也可以只向部分聚合口的各成员口所在的接口板的链路聚合模块发送组装转发状态TLV消息,或者,只向部分聚合口的部分成员口所在的接口板的链路聚合模块发送组装转发状态TLV消息,另外,主用主控板的链路聚合模块也可以在组装转发状态TLV消息中携带实例编号,以指示仅对该实例进行转发状态TLV组装。例如:当一个聚合口的一个实例的MSTP转发状态变化时,则可只对该聚合口的各成员口的该实例进行转发状态TLV组装。
步骤504:当堆叠交换机A的任一接口板的链路聚合模块接收到该组装转发状态TLV消息时,向本接口板的MSTP模块发送转发状态获取请求,本接口板的MSTP模块接收该转发状态获取请求,将本接口板的各聚合成员口的各个实例的转发状态携带在转发状态获取响应中返回给本接口板的链路聚合模块,本接口板的链路聚合模块分别将本接口板的各聚合成员口的各个实例的转发状态组装成转发状态TLV,将该TLV携带在链路汇聚控制协议(LACP,Link Aggregation Control Protocol)报文中,将该LACP报文通过本接口板的各聚合成员口发送给对端交换机B。
例如,堆叠交换机A的聚合口A1有四个成员口a1、a2、a3和a4,a1、a2位于接口板1上、a3、a4位于接口板2上,a1的实例0的转发状态为discarding,实例1的转发状态为forwarding,则接口板1的链路聚合模块分别将a1口的实例0和实例1的转发状态组装成TLV,然后将该TLV封装在a1口发送的LACP报文中,同理,对于成员口a2、a3和a4都按照上述原则封装对应实例的转发状态到TLV中。
步骤505:当交换机B的任一接口板的链路聚合模块从本接口板的任一聚合成员口接收到来自堆叠交换机A的LACP报文时,解析报文的TLV字段,得到堆叠交换机A的各聚合口的各成员口的各实例的转发状态,将解析得到的堆叠交换机A的各聚合口的各成员口的各实例的转发状态发送给本交换机B的主控板的链路聚合模块。
步骤506:对于堆叠交换机A的每个聚合口的每个实例,交换机B的主控板的链路聚合模块比较该实例在该聚合口的不同成员口上的转发状态,判断是否相同,若是,确定该实例的转发状态正常;否则,确定该实例的转发状态异常。
例如:设交换机B的聚合口B1的成员口为b1、b2、b3和b4,b1、b2在接口板1上,b3、b4在接口板2上,若b1口接收到的TLV显示:堆叠交换机A的成员口a1的实例0的转发状态为discarding,b3口接收到的TLV则显示:堆叠交换机A的成员口a3的实例0的转发状态为forwarding,则表明堆叠交换机A的聚合口A1的实例0的转发状态出现异常。
步骤507:当交换机B的主控板的链路聚合模块发现堆叠交换机A的任一聚合口的任一实例的转发状态出现异常时,立即将该聚合口标识+实例编号及异常指示携带在组装检测反馈TLV消息中发送给本交换机B的各接口板的链路聚合模块。
步骤508:当交换机B的任一接口板的链路聚合模块接收到该组装检测反馈TLV消息时,将该消息中的聚合口标识+实例编号及异常指示组装成检测反馈TLV,将该TLV携带在LACP报文中,通过本接口板的聚合成员口发送给堆叠交换机A。
步骤509:当堆叠交换机A的任一接口板的链路聚合模块接收到交换机B发来的携带检测反馈TLV的LACP报文时,从该报文中解析出转发状态异常的聚合口标识+实例编号,然后立即向本接口板的MSTP模块发送告警消息,该消息携带聚合口标识+实例编号及异常指示。
步骤510:当堆叠交换机A的任一接口板的MSTP模块接收到该告警消息,向主用主控板的MSTP模块发送携带转发状态异常的聚合口标识+实例编号的转发状态获取请求,同时开启接收超时定时器。
步骤511:当堆叠交换机A的主用主控板的MSTP模块接收到任一接口板的MSTP模块发来的转发状态获取请求时,根据该消息中的转发状态异常的聚合口标识+实例编号,立即将该聚合口的该实例的转发状态携带在转发状态获取响应中在预设时长t2内重复发送给该聚合口的各成员口所在的接口板的MSTP模块。
t2可根据经验确定。
步骤512:对于堆叠交换机A的任一接口板的MSTP模块,若该MSTP模块在接收超时定时器超时前接收到了主用主控板的MSTP模块下发的转发状态获取响应,则根据该响应指示的聚合口的实例的转发状态设置本接口板上该聚合口的各成员口的该实例的转发状态;若在接收超时定时器超时前未收到主用主控板的MSTP模块下发的转发状态获取响应,则将本接口板上该聚合口的各成员口的该实例置为Discarding状态。
这里,当将接口板的该聚合口的各成员口的该实例置为Discarding状态后,若又收到了主用主控板的MSTP模块下发的转发状态获取响应,且响应中携带的该聚合口的该实例的转发状态为Forwarding,则将该接口板上该聚合口的各成员口的该实例更新为Forwarding状态。
需要说明的是,图5所示实施例是借助LACP报文发出转发状态TLV和检测反馈TLV,在实际应用中,也可采用其他协议报文,如链路层发现协议(LLDP,Link Layer Discovery Protocol)、设备链路检测协议(DLDP,DeviceLink Detection Protocol)等报文发出该两TLV。
从图5所示实施例可以看出,当堆叠设备的主用主控板的CPU的使用率很高时,或者,聚合口的任一实例的转发状态变化时,堆叠设备将每个聚合口的各成员口的各实例的转发状态发送给对端设备,让对端设备判断聚合口的每个实例在不同聚合成员口上的转发状态是否相同,并将判断结果通知堆叠设备。可见,这样可以大大降低堆叠设备的CPU的负担,在堆叠设备的CPU使用率很高时,通过对端设备及时处理聚合口的实例的转发状态异常或变化的情况,使得聚合口的实例的转发状态快速恢复正常。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。