路由收敛方法及装置与流程

文档序号:15261968发布日期:2018-08-24 21:53阅读:275来源:国知局

本发明涉及网络技术领域,尤其涉及一种路由收敛方法及装置。



背景技术:

双向转发检测(英文:bidirectionalforwardingdetection,简称:bfd)协议用于检测计算机互联网络中两台设备间链路的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。bfd协议可以为各种上层协议(如路由协议)提供快速检测两台设备间双向转发路径是否故障的解决方案。

但是,在现有利用bfd协议监控网络设备间的链路过程中,当网络中的一台设备故障不可达时,与其进行通信连接的其它设备无法快速感知其已经为不可达设备,其他设备仍会通过与故障设备间的路由向故障设备发送报文,导致链路资源的浪费。



技术实现要素:

有鉴于此,本发明提出了一种路由收敛方法及装置,以解决根据bfd协议检测网络设备为不可达时,路由收敛不及时,导致链路资源浪费的问题。

在第一方面,本发明提供了一种路由收敛方法,第一路由器与多个第二路由器处于同一组播组内,所述第一路由器分别与多个所述第二路由器中的任一第二路由器建立双向转发检测bfd会话,所述方法包括:

当所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址;

所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

结合第一方面,在第一种可能的实现方式中,所述方法还包括:

所述第一路由器断开与当前状态为不可达的第二路由器之间的通信连接。

结合第一方面,或者结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述断开与当前状态为不可达的第二路由器之间的通信连接,包括:

所述第一路由器建立与当前状态为不可达的第二路由器之间的黑洞路由;

通过所述黑洞路由,所述第一路由器断开与当前状态为不可达的第二路由器之间的通信连接。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,

所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达,包括:

通过建立的bfd会话,所述第一路由器向所述第二路由器发送第二bfd报文;

当超过预设时间未接收到所述第二路由器根据所述第二bfd报文发送的第一bfd响应报文时,所述第一路由器将所述第二路由器的当前状态确定为不可达。

结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,

所述第一路由器接收所述第二路由器发送的第二bfd响应报文,所述第二bfd响应报文为当前状态为不可达的第二路由器恢复正常后发送;

所述第一路由器向所述第三路由器和当前状态为可达的第二路由器发送第三bfd报文,所述第三bfd报文包括所述组播地址和当前状态为可达的第二路由器的ip地址,以使通过所述组播地址接收到所述第三bfd报文的所述第三路由器恢复与当前状态为可达的第二路由器之间的通信连接;

所述第一路由器恢复与当前状态为可达的第二路由器之间的通信连接。

在第二方面,本发明提供了一种路由收敛装置,第一路由器与多个第二路由器处于同一组播组内,所述第一路由器分别与多个所述第二路由器中的任一第二路由器建立双向转发检测bfd会话,所述装置应用于所述第一路由器中,所述装置包括:

第一bfd报文生成模块,用于当通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址;

第一bfd报文发送模块,用于向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

结合第二方面,在第一种可能的实现方式中,所述装置还包括:

通信连接断开模块,用于断开与当前状态为不可达的第二路由器之间的通信连接。

通信连接不可达通信连接结合第二方面,或者结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述通信连接断开模块,包括:

黑洞路由建立子模块,用于建立与当前状态为不可达的第二路由器之间的黑洞路由;

通信连接断开子模块,用于通过所述黑洞路由,断开与当前状态为不可达的第二路由器之间的通信连接。

结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,

所述第一bfd报文生成模块,包括:

第二bfd报文发送子模块,用于通过建立的bfd会话,向所述第二路由器发送第二bfd报文;

不可达判断子模块,用于当超过预设时间未接收到所述第二路由器根据所述第二bfd报文发送的第一bfd响应报文时,将所述第二路由器的当前状态确定为不可达。

结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:

第二bfd响应报文接收模块,用于接收所述第二路由器发送的第二bfd响应报文,所述第二bfd响应报文为当前状态为不可达的第二路由器恢复正常后发送;

第三bfd报文发送模块,用于向所述第三路由器和当前状态为可达的第二路由器发送第三bfd报文,所述第三bfd报文包括所述组播地址和当前状态为可达的第二路由器的ip地址,以使通过所述组播地址接收到所述第三bfd报文的所述第三路由器恢复与当前状态为可达的第二路由器之间的通信连接;

