背景技术
IRF(Intelligent Resilient Framework,智能弹性架构)是一种软件虚拟化技术,通过这种虚拟化技术可以集合多个设备的硬件资源和软件处理能力,实现多个设备的协同工作、统一管理和不间断维护。
图1和图2分别示出了IRF基本拓扑结构,其中,设备1和设备2通过堆叠端口连接,形成IRF链路,至少2个设备组成IRF系统。正常情况下,IRF系统中的一个成员设备作为Master(主设备),其它成员设备作为Slave(备设备)。如图1或图2所示,IRF系统中,将两个设备虚拟成一个设备,用户端设备通过分布于Master与Slave的聚合链路接入公网。在用户看来,IRF系统与中间设备之间不存在环路,无需运行环路保护协议。
IRF系统有可能因成员设备间的IRF链路故障而导致IRF系统分裂。IRF一旦分裂,网络中就会出现两个或多个配置相同的设备组(各设备组中的ActiveMaster配置相同,均具有相同的IP地址、Router-ID等),就会导致网络中IP地址、Router-ID、MAC(Media Access Control,媒体访问控制)地址等设备基本信息冲突和路由信息紊乱,造成MAC地址漂移、路由震荡等网络业务异常。
MAD检测(Multi-Active Detection,多Active检测)的作用就是当IRF系统分裂后,能够尽快将分裂后冗余配置的设备从网络中隔离出去,保持现网设备特征的唯一性。
MAD检测技术从它的报文类型区分,主要有三类:
(1)基于LACP(Link Aggregation Control Protocol,链路汇聚控制协议)的MAD检测
如图1所示,IRF系统中的成员设备与接入的中间设备间运行LACP MAD,通过扩展LACP协议报文交互IRF系统的ActiveID实现MAD检测。对于IRF系统来说,ActiveID的值是唯一的,用IRF系统中Master设备的成员编号来表示。
使能LACP MAD检测后,成员设备通过LACP协议报文并经中间设备和其它成员设备交互ActiveID信息。当IRF系统正常运行时,所有成员设备发送的LACP协议报文中的ActiveID值相同,没有发生多Active冲突;当IRF系统分裂后形成两个或多个IRF系统时,不同IRF系统中的成员设备发送的LACP协议报文中的ActiveID值不同,从而检测到多Active冲突。
(2)基于ARP(Address Resolution Protocol,地址解析协议)的MAD检测
如图1所示,IRF系统中的成员设备与接入的中间设备间运行ARP MAD,使用免费ARP协议报文交互IRF系统的DomainID和ActiveID实现MAD检测。为避免环路出现,要求IRF系统成员设备与中间设备间运行生成树协议。
使能ARP MAD检测后,成员设备可以通过免费ARP协议报文经中间设备和其它成员设备交互DomainID和ActiveID信息。当成员设备收到免费ARP协议报文后,先比较DomainID。如果DomainID相同,再比较ActiveID;如果DomainID不同,则认为报文来自不同IRF系统,不再进行MAD处理。如果ActiveID相同,则表示IRF系统正常运行,没有发生多Active冲突;如果ActiveID值不同,则表示IRF系统分裂,检测到多Active冲突。
(3)基于BFD(Bidirectional Forwarding Detection,双向转发检测)的MAD检测
如图2所示,在IRF系统中的每个成员设备上的三层接口下使能BFD MAD检测功能,并在该接口上配置MAD IP地址,MAD IP地址与相应成员设备绑定。成员设备间设置有直连的检测链路。
当IRF系统正常运行时,只有Master上配置的MAD IP地址生效,Slave设备上配置的MAD IP地址不生效,BFD会话处于down状态。当IRF系统分裂后会形成多个IRF系统后,不同IRF系统中Master上配置的MAD IP地址均会生效,BFD会话被激活,此时通过设备间的检测链路交互BFD报文,因此会检测到多Active冲突。
IRF链路故障导致一个IRF系统中的成员设备分裂为两个或多个独立的设备,从而导致多Active冲突。不管采用上述三种MAD检测方式中的哪一种,当IRF系统检测到多Active冲突(即检测到网络中存在多个处于Active状态且具有相同配置的IRF系统)后,发生冲突的IRF系统会进行竞选,Master成员编号小的IRF系统获胜,继续正常运行(该IRF系统称为运行组);Master成员编号大的IRF系统转入Recovery(恢复)状态,Shutdown(关闭)该系统中所有成员设备上的所有业务端口(IRF口除外),即,将Active-ID不是最小的设备全部从网络中隔离出来,Recovery状态的设备不能转发业务报文,该IRF系统称为隔离组。
但是,如果运行组设备发生故障,则用户网络与外部网络之间所有链路将断开,用户将无法访问外部网络。
发明内容
本发明提供一种基于IRF系统的故障处理方法及设备,用以避免在发生IRF分裂后出现因当前运行状态的设备故障而导致用户网络与外部网络之间的完全隔离。
本发明提供的基于IRF系统的故障处理方法,包括:
IRF系统中的设备检测到多Active冲突,并确定自身为恢复状态后,保持自身的MAD检测链路端口为Up并设置该端口为阻塞状态,并通过MAD检测链路与运行状态的设备之间交互MAD检测报文;
当恢复状态的设备未在设定时长内接收到所述运行状态的设备发送的MAD检测报文时,通过不同于所述MAD检测链路端口的其他端口向所述运行状态的设备发送协议报文,并等待对端返回响应报文;
若所述恢复状态的设备未在设定时长内接收到所述运行状态的设备返回的响应报文,则将关闭的上行业务端口和下行业务端口放开。
本发明提供的IRF设备,包括:MAD检测模块、控制模块、设备状态设置模块、端口状态设置模块、设备状态检测模块;
所述MAD检测模块,用于向运行状态的对端设备发送MAD检测报文以及接收对端发送的MAD检测报文;
所述控制模块,用于根据所述MAD检测模块接收到的MAD检测报文判断是否发生多Active冲突,并在判断为是时,指示所述设备状态设置模块设置该设备为恢复状态,指示所述端口状态设置模块保持自身的MAD检测链路端口为Up并设置该端口为阻塞状态;以及,在本设备为恢复状态时,若判断所述MAD检测模块未在设定时长内接收到对端设备发送的MAD检测报文,则指示所述设备状态检测模块向所述对端设备发送协议报文,并判断所述设备状态检测模块未在设定时长内接收到所述对端设备返回的响应报文时,指示所述端口设置模块将被关闭的上行业务端口和下行业务端口放开;
所述设备状态检测模块,用于根据所述控制模块的指示,向所述对端设备发送协议报文;以及,接收所述对端设备返回的响应报文;
所述设备状态设置模块,用于根据所述控制模块的指示设置本设备的状态;
所述端口状态设置模块,用于根据所述控制模块的指示设置本设备上的端口的状态。
与现有技术相比,本发明具有如下有益技术效果:
本发明中,IRF系统设备在检测到多Active冲突并确定自身为恢复状态后,通过保持MAD检测链路端口为Up并设置该端口为阻塞状态,从而可通过MAD检测链路与运行状态的设备之间交互MAD检测报文;当恢复状态的设备未在设定时长内接收到所述运行状态的设备发送的MAD检测报文时,则说明检测链路或运行状态的设备故障,此时通过不同于所述MAD检测链路端口的其他端口向所述运行状态的设备发送协议报文,以通过其他链路与对端设备通信,以确定是MAD检测链路故障还是运行状态的设备发生故障;若未在设定时长内接收到所述运行状态的设备返回的响应报文,则表明运行状态的设备故障,此时恢复状态的设备将关闭的上行业务端口和下行业务端口放开,以承担报文的转发处理操作,从而避免因运行状态的设备故障所导致的用户网络与外部网络之间的完全隔离。
具体实施方式
采用LACP MAD检测方式对IRF系统进行MAD检测时,要求有中间设备存在才能使LACP MAD检测正常工作,而采用ARP MAD或BFD MAD检测方式对IRF系统进行检测时,在中间设备不存在的情况下也可以正常工作。本发明实施例分别针对上述MAD检测链路经过中间设备与不经过中间设备的两种情况,通过使IRF系统中的隔离组对运行组进行监控,来提高IRF系统的健壮性。
下面结合实施例,就两种可能存在的情况分别进行说明。为叙述方便,将IRF系统分裂后,竞选成功的IRF系统或设备称为运行组(或运行组设备),将竞选失败的IRF系统或设备称为隔离组(或隔离组设备)。其中,运行组(或运行组设备)在IRF系统分裂后将承担报文转发处理操作,隔离组(或隔离组设备)则监控运行组(或运行组设备)的状态,一旦发现运行组(或运行组设备)故障,则承担报文转发处理操作。
实施例一
本实施例针对MAD检测链路经过中间设备进行MAD检测的IRF系统拓扑结构,给出了IRF系统分裂后的处理流程。下面以采用LACP MAD检测方式为例,对本发明实施例进行详细描述。
本实施例的IRF系统拓扑结构可如图1所示,IRF系统中的成员设备与接入的中间设备间运行LACP MAD,通过在扩展LACP协议报文中携带ActiveID以实现MAD检测。
与现有技术不同的是,当IRF链路发生故障导致系统分裂后,竞选失败而处于Recovery状态的设备的下行口并不是处于断路状态,而是保持Up并将其状态设置为Block(阻塞),使其与竞选成功的Active状态的设备之间仍然可以交互MAD检测报文,但不能收发业务报文。
当Recovery状态的设备(隔离组设备)在设定时间内没有收到Active状态的设备(运行组设备)发送过来的MAD检测报文时,则根据具体的情况,决定是否放开其上行口及下行口。其中,所述具体情况可包括:
情况1:运行组设备宕机;
情况2:运行组设备与中间设备之间的检测链路故障,且不可恢复;
情况3:运行组设备与中间设备之间的检测链路故障,但可以恢复;
情况4:隔离组设备与中间设备之间的检测链路故障。
对于情况1,隔离组设备无法继续收到运行组设备发出的MAD检测报文,此时接入设备与外部网络之间断开,需要隔离组设备放开其上行口及下行口,以承担业务报文处理操作。
对于2、3、4三种情况,隔离组设备也不能继续从运行组设备收到MAD检测报文,但运行组设备本身仍可以正常工作,因此需要将它们与情况1区分开。此时隔离组设备需要通过外部网络检测运行组设备的健康状况,如,可以使用预先配置的IP地址作为源IP,源MAC地址使用隔离组设备上预留的MAC地址,同时将上行口UP起来并设置其状态为Block,通过该上行口向运行组设备发送ICMP(Internet Control Message Protocol,Internet控制报文协议)报文。如果收到回应,则隔离组设备保持原有状态不变;否则说明运行组设备宕机,隔离组设备放开其上行口及下行口,以承担业务报文处理操作。
综合以上分析,IRF系统分裂后,隔离组设备并不断开其下行口,而是将其设置为Block,因而可以通过该下行口经中间设备与运行组交互MAD检测报文来监控与运行组设备之间的链路状态(即保持MAD检测链路联通),一旦在设定时间内(如2秒)没有收到运行组设备所发出的MAD检测报文,则通过上行口向运行组设备发送ICMP报文以进一步检测发生该情况的原因是检测链路故障还是运行组设备故障,如果没有收到回应,则认为是运行组设备故障,此时放开其上行口及下行口,以承担业务报文处理操作,避免因运行组设备故障所导致的用户网络与外部网络之间的完全隔离。
以图1所示的IRF系统架构为例,实施例一的流程可如图3所示,当IRF系统中的设备1(Master)和设备2(Slave)通过交互LACP MAD检测报文或ARP MAD检测报文检测到多Active冲突时,该IRF系统发生分裂,此后,执行以下流程:
步骤301,分裂出的设备通过竞选机制,选取出运行组设备,其余的则为隔离组设备。
本实例中,由于设备1的Master成员编号小于设备2,因此选举获胜,继续正常运行。
步骤302,设备2保持MAD检测链路所使用的业务端口为Up状态,并将下行的业务端口的状态设置为阻塞(Block),对于其它业务端口,设备2可参照现有技术,将该端口断开,也可以保持为Up,但设置其端口状态为Block。
步骤303,设备2通过该保持Up但为Block状态的下行业务端口,经中间设备与设备1交互MAD检测报文。
步骤304,设备2判断在设定长时间内是否接收到设备1发送的MAD检测报文,如果接收到,则继续与设备1之间通过中间设备交互MAD检测报文;如果没接收到,则转入步骤305。
步骤305~306,设备2通过外部网络检测设备1的健康状况,如果检测到设备1故障,则转入步骤307;否则,保持当前状态(如保持本设备当前的设备状态为Recovery,以及保持本设备当前的端口状态)。具体检测方式同前所述,在此不再赘述。
步骤307,设备2放开其上行和下行业务端口,以承担业务报文的转发处理操作。进一步地,设备2还可将其设备状态设置为Active。
实施例二
本实施例针对MAD检测链路不经过中间设备进行MAD检测的IRF系统拓扑结构,给出了IRF系统分裂后的处理流程。下面以采用BFD MAD检测方式为例,对本发明实施例进行详细描述。
本实施例中,IRF系统中的成员设备上均使能了BFD MAD检测功能,在IRF系统正常情况下,只有Master上配置的MAD IP生效,因此BFD会话处于down状态。
IRF链路故障并导致系统分裂后,在隔离组设备上将监控端口(即MAD检测链路所连接的端口)的状态设置为Block,使在隔离组和运行组二者之间直连的MAD检测链路上,MAD检测报文仍然正常交互。
当隔离组设备在设定时间内没有收到运行组设备发送过来的MAD检测报文时,则根据具体的情况,决定是否放开其上行口及下行口。其中,所述具体情况可包括:
情况1:运行组设备宕机;
情况2:运行组设备与隔离组设备之间的检测链路故障,且可以恢复;
情况3:运行组设备与隔离组设备之间的检测链路故障,且不可恢复;
对于情况1,隔离组设备不能继续从运行组设备收到MAD检测报文,此时接入设备与外部网络之间断开,需要隔离组设备放开其上行口及下行口,以承担业务报文处理操作。
对于情况2,隔离组设备在设定时长内不能从运行组设备收到MAD检测报文,但此时运行组设备仍然正常工作。其中,所述设定时长的时间长短取决于故障类型,比如针对端口故障(UP/DOWN),考虑其恢复时间较快,可设置较短时长;对于链路所在的线卡板重启的故障,考虑其启动时间较长,可设置较长的时长。
对于情况3,隔离组设备不能继续从运行组设备收到MAD检测报文,但此时运行组设备仍然正常工作。
对于以上2、3两种情况,运行组设备本身仍可以正常工作,需要将它们与情况1区分开。可采用实施例一中所述的通过外部网络发送ICMP报文的方式进行判断,即,隔离组设备可以使用预先配置的IP地址做为源IP,源MAC地址使用隔离组设备上预留的MAC地址,同时将上行口UP起来并设置其状态为Block,通过该上行口向运行组设备发送ICMP报文。如果收到回应,则隔离组设备保持原有状态不变;否则说明运行组设备宕机,隔离组设备放开其上行口及下行口,以承担业务报文处理操作。
综合以上分析,IRF系统分裂后,隔离组设备并不断开其检测口,而是将其设置为Block(即保持MAD检测链路联通),因而可以通过该检测口连接的检测链路与运行组交互MAD检测报文来监控与运行组设备之间的链路状态,一旦在设定时间内没有收到运行组设备所发出的MAD检测报文,则通过上行口向运行组设备发送ICMP报文以进一步检测发生该情况的原因是检测链路故障还是运行组设备故障,如果没有收到回应,则认为是运行组设备故障,此时放开其上行口及下行口,以承担业务报文处理操作,避免因运行组设备故障所导致的用户网络与外部网络之间的完全隔离。
以图2所示的IRF系统架构为例,实施例二的流程可如图4所示,当IRF系统中的设备1(Master)和设备2(Slave)通过交互BFD MAD检测报文检测到多Active冲突时,该IRF系统发生分裂,此后,执行以下流程:
步骤401,分裂出的设备通过竞选机制,选取出运行组设备,其余的则为隔离组设备。
本实例中,由于设备1的Master成员编号小于设备2,因此选举获胜,继续正常运行。
步骤402,设备2保持检测口(与检测链路连接的端口)为Up状态,并将该端口的状态设置为Block。对于上行和下行的业务端口,设备2可参照现有技术,将该端口断开,也可以保持为Up,但设置其端口状态为Block。
步骤403,设备2与设备1之间通过直连的检测链路交互MAD检测报文。
步骤404,设备2判断在设定长时间内是否接收到设备1发送的MAD检测报文,如果接收到,则继续与设备1之间通过直连的检测链路交互MAD检测报文;如果没接收到,则转入步骤405。
步骤405~406,设备2通过外部网络检测设备1的健康状况,如果检测到设备1故障,则转入步骤407;否则,保持当前状态(如保持本设备当前的设备状态为Recovery,以及保持本设备当前的端口状态)。具体检测方式同前所述,在此不再赘述。
步骤407,设备2放开其上行和下行业务端口,以承担业务报文的转发处理操作。进一步地,设备2还可将其设备状态设置为Active。
基于相同的技术构思,本发明实施例还提供了一种可应用于上述流程的IRF设备。
如图5所示,该IRF设备可包括:MAD检测模块501、控制模块502、设备状态设置模块504、端口状态设置模块505、设备状态检测模块503,其中:
MAD检测模块501,用于向运行状态的对端设备发送MAD检测报文以及接收对端发送的MAD检测报文。
具体的,该IRF设备可通过与对端直连的检测链路与对端设备交互MAD检测报文,如图2所述的网络拓扑结构,该MAD检测报文可以是BFD MAD检测报文,此时该IRF设备需要启用BFD协议;也可以通过非直连链路(如该链路上存在中间设备)与对端设备交互MAD检测报文,如图1所示的网络拓扑结构,该MAD检测报文可以是LACP MAD检测报文,此时该该IRF设备需要启用LACP协议。
控制模块502,用于根据MAD检测模块501接收到的MAD检测报文判断是否发生多Active冲突,并在判断为是时,指示设备状态设置模块504设置该设备为恢复状态,指示端口状态设置模块505保持自身的MAD检测链路端口为Up并设置该端口为阻塞状态;以及,在本设备为恢复状态时,若判断MAD检测模块501未在设定时长内接收到对端设备发送的MAD检测报文,则指示设备状态检测模块503向所述对端设备发送协议报文,并判断设备状态检测模块503未在设定时长内接收到所述对端设备返回的响应报文时,指示端口设置模块505将被关闭的上行业务端口和下行业务端口放开。
其中,控制模块502根据接收到的MAD检测报文判断是否发生多Active冲突的具体实现,可根据现有方式实现。控制模块502可根据现有选举机制判断是否将本设备设置为恢复状态。
设备状态检测模块503,用于根据控制模块502的指示,向所述对端设备发送协议报文;以及,接收所述对端设备返回的响应报文;
设备状态设置模块504,用于根据控制模块502的指示设置本设备的状态;
端口状态设置模块505,用于根据控制模块502的指示设置本设备上的端口的状态。
进一步的,控制模块502还用于,若判断设备状态检测模块503在设定时长内接收到所述对端设备返回的响应报文,则指示端口状态设置模块505保持当前端口状态,指示设备状态模块504保持当前设备状态。
进一步的,控制模块502还用于,在指示端口状态设置模块505将本设备的上行业务端口和下行业务端口放开之后,指示设备状态设置模块将自身设置为运行状态。
设备状态检测模块504可具体用于,放开其上行业务端口并设置端口状态为阻塞,通过被放开且端口状态为阻塞的上行业务端口,向对端设备发送控制报文协议ICMP报文,以期对端设备返回响应报文。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。