发明内容
本发明实施例提供了一种借助双向转发检测BFD报文实现边界网关协议BGP保活信息发送的方法,能够减少设备间的报文交互。
一种借助双向转发检测BFD报文实现边界网关协议BGP保活信息发送的方法,该方法包括:
第一路由设备向第二路由设备发送协商BFD报文,与第二路由设备进行借助BFD报文发送BGP保活信息功能的协商,在接收到第二路由设备发送的协商BFD响应报文后,从协商BFD响应报文中获取协商标示号;
第一路由设备获取并保存第二路由设备的BGP保活报文,将所述协商标示号与所述第二路由设备的BGP保活报文对应;
第一路由设备根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
在所述在BFD报文中发送BGP保活信息的发送周期到达时,第一路由设备向第二路由设备发送携带所述协商标示号的BFD报文,以使所述第二路由设备根据所述协商标示号从本地获取所述第一路由设备的BGP保活报文;
第二路由设备对接收到的协商BFD报文进行解析,根据对端IP地址和本端IP地址查找自身BGP协议会话表项的对应值,如果自身BGP协议会话表项中对端IP地址和本端IP地址与协商BFD报文中的值一致,则生成协商标示号;
第二路由设备获取并保存第一路由设备的BGP保活报文,将所述协商标示号与所述第一路由设备的BGP保活报文对应;
第二路由设备向第一路由设备发送携带所述协商标示号的协商BFD响应报文;
第二路由设备根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
在所述在BFD报文中发送BGP保活信息的发送周期到达时,第二路由设备向第一路由设备发送携带所述协商标示号的BFD报文,以使所述第一路由设备根据所述协商标示号从本地获取所述第二路由设备的BGP保活报文。
本发明实施例还提供了一种路由设备,能够减少设备间的报文交互。
一种路由设备,该路由设备包括:
第一协商模块,用于向对端路由设备发送协商BFD报文,与对端路由设备进行借助BFD报文发送BGP保活信息功能的协商;接收到对端路由设备发送的协商BFD响应报文后,从协商BFD响应报文中获取协商标示号;
第一存储模块,用于获取并保存对端路由设备的BGP保活报文,将所述协商标示号与所述对端路由设备的BGP保活报文对应;
第一计算模块,用于根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
第一发送模块,用于在所述在BFD报文中发送BGP保活信息的发送周期到达时,向对端路由设备发送携带所述协商标示号的BFD报文;
第一接收模块,用于在接收到对端路由设备发送的携带所述协商标示号的BFD报文时,根据所述协商标示号从本地获取所述对端路由设备的BGP保活报文。
本发明实施例还提供了一种路由设备,能够减少设备间的报文交互。
一种路由设备,该路由设备包括:
第二协商模块,用于对接收到的协商BFD报文进行解析,根据对端IP地址和本端IP地址查找自身BGP协议会话表项的对应值,如果自身BGP协议会话表项中对端IP地址和本端IP地址与协商BFD报文中的值一致,则生成协商标示号;
第二存储模块,用于获取并保存对端路由设备的BGP保活报文,将所述协商标示号与所述对端路由设备的BGP保活报文对应;
第二发送模块,用于向对端路由设备发送携带所述协商标示号的协商BFD响应报文;
第二计算模块,用于根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
第二发送模块,还用于在所述在BFD报文中发送BGP保活信息的发送周期到达时,向对端路由设备发送携带所述协商标示号的BFD报文;
第二接收模块,用于在接收到对端路由设备发送的携带所述协商标示号的BFD报文时,根据所述协商标示号从本地获取所述对端路由设备的BGP保活报文。
本发明实施例通过借助BFD检测报文传送BGP保活信息,即在设备两侧都具备借助BFD报文来传递BGP保活信息的能力后,只需要向对端设备发送携带有保活信息标示TLV,value为协商标示号的BFD报文,使得BGP协议不需要发送BGP保活报文,从而在保证BGP协议运行正常的基础上,减少了设备间的报文交互,节约了带宽。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例的技术方案应用于包括第一路由设备和第二路由设备的系统中。本发明定义BFD报文的发送端为第一路由设备,BFD报文的接收端为第二路由设备,所述第一路由设备和第二路由设备互为对端路由设备,所述的“第一”和“第二”并非用于限定,而只是用于区分任意可以交互的两台路由设备。
以下本发明将分别以第一路由设备和第二路由设备的报文发送过程为例,对本发明借助BFD报文实现BGP保活信息发送的方法进行说明。
实施例一
图1为本发明实施例第一路由设备借助BFD报文实现BGP保活信息发送的方法的流程示意图。
预先在BGP协议中配置第一路由设备接口具备借助BFD报文发送BGP保活信息功能;根据与第二路由设备接口间的BGP会话,生成第一路由设备BGP协议会话表项;
其中,在BGP协议中配置第一路由设备接口具备借助BFD报文发送BGP保活信息功能,就是使能第一路由设备接口具备托管能力,托管能力即借助BFD报文发送BGP保活信息功能。两路由设备接口之间需要建立有BGP会话连接,才有可能实现在BFD报文中承载BGP保活信息,所以第一路由设备接口根据与第二路由设备接口间的BGP会话,生成第一路由设备BGP协议会话表项,该表项的内容包括对端IP地址、本端IP地址、会话保持时间、会话保活时间、出接口和具有初始值的标示号,其中,会话保活时间指BGP协议中定义的BGP保活报文发送周期。
可以如下表1所示,本发明实施例中具有初始值的标示号为0,当然也可以为其它任意预定值。
表1
对端IP |
本端IP |
会话保活时间 |
会话保持时间 |
出接口 |
标示号 |
10.0.25.20 |
10.0.26.20 |
2s |
6s |
Eth1/2 |
0x0000 |
如果不使能第一路由设备接口具备托管能力,则该接口借助BFD报文来传递BGP保活信息的托管功能不能启用,第一路由设备接口仍然按照现有技术中的普通模式周期性向第二路由设备接口发送BGP保活报文;如果第一路由设备接口使能托管能力,
则,执行步骤11、第一路由设备向第二路由设备发送协商BFD报文,与第二路由设备进行借助BFD报文发送BGP保活信息功能的协商,在接收到第二路由设备发送的协商BFD响应报文后,从协商BFD响应报文中获取协商标示号;
协商标示号,标示两路由设备之间会话唯一性,指的是标示要在两者之间借助BFD报文发送BGP保活信息的号码应该是唯一的,在每两个路由设备之间得到的协商标示号一定是不同的,通过这个号码可以唯一地找到在第二路由设备中保存的第二路由设备BGP保活报文,因此具有唯一性。每两个路由设备之间的源IP地址和目的IP地址也具有唯一性,也可以作为协商标示号,但考虑到IP地址比较繁琐,所以优选将一段简单的数字作为协商标示号。
本发明实施例BFD报文的内容通过类型长度值(Type Length Value,TLV)携带,具体将BFD报文的内容携带在TLV的value中,当然也可以有其它携带方式,例如去掉TLV的类型和长度,只保留value,将报文内容携带在value中发送;或者去掉TLV的类型或长度,将报文内容携带在value中发送。所以该协商BFD报文携带三种类型的TLV,包括:保活能力协商TLV,value为对端IP地址和本端IP地址;保活信息标示TLV,value为初始值为0的标示号;协议保活报文TLV,value为第一路由设备BGP保活报文。
第一路由设备接口在接收到第二路由设备发送的协商BFD响应报文后,就可以确认第二路由设备接口也具备托管能力。该协商BFD响应报文携带三种类型的TLV,包括:保活能力协商TLV,value为对端IP地址和本端IP地址;协议保活报文TLV,value为第二路由设备BGP保活报文;保活信息标示TLV,value为协商的标示号。接下来,第一路由设备从协商BFD响应报文中获取协商标示号,将第一路由设备BGP协议会话表项中初始值为0的标示号修改为协商标示号。
需要说明的是,上述协商BFD报文和协商BFD响应报文都同时携带三种类型的TLV,这是优选实施例,实际上也可以根据具体需要将三种类型的TLV分开发送。例如,第一路由设备发送协商BFD报文时,可以最先发送保活能力协商TLV,进行协商,只要在协商完成之前将保活信息标示TLV和协议保活报文TLV发送过去即可。又例如,第二路由设备发送协商BFD响应报文时,也可以最先发送保活信息标示TLV,随后再发送保活能力协商TLV和协议保活报文TLV。所举实施例包括但又不限于此,在此不再赘述。
步骤12、第一路由设备从所述协商BFD响应报文中获取并保存第二路由设备的BGP保活报文,将所述协商标示号与所述第二路由设备的BGP保活报文对应;
本发明实施例第一路由设备从所述协商BFD响应报文中获取第二路由设备的BGP保活报文,如果步骤11中第二路由设备的BGP保活报文是单独发送的,那么直接获取该单独发送的第二路由设备的BGP保活报文即可。
步骤13、第一路由设备根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
由于现有技术BFD报文发送周期要比BGP保活报文发送周期要小,所以不必在每个BFD报文中都携带BGP保活信息。
计算BGP保活信息携带策略:M=[A/X]
报文发送频率=1/报文发送周期。X是BFD报文发送周期,A是BGP保活报文发送周期,相当于BGP协议会话表项中的会话保活时间。M需要是整数,表示每M个BFD检测报文中有一个报文需要携带BGP保活信息。
步骤14、在所述在BFD报文中发送BGP保活信息的发送周期到达时,第一路由设备向第二路由设备发送携带所述协商标示号的BFD报文,以使所述第二路由设备根据所述协商标示号从本地获取所述第一路由设备的BGP保活报文。
也就是说,现有技术发送BFD检测报文的周期不变,在此基础上,如果在所述在BFD报文中发送BGP保活信息的发送周期到达时,同时在BFD检测报文中携带保活信息标示TLV,value为协商标示号的BGP保活信息进行发送。
另外,第一路由设备中设置有会话保持定时器。在步骤11第一路由设备获取了协商标示号后,即第一路由设备BGP协议会话表项中初始值为0的标示号修改为协商标示号后会启动会话保持定时器,该定时器的时间设置与会话保持时间一致,本发明实施例中会话保持时间为6s,也就是说,如果启动会话保持定时器后6s没有收到第二路由设备的携带保活信息标示TLV,value为协商标示号的BFD报文,则会话保持定时器超时,第一路由设备和第二路由设备间的BGP会话断开,第一路由设备仍然按照现有技术中的普通模式周期性向第二路由设备接口发送BGP保活报文。后续,第一路由设备收到携带有保活信息标示TLV,value为协商标示号的BFD报文,确定本地具有与其对应的协商标示号时,更新所述会话保持定时器。
实施例二
图2为本发明实施例第二路由设备借助BFD报文实现BGP保活信息发送的方法的流程示意图。
预先在BGP协议中配置第二路由设备接口具备借助BFD报文发送BGP保活信息功能;根据与第一路由设备接口间的BGP会话,生成第二路由设备BGP协议会话表项;
其中,在BGP协议中配置第二路由设备接口具备借助BFD报文发送BGP保活信息功能,就是使能第二路由设备接口具备托管能力,托管能力即借助BFD报文发送BGP保活信息功能。两路由设备接口之间需要建立有BGP会话连接,才有可能实现在BFD报文中承载BGP保活信息,所以第二路由设备接口根据与第二路由设备接口间的BGP会话,生成第二路由设备BGP协议会话表项,该表项的内容包括对端IP地址、本端IP地址、会话保持时间、会话保活时间、出接口和具有初始值的标示号。可以如表1所示。
步骤21、第二路由设备对接收到的协商BFD报文进行解析,根据对端IP地址和本端IP地址查找自身BGP协议会话表项的对应值,如果自身BGP协议会话表项中对端IP地址和本端IP地址与协商BFD报文中的值一致,则生成协商标示号;
其中,生成的协商标示号保存在第二路由设备BGP协议会话表项中,即将自身BGP协议会话表项中初始值为0的标示号修改为协商标示号。
步骤22、第二路由设备从所述协商BFD报文中获取并保存第一路由设备的BGP保活报文,将所述协商标示号与所述第一路由设备的BGP保活报文对应;
本发明实施例第二路由设备从所述协商BFD报文中获取第一路由设备的BGP保活报文,如果步骤21中第一路由设备的BGP保活报文是单独接收的,那么就可以直接获取该第一路由设备的BGP保活报文即可。
步骤23、第二路由设备向第一路由设备发送携带所述协商标示号的协商BFD响应报文;
根据上述步骤,第二路由设备接口在使能后,生成第二路由设备BGP协议会话表项,该表项中包含对端IP地址和本端IP地址的内容,第一路由设备接口向第二路由设备接口发送协商BFD报文中,也包含对端IP地址和本端IP地址,如果两者一致,第二路由设备生成协商标示号,即第二路由设备BGP协议会话表项中原来初始值为0的标示号修改为协商标示号,向第一路由设备接口响应时,信息包括:所述协商标示号、对端IP地址和本端IP地址以及第二路由设备BGP保活报文。如果不使能第二路由设备接口具备托管能力,则该接口借助BFD报文来传递BGP保活信息的托管功能不能启用,就不会生成第二路由设备BGP协议会话表项,进而第二路由设备解析所述协商BFD报文时,就不会找到对应的IP地址值,因此就不可能对第一路由设备接口进行回应。如果第一路由设备在预定时间内没有得到回应,则第一路由设备仍然按照现有技术中的普通模式周期性向第二路由设备接口发送BGP保活报文;如果第一路由设备在预定时间内得到回应,即可确认第二路由设备接口具备托管能力,将第一路由设备BGP协议会话表项中初始值为0的标示号修改为协商标示号,然后执行步骤24。
步骤24、第二路由设备根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
由于第一路由设备和第二路由设备之间是双向发送报文的,所以第二路由设备根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期,计算得到的周期与第一路由设备的计算结果相同。
步骤25、在所述在BFD报文中发送BGP保活信息的发送周期到达时,第二路由设备向第一路由设备发送携带所述协商标示号的BFD报文,以使所述第一路由设备根据所述协商标示号从本地获取所述第二路由设备的BGP保活报文。
另外,第二路由设备中也设置有会话保持定时器。在步骤21第二路由设备生成协商标示号后,启动会话保持定时器,如果启动会话保持定时器后6s没有收到第一路由设备的携带保活信息标示TLV,value为协商标示号的BFD报文,则同样,会话保持定时器超时,第一路由设备和第二路由设备间的BGP会话断开,第二路由设备仍然按照现有技术中的普通模式周期性向第一路由设备接口发送BGP保活报文。第二路由设备接口收到携带有保活信息标示TLV,value为协商标示号的BFD报文,确定本地具有与其对应的协商标示号时,会更新第二路由设备会话保持定时器。一般情况下,每两个路由设备之间,第二路由设备接收到协商BFD报文,生成协商标示号,这个标示号与第一路由设备BGP保活报文是对应的,而且标示号和第一路由设备BGP保活报文都不再改变,当第二路由设备再次接收到该第一路由设备的协商BFD报文时,解析出协商BFD报文中的第一路由设备BGP保活报文与原来没有变化,还有一种特殊情况,就是解析出协商BFD报文中的第一路由设备BGP保活报文与原来不同,这就需要将第二路由设备中保存的第一路由设备BGP保活报文进行更新,具体方法为:第二路由设备解析所述协商BFD报文时,如果自身已经生成协商标示号,则自身已经保存有第一路由设备BGP保活报文,那么第二路由设备根据解析出的第一路由设备BGP保活报文,更新已经保存的第一路由设备BGP保活报文。
根据实施例一和实施例二的说明,本发明只需要按策略发送携带协商标示号的BFD报文,不需要像现有技术那样BFD报文和BGP保活报文分别发;由于第一路由设备和第二路由设备分别保存了对方的BGP保活报文,协商标示号可以像索引一样据此找到对应的BGP保活报文,所以本发明只需要发送保活信息标示TLV,而不需要发送保活报文,第二路由设备接口根据该TLV中携带的协商标示号就能够获取第一路由设备BGP保活报文。BFD报文中携带协商标示号,而且协商标示号又与BGP保活报文相对应,将BFD报文中携带的协商标示号称为BGP保活信息,因此本发明借助BFD报文实现了BGP保活信息的发送,本发明通过使用标示机制减少了BFD检测报文载荷来节约带宽。仍然假设有路由设备A和B,A周期性向B发送携带保活信息的BFD报文,如果B在足够长的时间内没有接收到A向其发送的携带保活信息标示TLV,value为协商标示号的BFD报文,确认AB间的链路上出现通信故障,则同样第一路由设备和第二路由设备间的BGP会话断开。
如果,第一路由设备接口由于去使能托管能力,或者BGP会话停止,需要在BGP协议中配置第一路由设备接口停止借助BFD报文发送BGP保活报文功能,然后向第二路由设备接口发送能力去协商的BFD报文,该BFD报文携带保活能力去协商TLV,value为对端IP地址和本端IP地址;保活信息标示TLV,value为协商标示号,通知第二路由设备取消托管能力。
需要说明的是,本发明实施例第一路由设备接口向第二路由设备接口发送协商BFD报文时,可能由于设备及外界的各种原因,第二路由设备接口可能收不到所述协商BFD报文,因此第一路由设备接口可以发送特定个数个协商BFD报文,以保证第二路由设备接口能够收到。
与上述方法对应,本发明分别给出了第一路由设备和第二路由设备的结构示意图。第一路由设备和第二路由设备的角色不同时,执行的功能也不同,因此,第二路由设备也可包括与第一路由设备相同的功能模块,相应地,第一路由设备的模块也可包含第二路由设备的所有功能描述。
图3为本发明实施例第一路由设备的结构示意图,其中,
第一协商模块101,用于向第二路由设备发送协商BFD报文,与第二路由设备进行借助BFD报文发送BGP保活信息功能的协商;接收到第二路由设备发送的协商BFD响应报文后,从协商BFD响应报文中获取协商标示号;
第一存储模块102,用于获取并保存第二路由设备的BGP保活报文,将所述协商标示号与所述第二路由设备的BGP保活报文对应;
第一计算模块103,用于根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
第一发送模块104,用于在所述在BFD报文中发送BGP保活信息的发送周期到达时,向第二路由设备发送携带所述协商标示号的BFD报文;
第一接收模块105,用于在接收到第二路由设备发送的携带所述协商标示号的BFD报文时,根据所述协商标示号从本地获取所述第二路由设备的BGP保活报文。
优选地,该第一路由设备进一步包括:
第一BGP协议配置模块106,用于在BGP协议中配置该路由设备接口具备借助BFD报文发送BGP保活信息功能;
第一表项生成模块107,用于在所述配置之后根据与第二路由设备的BGP会话生成BGP协议会话表项,该表项包括对端IP地址、本端IP地址、会话保持时间、会话保活时间、出接口和具有初始值的标示号。
第一会话保持定时器控制模块108,用于得到协商标示号后,启动会话保持定时器;还用于在接收到对端发送的携带有协商标示号的BFD报文,确定本地具有与其对应的协商标示号时,更新所述会话保持定时器;若在会话保持时间内没有收到携带有协商标示号的BFD报文,则会话保持定时器超时,向对端路由设备接口周期性发送BGP保活报文。
其中,所述第一存储模块102从所述协商BFD响应报文中获取并保存第二路由设备的BGP保活报文。
所述第一BGP协议配置模块106,还用于去使能借助BFD报文发送BGP保活信息功能,然后通过第一协商模块向第二路由设备发送能力去协商的BFD报文,与第二路由设备进行取消借助BFD报文发送BGP保活信息功能的协商。
图4为本发明实施例第二路由设备的结构示意图,其中,
第二协商模块201,用于对接收到的协商BFD报文进行解析,根据对端IP地址和本端IP地址查找自身BGP协议会话表项的对应值,如果自身BGP协议会话表项中对端IP地址和本端IP地址与协商BFD报文中的值一致,则生成协商标示号;
第二存储模块202,用于获取并保存第一路由设备的BGP保活报文,将所述协商标示号与所述第一路由设备的BGP保活报文对应;
第二发送模块203,用于向第一路由设备发送携带所述协商标示号的协商BFD响应报文;
第二计算模块204,用于根据BGP保活信息的发送周期和BFD检测报文的发送周期,计算得到在BFD报文中发送BGP保活信息的发送周期;
第二发送模块203,还用于在所述在BFD报文中发送BGP保活信息的发送周期到达时,向第一路由设备发送携带所述协商标示号的BFD报文;
第二接收模块205,用于在接收到第一路由设备发送的携带所述协商标示号的BFD报文时,根据所述协商标示号从本地获取所述第一路由设备的BGP保活报文。
优选地,该第二路由设备进一步包括:
第二BGP协议配置模块206,用于在BGP协议中配置该路由设备接口具备借助BFD报文发送BGP保活信息功能;
第二表项生成模块207,用于在所述配置之后根据与第一路由设备的BGP会话生成BGP协议会话表项,该表项包括对端IP地址、本端IP地址、会话保持时间、会话保活时间、出接口和具有初始值的标示号。
第二会话保持定时器控制模块208,用于生成协商标示号后,启动会话保持定时器;还用于在接收到对端发送的携带有协商标示号的BFD报文,确定本地具有与其对应的协商标示号时,更新所述会话保持定时器;若在会话保持时间内没有收到携带有协商标示号的BFD报文,则会话保持定时器超时,向对端路由设备接口周期性发送BGP保活报文。
其中,所述第二存储模块202从所述协商BFD报文中获取并保存第一路由设备的BGP保活报文。
本发明实施例所提到的BFD报文的主要操作模式称为异步模式。在这种模式,路由设备之间相互周期性地发送BFD控制包,如果某个路由设备连续几个包都没有接收到,就认为会话为“断开”(Down)。BFD控制报文包括认证类型(Auth Type)字段,未使用的取值范围在4~255。
本方案涉及的特殊用途的BFD检测报文,在检测报文中的使用通用的TLV来区别普通的BFD报文。对于本方案借助未使用的Auth Type的值来标示该报文是本方案使用的特殊的BFD控制报文,也就是说从值4~255中选择TLV中type的取值。
下面介绍一下本发明实施例包含的四种类型的TLV:
第一种是保活能力协商TLV,第二种是保活信息标示TLV,第三种是协议保活报文TLV,第四种,保活能力去协商TLV;
保活能力协商TLV,type的取值为10,value部分携带“对端IP地址和本端IP地址”;
保活信息标示TLV,type的取值为11,value部分携带标示特定BGP邻居的会话标示号,特定BGP邻居指要在两者之间借助BFD报文发送BGP保活信息的邻居,协商之前,value值为初始值0;协商之后,value值为两者协商标示号;
协议保活报文TLV,type的取值为12,value部分携带完整的BGP协议的保活(keepalive)报文;
保活能力去协商TLV,type的取值为13,value部分携带“对端IP地址和本端IP地址”。
上述type的取值只是举例而已,在实际应用中,可以从值4~255中任意选择,作为TLV中type的取值。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。