通信连接恢复模块,用于恢复与当前状态为可达的第二路由器之间的通信连接。

在第三方面,本发明提供了一种路由收敛装置,包括:包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现上述路由收敛方法。

在第四方面,本发明提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述路由收敛方法。

在本发明实施例中,通过应用本发明实施例提供的路由收敛方法与装置,当第一路由器确定第二路由器的状态为不可达时,所述第一路由器向第三路由器发送第一bfd报文,所述第三路由器为所述组播组内当前状态为可达的第二路由器。所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址,以使接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与状态为不可达的第二路由器的通信连接。组播组内的第三路由器,通过接收第一路由器发送的第一bfd报文能够及时地断开与状态为不可达的第二路由器之间的通信连接,避免了第三路由器向与状态为不可达的第二路由器发送报文导致的链路资源浪费,提高了组播组内的链路资源使用效率。

根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。

图1示出根据本发明一实施例的广播网络中组播组的结构示意图。

图2示出根据本发明一实施例的路由收敛方法的流程图。

图3示出根据本发明一实施例的bfd报文格式的示意图。

图4示出根据本发明一实施例的路由收敛方法的流程图。

图5示出根据本发明一实施例的路由收敛方法的流程图。

图6示出根据本发明一实施例的路由收敛方法的流程图。

图7示出根据本发明一实施例的路由收敛方法的流程图。

图8示出根据本发明一实施例的路由收敛装置的示意图。

图9示出根据本发明一实施例的路由收敛装置的示意图。

图10是根据一示例性实施例示出的一种用于路由收敛装置的硬件结构框图。

具体实施方式

以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了本发明实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本发明实施例,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明实施例同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。

为了解决现有根据bfd协议检测网络设备发现设备不可达时,组播组内路由收敛不及时,导致链路资源浪费的问题。图1示出根据本发明一实施例的组播组的结构示意图,本发明实施例应用于如图1所示的组播组中。组播组可以包括作为发送者的第一路由器和作为接收者的多个第二路由器。在组播组内,发送者和每一个接收者之间实现点对多点的网络通信连接。发送者可以向多个接收者发送相同的数据。第二路由器的数量可以根据需求设定,本发明实施例对此不做限定。

为了更清楚的解释本发明实施例,在图1中示出的组播组内,包括一个第一路由器以及三个第二路由器。如图1所示的组播组包括路由器a(ip地址为10.1.1.1)、路由器b(ip地址为10.1.1.2)、路由器c(ip地址为10.1.1.3)和路由器d(ip地址为10.1.1.4)。其中,路由器a为第一路由器,路由器b、路由器c和路由器d为第二路由器。路由器a在确定路由器b、路由器c和路由器d中的至少一个路由器的状态为不可达时,例如当路由器b的状态为不可达时,路由器a发送第一bfd报文。路由c和路由器d根据第一bfd报文断开与路由器b的通信连接。

图2出根据本发明一实施例的路由收敛方法的流程图,如图2所示,该路由收敛方法包括:

步骤s10,当所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址。

具体地,如图1所示的组播组中,第一路由器(路由器a)可以分别和每个第二路由器(路由器b、路由器c和路由器d)之间建立bfd会话。第一路由器可以通过建立的所述bfd会话检测各第二路由器的当前状态。第一路由器可以向所有第二路由器发送相同的检测报文,并根据各第二路由器回复的响应报文,确定各第二路由器的当前状态。

在本发明实施例中,第二路由器的当前状态为不可达,可以是第二路由器设备自身的状态为不可达,也可以是第二路由器与第一路由器之间的链路状态为不可达。

例如,当图1中的路由器b发生不可达时,或路由器b与路由器a之间的链路发生不可达时,路由器a都无法接收到路由器b回复的响应报文,路由器a可以确定路由器b的状态为不可达。组播组内的第二路由器的状态为不可达,可以包括组播组内的一个或多个第二路由器的状态为不可达。

第一bfd报文可以根据bfd协议的报文格式进行扩展后得到。第一bfd报文也可以使用现有的bfd协议报文的格式,通过填写bfd协议报文中预设的标识位后得到。

