一种BFD建链的方法及其装置、路由器与流程

文档序号:12375661阅读:427来源:国知局
一种BFD建链的方法及其装置、路由器与流程

本发明涉及网络通信领域,更具体地涉及到一种双向转发检测(Bidirectional Forwarding Detection,简称BFD)建链的方法及其装置、路由器。



背景技术:

现代社会,科技的不断进步,越来越多实时的视频与语音业务运行在IP网络上,网络设备一个越来越重要的指标是,要求对相邻系统之间通信故障进行快速检测,这样在出现故障时可以更快的建立起替代通道或倒换到其他链路,从而保证网络通讯的稳定性。

双向转发检测(BFD)协议的出现,为通信故障的快速检测提出了一种解决方案。BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直接的物理链路、虚电路、隧道、MPLS(Multi-Protocol Label Switching,多协议标签交换)LSP(Label Switched Path,标签交换路径)、多跳路由通道,以及非直接的通道。BFD实现故障检测简单、单一,BFD通过三次握手机制建链后,通过不停的发送快速检测报文(毫秒级)到对方来,能提供链路来回两个方向的连通性检测。BFD把快速检测到的转发路径上的故障通知给上层协议栈,使上层协议栈能够快速收敛,并触发业务流量的电信级(50毫秒内)快速切换,从而减少链路的丢包,保证了通讯的连续稳定。

BFD在维护网络稳定性中起着很大的作用,但任何事物都有正反两面,BFD自身的稳定性也关系着网络的稳定性,在当今复杂的通讯网络中,非链路问题的BFD的震荡往往会导致网络通信链路的不停切换,导致丢包,网络通讯失去控制,造成比较严重的后果。尤其是在网络设备配置大容量的BFD的时候,协议栈上BFD已经UP(上线),但底层芯片还没有准备好未能发送快包,虽然链路本身没有故障,但这个时候收包芯片不能识别收到的!P&!F 的报文是协议栈发送的up报文,还是发包芯片发送的保活报文,如果快包还没有发送,收包芯片被协议栈的up报文触发保活,这时候BFD建链成功,但BFD其实还没有协商好,检测周期之后,BFD收不到!P&!F报文,就会认定链路故障而报Down(断线),从而导致链路切换,BFD震荡,网络会出现很严重的故障。



技术实现要素:

本发明要解决的技术问题是提供一种BFD建链的方法及其装置、路由器,以确保BFD建链的稳定性。

为了解决上述技术问题,本发明提供了一种双向转发检测BFD建链的方法,包括:

将BFD状态配置为上线状态,开始计时;

接收到报文时,若超出指定时间,则BFD建链失败,若未超出所述指定时间,则检测接收到的报文,若所述报文为P置位建链报文或F置位建链报文,则进行检测周期协商;若所述报文为P位和F位都没有置位且携带上线状态的报文,则判断检测周期协商是否成功,若成功,则对所述P位和F位都没有置位且携带上线状态的报文进行保活,BFD建链成功,若未成功,对所述P位和F位都没有置位且携带上线状态的报文不作处理。

进一步地,上述方法还具有下面特点:所述将BFD状态配置为上线状态,包括:

发送携带下线状态的建链报文;

接收到对端发送的携带下线状态的建链报文后,将本地状态切换到初始状态,发送携带初始状态的建链报文;

接收到对端发送的携带初始状态的建链报文后,将本地状态切换到上线状态。

进一步地,上述方法还具有下面特点:所述将BFD状态配置为上线状态后,还包括:

向对端发送P位和F位都没有置位且携带上线状态的报文。

进一步地,上述方法还具有下面特点:所述进行检测周期协商包括:

接收到对端发送的P置位建链报文后,向对端发送F置位建链报文与对端进行检测周期协商;

接收到对端发送的F置位建链报文后,通知BFD更新本端的检测周期。

为了解决上述问题,本发明还提供了一种双向转发检测BFD建链的装置,其中,包括:

协议模块,用于将BFD状态配置为上线状态,开始计时;用于接收到P置位建链报文或F置位建链报文进行检测周期协商,接收到P位和F位都没有置位且携带上线状态的报文则不做处理;

收包模块,用于接收到报文时,若超出指定时间,则BFD建链失败,若未超出所述指定时间,则检测接收到的报文,若所述报文为P置位建链报文或F置位建链报文,则将所述建链报文转发给所述协议模块;若所述报文为P位和F位都没有置位且携带上线状态的报文,则判断检测周期协商是否成功,若成功,则将所述报文转发给保活模块,若未成功,则将所述报文转发给所述协议模块;

所述保活模块,用于对接收到的P位和F位都没有置位且携带上线状态的报文进行保活,BFD建链成功。

