一种确定双向转发检测会话故障位置的方法及系统的制作方法

文档序号:7889795阅读:335来源:国知局
专利名称:一种确定双向转发检测会话故障位置的方法及系统的制作方法
技术领域
本发明涉及数据通信领域,更具体的说,本发明尤其涉及一种确定双向转发检测 (Bidirectional Forwarding Detection,简称BFD)会话故障位置的方法及系统。
背景技术
为了减小设备故障对业务的影响,提供网络的可用性,设备需要尽快检测到与相邻设备间的通信故障,建立备用通道恢复通信,从来保证业务的继续进行。BFD检测是一种统一的检测机制,提供了一种通用的、标准的、介质和协议无关的快速检测机制,用于快速检测监控网络中链路或者IP路由的转发连通状况。BFD可以为各类应用例如路由协议,多标签协议交换MPLS (Multiprotocol Label Switch)链路等统一地快速检测两台路由器间双向转发路径的故障。BFD的基本工作原理包括连接的双方以协商的时间间隔周期性的双方互发BFD检测报文,如果在一定的检测倍数内均没有接收到对方发送的BFD检测报文,则可以判定检测路径故障。BFD的典型特点是可以提供转发平面的快速的检测,BFD检测报文的发送间隔一般情况可以到毫秒(甚至更小)级别,这样可能在若干检测周期超时后,BFD就可以因为检测超时而上报链路故障。正是由于BFD检测的精度要求非常高,也就会出现一个现象在当BFD会话双方设备互通时,一但发现链路故障,可能是在若干毫秒的间隔内,设备双方同时上报故障。以附BFD单跳会话场景为例路由器A设备、路由器B设备为网络中的核心设备,在路由器A与路由器B之间部署BFD会话,如果出现了链路故障,可能路由器A与路由器B同时检测到故障,但这时很难具体定位链路故障的真正位置,故障点究竟是路由器A与路由器B之间的链路不稳定,还是路由器A设备或是路由器B设备自身有故障点,更是无法定位设备内部的故障点(发送方出现丢包或是接收方出现丢包)。

发明内容
本发明要解决的技术问题是提供一种确定双向转发检测会话故障位置的方法及系统,解决现有技术中无法准确判断故障位置的问题。为了解决上述技术问题,本发明提供了一种确定双向转发检测会话故障位置的方法,其中,BFD会话的发端路由器中报文处理模块发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;所述发端路由器中内部发送模块、端口发送模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述BFD会话的收端路由器中端口接收模块、内部接收模块、报文处理模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;根据各模块的错误报文个数判断BFD会话的故障位置。进一步地,上述方法还可以具有以下特点
发端路由器中报文处理模块发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、 内部接收模块、报文处理模块将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。进一步地,上述方法还可以具有以下特点收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时,确定故障位置为收端路由器的端口接收模块和内部接收模块之间;收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时,确定故障位置为收端路由器的报文处理模块和内部接收模块之间;发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时,确定故障位置为发端路由器的端口发送模块和内部发送模块之间。进一步地,上述方法还可以具有以下特点所述预设初值为0,所述预设间隔为I。进一步地,上述方法还可以具有以下特点所述发端路由器和收端路由器之间的链路为直连链路。为了解决上述技术问题,本发明还提供了一种确定双向转发检测会话故障位置的系统,包括BFD会话的发端路由器和收端路由器以及故障位置判定模块,所述发端路由器包括报文处理模块、内部发送模块、端口发送模块,所述收端路由器包括端口接收模块、内部接收模块、报文处理模块;发端路由器中报文处理模块,用于发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;发端路由器中内部发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到端口发送模块;发端路由器中端口发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到链路;收端路由器中端口接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到内部接收模块;收端路由器中内部接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到报文处理模块;收端路由器中报文处理模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述故障位置判定模块,用于根据各模块的错误报文个数判断BFD会话的故障位置。
6
进一步地,上述系统还可以具有以下特点发端路由器中报文处理模块,用于将发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、内部接收模块、报文处理模块,还用于将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。进一步地,上述系统还可以具有以下特点所述故障位置判定模块,还用于判断收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;判断收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时, 确定故障位置为收端路由器的端口接收模块和内部接收模块之间;判断收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时, 确定故障位置为收端路由器的报文处理模块和内部接收模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时, 确定故障位置为发端路由器的端口发送模块和内部发送模块之间。进一步地,上述系统还可以具有以下特点所述预设初值为0,所述预设间隔为I。为了解决上述技术问题,本发明提供了一种路由器,包括报文处理模块、内部发送模块、端口发送模块、端口接收模块、内部接收模块、其中,报文处理模块,用于在所述路由器作为双向转发检测(BFD)会话的发端路由器时,在每个发送的BFD检测报文中标识此报文的序号;用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;内部发送模块,用于在所述路由器作为BFD会话的发端路由器时,根据收到的BFD 检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到端口发送模块;端口发送模块,用于在所述路由器作为BFD会话的发端路由器时,根据收到的BFD 检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到链路;端口接收模块,用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD 检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到内部接收模块;内部接收模块,用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD 检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到报文处理模块。本方案能简单可靠直接地判断BFD会话中故障位置,包括故障发生的设备以及故障设备的故障点,有利于提闻BFD技术中的检测精度。