举例来说,图3示出根据本发明一实施例的bfd报文格式的示意图,如图3所示的bfd报文格式中,采用传统的bfd协议的报文格式。图中示出了版本号(vers)字段,状态(sta)字段,源识别码(mydiscriminator)字段,目的识别码(yourdiscriminator)字段,其它字段未示出。

示例性的,第一bfd报文可以将报文中的“sta”设置为“1”(或“0”),并将状态为不可达的第二路由器的ip地址填充至“yourdiscriminator”后生成,而不需要对现有的bfd报文进行扩展。当图1中的路由器b不可达时,路由器a生成第一bfd报文,所述第一bfd报文的目的地址为组播地址(例如采用组播地址:224.0.0.185),所述第一bfd报文中的“yourdiscriminator”填写路由器b的ip地址“10.1.1.2”,“mydiscriminator”填写状态为不可达的第二路由器的ip地址。

当第一路由器确定组播组内的多个第二路由器的状态为不可达时,第一路由器可以为每个状态为不可达的第二路由器生成一个第一bfd报文,每个第一bfd报文中可以包括一个状态为不可达的第二路由器的ip地址。

步骤s20,所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

具体地,可以将所述组播组内当前状态为可达的第二路由器确定为第三路由器。各第三路由器接收到第一路由器发送的第一bfd报文后,解析第一bfd报文得到状态为不可达的第二路由器的ip地址。

各第三路由器根据解析得到的状态为不可达的第二路由器的ip地址,断开与状态为不可达的第二路由器的通信连接。第三路由器可以关闭与状态为不可达的第二路由器的逻辑链路的通信连接。例如,第三路由器通过建立黑洞路由,阻断与状态为不可达的第二路由器之间的路由。第三路由器也可以关闭与状态为不可达的第二路由器之间的物理链路的通信连接。例如,第三路由器将与状态为不可达的第二路由器之间的端口设置为down状态。

第一路由器可以周期性地发送所述第一bfd报文。第二路由器根据接收到的第一bfd报文,判断是哪个第二路由器的状态不可达,从而断开与状态为不可达的第二路由器的通信连接。

因此,通过应用本发明实施例提供的路由收敛方法,组播组内的第一路由器通过向第三路由器发送第一bfd报文,使得各第三路由器断开与状态为不可达的第二路由器之间的通信连接。各第三路由器可以快速阻断状态为不可达的第二路由器的通信连接,避免将报文发送至不可达的第二路由器,有效减少了组播组内链路资源的浪费。

在另一个实施例中,第一路由器也需要断开与状态为不可达的第二路由器的之间的通信连接。图4出根据本发明一实施例的路由收敛方法的流程图。以下通过图4所示的路由收敛方法的流程图,对本发明实施例的路由收敛方法进行详细描述。

具体地,图4所示的路由收敛方法包括以下步骤。

步骤s10,当所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址。

与图2所示的路由收敛方法中的步骤s10相似,不再复述。

步骤s20,所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

与图2所示的路由收敛方法中的步骤s20相似,不再复述。

步骤s30,所述第一路由器断开与当前状态为不可达的第二路由器之间的通信连接。

具体地,第一路由器在确认其中一个或多个第二路由器的状态为不可达后,断开与状态为不可达的第二路由器之间的通信连接。第一路由器可以关闭与状态为不可达的第二路由器的逻辑链路的通信连接。例如,第一路由器通过建立黑洞路由,阻断与状态为不可达的第二路由器之间的路由。第一路由器也可以关闭与状态为不可达的第二路由器之间的物理链路的通信连接。例如,第一路由器将与状态为不可达的第二路由器之间的端口设置为down状态。

步骤s30可以在步骤s20之后执行,可以在步骤s20之前执行,也可以与步骤s20同时执行,本发明实施例对此不做限定。

在本发明实施例中,第一路由器也阻断通往状态为不可达的第二路由器的报文的发送,从而减小状态为不可达的第二路由器对整个组播组的影响。

在另一个实施例中,第一路由器和/或第三路由器断开与状态为不可达的第二路由器之间的通信连接,包括建立与状态为不可达的第二路由器之间的黑洞路由。图5示出根据本发明一实施例的路由收敛方法的流程图。以下通过图5所示的路由收敛方法的流程图对本发明实施例进行详细的描述。

