一种故障处理方法及装置与流程

文档序号:11878101阅读:231来源:国知局
一种故障处理方法及装置与流程

本发明涉及通信技术领域,特别涉及一种故障处理方法及装置。



背景技术:

BFD(Bidirectional Forwarding Detection,双向转发检测)是一种检测机制,用于检测两个交换设备之间的故障,可以应用于各种上层协议(比如路由协议、BGP(Border Gateway Protocol,边界网关协议)等)中。

BFD的实现过程可以包括:在待检测的两台交换设备中建立会话,两台交换设备互发BFD控制报文,如果交换设备在预设时长内接收到对端设备发送的BFD控制报文,则表示链路正常,如果在预设时长内其中一台交换设备没有接收到对端设备发送的BFD控制报文,则认为这两台交换设备之间发生链路故障,通知该上层协议,通过该上层协议进行相应的故障处理。



技术实现要素:

本发明实施例的目的在于提供一种故障处理方法及装置,提高网络的稳定性。

为达到上述目的,本发明实施例公开了一种故障处理方法,应用于交换设备,包括:

在检测到链路故障后,确定到达所述链路的对端设备的当前路由;

判断当前路由的下一跳设备是否与原路由的下一跳设备相同;

如果否,则向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;

当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。

可选的,所述方法还可以包括:若确定不存在到达所述链路的对端设备的当前路由,删除通过所述对端设备学习的路由。

可选的,所述当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由,可以包括:

判断在第一预设时长内,是否接收到所述对端设备发送的检测回复报文;

如果是,保留通过所述对端设备学习的路由;

如果否,删除通过所述对端设备学习的路由。

可选的,在所述删除通过所述对端设备学习的路由之前,还可以包括:

确定到达所述链路的对端设备的当前路由;

向所确定的当前路由的下一跳设备发送检测报文;

判断在第二预设时长内,是否接收到所述对端设备发送的检测回复报文;

如果是,保留通过所述对端设备学习的路由;

如果否,返回执行所述确定到达所述链路的对端设备的当前路由的步骤,至到达预设的第一检测总时长时,执行所述删除通过所述对端设备学习的路由的步骤。

可选的,所述方法还可以包括:

在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,删除通过所述对端设备学习的路由。

可选的,在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,还可以包括:

第三预设时长后,再次判断当前路由的下一跳设备是否与原路由的下一跳设备相同,如果是,返回执行第三预设时长后,再次判断当前路由的下一跳设备是否与原路由的下一跳设备相同的步骤,至到达预设的第二检测总时长时,执行所述删除通过所述对端设备学习的路由的步骤。

可选的,所述检测报文及所述检测回复报文为包含检测标记的保活报文。

为达到上述目的,本发明实施例还公开了一种故障处理装置,应用于交换设备,包括:

第一确定模块,用于在检测到链路故障后,确定到达所述链路的对端设备的当前路由;

第一判断模块,用于判断当前路由的下一跳设备是否与原路由的下一跳设备相同;

第一发送模块,用于当所述判断模块判断结果为否时,向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;

处理模块,用于当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。

可选的,所述处理模块,还可以用于在确定不存在到达所述链路的对端设备当前路由的情况下,删除通过所述对端设备学习的路由。

可选的,所述装置还可以包括:

第二判断模块,用于判断在第一预设时长内,是否接收到所述对端设备发送的检测回复报文;

所述处理模块,还用于当所述第二判断模块判断结果为是时,保留通过所述对端设备学习的路由;当所述第二判断模块判断结果为否时,删除通过所述对端设备学习的路由。

可选的,所述装置还可以包括:第二确定模块、第二发送模块和第三判断模块;

当所述第二判断模块判断结果为否时,还触发所述第二确定模块;

所述第二确定模块,用于重新确定到达所述链路的对端设备的当前路由;

所述第二发送模块,用于向所述第二确定模块确定的当前路由的下一跳设备发送检测报文;

所述第三判断模块,用于判断在第二预设时长内,是否接收到所述对端设备发送的检测回复报文;

所述处理模块,还用于当所述第三判断模块判断结果为是时,保留通过所述对端设备学习的路由;当所述第三判断模块判断结果为否时,触发所述第二确定模块,至到达预设的第一检测总时长时,删除通过所述对端设备学习的路由。

可选的,所述处理模块,还可以用于在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,删除通过所述对端设备学习的路由。

可选的,所述装置还可以包括:

