一种bfd会话建立方法和设备的制作方法

文档序号:7816267阅读:349来源:国知局
一种bfd会话建立方法和设备的制作方法
【专利摘要】本发明提供一种BFD会话建立方法和设备,其中方法包括:第一设备通过支持BFD会话功能的接口将封装有会话相关信息的路由邻居发现报文发送给第二设备,并通过相同接口接收所述第二设备发送的路由邻居发现报文,其中,所述会话相关信息用于作为建立BFD会话的依据;在与第二设备建立路由邻居关系且确定符合会话条件时,所述第一设备开始与第二设备建立BFD会话。本发明有助于建立稳定的正确的BFD会话。
【专利说明】一种BFD会话建立方法和设备

【技术领域】
[0001]本发明涉及网络技术,特别涉及一种BFD会话建立方法和设备。

【背景技术】
[0002]随着互联网的发展,越来越多的行业对网络设备的可靠性提出了更高的要求,需要网络设备能够从故障中快速恢复,以保障业务的正常进行;而要实现该目的,快速进行故障检测来发现故障是很重要的方面。双向转发检测(Bidirect1nal ForwardingDetect1n,简称:BFD)由于能够快速的实现网络故障检测功能而得到广泛应用。相关技术中,BFD将根据其所服务的上层协议通知的邻居信息,来建立BFD会话,例如,路由器上运行某个路由协议进行邻居发现,并将发现后的具有邻居关系的双方IP地址通知给BFD,BFD根据该地址对建立邻居双方之间的BFD会话并执行链路故障检测,在预设检测时间内未接收到对端发送的BFD控制报文则认为链路发生故障。
[0003]但是,实际实施中存在如下情况:对于建立BFD会话的双方设备所服务的上层协议不同的情况,例如一方是IS-1S协议联动BFD,另一方是OSPF协议联动BFD,BFD会话在建立时,不论两端设备的协议是否相同,只要双方用于建立会话的地址处于同一网段,也可能建立BFD会话,但是建立BFD会话以后将出现由于一方设备去使能BFD功能而使得另一方认为链路故障并删除邻居关系,从而造成邻居震荡;此外,当具有邻居关系的其中一方存在多个IP地址时,例如包括主地址和从地址,某些协议例如IS-1S协议将允许使用主地址或者从地址来建立邻居,只要双方的地址在同一网段即可;但是IS-1S协议并未规定使用哪对地址来建立邻居关系,从而无法建立BFD会话。


【发明内容】

[0004]有鉴于此,本发明提供一种BFD会话建立方法和设备,以正确建立BFD会话。
[0005]具体地,本发明是通过如下技术方案实现的:
[0006]第一方面,提供一种BFD会话建立方法,包括:
[0007]第一设备通过支持BFD会话功能的接口将封装有会话相关信息的路由邻居发现报文发送给第二设备,并通过相同接口接收所述第二设备发送的路由邻居发现报文,其中,所述会话相关信息用于作为建立BFD会话的依据;
[0008]在与第二设备建立路由邻居关系且确定符合会话条件时,所述第一设备开始与第二设备建立BFD会话。
[0009]第二方面,提供一种BFD会话建立设备,包括:
[0010]报文封装单元,用于将会话相关信息封装在路由邻居发现报文,所述会话相关信息用于作为建立BFD会话的依据;
[0011]报文收发单元,用于通过支持BFD会话功能的接口将所述路由邻居发现报文发送至第二设备,并通过相同接口接收所述第二设备发送的路由邻居发现报文;
[0012]会话处理单元,用于在与第二设备建立路由邻居关系且确定符合会话条件时,所述第一设备开始与第二设备建立BFD会话。
[0013]本发明实施例的BFD会话建立方法和设备,通过在路由邻居发现报文中封装了会话相关信息,并且基于该信息进行会话条件的判断,在满足条件时才建立BFD会话,有助于建立稳定的正确的BFD会话。

【专利附图】

【附图说明】
[0014]图1是本发明实施例提供的BFD会话建立方法的应用示意图;
[0015]图2是本发明实施例提供的一种BFD会话建立方法的流程示意图;
[0016]图3是本发明实施例提供的BFD会话建立方法中的报文封装示意一;
[0017]图4是本发明实施例提供的BFD会话建立方法中的报文封装示意二 ;
[0018]图5是本发明实施例提供的另一种BH)会话建立方法的信令示意图;
[0019]图6是本发明实施例提供的BFD会话建立方法中的报文封装示意三;
[0020]图7是本发明实施例提供的BFD会话建立方法中的报文封装示意四;
[0021]图8是本发明实施例提供的BFD会话建立设备的结构示意图。