具体地,图5所示的路由收敛方法包括如下步骤:

步骤s10,当所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址。

与图2所示的路由收敛方法中的步骤s10相似,不再复述。

步骤s20,所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

与图2所示的路由收敛方法中的步骤s20相似,不再复述。

步骤31,所述第一路由器建立与当前状态为不可达的第二路由器之间的黑洞路由。

步骤32,通过所述黑洞路由,所述第一路由器断开与当前状态为不可达的第二路由器之间的通信连接。

具体地,本发明实施例中,黑洞路由可以是一个路由条目。例如,第一路由器或第三路由器中建立一个将某个源地址的报文转向一个并不会真正转发出去的路由。

举例来说,在如图1所示的组播组内,当路由器b不可达后,第一路由器(路由器a)或第三路由器(路由器c和d)的admin主动建立一个黑洞路由,通过建立的黑洞路由,阻断发送至路由器b的报文。可以理解的是,在建立的黑洞路由中,路由器a将发往故障路由器的报文的出接口设置为null0接口。null0接口属于路由器a中的逻辑接口,null0接口总是处于up状态,但不会向外转发任何报文。

在本发明实施例中,第一路由器和/或第三路由器通过建立黑洞路由的方式阻断与状态为不可达的第二路由器之间的通信连接,实现方式简单可靠。

在另一个实施例中,第一路由器可以通过建立的bfd会话检测第二路由器的状态,可以通过第一路由器向第二路由器发送第二bfd报文的方式。图6示出根据本发明一实施例的路由收敛方法的流程图。以下通过图6所示的路由收敛方法的流程图,对本发明实施例的路由收敛方法进行详细描述。

具体地,图6所示的路由收敛方法包括以下步骤。

步骤s11,通过建立的bfd会话,所述第一路由器向所述第二路由器发送第二bfd报文。

步骤s12,当超过预设时间未接收到所述第二路由器根据所述第二bfd报文发送的第一bfd响应报文时,所述第一路由器将所述第二路由器的当前状态确定为不可达。

步骤s20,所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

具体地,步骤s20与图2所示的路由收敛方法中的步骤s20相似,不再复述。

第一路由器可以工作在bfd主动模式,周期性地向组播组内发送第二bfd报文。第二路由器可以工作在bfd被动模式,只接收并回复第二bfd报文。第二bfd报文的目的地址可以为组播地址。

第二路bfd报文和第一bfd报文可以通过将相同的标识位设置为不同的取值,或在bfd报文中设置不同的标识位进行区分。举例来说,在如图3所示的bfd报文格式中,第二bfd报文的目的地址为组播地址“224.0.0.185”第一bfd报文可以将“sta”标识位设置为“1”,第二bfd报文可以将“sta”标识位设置为“0”,以使第三路由器可以区分接收到的报文是第一bfd报文还是第二bfd报文。

在一种可能的实现方式中,第二bfd报文中包括组播组内各第二路由器的ip地址。各第三路由器通过识别第二bfd报文中的第二路由器的ip地址,可以确定组播组内状态为不可达的第二路由器,也可以确定组播组内的状态为可达的其它的第三路由器。第一路由器可以通过维护一个路由器集合的方式,确定自己组播范围内的状态为不可达的第二路由器和状态为可达的第三路由器,并在发送的第二bfd报文中携带各第三路由器的的ip地址。

举例而言,在图1所示的组播组内,路由器a发送三个第二bfd报文,每个第二bfd报文中的“yourdiscriminator”分别填写路由器b、路由器c和路由器d中一个的ip地址。路由器b根据“sta”标识位确定接收到的是第二bfd报文,路由器b、路由器c和路由器d分别生成第一bfd响应报文。

在一种可能的实现方式中,第二bfd报文包括第一路由器的ip地址。举例而言,图3所示的bfd报文格式中,在“mydiscriminator”填写路由器a的ip地址“10.1.1.1”。第二路由器可以将接收到第二bfd报文中的“mydiscriminator”中填写的ip地址,确定为第一bfd响应报文的目的地址,并将生成的第一bfd响应报文根据目的地址发送至第一路由器。