定时模块,用于在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,到达第三预设时长时,触发所述第一判断模块;当判断结果为是时,再次触发所述定时模块,至到达预设的第二检测总时长时,触发所述删除模块;

所述处理模块,还用于根据所述定时模块的触发删除通过所述对端设备学习的路由。

应用本发明实施例,当BFD应用于BGP中时,在BFD检测出链路故障的情况下,交换设备并不是立即将该故障链路的对端设备从自己的BGP邻居中删除,也不立即删除从该对端设备学习的BGP路由,而是确定到达所述链路的对端设备的当前路由;如果当前路由的下一跳设备与原路由的下一跳设备不相同,则向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。接收到该对端设备发送的检测回复报文,即表示该故障链路已经由其它正常链路替换掉,该交换设备与该对端设备之间的路由畅通。这样,便避免了一次网络震荡,提高了网络的稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为链路故障示意图;

图2为本发明实施例提供的一种故障处理方法的流程示意图;

图3为本发明实施例提供的一种故障处理装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当BFD应用于BGP中时,如图1所示,当交换设备A与交换设备C之间发生链路故障时,BFD检测出该链路故障,通知BGP,从而使交换设备A将交换设备C从自己的BGP邻居中删除,并删除通过交换设备C学习的BGP路由;同样的,交换设备C也将交换设备A从自己的BGP邻居中删除,并删除通过交换设备A学习的BGP路由;这样,A-C链路的BGP路由全部不通。当BGP重新进行邻居检测时,发现可以通过A-B-C这个路径保证交换设备A与交换设备C之间的链路畅通,这种情况下,交换设备A重新添加交换设备C为自己的BGP邻居,并通过交换设备C学习BGP路由;同样的,交换设备C也重新添加交换设备A为自己的BGP邻居,并通过交换设备A学习BGP路由;这样,A-C链路的BGP路由畅通。

本发明实施例提供了一种故障处理方法及装置,应用于交换设备,该交换设备可以为交换机、路由器、网关等。下面首先对本发明实施例提供的故障处理方法进行详细说明。

图2为本发明实施例提供的一种故障处理方法的流程示意图,包括:

S201:在检测到链路故障后,确定到达所述链路的对端设备的当前路由。

本发明实施例中,以应用BGP协议及BFD机制的交换设备为例进行说明。另外,故障链路两端的交换设备的处理方案相同,这里只对故障链路一端的交换设备进行说明。

如图1所示,假设交换设备A与交换设备C之间的链路发生故障,当BFD检测到该故障时,会上报给BGP协议,下面针对交换设备A进行说明,交换设备C的处理方案与交换设备A相同,在此不做赘述。

此时,应用BGP协议的交换设备A重新进行路由的迭代计算,根据计算结果,确定到达该故障链路的对端设备(即交换设备C)的当前路由。

S202:判断当前路由的下一跳设备是否与原路由的下一跳设备相同。

需要说明的是,如果交换设备所在的网络为EBGP组网,在EBGP组网中,BGP邻居之间的路由是唯一的,如果出现链路故障,则该唯一的路由失效,故障链路两端的交换设备只能将对方从自己的BGP邻居中删除,并删除通过对方学习的BGP路由。

因此,在本实施例中,若确定不存在到达所述链路的对端设备的当前路由,删除通过所述对端设备学习的路由。也就是说,交换设备A通过重新进行路由的迭代计算,发现不存在到达交换设备C的当前路由,这种情况下,交换设备A将交换设备C从自己的BGP邻居中删除,并删除通过交换设备C学习的路由。

在除EBGP组网以外的其他应用BGP的网络中,当链路发生故障时,通常存在其他备份路由可以替代该故障链路的路由,如图1中,可以用A-B-C替代A-C。这种情况下,交换设备A重新进行路由的迭代计算,根据计算结果,确定到达交换设备C的当前路由为A-B-C。也就是说,当前路由的下一跳设备为交换设备B。而链路故障之前,交换设备A到达交换设备C的路由为A-C,也就是说,原路由的下一跳设备为交换设备C。

因此,判断当前路由的下一跳设备交换设备B与原路由的下一跳设备交换设备C不相同,此时,执行S203:向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备。

检测报文,即为检测到达故障链路的对端设备的当前路由是否正常的报文。具体的,交换设备A向当前路由的下一跳设备(即交换设备B)发送检测报文,如果当前路由畅通,则交换设备B能够将该检测报文转发至交换设备C,交换设备C收到该检测报文后,通过该当前路由,将检测回复报文发送至交换设备A。