进一步地,上述装置还具有下面特点:所述协议模块,将BFD状态配置为上线状态包括:发送携带下线状态的建链报文;接收到对端发送的携带下线状态的建链报文后,将本地状态切换到初始状态,发送携带初始状态的建链报文;接收到对端发送的携带初始状态的建链报文后,将本地状态切换到上线状态。

进一步地,上述装置还具有下面特点:还包括发包模块,

所述协议模块,将BFD状态配置为上线状态后通知所述发包模块,

所述发包模块,用于向对端发送P位和F位都没有置位且携带上线状态的报文。

进一步地,上述装置还具有下面特点:所述协议模块,进行检测周期协商包括:接收到对端发送的P置位建链报文后,向对端发送F置位建链报文与对端进行检测周期协商;接收到对端发送的F置位建链报文后,通知BFD更新本端的检测周期。

为了解决上述问题,本发明还提供了一种路由器,其中,包括上述的BFD建链的装置。

综上,本发明提供一种BFD建链的方法及其装置、路由器,利用首包触发BFD建链,实现简单,可操作性强,不需要额外的报文及额外的流量,可有效避免BFD是被协议发送的!P&!F协议报文触发建链,从而震荡导致的链路切换故障。

附图说明

此处说明的附图用来提供对本发明的进一步理解,在附图中:

图1为现有技术的BFD类型的示意图;

图2为现有技术的两台设备BFD建链的示意图;

图3为本发明实施例的BFD建链的装置的示意图

图4为本发明实施例的BFD建链的方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图3为本发明实施例的BFD建链的装置的示意图,如图3所示,本实施例的装置包括:协议模块、保活模块、收包模块和发包模块,其中,

协议模块,用于将BFD状态配置为上线状态,开始计时;用于接收到P置位建链报文或F置位建链报文进行检测周期协商,接收到P位和F位都没 有置位且携带上线状态的报文则不做处理;

收包模块,用于接收到报文时,若超出指定时间,则BFD建链失败,若未超出指定时间,则检测接收到的报文,若所述报文为P置位建链报文或F置位建链报文,则将所述建链报文转发给所述协议模块;若所述报文为P位和F位都没有置位且携带上线状态的报文,则判断检测周期协商是否成功,若成功,则将所述P位和F位都没有置位且携带上线状态的报文转发给保活模块,若未成功,则将所述P位和F位都没有置位且携带上线状态的报文转发给所述协议模块;

所述保活模块,用于对接收到的P位和F位都没有置位且携带上线状态的报文进行保活,BFD建链成功。

在一优选实施例中,所述协议模块,将BFD状态配置为上线状态包括:发送携带下线状态的建链报文;接收到对端发送的携带下线状态的建链报文后,将本地状态切换到初始状态,发送携带初始状态的建链报文;接收到对端发送的携带初始状态的建链报文后,将本地状态切换到上线状态。

在一优选实施例中,所述装置还包括:还包括发包模块,

所述协议模块,将BFD状态配置为上线状态后通知所述发包模块,

所述发包模块,用于向对端发送P位和F位都没有置位且携带上线状态的报文。

其中,所述协议模块,进行检测周期协商可以包括:接收到对端发送的P置位建链报文后,向对端发送F置位建链报文与对端进行检测周期协商;接收到对端发送的F置位建链报文后,通知BFD更新本端的检测周期。

本发明实施例提供一种BFD建链的方法,主要是通过保活首包来触发BFD建链。本实施例的BFD建链的流程是由协议栈(相当于上文的协议模块)、发包芯片(相当于上文的发包模块)、收包芯片(相当于上文的收包模块)、保活芯片(相当于上文的保活模块)的共同作用完成的。协议栈根据进行三次握手对BFD进行建链和检查周期协商;发包芯片用于发保活快包;收包芯片用于接受协议栈和发包芯片转发的包,并根据需要发送给协议栈或保活芯片;保活芯片用于保活BFD。

协议栈通过三次握手过程,配置BFD的链路两端状态都是up状态,开启计时器(例如5s),收包芯片检测收到的报文,收到P/F报文(P置位报文或F置位报文)通知协议栈进行检测周期的协商。只有等待两端的P/F协商完成之后,当发现第一个!P&!F的包时,才将这个包识别为保活快包,开始将报文转发到保活芯片进行保活。

如果在会话两端的检测周期协商结束前收到!P&!F报文,只将!P&!F报文发送给协议栈,并等待P/F协商结束;如果P/F协商完成后,收不到!P&!F的快包,计时器到5s后,BFD直接建链失败。

!P&!F报文是P标志位和F标志位都没有置的携带状态为up的BFD报文,在BFD建链过程中,有两种!P&!F报文,一种是协议栈发送的携带up状态报文,另一种是发包芯片发送的保活报文。