在一种可能的实现方式中,第一路由器可以以第一时长为间隔,周期性地发送第二bfd报文。第二路由器可以在每次接收到第二bfd报文时,生成bfd响应报文并发送给第一路由器。第二路由器也可以第二时长为间隔,周期性地生成bfd响应报文并发送给第一路由器,(第二时长×2)<第一时长。

在一种可能的实现方式中,第一bfd响应报文可以包括第二路由器的ip地址。举例而言,路由器b生成的第一bfd响应报文在“mydiscriminator”填写自身的ip地址“10.1.1.2”,路由器c生成的第一bfd响应报文在“mydiscriminator”填写自身的ip地址“10.1.1.3”,路由器d生成的第一bfd响应报文在“mydiscriminator”填写自身的ip地址“10.1.1.4”。第一路由器可以根据第一bfd响应报文中“mydiscriminator”填写的ip地址,确定接收到的是哪个第二路由器发送的第一bfd响应报文。

第一路由器可以记录每个第二路由器发送第一bfd响应报文的时间。第一路由器根据记录确定是否超过预设时间没有接收到其中一个或多个第二路由器发送的第一bfd响应报文时,若有,则将其状态确认为不可达。举例而言,将预设时间设定为5ms,当路由器a超过5ms没有接收到路由器b发送的第一bfd响应报文时,路由器a将路由器b的状态确定为不可达。

在本发明实施例中,第一路由器通过发送第二bfd报文,并接收第二路由器发送的第一bfd响应报文的方式,检测组播组内的第二路由器的状态,当超过预设时间未接收到其中一个或多个第二路由器发送的第一bfd响应报文时,将其状态确定为不可达。第一路由器通过发送第二bfd报文的方式,避免了与组播组内的每个第二路由器进行单独地交互进行状态检测,导致链路资源占用多的问题,提高了组播组内的设备监控效率,提高了链路资源的使用率。

在另一个实施例中,组播组内出现不可达的第二路由器重新恢复正常后,第一路由器需要迅速的对其状态的恢复进行响应,并通知组播组内的各第三路由器,恢复与状态恢复正常的第二路由器的通信连接。图7示出根据本发明一实施例的路由收敛方法的流程图。以下通过图7所示的路由收敛方法的流程图对本发明实施例进行详细的描述。

具体地,图7所示的路由收敛方法包括以下步骤。

步骤s10,当所述第一路由器通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址。

与图2所示的路由收敛方法中的步骤s10相似,不再复述。

步骤s20,所述第一路由器向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

与图2所示的路由收敛方法中的步骤s20相似,不再复述。

步骤s30,所述第一路由器断开与当前状态为不可达的第二路由器之间的通信连接。

与图4所示的路由收敛方法中的步骤s30相似,不再复述。

步骤s40,所述第一路由器接收所述第二路由器发送的第二bfd响应报文,所述第二bfd响应报文为当前状态为不可达的第二路由器恢复正常后发送。

步骤s50,所述第一路由器向所述第三路由器和当前状态为可达的第二路由器发送第三bfd报文,所述第三bfd报文包括所述组播地址和当前状态为可达的第二路由器的ip地址,以使通过所述组播地址接收到所述第三bfd报文的所述第三路由器恢复与当前状态为可达的第二路由器之间的通信连接。

步骤s60,所述第一路由器恢复与当前状态为可达的第二路由器之间的通信连接。具体地,当第一路由器和/或第三路由器断开与状态为不可达的第二路由器之间的通信连接时,只断开状态为不可达的第二路由器之间的去方向的通信连接,保持状态为不可达的第二路由器的来方向的通信连接。

举例来说,第一路由器和/或第三路由器可以将与状态为不可达的第二路由器之间的去方向的端口设置为down状态,来方向的端口保持通信连接。第一路由器和/或第三路由器也可以将发送至与状态为不可达的第二路由器的报文,利用黑洞路由进行阻断,但保持与状态为不可达的第二路由器的来方向的报文的接收。

当状态为不可达的第二路由器恢复正常后可以发送第二bfd响应报文。第二bfd响应报文可以与第一bfd响应报文相同。举例来说,如图1所示的组播组中,当路由器b的状态由不可达恢复正常后,路由器b发送第二bfd响应报文,第二bfd响应报文的目的地址为路由器的ip地址“10.1.1.1”,第二bfd响应报文中的“mydiscriminator”填写自身的ip地址“10.1.1.2”。