S203:当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。

由上所述,如果交换设备A接收到交换设备C发送的检测回复报文,则说明该故障链路的路由已经由正常的路由替代,这种情况下,交换设备A继续将交换设备C作为自己的BGP邻居,保留通过交换设备C学习的路由。

作为一种实施方式,所述检测报文及所述检测回复报文为包含检测标记的保活报文。

在应用BGP的网络中,交换设备之间会发送keepalive(保活)报文,以检测与对方之间的链路是否正常。上述检测报文及检测回复报文可以为扩展的keepalive报文,扩展的keepalive报文中包含检测标记,以表明这是应对BFD检测到链路故障时的专用keepalive报文。具体的,检测标记可以为S标记。

应用本发明图2所示实施例,当BFD应用于BGP中时,在BFD检测出链路故障的情况下,交换设备并不是立即将该故障链路的对端设备从自己的BGP邻居中删除,也不立即删除从该对端设备学习的BGP路由,而是确定到达所述链路的对端设备的当前路由;如果当前路由的下一跳设备与原路由的下一跳设备不相同,则向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。接收到该对端设备发送的检测回复报文,即表示该故障链路已经由其它正常链路替换掉,该交换设备与该对端设备之间的路由畅通。这样,便避免了一次网络震荡,提高了网络的稳定性。

在本实施例中,交换设备向当前路由的下一跳设备发送检测报文后,判断在第一预设时长内,是否接收到所述对端设备发送的检测回复报文;如果是,保留通过所述对端设备学习的路由;如果否,删除通过所述对端设备学习的路由。

可以理解的,上述交换设备A向交换设备B发送检测报文后,不能无限时一直等待交换设备C的回复,应该设定一段时长(第一预设时长,可以为2S、5S等,在此不做限制),如果在第一预设时长内接收到交换设备C发送的检测回复报文,则保留通过交换设备C学习的路由,如果未接收到,则删除通过交换设备C学习的路由。

作为一种实施方式,在删除通过对端设备学习的路由之前,可以确定到达所述链路的对端设备的当前路由;向所确定的当前路由的下一跳设备发送检测报文;判断在第二预设时长内,是否接收到所述对端设备发送的检测回复报文;如果是,保留通过所述对端设备学习的路由;如果否,返回执行所述确定到达所述链路的对端设备的当前路由的步骤,至到达预设的第一检测总时长时,执行所述删除通过所述对端设备学习的路由的步骤。

也就是说,如果在第一预设时长内,交换设备A未接收到交换设备C发送的检测回复报文,可以再次确定到达交换设备C的当前路由。由于在实际应用中,当前路由可能经常发生改变,所以,此时可以重新确定当前路由,并向新确定的当前路由的下一跳设备发送检测报文,如果在这之后的第二预设时长内,接收到交换设备C发送的检测回复报文,则保留通过交换设备C学习的路由。

第二预设时长可以与第一预设时长相同或不同,在这里假设二者都为5S。

如果向新确定的当前路由的下一跳设备发送检测报文后的5S内仍未接收到交换设备C发送的检测回复报文,可以再重新确定当前路由,并向新确定的当前路由的下一跳设备发送检测报文,重复执行这一过程。

当然,重复执行这一过程也应该有时间限制,不能一直重复执行。因此,可以设定一个检测总时长(第一检测总时长),该总时长可以为15S,当然也可以为其他,在此不做限制,以检测到链路故障时开始计时,在这15S内,如果接收到交换设备C发送的检测回复报文,则保留通过交换设备C学习的路由,如果一直未接收到交换设备C发送的检测回复报文,则到达15S时,删除通过交换设备C学习的路由。

通常情况下,当出现链路故障时,交换设备重新进行路由的迭代计算,确定到达故障链路的对端设备的路由都会发生改变。但是,如果交换设备A出现了其他故障,则可能路由迭代错误,导致上述S202判断当前路由的下一跳设备与原路由的下一跳设备相同。这种情况下,删除通过所述对端设备学习的路由。

当然,上述S202判断当前路由的下一跳设备与原路由的下一跳设备相同,也有可能是交换设备反应延迟,导致路由迭代错误。

作为本发明的一种实施方式,可以在判断当前路由的下一跳设备与原路由的下一跳设备相同的第三预设时长后,再次判断当前路由的下一跳设备是否与原路由的下一跳设备相同,如果是,返回执行第三预设时长后,再次判断当前路由的下一跳设备是否与原路由的下一跳设备相同的步骤,至到达预设的第二检测总时长时,执行所述删除通过所述对端设备学习的路由的步骤。