图4为本发明实施例的BFD建链的流程图,如图4所示,包含以下步骤:

S301:在网络两端Router(路由器)A和Router B上配置大容量的BFD,BFD类型可以跨跳,也可以直连;

S302:协议栈通过三次握手过程,将两端的BFD状态从Down状态变为Up状态;具体过程如图2所示:

Router A和Router B启动BFD,各自初始状态为down,发送携带状态为down的BFD报文;Router A和Router B收到状态为down的BFD报文,本地状态切换至init,发送携带状态为init的BFD报文;Router A和Router B收到状态为init的BFD报文,本地状态切换至up。

可以根据需要在网络两端配置例如1000个BFD检测,查看会话1两端的状态,两端协议栈互发携带up状态的建链报文,会话两端的状态都up。

S303:Router A和Router B各自的保活芯片开启5s计时器,5s后BFD如果未能成功建立,则建链失败;

计时器可以也可以由其他芯片比如协议栈开启。

S304:Router A和Router B互发携带状态为up的报文,Router A和Router B的协议栈向对端发送P置位建链报文;

S305:Router A和Router B的收包芯片检测收到的报文并进行分析;

收包芯片在建链过程中会收到两种类型的报文:协议栈发送的建链报文和发包芯片发送的报文。协议栈发送的建链报文有:携带Down状态的建链报文、携带INIT(初始)状态的建链报文、携带UP状态的建链报文、P置位的建链报文和F置位的建链报文,其中,携带UP状态的建链报文是!P&!F的报文;发包芯片发送的报文是的!P&!F的保活报文,用于保活芯片的保活。

S306:Router B收包芯片收到报文,判断计时器时间,是否有超出5s,如超出,则转步骤S307,如未超出,则转步骤S308;

S307:计时器超出5s,直接建链失败;

S308:Router B收包芯片检测收到的报文,判断是否!P&!F报文,如是,则转步骤S309;如不是,则转步骤S310;

S309:收包芯片收到的报文是!P&!F报文,需要判断协议栈协商检测周期是否已成功,如未成功,则转步骤S11;如成功,则转步骤S12;

S310:收包芯片收到的是P置位报文或F置位报文,转步骤S11;

S311:通知协议栈处理,协议栈收到P/F进行检测周期的协商,对!P&!F报文不做处理,然后转向步骤S305;

协议栈收到P/F报文进行检测周期的协商具体如下:

Router B收包芯片收到的是Router A发送过来的P置位的协商报文,则将通知Router B协议栈,Router B协议栈向Router A发送F置位的协商报文,与Router A进行检测周期的协商;Router A收包芯片收到Router B发送的F置位协商报文,则将通知Router A协议栈,Router A协议栈通知BFD更新本端的检测周期;RouterA协商OK;

Router A收包芯片收到Router B发送过来的P置位的协商报文,则将通知Router A协议栈,Router A协议栈向Router B发送F置位的协商报文,与Router B进行检测周期的协商;Router B收包芯片收到Router A发送的F置位协商报文,则将通知Router B协议栈,Router B协议栈通知BFD更新本端的检测周期;Router B协商OK;

Router A和Router B协议栈检测周期协商完成。两端的收包芯片继续检测收到的报文,直到收到第一个!P&!F的BFD报文;

S312:Router A和Router B协议栈检测周期协商成功,通知本端更新检测周期;

S313:Router A和Router B协议栈检测周期协商都成功,收包芯片将收到的!P&!F检测快包转发到保活芯片;

S314:保活芯片使用收到的!P&!F检测快包进行保活;

S315:BFD成功建链,开始检测链路的连通性。

BFD开始正常检测,当检测周期内收不到对端发送的快包,就判断其中间的链路出现故障,从而向协议栈通知报down进行,使协议栈能够快速收敛切换,保证网络的连通稳定。

如果在5s的时间内P/F协商不成功,或P/F协商成功后一直没有收到!P&!F的快包报文,BFD判断链路有故障,BFD建链失败。

综上所述,本发明实施例的方法提出利用首包触发BFD建链,实现简单,可操作性强,不需要额外的报文及额外的流量。因此,本发明适用于一种典型场景:在配置大容量BFD的设备上,大量报文的同时下发,由于底层硬件的性能的限制,协议栈BFD已经UP,收包芯片不能识别!P&!F报文是否是保活报文,在这种情况下,设置只有BFD两端的P/F协商都完成并且在协商完成后收到第一个!P&!F报文是保活报文,触发这个报文,BFD才会成功建链,通过这种方式,可有效避免BFD是被协议发送的!P&!F协议报文触发建链,从而震荡导致的链路切换故障。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任 何特定形式的硬件和软件的结合。

以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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