第一路由器接收到状态恢复正常的第二路由器发送的第二bfd响应报文后,可以确认发送第二bfd响应报文的第二路由器的状态恢复正常。第一路由器可以向所有第三路由器和状态恢复正常的第二路由器发送第三bfd报文,所述第三bfd报文包括组播地址和状态恢复正常的第二路由器的ip地址。第三路由器根据接收到的第三bfd报文,恢复与状态恢复正常的第二路由器之间的通信连接。

第一路由器可以在确认状态为不可达的第二路由器恢复正常后,恢复与状态恢复正常的第二路由器之间的通信连接。第一路由器也可以在发送第三bfd报文之前或之后恢复与状态恢复正常的第二路由器之间的通信连接。

第三bfd报文可以与第二bfd报文不同。例如,在第三bfd报文中利用与第一bfd报文和第二bfd报文均不同的标识位进行区分,且在第三bfd报文中携带状态恢复正常的第二路由器的ip地址。第三路由器接收到第三bfd报文后,可以通过识别不同的标识位确认接收到的是第三bfd报文,并根据报文中携带的状态恢复正常的第二路由器的ip地址,恢复与状态恢复正常的第二路由器的通信连接。

第三bfd报文也可以与第二bfd报文相同。在这种情况下,组播组内的每个路由器均维护一个邻居路由器列表。举例来说,图1所示的组播组中,路由器a周期性地发送第二bfd报文,第二bfd报文中包括路由器b的ip地址、路由器c的ip地址和路由器d的ip地址。组播组内的路由器b、路由器c和路由器d根据接收到的第二bfd报文生成bfd响应报文,并将生成的bfd响应报文发送至路由器a。路由器b、路由器c和路由器d根据第二bfd报文中的各第二路由器的ip地址和自身维护的邻居路由器列表,确认组播组内状态为正常的其它第二路由器,并保持与状态为正常的其它第二路由器之间的通信连接。

当路由器a在预设时间内没有接收到路由器b发送的bfd响应报文,路由器a将路由器b的状态确定为不可达。路由器a发送第一bfd报文,第一bfd报文中包括路由器b的ip地址。路由器c和路由器d可以根据接收到的第一bfd报文断开与路由器b的通信连接。路由器a可以周期性地发送第一bfd报文。

此时,路由器a发送的第二bfd报文中,只包括路由器c的ip地址和路由器d的ip地址。

当路由器b恢复正常后,路由器b发送bfd响应报文给路由器a。路由器a根据接收到的路由器b发送的bfd响应报文,确认路由器b的状态恢复正常。当路由器a周期性的发送第一bfd报文时,在路由器a确认路由器b的状态恢复正常后,路由器a停止周期性地发送第一bfd报文。路由器a发送包括路由器b的ip地址的第三bfd报文。

路由器a发送的第三bfd报文可以与第二bfd报文相同的,包括第三bfd报文利用与第二bfd报文相同的标识位。包括第三bfd报文中的“sta”与第二bfd报文相同。第三bfd报文中的“yourdiscriminator”包括路由器b的ip地址。

此时,路由器a发送的第二bfd报文中重新包括路由器b的ip地址、路由器c的ip地址和路由器d的ip地址。

路由器c和路由器d根据接收到的包括路由器b的ip地址、路由器c的ip地址和路由器d的ip地址的第二bfd报文和自身维护的邻居路由器列表,确认同在一个组播组的路由器b的状态恢复正常,路由器c和路由器d恢复与路由器b之间的通信连接。

在本实施例中,当第一路由器接收到第二路由器发送的第二bfd响应报文时生成第三bfd报文,并向第三路由器发送第三bfd报文。第三路由器根据接收到的第三bfd报文恢复与状态为不可达的第二路由器之间的通信连接。第一路由器也恢复与状态为不可达的第二路由器之间的通信连接。通过第二bfd响应报文和第三bfd报文,实现了当组播网内的设备恢复正常后,其它设备能够迅速的与其恢复通信连接,保证组播网内的通信连接正常。

