双向转发检测上报会话状态的方法

文档序号:7622513阅读:185来源:国知局
专利名称:双向转发检测上报会话状态的方法
技术领域
本发明涉及通讯领域,尤其涉及一种BFD(双向转发检测)上报会话状态的方法。
背景技术
随着通信技术的发展,在IP网络上承载NGN(下一代网络)、3G(第三代通讯系统)等实时、时延敏感业务需求的不断增长,如何保障数据传送质量,如何在数据传送出现问题时,快速对故障进行定位,已经成为了一个亟待解决的重要问题,因此,BFD作为一种快速检测机制,应运而生。
BFD是从基础传输技术中经过逐步发展而来的,因此它可以检测网络中各层的故障。它可以用于检测以太网、MPLS(多协议标记交换)路径、普通路由封装以及IPSec(IP网络安全协议)隧道在内的多种类型的传输正确性。
BFD是一种用来检测一对转发引擎之间的转发路径是否可用的机制,其在两个相邻系统之间提供一种低开销、短检测周期的失败检测机制,检测接口、数据链路以及转发引擎自身等等。
BFD的总体应用环境组网示意图如图1所示,在图1所示的组网中,路由器A和路由器C之间通过链路AC相连,路由器B和路由器C之间通过链路BC相连,在AC和BC链路上,可以应用BFD进行链路检测。
BFD可以抽象成一个简单的服务,它提供的服务原语包括在给定目的地址以及其它参数的前提下,创建、删除、修改一个BFD会话。BFD通过提供一个信号给操作者表示该BFD会话已经开始或者结束,或者告诉操作者BFD会话协商结果、修改结果等;为应用层提供检测转发路径的状态信息(UP/DOWN信息)(通过上报BFD会话状态实现)。
BFD类似于“Hello”协议,当一个BFD会话建立之后,BFD会话的双方周期性地在使能了BFD的链路上向对方发送BFD报文,同时也在该链路上周期性地检测对方报文到达的情况,如果在一定的时间间隔内,某一方没有收到来自对端的BFD报文,则可以认为该链路出现故障。因此,便达到快速发现链路故障的目的。
在一个BFD会话生命周期中,主要经历以下几个阶段1、BFD会话初始建立阶段。
在如图1所示的组网中,A和C互为BFD会话邻居,在初始,没有BFD会话在A和C之间的AC链路上建立。
首先需要在A和C路由器上分别创建BFD实例。然后,A和C路由器需要获得其邻居的IP地址,由于BFD没有自动发现邻居的机制,它需要静态配置或者依赖于其它应用协议告诉它邻居的IP地址。
当BFD实例得知邻居IP地址之后,下一步就需要知道对方分配给该BFD会话的鉴别符,同时本地也分配该BFD会话鉴别符。鉴别符可以通过手工指派、自动带内协商获得,也可以通过带外协商获得,即通过其它应用协议完成鉴别符的协商,然后通知BFD实例。
在获得上述信息后,BFD链路的两端开始定时向对方发送会话协商报文,直到BFD会话建立起来,其发包间隔一般大于1s。本发明把这个阶段叫做慢速会话协商阶段。
2、BFD会话参数协商阶段。
当邻居间BFD实例将BFD会话建立起来之后,需要进行BFD会话参数的协商,以协调双发收发BFD报文的速度、缺陷确认时间,以及统一会话模式等。
3、BFD缺陷检测阶段。
BFD会话建立后,BFD会话的邻居间就按照协商好的间隔向对端发送BFD控制报文,BFD控制报文跟路由协议HELLO报文的功能和操作方式一样,只是发送频率往往更快,一般小于1S,在许多应用场合,可能为几十MS。本发明把该阶段叫做快速缺陷检测阶段。
在BFD会话的端点在向对端发送BFD控制报文的同时,也定时检测BFD邻居发送过来的BFD报文,如果检测到连续丢失邻居的BFD报文,则宣布转发路径出现故障,然后将该链路出现故障消息通告给其它应用,比如路由模块等。至于连续丢失多少个BFD报文才能宣布转发路进出现故障,需要根据BFD会话协商的结果来确定。该参数在BFD控制报文格式中通过Detect Mult字段来定义。
比如,假设BFD会话协商出的结果是系统A按照10MS发送BFD报文,系统C按照15MS发送BFD报文,且如果连续丢失3(即Detect Mult为3)个BFD报文则宣布转发路径DOWN。那么如果A在连续45MS内没有收到C发送的BFD报文,或者C在连续30MS内没有收到A发送的BFD报文,则宣布A和C之间的转发路径不可用。
4、BFD会话拆除阶段。
现有技术中一种BFD会话上报链路状态的方法为当BFD会话协商完成后,BFD会话的两端通过快速发送和检测报文来确认它们之间的BFD链路是否可用。在检测到缺陷(会话变DOWN)或者缺陷恢复(会话变UP)时,直接将状态变化情况通知给应用模块比如路由、转发等。
上述现有技术中的BFD会话上报会话状态的方法的缺点为BFD可以和各种应用绑定在一起,当BFD和报文转发模块绑定在一起时,如果BFD在会话UP时不经过处理直接向报文转发模块报告该链路状态,则由于转发需要的各种条件(比如转发表项)还没有准备好,从而导致链路恢复时转发丢包。
另外,在BFD缺陷检测阶段,其检测灵敏度很高(通常在ms级)。因此,在链路拥塞或者有其他时延的情况下,BFD可能会认为会话DOWN从而上报缺陷。而后重新开始进行慢速协商(重新协商的时间一般在几秒之内,如果BFD会话两端之间可以正确收发报文的话),这时就可能出现BFD会话不断UP/DOWN的震荡,特别是在系统或者链路比较繁忙的情况下。如果这时直接把BFD会话的UP/DOWN状态通报给各种应用,将引起系统各种应用模块的震荡,从而大大地降低系统效率。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种双向转发检测上报会话状态的方法,从而避免了在转发路径不稳定时,BFD会话频繁UP/DOWN导致向上层应用不停地上报BFD会话状态的情况,提高了系统处理效率。同时在BFD同转发等应用绑定时可以减少链路恢复时可能的丢包。
本发明的目的是通过以下技术方案实现的一种双向转发检测上报会话状态的方法,包括A、在双向转发检测BFD会话中设置预定时间;B、当BFD会话状态发生变化时,根据BFD会话中所述预定时间的计时情况,确定向上层应用上报当前BFD会话状态。
所述步骤A具体包括在BFD会话中设置等待恢复WTR的延迟时间和缺陷保持Hold的延迟时间。
所述步骤A具体包括
所述WTR的延迟时间和Hold的延迟时间在本地配置或根据BFD会话的邻居通过扩充BFD协议后,通告过来的相关配置消息而获得。
所述步骤A具体包括当在本地配置了所述WTR的延迟时间和Hold的延迟时间后,又收到了BFD会话的邻居通告过来的相关配置消息,则优先使用本地配置的所述WTR的延迟时间和Hold的延迟时间。
所述的WTR的延迟时间和Hold的延迟时间通过定时器或计时器或计数器来实现。
所述步骤B具体包括B1、在BFD会话状态变为UP时,启动所述WTR的延迟时间的计时;B2、在所述WTR的延迟时间的计时结束后,当BFD会话状态仍然为UP时,则向上层应用上报当前BFD会话状态为UP状态。
所述步骤B具体包括B3、在BFD会话状态变为DOWN时,启动所述Hold的延迟时间的计时;B4、在所述Hold的延迟时间的计时结束后,当BFD会话状态仍然为故障时,则向上层应用上报当前BFD会话状态为故障状态。
所述步骤B具体包括B5、在BFD会话状态变为UP时,如果BFD会话中存在所述Hold的延迟时间的计时,则执行步骤B6;否则,执行步骤B7;B6、停止所述BFD会话中存在的Hold的延迟时间的计时,不向上层应用上报当前BFD会话状态;B7、启动所述WTR的延迟时间的计时,在该计时结束后,当BFD会话状态仍然为UP时,则向上层应用上报当前BFD会话状态为UP状态。
所述步骤B具体包括B8、在BFD会话状态变为DOWN时,如果BFD会话中存在所述WTR的延迟时间的计时,则执行步骤B9;否则,执行步骤B10;B9、停止所述BFD会话中存在的WTR的延迟时间的计时,不向上层应用上报当前BFD会话状态;B10、启动所述Hold的延迟时间的计时,在该计时结束后,当BFD会话状态仍然为DOWN时,则向上层应用上报当前BFD会话状态为DOWN状态。
由上述本发明提供的技术方案可以看出,本发明通过在BFD中引入WTR(等待恢复)和Hold(缺陷保持)机制,在BFD会话UP、DOWN变化时,先进行WTR和HOLD处理,和现有技术相比,具有如下优点1、避免了BFD在链路不稳定时,BFD会话向上层应用不停地上报UP/DOWN的情况,提高了系统处理效率。
2、当BFD同转发等应用绑定时,在会话UP时由于有WTR的缓冲,可以保证应用模块处理UP时相应的条件已经准备完毕(比如上层应用为转发模块时,可用保证相应的转发表项已经稳定),因此,可以防止链路恢复时引起转发丢包。