【具体实施方式】
[0022]参见图1,图1中示出路由器A和路由器B,每个路由器都包括两个模块,一个是用于执行邻居发现的路由协议模块,另一个是用于建立BFD会话的会话模块。路由协议可以与BFD配置联动,比如,该两个路由器的路由协议模块运行上层的路由协议(例如IS-1S、OSPF等)进行邻居发现,具体是在路由器的某个端口上通过某种路由协议进行邻居发现,例如图1中所示的,路由器A的对应接口是a,路由器B的对应接口是b,路由器通过这两个接口发送Hello报文确定这两个路由器是邻居关系,则路由协议模块可以通知会话模块,指示会话模块在该邻居双方之间建立BFD会话用于故障检测,以快速发现两者之间链路的故障,该BFD会话用于检测接口 a和接口 b之间的链路故障。本申请实施例的BFD会话建立方法,应用于上述的路由器A和路由器B,并且是应用于两者的邻居发现阶段,根据该方法来确定邻居双方是否建立BFD会话,该方法限定在满足会话条件时,两者再建立BFD会话。详述如下:
[0023]实施例一
[0024]图2为本发明实施例提供的一种BFD会话建立方法的流程示意图,该方法可以是其中一个路由器执行,比如图1中所示的路由器A或者路由器B。在本实施例中,以路由器A为例来说明执行过程,其中,该第一设备即是路由器A,路由器B可以称为第二设备。如图2所示,包括:
[0025]201、第一设备通过支持BFD会话功能的接口将封装会话相关信息的路由邻居发现报文发送给第二设备,并通过相同接口接收第二设备发送的路由邻居发现报文,该信息用于作为建立BFD会话的依据;
[0026]本实施例中,路由器A的接口 a和路由器B的接口 b是使能了相同路由协议的接口,比如均是IS-1S协议,这两个路由器会通过上述两个接口接收到对端发送的路由邻居发现报文,比如Hello报文。在后续的实施例描述中,路由器A和路由器B之间的通信交互均是指通过上述两个接口进行的。
[0027]本实施例假设路由器A发送该Hello报文的接口 a是支持BFD会话功能的,也即使能了 BFD能力,则路由器A在自己发送的Hello报文中封装会话相关信息。在本步骤中,路由器A将本端对应的会话相关信息封装在路由邻居发现报文中,是为了将本端的相关信息通知给路由器B,以使得路由器B据此判断是否建立BFD会话。例如,该信息可以是接口a用于建立BFD会话的IPv4地址。
[0028]而对于路由器B发送的Hello报文,可以有多种情况,比如,路由器B发送Hello报文的接口 b是不支持BFD会话功能的,从而路由器B并未在报文中封装会话相关信息;或者,即使接口 b不支持BFD会话功能,路由器B也在报文中封装了会话相关信息,只是封装的是表示该接口 b不支持BFD会话功能的会话相关信息;或者,路由器B在Hello报文中封装了表示接口 b支持BH)会话功能的会话相关信息,该会话相关信息还可以包括路由器B的接口 b用于建立BFD会话的IPv4地址等。
[0029]同理,在本实施例中,是以路由器A的接口 a支持BFD会话能力为例,路由器A在通过接口 a发送的Hello报文中封装了会话相关信息;当路由器A以不支持BFD会话能力的接口发送Hello报文时,路由器A也可以如上述路由器B类似的处理,不在Hello报文中封装会话相关信息,或者,封装表示该接口不支持BFD会话功能的会话相关信息。
[0030]202、在与第二设备建立路由邻居关系且确定符合会话条件时,第一设备开始与第二设备建立BFD会话。
[0031]本步骤中,路由器A与路由器B已经建立路由邻居关系,则路由器A将根据接收到的路由器B的Hello报文来判断是否符合会话条件,若符合,则路由器A开始与路由器B建立BFD会话。
[0032]例如,路由器A的接口 a是支持BFD会话功能的,而接收到的路由器B的Hello报文中并未封装会话相关信息,则路由器A确定路由器B的接口 b不支持BFD会话功能,路由器A不会与路由器B通过接口 a和接口 b建立BFD会话。又例如,路由器A的接口 a支持BFD会话功能且采用IPv4地址,接收到的路由器B的Hello报文中也封装了会话相关信息,且根据该信息路由器A可以确定路由器B的接口 b也支持BFD会话功能,并且接口 b的IPv4地址与接口 a的IPv4地址在同一网段,则路由器A确定可以与路由器B建立BFD会话。
[0033]具体的在Hello报文中封装何种会话相关信息,该信息如何封装以及如何根据会话相关信息判断会话条件是否满足,将在后续的几个实施例中举例说明。
[0034]同样的,路由器B在确定与路由器A建立了路由邻居关系时,路由器B也会根据路由器A发送的Hello报文中封装的信息进行会话条件的判断,也会确定会话相关信息符合会话条件,开始与路由器A建立BFD会话。
[0035]本实施例的BFD会话建立方法中,通过在路由邻居发现报文中封装了会话相关信息,并且基于该信息进行会话条件的判断,在满足条件时才建立BFD会话,有助于建立稳定的正确的BFD会话。
[0036]实施例二
[0037]以不论接口支持不支持BFD会话功能,都在路由邻居发现报文中封装会话相关信息为例,本实施例列举了一种上述的会话相关信息的内容,以及该信息在Hello报文封装的具体例子;该信息内容包括BFD使能标识,该BFD使能标识用于表示发送封装有会话相关信息的对应接口是否支持BFD联动。
[0038]具体的,本实施例的路由器A或者路由器B在发送Hello报文时,在该报文中封装“BFD使能标识”,该BFD使能标识用于表示发送封装有会话相关信息的报文的接口是否支持BFD会话功能,以使得第二设备了解本端的接口对于BFD联动的支持情况。例如,当路由器A通过支持BFD会话功能的接口 a发送Hello报文时,该报文中的BFD使能标识则表示该接口 a支持BFD会话功能。
[0039]如,路由器A和路由器B运行IS-1S协议进行邻居发现,路由器A通过接口 a发送了 Hello报文,其中携带的BFD使能标识表示该路由器A的发送Hello报文的接口 a支持BFD联动;路由器B也发送了 Hello报文,其中携带的BFD使能标识表示该路由器B的发送Hello报文的接口 b不支持BFD联动。路由器A在接收到路由器B的Hello报文后,就会发现虽然路由器B是路由器A的邻居,但是路由器B的对应接口 b是不支持BFD的,因此路由器A和路由器B将不会通过接口 a和接口 b建立BFD会话。
[0040]上述例子的判断BFD会话能否建立的方式,即:假设路由器A是运行IS-1S协议且支持BFD联动的设备,路由器A可以通过发送Hello报文得知路由器B是同样运行IS-1S协议的邻居设备,但是路由器B是否支持BFD联动,可以通过路由器B发送的Hello报文中的BFD使能标识来确定,如果支持,表明该邻居双方是同一路由协议且双方的发送Hello报文的接口均支持BFD会话功能,可以建立BFD会话,如果不支持,则表明路由器B尽管是邻居但是其接口不支持BFD联动,则不建立BFD会话。
[0041]图3示出了一种可选的在Hello报文中封装BFD使能标识的方式,路由器可以在Hello报文中增加一个BFD会话类型长度值(Type/Length/Value,简称:TLV),而将上述的会话相关信息封装在该TLV中。
[0042]参见图3,示出了该TLV的结构,各字段的说明如下:
[0043]Type:该字段表示该TLV的类型是BFD会话TLV,以区分其他已经定义的TLV,长度可以为I字节,取值是RFC3359规定之外的其他数值;
[0044]Length:表示该TLV的长度;
[0045]Value:包含flag,其中的flag的结构可以参见箭头所示,flag的高6位作为保留字段,用于后续扩展,低两位分别表示BFD使能标识。
[0046]此外,由图3中也可以看到,该BFD使能标识在flag中可以是设置在Hello报文的对应IP地址版本的标识位,以用于表示支持BFD会话功能的IP协议栈版本。比如,如果flag中的最低位置位(设置为I),则表示IS-1S协议与IPv4BFD联动,也就是本端接口采用IPv4地址建立BFD会话;如果flag中的次低位置位(设置为I),则表示IS-1S协议与IPv6BFD联动,也就是本端采用IPv6地址建立BFD会话。
[0047]例如,当IS-1S与IPv4联动时,将IPv4对应的最低位置位(比如设置为I),路由器A和路由器B是IPv4邻居,并假设路由器A的对应接口支持BFD联动,但是若发现路由器B的Hello报文中的上述TLV的最低位没有置位,比如是0,则表示路由器B的对应接口不支持IPv4BFD联动,则路由器A和路由器B不建立BFD会话。若路由器B的Hello报文中的上述TLV的最低位是0,则表示路由器A和路由器B的对应接口均支持BFD会话功能,且支持BFD会话功能的IP协议栈版本相同,都是IPv4,则表明会话相关信息符合会话条件,路由器A和路由器B在建立路由邻居关系后开始建立BFD会话。
[0048]又例如,当IS-1S与IPv6联动时,将IPv6对应的次低位置位,这样接收到Hello报文的路由器A就可以明确知道路由器B的BFD使能情况,比如若双方都支持IPv6BFD联动,则以IPv6Link local地址建立BFD会话。
[0049]需要说明的是,图3所示的会话相关信息的封装格式只是一种例子,具体实施中并不局限于此:
[0050]例如,路由器A可以不论接口是否支持BFD联动,均在He 11 ο报文中封装TLV,但是其对应的接口 a只有一种版本的IP地址,比如只有IPv4,则flag中可以不用区分IPv4和IPv6的标识位,可以只采用一个标识位。若接口支持BFD则将该标识位置位(设置为1),若接口不支持BFD则设置为O。
[0051]又例如,路由器A只要封装TLV,都会如图3所示的,flag中分别包括对应IPv4和IPv6的两个标识位,此时路由器A的发送该Hello报文的接口 a可能有多个IP协议栈版本,该两个标识位是用于标识采用哪个版本的IP地址。当IPv4的标识位置位时,表明采用IPv4地址,通过该地址建立BFD会话;当IPv6的标识位置位时,表明采用IPv6地址6建立BFD会话;当IPv4和IPv6的标识位均置位时,表明同时采用IPv4地址和IPv6地址建立BFD会话,即相当于建立两个BFD会话。或者,如果IPv4和IPv6的标识位均未置位,即这两个标识位都是0,则表示该接口既不支持IPv4BFD联动,也不支持IPv6BFD联动。
[0052]本实施例的BFD会话建立方法中,通过在路由邻居发现报文中封装了 BFD使能标识,每端只在双方对应接口都使能BFD联动时,才建立BFD会话,避免出现不同协议的双方建立BFD会话的情况,增强了 BFD联动时的稳定性。
[0053]实施例三
[0054]以不论接口支持不支持BFD会话功能,都在路由邻居发现报文中封装会话相关信息为例,本实施例又列举了一种上述的会话相关信息的内容,以及该信息在Hello报文封装的具体例子;该信息内容包括,用于建立BFD会话的IPv4地址。该方式可以使得路由器根据封装的该IPv4地址建立BFD会话,不会出现因为多地址而无法建立BFD会话的问题。该例子适用于使能IPv4BFD联动的场景,如果路由器B的地址是IPv6地址,通常直接采用IPv6Link Local建立BFD会话,即只有一个地址,故不需要指定。
[0055]具体的,路由器配置BFD联动时涉及到多地址的问题时,从该多个地址中选择一个确定为用于建立会话的IPv4地址,将该地址封装在Hello报文中发送给对端。比如,路由器A通过接口 a,与路由器B的接口 b之间进行路由邻居发现和BFD会话的建立,假设路由器A的接口 a具有多个IPv4地址,包括主地址和从地址。那么,从该多个地址中选择一个确定为用于建立会话的IPv4地址,将该地址封装在Hello报文中发送给路由器B。
[0056]图4示例了一种可选的在Hello报文中封装IPv4地址的方式,路由器仍然是在Hello报文中增加一个BFD会话类型长度值(Type/Length/Value,简称:TLV),而将上述的会话相关信息封装在该TLV中。
[0057]参见图4,示出了该TLV的结构,各字段的说明如下:
[0058]Type:该字段表示该TLV的类型是BFD会话TLV,以区分其他已经定义的TLV,长度可以为I字节,取值是RFC3359规定之外的其他数值;
[0059]Length:表示该TLV的长度;取值是I或5,当IS-1S仅与IPv6BFD联动时,由于此时只有一个地址,不存在地址选择的问题,也不用填充Value中的IPv4地址字段,长度是I ;当与IPv4BFD联动时,需要填充IPv4地址字段,长度是5 ;
[0060]Value:包含用于建立BFD会话的IPv4地址,该地址用于填充建立BFD会话使用的IPv4地址,比如预先指定的IPv4地址或者默认主地址。
[0061]本实施例中,如果路由器A封装的会话相关信息是路由器A的接口 a用于建立BFD会话的IPv4地址信息,路由器B封装的会话相关信息是路由器B的接口 b用于建立BFD会话的IPv4地址信息,则如果两端设备的IPv4地址信息处于同一网段,则可以确定符合会话条件,路由器A和路由器B通过接口 a和接口 b建立BFD会话,该会话用于检测接口 a和接口 b之间的通过IPv4地址建立的链路的故障。
[0062]例如,若本端具有预先指定的所述IPv4地址信息,则将所述指定的IPv4地址信息封装在所述路由邻居发现报文。
[0063]又例如,若本端未预先指定所述IPv4地址信息,则将本端接口对应的IPv4主地址信息封装在所述路由邻居发现报文。
[0064]本实施例的BFD会话建立方法中,通过在路由邻居发现报文中封装了 IPv4地址信息,并且在两端设备的地址在同一网段时才建立BFD会话,从而在接口具有多地址场景下实现了 BFD会话的建立。
[0065]实施例四
[0066]以不论接口支持不支持BFD会话功能,都在路由邻居发现报文中封装会话相关信息为例,本实施例中,路由器发送的Hello报文中既包括BFD使能标识也包括用于建立BFD会话的IPv4地址。
[0067]具体的,以IS-1S协议为例,路由邻居发现报文是在路由器A和路由器B之间互发的,如下以B向A发送邻居发现报文即Hello报文为例进行说明,此时将B称为第一设备,将A称为第二设备。参见图5所示的流程:
[0068]501、路由器B将会话相关信息封装在路由邻居发现报文;
[0069]所述会话相关信息用于作为建立双向转发检测BFD会话的依据;本实施例的会话相关信息包括BFD使能标识和IPv4地址信息。
[0070]502、路由器B将路由邻居发现报文发送至路由器A ;
[0071]503、路由器A确定报文中的会话相关信息符合会话条件;
[0072]这里的符合会话条件即:根据BFD使能标识确定路由器A和路由器B的对应接口均支持BFD会话功能,并且两者接口的IPv4地址在同一网段。
[0073]504、路由器A开始与路由器B建立BH)会话;
[0074]路由器A与路由器B建立基于所述会话相关信息的BFD对话。
[0075]如下将更加详细的描述上述的会话建立过程:
[0076]在步骤501中,路由器B进行Hello报文的封装,将会话相关信息封装在该Hello报文。会话相关信息是用于作为建立BFD会话依据的信息;
[0077]例如,该会话信息包括用于建立BFD会话的IPv4地址信息,比如,路由器B的用于与路由器A进行路由邻居发现的接口可能具有多个IP地址,包括主地址和从地址,这些地址例是如下网段14.14.14.14/24、12.12.12.22/24等中的其中一个,比如,假设路由器B有两个IP地址,其中一个属于网段14.14.14.14/24,另一个地址属于网段12.12.12.22/24。路由器B从其中选择一个地址,作为上述的对应接口用于与对端的路由器A建立BFD会话使用的地址。假设选定14.14.14.14/24网段的一个IP地址作为建立会话所用的地址,那么就将该地址封装入Hello报文。当路由器B具有多个IPv4地址(包括主地址和从地址)时,可能会有两种情况,一种情况是,路由器B已经有预先指定的IPv4地址信息,则可以将该指定的IPv4地址信息封装在Hello报文;另一种情况是,并没有指定的IPv4地址信息,此时可以默认封装路由器接口的主地址。
[0078]同时,该会话信息还包括本端的BFD使能标识,该BFD使能标识用于表示第一设备的对应接口是否支持BFD会话功能,也就是说,用BFD使能标识表示路由器B的对应接口是否支持与BFD联动。
[0079]上述的BFD使能标识和IPv4地址信息的封装方式与前述的实施例类似,只是将两者进行了综合。具体的,参见图6和图7,路由器B在Hello报文中增加一个BFD会话类型长度值(Type/Length/Value,简称:TLV),而将上述的会话相关信息封装在该TLV中。各字段的说明如下:
[0080]Type:该字段表示该TLV的类型是BFD会话TLV,以区分其他已经定义的TLV,长度可以为I字节,取值是RFC3359规定之外的其他数值;
[0081]Length:取值是I或5,当IS-1S仅与IPv6BFD联动时,由于此时只有一个地址,不存在地址选择的问题,也不用填充Value中的IPv4地址字段,长度是I ;当与IPv4BFD联动时,填充IPv4地址字段,长度是5 ;
[0082]Value:包含flag和用于建立BFD会话的IPv4地址两部分,其中的flag的结构参见图7,flag的高6位作为保留字段,用于后续扩展,低两位分别表示BFD使能标识,比如,当IS-1S与IPv4联动时,将IPv4对应的最低位置位(比如设置为I),当IS-1S与IPv6联动时,将IPv6对应的次低位置位,这样接收到Hello报文的对端路由器A就可以明确知道路由器B的BFD使能情况,即支持IPv4BFD联动或者支持IPv6BFD联动。Value的最后4字节用于填充建立BFD会话使用的IPv4地址,比如上述预先指定的IPv4地址或者默认主地址。
[0083]实际实现时,路由器B在封装Hello报文之前,可以首先检查其用于发送Hello报文的接口是否支持BFD联动,比如是否支持IS-1S和IPv4或者IPv6的BFD联动,并进行对应的处理。
[0084]如果支持,则将flag中对应的标识为置位,例如,如果接口配置支持IS-1S和IPv4BFD联动,则将flag的最低位置位,并将用于建立BFD会话的IPv4 (预先指定地址或主地址)地址填充在Value的最后4字节;如果接口配置支持IS-1S和IPv6BFD联动,则将flag的次低位置位,且Value的最后4字节不封装。
[0085]如果接口对IPv4或IPv6BFD联动都不支持,那么flag中的BFD使能标识都置为0,此时表明该路由器B是支持该TLV对应的方式,但是未配置BFD联动。此外,路由器B可以通过命令来配置其自身是否支持封装该TLV。
[0086]路由器B在封装报文后,将该Hello报文发送至路由器A,在步骤503中,路由器A将根据报文中的会话相关信息,判断是否与路由器B建立BFD会话,具体是判断会话相关信息是否符合建立BFD会话的会话条件。
[0087]例如,路由器A知道其邻居路由器B的状态是IPv4up (邻居状态IPv4up是指满足建立IPv4邻居的条件,条件是协议规定的,比如,地址处于同一网段),即路由器B处于IPv4的状态,此时路由器A查看接收到的路由器B发送的Hello报文,具体查看该Hello报文中的BFD会话TLV,如果该TLV中的flag的最低位是1,即支持IPv4BFD,则检查路由器A的当前接口的用于建立BFD会话的IPv4地址(可以是指定地址或默认主地址)与该TLV携带的Value中的IPv4地址是否在同一网段,如果在同一网段,则确定将该路由器A的本端IPv4地址和TLV中的路由器B的IPv4地址,作为用于建立BFD会话的地址对,路由器A通知其BFD模块采用该地址对建立与路由器B的BFD会话连接。否则,如果TLV中的flag的最低位是0,即不支持IPv4BFD,则确定不建立BFD会话。
[0088]又例如,路由器A知道其邻居路由器B的邻居状态是IPv6up,即路由器B处于IPv6的状态,此时路由器A查看接收到的路由器B发送的Hello报文,具体查看该Hello报文中的BFD会话TLV,如果该TLV中的flag的次低位是1,即支持IPv6BFD,则这种情况下,路由器A可以确定与路由器B建立BFD会话,具体是直接建立路由器A本接口的IPv6Link Local到对端路由器B的IPv6Link Local之间的BFD对话。否则,如果该TLV中的flag的次低位是0,即不支持IPv6BFD,则路由器A不与路由器B建立BFD会话。
[0089]需要说明的是,在上述的实施例中,路由器A在接收到Hello报文时,其实进行了两方面的判断来确定是否建立BFD会话,不仅对端的路由器B要支持BH)联动,即根据BFD使能标识确定路由器B已经配置BFD会话功能,而且路由器B具有指定的地址,路由器A和路由器B的地址也需要在同一网段。
[0090]本实施例的BFD会话建立是在邻居发现阶段,路由器A确定了其邻居路由器B支持BFD联动,且获取了路由器B的用于建立会话的地址,路由器A可以将其对应接口用于建立BFD会话的地址和路由器B用于建立BFD会话的地址通知路由器A的BFD模块,BFD模块可以基于该地址对开始建立BFD会话;同样的,路由器B也会接收到路由器A发送的Hello报文,得知路由器A支持BFD联动,且获取路由器A用于建立会话的地址,路由器B可以将其对应接口用于建立BFD会话的地址和路由器A用于建立BFD会话的地址通知路由器B的BFD模块,BFD模块可以基于该地址对开始建立BFD会话。即路由器A和路由器B双方各自的BFD模块都可以接收到其上层协议(即接收Hello报文的模块)通知的邻居信息(即两者的地址对),两者基于该地址对建立BFD会话。
[0091]本实施例的BFD会话建立方法中,通过在路由邻居发现报文中封装了会话相关信息,并且基于该信息进行会话条件的判断,在满足条件时才建立BFD会话,有助于建立稳定的正确的BFD会话。
[0092]当然,具体实施中,Hello报文也可以封装上述的BFD使能标识或者IPv4地址之外的其他信息内容,以用于实现对应的特定功能,有助于BFD会话的建立。上述的例子只是举例。
[0093]本实施例还提供了一种BFD会话建立设备,参见图8,该设备可以是上述方法实施例中的路由器A或者路由器B,该设备可以称为第一设备。例如当第一设备是路由器A时,第二设备是路由器B;当第一设备是路由器B时,第二设备是路由器A。如图8所示,该设备包括:报文封装单元81、报文收发单元82和会话处理单元83 ;
[0094]报文封装单元81,用于将会话相关信息封装在路由邻居发现报文,所述会话相关信息用于作为建立双向转发检测BFD会话的依据;
[0095]报文收发单元82,用于通过支持BFD会话功能的接口将所述路由邻居发现报文发送至第二设备,通过相同接口接收所述第二设备发送的路由邻居发现报文;
[0096]会话处理单元83,用于在与第二设备建立路由邻居关系后且确定会话相关信息符合会话条件时,所述第一设备开始与第二设备建立BFD会话。
[0097]进一步的,报文封装单元81,具体用于:将BFD使能标识封装在路由邻居发现报文,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功倉泛;
[0098]报文收发单元82,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括用于表示所述第二设备发送路由邻居发现报文的接口是否支持BFD会话功能的BFD使能标识;
[0099]会话处理单元83,具体用于:在根据所述BFD使能标识,确定第一设备与第二设备的对应接口均支持BFD会话功能时,确定符合会话条件。
[0100]进一步的,所述BFD使能标识还用于表示支持BFD会话功能的IP协议栈版本;会话处理单元83,具体用于:根据所述BFD使能标识,确定第一设备与第二设备对应接口均支持BFD会话功能,且支持BFD会话功能的IP协议栈版本相同时,确定符合会话条件。
[0101]进一步的,报文封装单元81,具体用于:将用于建立所述BFD会话的IPv4地址信息封装在路由邻居发现报文;报文收发单元82,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括所述第二设备发送路由邻居发现报文的接口用于建立BFD会话的IPv4地址信息;会话处理单元83,具体用于:当第二设备的用于建立所述BFD会话IPv4地址信息与第一设备的用于建立所述BFD会话IPv4地址信息处于同一网段时,确定所述符合会话条件。
[0102]例如,所述IPv4地址信息,包括:预先指定的IPv4地址信息,或者,所述接口对应的IPv4主地址信息。
[0103]进一步的,报文封装单元81,具体用于:将BFD使能标识和用于建立所述BFD会话的IPv4地址信息封装在路由邻居发现报文,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功能;
[0104]报文收发单元82,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括所述第二设备发送路由邻居发现报文的接口对应的BFD使能标识用于建立BFD会话的IPv4地址信息;
[0105]会话处理单元83,具体用于:在第一设备与第二设备的对应接口均支持BFD会话功能,并且,第二设备用于建立所述BFD会话的IPv4地址信息与第一设备用于建立所述BFD会话的IPv4地址信息处于同一网段时,确定符合会话条件。
[0106]进一步的,报文封装单元81,还用于在通过不支持BFD会话功能的接口发送路由邻居发现报文时,不封装会话相关信息;或者,封装表示该接口不支持BFD会话功能的会话相关信息。
[0107]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种双向转发检测BFD会话建立方法,其特征在于,包括: 第一设备通过支持BFD会话功能的接口将封装有会话相关信息的路由邻居发现报文发送给第二设备,并通过相同接口接收所述第二设备发送的路由邻居发现报文,其中,所述会话相关信息用于作为建立BFD会话的依据; 在与第二设备建立路由邻居关系且确定符合会话条件时,所述第一设备开始与第二设备建立BFD会话。
2.根据权利要求1所述的方法,其特征在于,所述会话相关信息,包括:BFD使能标识,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功能; 所述确定符合会话条件,具体包括:所述第二设备发送的路由邻居发现报文封装会话相关信息,根据所述BFD使能标识,确定第一设备与第二设备对应接口均支持BFD会话功倉泛。
3.根据权利要求2所述的方法,其特征在于,所述BFD使能标识还用于表示支持BFD会话功能的IP协议栈版本; 所述确定符合会话条件,具体包括:所述第二设备发送的路由邻居发现报文封装会话相关信息,根据所述BFD使能标识,确定第一设备与第二设备对应接口均支持BFD会话功能,且支持BFD会话功能的IP协议栈版本相同。
4.根据权利要求1所述的方法,其特征在于,所述会话相关信息,包括:用于建立所述BFD会话的IPv4地址信息; 所述确定符合会话条件,具体包括:所述第二设备发送的路由邻居发现报文封装会话相关信息,所述第二设备用于建立所述BFD会话的IPv4地址信息与第一设备用于建立所述BFD会话的IPv4地址信息处于同一网段。
5.根据权利要求4所述的方法,其特征在于,所述IPv4地址信息,包括:预先指定的IPv4地址信息,或者,所述接口对应的IPv4主地址信息。
6.根据权利要求1所述的方法,其特征在于,所述会话相关信息,包括:BFD使能标识和用于建立所述BFD会话的IPv4地址信息,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功能; 所述确定符合会话条件,具体包括:所述第二设备发送的路由邻居发现报文封装会话相关信息,第一设备与第二设备对应接口均支持BFD会话功能,并且,所述第二设备用于建立所述BFD会话的IPv4地址信息与第一设备用于建立所述BFD会话的IPv4地址信息处于同一网段。
7.根据权利要求1所述的方法,其特征在于,还包括:在通过不支持BFD会话功能的接口发送路由邻居发现报文时; 所述第一设备不封装会话相关信息;或者, 所述第一设备封装表示该接口不支持BFD会话功能的会话相关信息。
8.一种双向转发检测BFD会话建立设备,其特征在于,包括: 报文封装单元,用于将会话相关信息封装在路由邻居发现报文,所述会话相关信息用于作为建立BFD会话的依据; 报文收发单元,用于通过支持BFD会话功能的接口将所述路由邻居发现报文发送至第二设备,并通过相同接口接收所述第二设备发送的路由邻居发现报文; 会话处理单元,用于在与第二设备建立路由邻居关系且确定符合会话条件时,所述第一设备开始与第二设备建立BFD会话。
9.根据权利要求8所述的设备,其特征在于, 所述报文封装单元,具体用于:将BFD使能标识封装在路由邻居发现报文,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功能; 所述报文收发单元,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括用于表示所述第二设备发送路由邻居发现报文的接口是否支持BFD会话功能的BFD使能标识; 所述会话处理单元,具体用于:在根据所述BFD使能标识,确定第一设备与第二设备的对应接口均支持BFD会话功能时,确定符合会话条件。
10.根据权利要求9所述的设备,其特征在于,所述BFD使能标识还用于表示支持BFD会话功能的IP协议栈版本; 所述会话处理单元,具体用于:根据所述BFD使能标识,确定第一设备与第二设备对应接口均支持BFD会话功能,且支持BFD会话功能的IP协议栈版本相同时,确定符合会话条件。
11.根据权利要求8所述的设备,其特征在于, 所述报文封装单元,具体用于:将用于建立所述BFD会话的IPv4地址信息封装在路由邻居发现报文; 所述报文收发单元,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括所述第二设备发送路由邻居发现报文的接口用于建立BFD会话的IPv4地址信息; 所述会话处理单元,具体用于:当第二设备用于建立所述BFD会话的IPv4地址信息与第一设备用于建立所述BFD会话的IPv4地址信息处于同一网段时,确定符合会话条件。
12.根据权利要求11所述的设备,其特征在于,所述IPv4地址信息,包括:预先指定的IPv4地址信息,或者,所述接口对应的IPv4主地址信息。
13.根据权利要求8所述的设备,其特征在于, 所述报文封装单元,具体用于:将BFD使能标识和用于建立所述BFD会话的IPv4地址信息封装在路由邻居发现报文,所述BFD使能标识用于表示发送封装所述会话相关信息的对应接口支持BFD会话功能; 所述报文收发单元,接收的所述第二设备发送的路由邻居发现报文封装有会话相关信息,所述会话相关信息包括所述第二设备发送路由邻居发现报文的接口对应的BFD使能标识用于建立BFD会话的IPv4地址信息; 所述会话处理单元,具体用于:在第一设备与第二设备的对应接口均支持BFD会话功能,并且,所述第二设备用于建立所述BFD会话的IPv4地址信息与第一设备用于建立所述BFD会话的IPv4地址信息处于同一网段时,确定符合会话条件。
14.根据权利要求8所述的设备,其特征在于, 所述报文封装单元,还用于在通过不支持BFD会话功能的接口发送路由邻居发现报文时,不封装会话相关信息;或者,封装表示该接口不支持BFD会话功能的会话相关信息。
【文档编号】H04L29/06GK104270367SQ201410524198
【公开日】2015年1月7日 申请日期:2014年9月30日 优先权日:2014年9月30日
【发明者】晁军显, 魏志广 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1