在一种可能的实现方式中,当第一路由器不可达时停止发送第二bfd报文。当组播组内的各第三路由器超过预设接收时间内未接收到第一路由器发送的第二bfd报文时,各第三路由器确认第一路由器的状态为不可达。各第三路由器恢复根据第一路由器发送的第一bfd报文断开的与状态为不可达的第二路由器之间的通信连接。例如各第三路由器删除根据第一路由器发送的第一bfd报文建立的与状态为不可达的第二路由器之间的黑洞路由。

应用示例

在如图1所示的组播组中,路由器a为第一路由器,路由器b、路由器c和路由器d为第二路由器。路由器a(ip地址为10.1.1.1)、路由器b(ip地址为10.1.1.2)、路由器c(ip地址为10.1.1.3)和路由器d(ip地址为10.1.1.4)。

路由器a通过自身维护的第二路由器集合,确定组播组内包括三个第二路由器,并获取各第二路由器的ip地址。路由器a生成三个第二bfd报文,以图3所示的bfd报文格式为例,各第二bfd报文的目的地址为组播地址“224.0.0.185”,各第二bfd报文中的“sta”为“0”,三个第二bfd报文中的其它各项分别为:第一个第二bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”;第二个第二bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”;第三个第二bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”。

路由器a发送三个第二bfd报文后,路由器b、路由器c、路由器d分别生成一个第一bfd响应报文。其中:路由器b生成的第一bfd响应报文的目的地址为“10.1.1.1”,“mydiscriminator”为“10.1.1.2”,“yourdiscriminator”为“10.1.1.1”;路由器c生成的第一bfd响应报文的目的地址为“10.1.1.1”,“mydiscriminator”为“10.1.1.3”,“yourdiscriminator”为“10.1.1.1”;路由器d生成的第一bfd响应报文的目的地址为“10.1.1.1”,“mydiscriminator”为“10.1.1.4”,“yourdiscriminator”为“10.1.1.1”。

路由器a接收到各第二路由器发送的第一bfd响应报文,记录各第一bfd响应报文的接收时间。当超过预设时长未接收到其中一个第二路由器发送的第一bfd响应报文后,例如,超过预设时长1分钟未接收到路由器b发送的第一响应报文后,路由器a将路由器b的状态确定为不可达。

当路由器a将路由器b的状态确定为不可达后,路由器a生成第一bfd报文。第一bfd报文的目的地址为组播地址“224.0.0.185”,第一bfd报文中的“sta”为“1”,第一bfd报文中的其它各项分别为:“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”。

路由器c和路由器d根据接收到的第一bfd报文断开与路由器b的去方向的通信连接。路由器a也断开与路由器b的去方向的通信连接。路由器a、路由器c和路由器d通过建立黑洞路由的方式断开与路由器b之间的去方向的通信连接。路由器a、路由器c和路由器d建立的单点黑洞路由,不会影响bfd会话的恢复重建。

当路由器b的状态恢复正常后,路由器b发送第二bfd响应报文。第二bfd响应报文与第一bfd响应报文相同。第二bfd响应报文的目的地址为“10.1.1.1”,“mydiscriminator”为“10.1.1.2”,“yourdiscriminator”为“10.1.1.1”。

路由器a接收到路由器b发送的第二bfd响应报文后,确认路由器b的状态恢复正常。路由器a恢复与路由器b之间的通信连接。路由器a发送第三bfd报文。路由器a根据维护的第二路由器集合,生成三个第三bfd报文。第三bfd报文可以与第二bfd报文相同。第三bfd报文的目的地址为组播地址“224.0.0.185”,各第三bfd报文中的“sta”为“0”,三个第三bfd报文中的其它各项分别为:第一个第三bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”;第二个第三bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”;第三个第三bfd报文中的“mydiscriminator”为“10.1.1.1”,“yourdiscriminator”为“10.1.1.2”。路由器c和路由器d根据接收到的三个第三bfd报文,确认路由器b的状态恢复正常,路由器c和路由器d恢复与路由器b之间的通信连接。

路由器a、路由器c和路由器d通过删除黑洞路由的方式,恢复与路由器b之间的去方向的通信连接。