图1为BFD的总体应用环境组网示意图;图2为本发明所述方法的具体处理流程图;图3为本发明所述实施例的示意图。
具体实施例方式
本发明提供了一种BFD上报会话状态的方法,本发明的核心为在BFD中引入WTR和Hold机制,在BFD会话状态UP/DOWN变化时,不立即向上层应用上报状态变化情况,而是先进行WTR和HOLD处理。
下面结合附图来详细描述本发明所述方法,本发明所述方法的具体处理流程如图2所示,包括如下步骤步骤2-1、协商WTR的延迟时间和HOLD的延迟时间。
本发明首先需要在BFD中引入WTR和Hold机制,并协商确定Twtr(WTR的延迟时间)和Thold(HOLD的延迟时间)。Twtr和Thold可以本地配置;也可以通过先扩充BFD协议,然后,利用BFD协议传给BFD会话的邻居。如果在本地配置了WTR(HOLD),又收到BFD会话邻居发送的WTR(HOLD)时,则优先使用本地配置的WTR(HOLD)。
步骤2-2、进行转发路径检测。
在协商确定了WTR的延迟时间和HOLD的延迟时间后,BFD会话的两端便开始按照协商出来的参数进行缺陷检测,即检测BFD链路的状态变化,当BFD检测到缺陷时,执行步骤2-4,当BFD检测到缺陷恢复时,则执行步骤2-3;步骤2-3、是否存在HOLD定时器。
在检测到BFD会话UP后,本发明不立即将该会话状态上报给上层应用,而是判断此时BFD中是否存在HOLD定时器,如果存在,则执行步骤2-5;否则,执行步骤2-7。
步骤2-4、是否存在WTR定时器。
在检测到BFD会话Down后,本发明不立即将该会话状态上报给上层应用,而是判断此时BFD中是否存在WTR定时器,如果存在,则执行步骤2-6;否则,执行步骤2-8。
步骤2-5、停止HOLD定时器,不上报。
如果此时BFD中存在已经启动了但还没有超时的HOLD定时器,则说明此时在上层应用中BFD会话的状态仍然为UP,于是,停止BFD中的HOLD定时器,不向上层应用模块上报链路状态情况。
步骤2-6、停止WTR定时器,不上报。
如果此时BFD中存在已经启动了但还没有超时的WTR定时器,则说明此时上层应用中BFD会话的状态仍然为Down,于是,停止BFD中的WTR定时器,不向上层应用模块上报会话状态情况。
步骤2-7、启动WTR定时器。
如果此时BFD中不存在HOLD定时器,则按照协商确定的延迟时间,启动WTR定时器,执行步骤2-9。
步骤2-8、启动HOLD定时器。
如果此时BFD中不存在WTR定时器,则按照协商确定的延迟时间,启动Hold定时器,执行步骤2-10。
步骤2-9、在定时器超时后,BFD会话仍为UP,则上报。
在延迟指定的时间(Twtr)后,如果检测到BFD会话的状态仍然为UP时,则向上层应用模块上报会话状态UP。特别的,如果Twtr为零,则表示不需要进行WTR延时处理,会话UP后直接上报给应用模块。
步骤2-10、在定时器超时后,BFD会话仍为DOWN,则上报。
在延迟指定的时间(Thold)后,如果检测到BFD会话的状态仍然为Down时,则向上层应用模块上报会话状态Down。特别的,如果Thold为零,则表示不需要进行HOLD延时处理,会话Down后直接上报给应用模块。
本发明还提供了一个本发明所述方法的实施例,该实施例的示意图如图3所示,具体描述如下1、在t1时刻,BFD会话变为UP,BFD会话的两端开始按照协商出来的参数进行缺陷检测,同时此时BFD中没有Hold定时器,表明前面没有未上报的缺陷,于是启动WTR定时器,时长为Twtr(从t1时刻到t3时刻)。
2、在t2时刻,BFD检测到缺陷,BFD会话变为DOWN。这时停止已经启动但还未超时的WTR定时器,由于这时存在WTR定时器,表明上次UP没有上报应用,不用做上报处理,也不用起HOLD定时器。
3、在t4时刻,会话重新UP,这时BFD中没有Hold定时器,启动WTR定时器,时长为Twtr(从t4时刻到t5时刻)。
4、在t5时刻,WTR超时,给上层应用上报BFD会话UP状态情况。
5、在t6时刻,BFD检测到缺陷,BFD会话变为DOWN,启动Hold定时器,时长为Thold(从t6时刻到t9时刻)。
6、t7时刻,BFD会话变为UP,停止已经启动但还未超时的Hold定时器。由于Hold定时器在运行,说明上一个会话DOWN没有上报给应用,所以这里不用做上报处理,也不起WTR。
7、t8时刻,BFD检测到缺陷,BFD会话变为DOWN,启动Hold定时器,时长为Thold(从t8时刻到t10时刻)。
8、t10时刻,Hold定时器超时,给上层应用上报BFD会话DOWN状态情况。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种双向转发检测上报会话状态的方法,其特征在于,包括A、在双向转发检测BFD会话中设置预定时间;B、当BFD会话状态发生变化时,根据BFD会话中所述预定时间的计时情况,确定向上层应用上报当前BFD会话状态。
2.根据权利要求1所述双向转发检测上报会话状态的方法,其特征在于,所述步骤A具体包括在BFD会话中设置等待恢复WTR的延迟时间和缺陷保持Hold的延迟时间。
3.根据权利要求2所述双向转发检测上报会话状态的方法,其特征在于,所述步骤A具体包括所述WTR的延迟时间和Hold的延迟时间在本地配置或根据BFD会话的邻居通过扩充BFD协议后,通告过来的相关配置消息而获得。
4.根据权利要求3所述双向转发检测上报会话状态的方法,其特征在于,所述步骤A具体包括当在本地配置了所述WTR的延迟时间和Hold的延迟时间后,又收到了BFD会话的邻居通告过来的相关配置消息,则优先使用本地配置的所述WTR的延迟时间和Hold的延迟时间。
5.根据权利要求4所述双向转发检测上报会话状态的方法,其特征在于,所述的WTR的延迟时间和Hold的延迟时间通过定时器或计时器或计数器来实现。
6.根据权利要求2、3、4或5所述双向转发检测上报会话状态的方法,其特征在于,所述步骤B具体包括B1、在BFD会话状态变为UP时,启动所述WTR的延迟时间的计时;B2、在所述WTR的延迟时间的计时结束后,当BFD会话状态仍然为UP时,则向上层应用上报当前BFD会话状态为UP状态。
7.根据权利要求2、3、4或5所述双向转发检测上报会话状态的方法,其特征在于,所述步骤B具体包括B3、在BFD会话状态变为DOWN时,启动所述Hold的延迟时间的计时;B4、在所述Hold的延迟时间的计时结束后,当BFD会话状态仍然为故障时,则向上层应用上报当前BFD会话状态为故障状态。
8.根据权利要求2、3、4或5所述双向转发检测上报会话状态的方法,其特征在于,所述步骤B具体包括B5、在BFD会话状态变为UP时,如果BFD会话中存在所述Hold的延迟时间的计时,则执行步骤B6;否则,执行步骤B7;B6、停止所述BFD会话中存在的Hold的延迟时间的计时,不向上层应用上报当前BFD会话状态;B7、启动所述WTR的延迟时间的计时,在该计时结束后,当BFD会话状态仍然为UP时,则向上层应用上报当前BFD会话状态为UP状态。
9.根据权利要求2、3、4或5所述双向转发检测上报会话状态的方法,其特征在于,所述步骤B具体包括B8、在BFD会话状态变为DOWN时,如果BFD会话中存在所述WTR的延迟时间的计时,则执行步骤B9;否则,执行步骤B10;B9、停止所述BFD会话中存在的WTR的延迟时间的计时,不向上层应用上报当前BFD会话状态;B10、启动所述Hold的延迟时间的计时,在该计时结束后,当BFD会话状态仍然为DOWN时,则向上层应用上报当前BFD会话状态为DOWN状态。
全文摘要
本发明提供了一种BFD(双向转发检测)上报会话状态的方法,该方法主要包括在BFD会话中设置预定时间;当BFD会话状态发生变化时,根据BFD会话中所述预定时间的计时情况,确定向上层应用上报当前BFD会话状态。利用本发明所述方法,可以避免在转发链路不稳定时,BFD向上层应用不停地上报BFD会话UP/DOWN的情况,提高了系统处理效率,同时可以减少BFD同转发等应用绑定时链路恢复时可能的丢包。
文档编号H04L29/06GK1921417SQ200510093049
公开日2007年2月28日 申请日期2005年8月25日 优先权日2005年8月25日
发明者杨平安 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1