该第三预设时长可以为2S,也可以为其他,在此不做限制。假设交换设备A判断当前路由的下一跳设备与原路由的下一跳设备相同,则2S后再次判断当前路由的下一跳设备是否与原路由的下一跳设备相同,如果还相同,则删除通过交换设备C学习的路由。当然也可以等待2S后再判断当前路由的下一跳设备是否与原路由的下一跳设备相同。

如上所述,该重复执行的过程应该要有时间限制,可以设定一个检测总时长(第二检测总时长),该时长可以为6S、9S等。第二检测总时长与第一检测总时长可以相同,也可以不同。

举例来说,可以在这6S内每隔2S判断一次当前路由的下一跳设备是否与原路由的下一跳设备相同,如果有一次判断不相同,则执行S203,如果每次都相同,则表示交换设备A出现其他故障,则删除通过交换设备C学习的路由。

应用上述方案,可以避免因交换设备反应延迟,导致误删路由的情况。

与上述方法实施例相对应,本发明实施例还提供一种故障处理装置。

图3为本发明实施例提供的一种故障处理装置的结构示意图,包括:

第一确定模块301,用于在检测到链路故障后,确定到达所述链路的对端设备的当前路由;

第一判断模块302,用于判断当前路由的下一跳设备是否与原路由的下一跳设备相同;

第一发送模块303,用于当所述判断模块判断结果为否时,向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;

处理模块304,用于当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。

在本实施例中,第一确定模块301,具体可以用于:

重新进行路由的迭代计算,根据计算结果,确定到达所述链路的对端设备的当前路由。

在本实施例中,所述装置处理模块304,还可以用于在确定不存在到达所述链路的对端设备当前路由的情况下,删除通过所述对端设备学习的路由。

在本实施例中,还可以包括:

第二判断模块(图中未示出),用于判断在第一预设时长内,是否接收到所述对端设备发送的检测回复报文;

处理模块304,还可以用于当所述第二判断模块判断结果为是时,保留通过所述对端设备学习的路由;当所述第二判断模块判断结果为否时,删除通过所述对端设备学习的路由。

在本实施例中,所述装置还可以包括:第二确定模块、第二发送模块和第三判断模块(图中未示出);

当所述第二判断模块判断结果为否时,还触发所述第二确定模块;

所述第二确定模块,用于重新确定到达所述链路的对端设备的当前路由;

所述第二发送模块,用于向所述第二确定模块确定的当前路由的下一跳设备发送检测报文;

所述第三判断模块,用于判断在第二预设时长内,是否接收到所述对端设备发送的检测回复报文;

所述处理模块,还用于当所述第三判断模块判断结果为是时,保留通过所述对端设备学习的路由;当所述第三判断模块判断结果为否时,触发所述第二确定模块,至到达预设的第一检测总时长时,删除通过所述对端设备学习的路由。

在本实施例中,所述处理模块,还可以用于在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,删除通过所述对端设备学习的路由。

在本实施例中,所述装置还可以包括:

定时模块(图中未示出),用于在判断当前路由的下一跳设备与原路由的下一跳设备相同的情况下,到达第三预设时长时,触发所述第一判断模块;当判断结果为是时,再次触发所述定时模块,至到达预设的第二检测总时长时,触发所述删除模块;

处理模块304,还用于根据定时模块的触发删除通过所述对端设备学习的路由。

在本实施例中,所述检测报文及所述检测回复报文可以为包含检测标记的保活报文。

应用本发明图3所示实施例,当BFD应用于BGP中时,在BFD检测出链路故障的情况下,交换设备并不是立即将该故障链路的对端设备从自己的BGP邻居中删除,也不立即删除从该对端设备学习的BGP路由,而是确定到达所述链路的对端设备的当前路由;如果当前路由的下一跳设备与原路由的下一跳设备不相同,则向当前路由的下一跳设备发送检测报文,以使下一跳设备按当前路由将所述检测报文转发给对端设备;当接收到所述对端设备发送的检测回复报文时,保留通过所述对端设备学习的路由。接收到该对端设备发送的检测回复报文,即表示该故障链路已经由其它正常链路替换掉,该交换设备与该对端设备之间的路由畅通。这样,便避免了一次网络震荡,提高了网络的稳定性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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