在本发明实施例中,当路由器a发生故障时,路由器a停止发送第二bfd报文。路由器b、路由器c和路由器d超过设定的接收时间,例如超过10秒钟未接收到路由器a发送的第二bfd报文时,路由器b、路由器c和路由器d删除根据路由器a发送的第一bfd报文建立的与状态为不可达的第二路由器之间的黑洞路由。例如,路由器c和路由器d根据路由器a发送的第二bfd报文,建立了与路由器b之间的黑洞路由,当路由器c和路由器d超过10秒钟未接收到路由器a发送的第二bfd报文时,路由器c和路由器d删除与路由器b之间的黑洞路由。

图8示出根据本发明一实施例的路由收敛装置的示意图,第一路由器与多个第二路由器处于同一组播组内,所述第一路由器分别与多个所述第二路由器中的任一第二路由器建立双向转发检测bfd会话,所述装置应用于所述第一路由器中,如图8所示,所述装置包括以下功能模块。

第一bfd报文生成模块41,用于当通过与所述第二路由器建立的bfd会话确定所述第二路由器的当前状态为不可达时,所述第一路由器生成第一bfd报文,所述第一bfd报文包括所述组播组的组播地址和当前状态为不可达的所述第二路由器的ip地址不可达。

第一bfd报文发送模块42,用于向第三路由器发送所述第一bfd报文,以使通过所述组播地址接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与当前状态为不可达的第二路由器的通信连接,所述第三路由器为所述组播组内当前状态为可达的第二路由器。

因此,通过应用本发明实施例提供的路由收敛装置,当第一路由器确定第二路由器的状态为不可达时,所述第一路由器向第三路由器发送第一bfd报文,所述第三路由器为所述组播组内当前状态为可达的第二路由器,所述第一bfd报文包括所述组播组的组播地址和状态为不可达的所述第二路由器的ip地址,以使接收到所述第一bfd报文的所述第三路由器根据所述第二路由器的ip地址断开与状态为不可达的第二路由器的连接。组播组内的第三路由器,通过接收第一路由器发送的第一bfd报文能够及时地断开与状态为不可达的第二路由器之间的通信连接,避免了第三路由器向与状态为不可达的第二路由器发送报文导致的链路资源浪费,提高了组播组内的链路资源使用效率。

图9示出根据本发明一实施例的路由收敛装置的示意图,其中,第一bfd报文生成模块41和第一bfd报文发送模块42相类似,本发明实施例在此不再赘述。

在一种可能的实现方式中,参照图9,上述路由收敛装置还可以包括:

通信连接断开模块43,用于断开与当前状态为不可达的第二路由器之间的通信连接。

在一种可能的实现方式中,参照图9,上述通信连接断开模块43,包括:

黑洞路由建立子模块431,用于建立与当前状态为不可达的第二路由器之间的黑洞路由。

通信连接断开子模块432,通信连接断开子模块,用于通过所述黑洞路由,断开与当前状态为不可达的第二路由器之间的通信连接。

在一种可能的实现方式中,参照图9,上述第一bfd报文生成模块41,包括:

第二bfd报文发送子模块411,用于通过建立的bfd会话,向所述第二路由器发送第二bfd报文。

不可达判断子模块412,用于当超过预设时间未接收到所述第二路由器根据所述第二bfd报文发送的第一bfd响应报文时,将所述第二路由器的当前状态确定为不可达。

在一种可能的实现方式中,参照图9,上述路由收敛装置还可以包括:

第二bfd响应报文接收模块44,用于接收所述第二路由器发送的第二bfd响应报文,所述第二bfd响应报文为当前状态为不可达的第二路由器恢复正常后发送。第三bfd报文发送模块45,用于向所述第三路由器和当前状态为可达的第二路由器发送第三bfd报文,所述第三bfd报文包括所述组播地址和当前状态为可达的第二路由器的ip地址,以使通过所述组播地址接收到所述第三bfd报文的所述第三路由器恢复与当前状态为可达的第二路由器之间的通信连接。

通信连接恢复模块46,用于恢复与当前状态为可达的第二路由器之间的通信连接。

图10是根据一示例性实施例示出的一种用于路由收敛装置的硬件结构框图。参照图10,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与异步通信逻辑对应的机器可执行指令以执行上文所述的异步通信方法。

本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:随机存取存储器(英文:radomaccessmemory,简称:ram)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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