本发明涉及通信技术领域,特别是涉及一种切换方法及装置。
背景技术:
BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测IP网络中链路的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。BFD可以为各种上层协议(如路由协议)快速检测两台设备间双向转发路径的故障。
以太网链路聚合简称链路聚合,通过将多条以太网物理链路捆绑为一条聚合链路,从而实现增加链路带宽的目的。将以太网接口捆绑即可实现物理链路的捆绑。以太网接口捆绑后形成聚合组,聚合组对应于聚合链路的聚合接口,每个以太网接口都是聚合接口的成员端口。
目前,当BFD应用于聚合链路的场景时,为了节省资源,通常由指定端口进行BFD会话的传输。现有技术中,当该指定端口为电口并且出现故障时,设备感知到端口故障,将重新选择聚合接口中的其它成员端口接替故障端口,以传输BFD会话。但是,在设备感知并重新选择端口的过程中,BFD会话可能出现超时的现象,即在设备处理过程中,BFD始终未收到BFD报文,则判断当前BFD会话DOWN。上层协议感知到BFD会话DOWN,则会选择其它路由进行路由作为下一跳路由。而当设备重新选择端口后,将重新建立BFD会话,上层协议感知到BFD会话重新建立后,将重新选择该路由作为下一跳路由,此现象称为路由震荡。
技术实现要素:
本发明实施例所要解决的技术问题是提供一种切换方法,以提高BFD的故障感知效率,从而避免无意义的震荡现象的发生,进而减轻系统负担。
为了解决上述问题,本发明实施例公开了一种切换方法,该方法应用于通过聚合链路相连的路由设备,包括:
若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;
以及,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。
相应的,本发明实施例还提供了一种切换装置,该装置应用于通过聚合链路相连的路由设备,用以保证上述方法的实现及应用,该装置包括:
确定模块,用于若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;
选择模块,用于在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。
这样,本发明实施例中,通过若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;以及,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。从而能够有效地提高BFD会话的故障感知效率,避免无意义的震荡现象的发生,进而提升了资源利用率以及用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种切换方法实施例的步骤流程图;
图2是本发明实施例的网络架构图;
图3是本发明一种切换装置实施例的结构框图之一;
图4是本发明一种切换装置实施例的结构框图之二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
BFD可以为各种上层协议(比如:路由协议等)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测,从而能够加快网络收敛速度,减少应用中断时间,提高网络的可靠性。
BFD本身没有发现机制,而是依靠被服务的上层协议通知来建立会话。上层协议通过自己的Hello机制发现邻居并建立连接,然后将邻居信息(比如:目的地址和源地址等)通告给BFD,BFD根据收到的邻居信息通过交互BFD控制报文来建立BFD会话。在BFD会话建立后,两端设备周期性地发送BFD心跳报文给邻居设备,如果在预设的检测时间内(不同厂商的设备设置有不同的检测时间)没有接收到邻居发送的BFD心跳报文,则认为是BFD会话所在的链路故障,进而上报上层协议,以便上层协议及时终止和邻居设备的邻居关系。
在利用BFD检测聚合链路两端的发送设备与接收设备的状态时,考虑到节省资源占用率的原因,通常只选择聚合链路中的其中一个端口作为BFD会话的传输端口。由于聚合链路的端口中可以存在光口、或者电口或者是光电混合端口,因此,在选择作为BFD会话的传输端口时,如果存在电口,则优选电口作为传输端口。在实际应用中,假设接收设备中的BFD传输端口故障,则该端口所在的芯片将会立即感应到端口故障,并中断上报,相关寄存器接收到该中断消息并根据该故障事件的优先级置位。具体的,在一些实施例中,相关寄存器可以为中断寄存器等。寄存器接收到中断消息后,其可能正在处理优先级较低的其它故障事件,当寄存器接收到端口DOWN中断消息时,该中断消息的优先级为最高级。寄存器将立即处理该事件,将与该端口相关联的标识位置位(在一些实施例中,置位即置0)。主控模块感知到寄存器置位,即确认BFD传输端口异常,在一些实施例中,主控模块可以为中央处理器。主控模块通知接口管理模块端口出现异常,接口管理模块接收到该通知后,将转达给聚合模块,聚合模块收到端口异常通知后,将从聚合链路的其它可用的成员端口中选择一个端口接替故障端口,以继续处理BFD会话。
但是,由前述可知,BFD的检测时间为毫秒级,在一些实施例中其检测时间为50ms。现有技术中,在端口发生故障后,由于需要进行上述所记载的多个步骤,从而将会导致聚合模块选择出新端口之前,BFD会话已经超出检测时间。即发送设备在50ms内未收到BFD心跳报文,则BFD会话判定当前链路故障,并拆除设备间的BFD会话。发送设备中的上层协议感知到BFD会话拆除,其会认为聚合链路发生故障,并从其它设备中选择新的设备作为下一跳设备,从而使路由震荡到新的设备。当接收设备中的聚合模块选择出新的端口并通过该新的端口与发送设备建立BFD会话后,发送设备将再次选择接收设备为下一跳设备,使路由震荡回该接收设备。显然,整个过程中,路由无意义的震荡了两次,并且在震荡过程中将占用大量的CPU资源,从而导致整个系统的资源利率用的降低,严重影响了用户体验。
针对上述问题,本发明实施例的核心构思之一在于,提出一种切换方法及装置,以有效地提高BFD的故障感知效率,从而避免无意义的震荡现象的发生,进而减轻系统负担。
参照图1,示出了本发明的一种切换方法实施例的步骤流程图,该方法应用于通过聚合链路相连的路由设备中,具体可以包括如下步骤:
步骤101,若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障。
具体的,在本发明的实施例中,设备的寄存器中具有两个或两个以上针脚,每个针脚与每个物理端口一一对应,并且,每个针脚对应有相应的标识位。即,寄存器中存在的两个或两个以上标识位与聚合链路中的端口一一对应,以使各标识位监测对应端口(物理端口)的端口状态。进一步的,通过监控端口的端口状态能够实现对该端口对应的链路进行监控。在本发明的实施例中,寄存器可以设置于设备的任意位置。在一些实施例中,寄存器可以设置于中央处理器中。本发明对此不做限定。
具体的,如果路由设备中的芯片检测到用于传输BFD会话的第一端口发生故障,芯片将中断消息上报至寄存器。寄存器获取该中断消息,同时判断该中断消息的优先级,在本发明的实施例中,由于设备资源的限定,寄存器在收到中断消息后会先处理优先级最高的中断消息,各中断事件的优先级可由操作人员预先设定,其中,以接口DOWN事件的优先级为最高级。即,当寄存器接收到与接口DOWN事件对应的中断消息时,将先处理该中断消息。
寄存器在判断中断消息的优先级为最高级时,将优先处理该中断事件。寄存器将与第一端口对应的第一标识位对应的状态值更新为第一状态值。在本发明的一个优选的实施例中,标识位存在两种状态值,分别为第一状态值和第二状态值。其中,第一状态值表示端口状态异常,第二状态值表示端口状态正常。
BFD会话立刻感知第一标识位置位(即更新为第一状态值),则可确定第一端口发生故障。
步骤102,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。
在本发明的实施例中,在BFD会话确认第一端口发生故障后,将立即从第一端口所属的聚合链路中的其它可用端口中选择用于继续传输BFD会话的第二端口。具体的,BFD会话查询与聚合链路端口对应的标识位的当前状态值,并从状态值为第二状态值(即标识对应端口可用)的标识位中,选择出第二标识位,并将该标识位对应的端口作为传输BFD会话的端口。
综上所述,本发明实施例提供的技术方案,通过若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;以及,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态,从而使BFD会话能够通过监测与BFD传输端口对应的标识位的状态值,直接获取到端口的状态,继而在BFD会话的检测时间(该检测时间在上文中提及,此处不赘述)内将BFD会话切换到可用端口,避免了震荡现象的发生,有效地减轻了系统负担,提高了资源利用率以及用户体验。
在本发明的一个优选的实施例中,在步骤101还具体包括:建立第一标识位与第一端口以及BFD会话之间的第一关联关系,从而使BFD会话能够通过检测第一标识位的状态值而获取到第一端口的当前端口状态。其中,若检测到第一标识位的状态值更新为第一状态值,则可以确定第一端口发生故障,并解除第一关联关系。相应的,步骤102还可以具体包括:建立BFD会话与第二标识位以及第二端口之间的第二关联关系,从而使BFD会话能够通过监测第二标识位的状态值而获取到第二端口的当前端口状态。
在本发明的一个优选的实施例中,方法还可以进一步包括:基于第一关联关系(即BFD会话与第一标识位以及第一端口之间的关联关系),以及寄存器中用于监测成员端口的标识位的状态值,建立BFD状态表,其中,BFD状态表中记录有第一关联关系、以及成员端口的端口状态。其中,端口状态包括选中状态及非选中状态。
在本发明的一个优选的实施例中,在步骤102还具体包括:删除BFD状态表中记录的第一关联关系,并将端口的端口状态更新为非选中状态。
在本发明的一个优选的实施例中,步骤102还可以具体包括:按照预定规则,在端口状态为选中状态对应的端口中选择第二端口。其中,按照以下预设规则选择第二端口:根据BFD状态表中的端口的排列顺序,选择第二端口;或者,根据聚合链路中的端口的负载状态,选择第二端口。
为了更好的理解本发明的切换方法,下面以具体实施例进行详细阐述。
参照图2,示出了本发明实施例的切换方法的网络架构图。在图2中:
路由A(即为本发明实施例中的发送设备)与路由B(即为本发明实施例中的接收设备)通过聚合链路进行通信连接。其中,该聚合链路将路由A与路由B之间的三条物理链路分别为link1、link2、link3绑定为一条聚合链路。在本实施例中,该三条物理链路在路由A中所对应的端口分别为端口1-3,以及在路由B中所对应的端口分别为端口4-6。并且,当前用于承载BFD会话,传输BFD报文的链路为link1,即路由A通过端口1向路由B发送BFD报文,路由B通过端口4向路由A发送BFD报文。需要说明的是,由于光信号技术所采用的机制与电信号不同,在端口发生中断事件时,不会发生震荡现象,因此,本发明的实施例应用于聚合链路中的成员端口均为电口的场景下。
在本发明的实施例中,在业务开始之前,操作人员在路由A的寄存器中所具有的多个标识位中选择出指定的三个标识位:标识位1、标识位2、标识位3,该三个标识位分别与端口1-3进行绑定,以标识端口1-3对应的状态。由于预置传输BFD会话的端口为端口1,因此,当BFD会话建立成功后,则BFD模块将BFD会话与端口1所对应的标识位,即标识位1建立关联关系。在本发明的实施例中,标识位1-3的状态值均为1,即表示各端口状态均正常。优选的,在一些实施例中,寄存器可以为中断寄存器等。
BFD模块基于BFD会话与标识位1之间的关联关系,建立BFD状态表。其中,BFD状态表中包括但不限于:BFD会话与标识位1之间的关联关系以及聚合链路中所有成员端口,即端口1-3的端口状态。在本发明的实施例中,端口状态包括选中状态与非选中状态,其中,在本发明的实施例中,选中状态即标识端口状态正常,非选中状态则标识端口状态异常。
在本发明的实施例中,路由B中的设置与路由A中的设置类似,此处不再赘述。在本发明的一个优选的实施例中,也可以仅在路由A,即聚合链路中的发送端进行上述设置,而无需在路由B中进行设置。
继续参照图2,在本发明的实施例中,如果Link1的传输线从端口1中被拔出,则路由A中的接口板芯片将立即感应到该端口1的中断事件,并将该中断事件上报至寄存器。与此同时,由于传输线从端口中拔出导致端口置DOWN,路由A将无法再发出BFD心跳报文,也无法接收到任何BFD心跳报文。在本发明的实施例中,不同厂商所生产的设备,其用于感应接口中断事件的装置还可以主板芯片上的其它装置,本发明对此不做限定。此外,在本发明的实施例中,仅以传输线拔出端口的中断事件作为具体实施例进行阐述,在其它实施例中,也可以是其它导致端口置DOWN的中断事件,本发明对此不做限定。
寄存器接收到该中断事件,同时判断该中断事件的优先级对应于预设优先级的最高级。在本发明的实施例中,寄存器在接收到中断消息时,其可能正在处理优先级较低的其它故障事件,当寄存器接收到端口DOWN中断消息时,该中断消息的优先级为最高级,则寄存器将暂停其它正在处理的较该中断事件优先级低的事件,而优先处理该中断事件。
在本发明的实施例中,寄存器查找与该发生中断事件的端口所对应的标识位,即为标识位1,并将该标识位1的状态值进行更新。在本发明的实施例中,寄存器将标识位1的状态值由1置为0。
仍参照图2,路由A中的BFD模块根据BFD状态表中所记录的BFD会话与标识位1的关联关系,实时监测标识位1的状态值。当标识位1的状态值置0后,BFD模块将立即感应到该状态值的变化,从而确定端口1的状态异常。BFD模块将解除BFD会话与标识位1之间的关联关系,并删除BFD状态表中所记录的BFD会话与标识位1之间的关联关系,同时将端口1所对应的状态更新为非选中状态。
在本发明的实施例中,BFD模块将按照预定规则,在BFD记录表中记录的端口状态为选中状态的端口中选择其中一个作为目标端口,以接替端口1继续传输BFD会话。在本发明的一个优选的实施例中,预设规则包括但不限于根据端口在BFD状态表中的排列顺序选择目标端口,还可以根据端口的传输速度等因素选择目标端口。操作人员可根据实际需求预先设置该预定规则,以使BFD模块根据该预定规则选择合适的目标端口。
继续参照图2,在本实施例中,BFD模块选择端口2作为目标端口,则BFD会话将与寄存器中与端口2绑定的标识位2建立关联关系,并将该关联关系记录到BFD状态表中。
BFD会话将通过该端口2继续发送BFD心跳报文至路由B,从而完成了聚合链路端口间的切换。
可见,本发明实施例中的技术方案通过若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;以及,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态,从而使BFD会话能够通过实时监测与传输BFD会话的端口对应的标识位的状态值,直接获取到该端口的状态,进而在BFD会话的检测时间(该检测时间在上文中提及,此处不赘述)内将BFD会话切换到可用端口,避免了震荡现象的发生,有效地减轻了系统负担,提高了资源利用率以及用户体验。
基于与上述方法同样的发明构思,本发明实施例还提供一种切换装置,应用于通过聚合链路相连的路由设备中。该切换装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的路由设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,除了处理器、非易失性存储器外,路由设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该路由设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展
参照图3,示出了本发明一种切换装置300实施例的结构框图,具体可以包括如下模块:
确定模块301,用于若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障。
选择模块302,用于在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。
参照图4,在本发明的一个优选的实施例中,在图3的基础上,装置300可以进一步包括:
第一建立模块303,用于建立第一标识位与第一端口以及BFD会话之间的第一关联关系。
解除模块304,用于若检测到第一标识位的状态值更新为第一状态值,则确定第一端口发生故障,并解除第一关联关系。
第二建立模块305,用于在解除模块解除第一关联关系后,建立BFD会话与第二标识位以及第二端口之间的第二关联关系。
第三建立模块306,用于基于第一关联关系,以及寄存器中用于监测成员端口的标识位的状态值,建立BFD状态表,其中,BFD状态表中记录有第一关联关系、以及成员端口的端口状态;其中,端口状态包括选中状态及非选中状态。
删除模块307,用于删除BFD状态表中记录的第一关联关系,并将第一端口的端口状态更新为非选中状态。
在本发明的一个优选的实施例中,选择模块302可以进一步用于按照预定规则,在端口状态为选中状态对应的端口中选择第二端口。其中,选择模块302按照以下预设规则选择第二端口:
根据BFD状态表中的端口的排列顺序,选择第二端口;或者,根据聚合链路中的端口的负载状态,选择第二端口。
综上所述,本发明实施例提供的BFD实现装置,通过若检测到寄存器中用于监测传输双向转发检测BFD会话的第一端口状态的第一标识位的状态值更新为第一状态值,则确定第一端口发生故障;以及,在标识位的状态值为第二状态值所对应的聚合链路的成员端口中选择第二端口,以通过第二端口传输BFD会话,其中,第二状态值用于标识第二端口为正常状态。从而能够有效地提高BFD会话的故障感知效率,避免无意义的震荡现象的发生,进而提升了资源利用率以及用户体验。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端装置的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端装置上,使得在计算机或其他可编程终端装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端装置上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端装置中还存在另外的相同要素。
以上对本发明所提供的一种切换方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。