图I是实施例中确定双向转发检测会话故障位置的系统结构图。
具体实施例方式如图I所示,确定双向转发检测会话故障位置的系统包括BFD会话的发端路由器和收端路由器以及故障位置判定模块,发端路由器包括报文处理模块、内部发送模块、端口发送模块;收端路由器包括端口接收模块、内部接收模块、报文处理模块。应用中的路由器中同时包括负责发端功能和收端功能的各模块。发端路由器中报文处理模块,用于发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;其中,可以将报文序号携带于IP头部中的标识(Identification)字段。发端路由器中内部发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到端口发送模块;发端路由器中端口发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到链路;收端路由器中端口接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到内部接收模块;收端路由器中内部接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到报文处理模块;收端路由器中报文处理模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述故障位置判定模块,用于根据各模块的错误报文个数判断BFD会话的故障位置。具体的,发端路由器中报文处理模块,用于将发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、内部接收模块、报文处理模块,还用于将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。 典型应用中预设初值为0,所述预设间隔为I。故障位置判定模块判断故障位置的方式包括判断收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;判断收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时, 确定故障位置为收端路由器的端口接收模块和内部接收模块之间;判断收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时, 确定故障位置为收端路由器的报文处理模块和内部接收模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时, 确定故障位置为发端路由器的端口发送模块和内部发送模块之间。
确定双向转发检测会话故障位置的方法包括BFD会话的发端路由器中报文处理模块发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;发端路由器中内部发送模块、端口发送模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;BFD会话的收端路由器中端口接收模块、内部接收模块、报文处理模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;根据各模块的错误报文个数判断BFD会话的故障位置。发端路由器中报文处理模块发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、内部接收模块、报文处理模块将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。典型应用中预设初值为0, 所述预设间隔为I。故障位置判断的方式包括收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时,确定故障位置为收端路由器的端口接收模块和内部接收模块之间;收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时,确定故障位置为收端路由器的报文处理模块和内部接收模块之间;发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时,确定故障位置为发端路由器的端口发送模块和内部发送模块之间。本方案典型应用于所述发端路由器和收端路由器之间的链路为直连链路,例如多协议标签交换(Multiprotocol Label Switch,简称MPLS)标记交换路径LSP (Label Switch Path,简称 LSP)。其中,BFD会话的工作模式可以是异步模式也可以是回声模式。下面通过具体实施例对本发明的具体实施方式
作进一步详细描述在路由器A与路由器B设备之间建立BFD会话。BFD会话的工作模式是异步模式,具体包括以下步骤步骤A,当路由器A或B创建会话m,则路由器A和B都为会话m在设备内端口接收模块创建接收报文错误计数R1、期待报文序列号Els,在端口发送模块创建发送报文错误计数SI、和Elr,共四个计数值,四者都设置为O。在内部接收模块创建报文接收错误计数R2和期待报文序列号E2r 二个计数值,两者都设置为0 ;在内部发送模块设置报文接收错误计数S2和期待报文序列号E2s,两者都设置为 0 ;在报文处理模块设置接收报文错误计数R3和期待报文序列号E3,两者都设置为O。步骤B,发送方报文处理模块开始发送第一个BFD报文,报文中IP头部的序列号设置为0,第二个报文序列号设置为1,后续每个BFD报文的IP头部的序列号是前一个报文的序列号加1,以此类推;步骤C,发送方内部发送模块接收到报文处理模块发送的报文,将报文序列号和 E2s进行比较,如果二者不等,则增加S2计数一次,如果二者相等,则不增加S2,而不论二者是否相等,都将收到的报文的序列号加I后的数值写入到E2s。步骤D,发送方端口发送模块收到报文发送模块的报文,将报文序列号和Els进行比较,如果二者不等,则增加Si数一次,如果二者相等,则不增加SI,而不管二者是否相等, 都将收到的报文的序列号加I后的数值写入到E1S,并报文发送到链路;步骤E,接收方端口接收模块收到链路上的本BFD会话的报文,将报文序列号和 Elr进行比较,如果二者不等,则增加Rl数一次,如果二者相等,则不增加R1,而不管二者是否相等,都将收到的报文的序列号加I后的数值写入到Elr。步骤F,接收方内部接收模块收到端口接收模块投递的报文,将报文序列号和E2r 进行比较,如果二者不等,则增加R2计数一次,如果二者相等,则不增加R2,而不论二者是否相等,都将收到的报文的序列号加I后的数值写入到E2r。步骤G,接收方报文处理模块接收到内部接收模块投递的报文,将报文序列号和 E3进行比较,如果二者不等,则增加R3计数一次,如果二者相等,则不增加R3,而不管二者是否相等,都将收到的报文的序列号加I后的数值写入到E3。步骤H,当会话m检测故障,则查看错误计算Rl,R2,R3,SI,S2I)如果Rl有错误计数,则至少说明网络或者对方设备存在故障,本端设备没有故障点;2)如果Rl和R2有同样的错误计数,则说明本设备端口模块和报文接收模块间不存在故障。反之,如果R2 > R1,则说明本设备端口模块和报文接收模块间存在故障;3)如果R2和R3有同样的错误计数,则说明本设备报文接收模块和报文处理模块间不存在故障。反之,如果R3 > R2,则说明本设备端口模块和报文接收模块间存在故障;4)如果S2有错误计数,则说明本设备报文处理模块和报文发送模块间存在故障;5)如果SI有同样的错误计数,则说明本设备报文发送模块和端口模块间不存在故障。反之,如果SI > S2,则说明本设备端口模块和报文发送模块间存在故障。BFD会话工作模式为回声模式,其处理与上述描述同理。本发明提供的方案,在直连链路场景下BFD检测到链路故障的场景下,能简单精确地通过本方法判断故障的原因和故障发生的设备以及设备内部的故障点,同时本发明完全遵循现有BFD标准,并不需要对现有标准进行扩充,这个特点益于本发明广泛推广。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
权利要求
1.一种确定双向转发检测会话故障位置的方法,其中,双向转发检测(BFD)会话的发端路由器中报文处理模块发送BFD检测报文时,在每个 BFD检测报文中标识此报文的序号;所述发端路由器中内部发送模块、端口发送模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述BFD会话的收端路由器中端口接收模块、内部接收模块、报文处理模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;根据各模块的错误报文个数判断BFD会话的故障位置。
2.如权利要求I所述的方法,其特征在于,发端路由器中报文处理模块发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、内部接收模块、报文处理模块将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。
3.如权利要求2所述的方法,其特征在于,收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时,确定故障位置为收端路由器的端口接收模块和内部接收模块之间;收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时,确定故障位置为收端路由器的报文处理模块和内部接收模块之间;发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时,确定故障位置为发端路由器的端口发送模块和内部发送模块之间。
4.如权利要求I所述的方法,其特征在于,所述预设初值为0,所述预设间隔为I。
5.如权利要求I所述的方法,其特征在于,所述发端路由器和收端路由器之间的链路为直连链路。
6.一种确定双向转发检测会话故障位置的系统,其中,包括双向转发检测(BFD)会话的发端路由器和收端路由器以及故障位置判定模块,所述发端路由器包括报文处理模块、内部发送模块、端口发送模块,所述收端路由器包括端口接收模块、内部接收模块、报文处理模块;发端路由器中报文处理模块,用于发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;发端路由器中内部发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到端口发送模块;发端路由器中端口发送模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到链路;收端路由器中端口接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到内部接收模块;收端路由器中内部接收模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到报文处理模块;收端路由器中报文处理模块,用于根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述故障位置判定模块,用于根据各模块的错误报文个数判断BFD会话的故障位置。
7.如权利要求6所述的系统,其特征在于,发端路由器中报文处理模块,用于将发送的BFD检测报文的序号以预设初值为序号初始值并将序号以预设间隔更新;所述发端路由器中内部发送模块、端口发送模块、收端路由器中端口接收模块、内部接收模块、报文处理模块,还用于将期待报文序号初始化为所述预设初值,在收到BFD检测报文后判断BFD检测报文中的序号与相应期待报文序号不同时,增加相应的错误报文个数的值,并以所述预设间隔更新所述期待报文序号。
8.如权利要求7所述的系统,其特征在于,所述故障位置判定模块,还用于判断收端路由器中端口接收模块对应的错误报文个数表示为Rl非零时,确定故障位置为网络或发端路由器;判断收端路由器中内部接收模块对应的错误报文个数表示为R2大于所述Rl时,确定故障位置为收端路由器的端口接收模块和内部接收模块之间;判断收端路由器中报文处理模块对应的错误报文个数表示为R3大于所述R2时,确定故障位置为收端路由器的报文处理模块和内部接收模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为S2非零时,确定故障位置为发端路由器的报文处理模块和内部发送模块之间;判断发端路由器中端口发送模块对应的错误报文个数表示为SI大于所述S2时,确定故障位置为发端路由器的端口发送模块和内部发送模块之间。
9.如权利要求6所述的系统,其特征在于,所述预设初值为0,所述预设间隔为I。
10.一种路由器,包括报文处理模块、内部发送模块、端口发送模块、端口接收模块、内部接收模块、其中,报文处理模块,用于在所述路由器作为双向转发检测(BFD)会话的发端路由器时,在每个发送的BH)检测报文中标识此报文的序号;用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;内部发送模块,用于在所述路由器作为BFD会话的发端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到端口发送模块; 端口发送模块,用于在所述路由器作为BFD会话的发端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到链路;端口接收模块,用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到内部接收模块;内部接收模块,用于在所述路由器作为BFD会话的收端路由器时,根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数,并将BFD检测报文发送到报文处理模块。
全文摘要
本发明公开了一种确定双向转发检测会话故障位置的方法及系统,其中,双向转发检测(BFD)会话的发端路由器中报文处理模块发送BFD检测报文时,在每个BFD检测报文中标识此报文的序号;所述发端路由器中内部发送模块、端口发送模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;所述BFD会话的收端路由器中端口接收模块、内部接收模块、报文处理模块分别根据收到的BFD检测报文的个数和报文中的序号确定错误报文个数;根据各模块的错误报文个数判断BFD会话的故障位置。本方案能简单可靠直接地判断BFD会话中故障位置,包括故障发生的设备以及故障设备的故障点,有利于提高BFD技术中的检测精度。
文档编号H04L12/26GK102594600SQ20121003948
公开日2012年7月18日 申请日期2012年2月21日 优先权日2012年2月21日
发明者张丽晖, 罗曙晖, 郭剑, 陈娟娟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1