一种双向转发检测报文的处理装置及方法

文档序号:7743040阅读:122来源:国知局
专利名称:一种双向转发检测报文的处理装置及方法
技术领域
本发明涉及数据通信领域,特别是指一种双向转发检测(BFD)报文的处理装置及方法。
背景技术
随着通信技术的发展,传统话音交换网络向IP网络转变在网络建设中逐渐成为 现实,运营商已经基本停止新建传统话音交换网络,逐渐向IP承载方向发展。但是,目前传 统的IP网络是一种尽力而为的服务模型,即IP网络关注的是报文发送是否成功,而不考虑 是否接收,服务质量、可靠性等都无法达到传统话音交换网络的水平。传统话音交换网络对 网络链路的可靠性更敏感,在网络链路出现故障时,可以在50ms内实现主用链路与备用链 路的倒换,这样,在IP网络中就需要一种技术可以快速的检测链路故障,BFD协议就是其中 的一种。目前,BFD协议有V0和VI两个版本,较早接入的网络设备只支持V0版本,新入网 设备在支持VI版本基础上向下兼容V0版本。BFD V0协议中,会话主动端发送H = 0的协 商报文,会话被动端收到协商报文后,回复H= 1的响应报文,会话主动端收到H= 1的响 应报文后再发送H= 1的协商报文,经过3次握手后建立会话链路,双方开始发送H= 1的 检测报文,如果会话中的一方在足够长的时间内没有收到对方发送的检测报文,则说明链 路出现故障。可以看出,当会话一端收到一个H= 1的报文后,无法只根据报文内容区分出 该报文是协商报文,还是检测报文,而必须参考该报文对应的会话状态机,所述会话状态机 用于确定会话状态。由于BFD需要支持快速检测,其检测报文的发送速率为毫秒级别,因此一般由网 络处理器(NP)实现检测报文的发送和检测,CPU只用来处理会话协商过程。由于V0版本 的缺陷,要区别出检测报文和协商报文,需要在NP上维护一个会话状态机,由于会话状态 机运作复杂,对大部分NP而言是很难实现的,因此一般会话状态机只在CPU上维护,CPU通 过会话状态机判断会话建立后,将会话信息整合下发到NP,所述会话信息包括根据会话协 议规定的双方约定信息、收发报文频率以及本地连接标识符(LD)等,此后NP开始发送检测 报文。对于收到的H= 1的报文,NP可以根据报文中的Your Discriminator (YD)索引会 话信息,如果索引到,即认为是检测报文,所述YD为报文发送方携带的报文接收方的LD,如 果索引不到会话信息,即认为是协商报文,上送给CPU处理。但是,这种处理方式存在一定的问题,对于H = 0的报文,NP可直接发送给CPU,但 是当会话双方的链路断开后,会话一端的CPU会删除会话信息,对于H= 1的报文,NP无法 区分是属于检测报文还是协商报文,这时,另一端的会话信息如果尚未删除,则正常发送检 测报文,已经删除会话信息的会话端NP收到检测报文后,查找不到会话信息,便无法区分 是检测报文还是协商报文,只能发送给CPU,检测报文以ms为单位发送,这样会对CPU造成 冲击,如果是人为构造会话信息不存在的检测报文攻击,对网络系统的影响将更为严重。

发明内容
有鉴于此,本发明的主要目的在于提供一种BFD报文的处理装置及方法,可以有 效的避免BFD报文对CPU的冲击,保持网络系统的稳定性及安全性。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种双向转发检测BFD报文的处理装置,包括会话协商单元,用于分配本地连接标识符LD,发送或接收报文;会话状态设置单元,用于设置本地会话信息表中会话协商单元分配的LD对应的 toCpu的值;网络处理器NP,用于根据toCpu的值确定报文类型。上述方案中,还包括会话初始化单元,用于初始化本地会话信息表,将条目中 toCpu的值初始化。上述方案中,所述会话协商单元位于会话主动端时,具体用于建立会话时,为会 话分配LD,发送H = 0的报文,将分配LD消息发送给会话状态设置单元,接收会话被动端发 送的响应报文,回复H = 1的协商报文;所述NP具体用于收到H = 1的报文后,根据报文 中携带的YD查找本地会话信息表中的条目,根据条目toCpu的值确定报文处于协商阶段, 将报文发送给CPU ;所述会话协商单元位于会话被动端时,具体用于接收H = 0的报文后, 给该会话分配LD,将分配LD的消息发送给会话状态设置单元,发送H = 1的响应报文;所 述会话状态设置单元,用于接收分配LD消息后,将LD对应的本地会话信息表条目中toCpu 设置为处于协商阶段。上述方案中,所述会话协商单元具体用于确定建立会话链路,将建立会话链路的 消息发送给会话状态设置单元;相应的,会话状态设置单元具体用于将本地会话信息表 中会话对应条目的toCpu设置为处于检测阶段。上述方案中,还包括会话拆除单元,用于会话链路断开时,清除会话信息。本发明还提供了一种BFD报文的处理方法,包括会话协商单元分配LD、发送或接收报文,会话状态设置单元设置会话LD对应条目 中toCpu的值,NP根据接收报文索引到的toCpu的值确定报文类型。上述方案中,所述会话协商单元分配LD、发送或接收报文之前,进一步包括会话 初始化单元以LD为索引初始化本地会话信息表,所述本地会话信息表的条目包含toCpu字 段,会话初始化单元将条目中toCpu设置为处于检测阶段。上述方案中,所述会话协商单元分配LD、发送或接收报文,包括建立会话,会话 主动端的会话协商单元分配LD并发送H = 0的报文,会话主动端的会话状态设置单元将本 地会话信息表中LD对应条目的toCpu设置为处于协商阶段;会话被动端的会话协商单元收 到H = 0的报文并给会话分配LD,发送H = 1的响应报文,会话被动端的会话状态设置单元 将本地会话信息表中LD对应条目的toCpu设置为处于协商阶段。上述方案中,所述设置发送报文携带的LD对应条目中toCpu的值,包括会话协商 单元确定会话链路建立后,将会话链路建立的消息发送给会话状态设置单元,会话状态设 置单元将本地会话信息表中该会话LD对应条目的toCpu设置为处于检测阶段。上述方案中,进一步包括会话链路断开时,会话拆除单元清除会话信息。由此可见,采用本发明提供的BFD报文的处理装置及方法,通过本地会话信息表
5中toCpu的值确定报文类型,从而有效的避免了检测报文对CPU的冲击。


图1为本发明实现BFD报文的处理装置组成示意图;图2为本发明实现BFD报文的处理方法流程示意图。
具体实施例方式本发明的基本思想是开始建立会话时,会话协商单元为会话分配LD,发送或接 收协商报文,会话状态设置单元设置LD对应条目中toCpu的值,NP根据toCpu的值确定报 文类型;其中,发送报文的过程即为一个会话。下面通过一个优选实施例来对本发明进行详细说明,如图1所示本发明提供了一种防止BFD报文冲击CPU的装置,该装置包括会话协商单元 102、会话状态设置单元103和NP 105。会话协商单元102用于给会话分配本地连接标识符 (LD),发送或接收协商报文;会话状态设置单元103用于设置本地会话信息表(bfdTable) 中会话协商单元102分配的LD对应的toCpu的值;NP 105,用于根据toCpu的值确定报文 的类型;其中,所述bfdTable大小为本地可分配的LD的范围,其条目包含协议规定的BFD 会话信息和toCpu字段,所述LD相当于bfdTable条目的索引号,所述toCpu的值为1时, 表示处于协商阶段,接收的报文为协商报文,toCpu的值为0时,表示处于检测阶段,接收的 报文为检测报文。会话协商单元102、会话状态设置单元103和NP 105可以位于会话主动端,也可以 位于会话被动端;具体地,会话主动端的会话协商单元102,具体用于建立会话时,为会话分配LD, 发送H = 0的报文,将分配LD消息发送给会话状态设置单元103,接收会话被动端发送的H =1的响应报文,回复H= 1的协商报文,所述协商报文中包含会话主动端LD以及YD,YD 即会话被动端的LD ;会话被动端的会话协商单元102,具体用于接收H = 0的报文后,给该会话分配 LD并保存到本地会话信息表,将分配LD的消息发送给会话状态设置单元103,发送H = 1 的响应报文,所述响应报文中包含YD、即会话主动端LD,以及会话被动端LD ;相应的,会话状态设置单元103,用于接收分配LD消息后,将LD对应的本地会话信 息表条目中toCpu置1 ;NP 105,用于接收H = 0的报文后,直接将报文发送给CPU ;接收H = 1的报文后, 根据报文中携带的YD查找bfdTable中的条目,如果YD对应条目中toCpu的值为1,则将报 文发送给CPU,如果YD对应条目中toCpu的值为0,则将报文丢弃。具体地,会话协商单元102,用于在建立会话时,为会话分配LD,发送或接收报文, 同时将分配LD的消息发送给会话状态设置单元103,所述分配是将任意未使用的LD分配给 会话;确定会话可以建立后,建立会话链路并将会话链路建立的消息发送给会话状态设置 单元103 ;
会话状态设置单元103,用于在建立会话时,将bfdTable表中会话协商单元102分 配给会话的LD对应条目的toCpu的值置1 ;在会话链路建立后,将bfdTable表中LD对应 条目的toCpu的值置0;其中,会话协商单元102具体用于,确定会话链路建立,并将会话链路建立的消息 发送给会话状态设置单元103 ;相应的,会话状态设置单元103,用于收到会话链路建立的消息后将bfdTable表 中会话号LD对应条目的toCpu设置为0。该装置还包括会话初始化单元101,用于初始化时,在NP上建立bfdTable,将 bfdTable条目中的toCpu的值初始化,即将toCpu字段设置为0,其他字段值均为无效值, 同时初始化条目中的会话信息。该装置进一步包括会话拆除单元104,用于会话断开后,清除会话信息。本发明还提供了一种防止BFD报文冲击CPU的方法,如图2所示步骤201,初始化bfdTable,将各条目中toCpu的值置0 ;初始化的具体过程为会话初始化单元以LD为索引,将bfdTable表中各LD对应条 目的toCpu的值均置0,所述LD为bfdTable条目的索引号;步骤202,建立会话,设置条目中报文携带的LD对应的toCpu的值。开始建立会话,首先由会话主动端的会话协商单元任意分配一个未使用的LD,发 送报文并将给会话分配LD的消息发送给会话状态设置单元,所述报文中H = 0,会话状态设 置单元将bfdTable表中会话协商单元分配的LD对应条目的toCpu的值置1 ;会话被动端的NP收到H = 0的报文后,发送给CPU,会话协商单元给该会话分配一 个LD,将分配LD的消息发送给会话状态设置单元,会话状态设置单元将bfdTable表中LD 对应条目的toCpu的值置1 ;至此,会话主动端及会话被动端的LD均已被确定。会话被动端的会话协商单元发送响应报文并携带会话被动端的LD以及会话主动 端的LD,所述响应报文中H = 1 ;会话主动端的NP收到H = 1的响应报文后,根据响应报文中YD,即会话主动端的 LD,索引bfdTable表,若表中LD对应条目的toCpu的值为1,说明此响应报文为协商报文, 将响应报文发送给CPU,若表中LD条目对应的toCpu的值为0,说明此响应报文为检测报 文,将报文丢弃。会话被动端的NP收到H= 1的响应报文后,根据响应报文中YD,即会话被 动端的LD,索引bfdTable表,若LD对应条目的toCpu的值为1,说明此响应报文为协商报 文,将响应报文发送给CPU,若LD对应条目的toCpu的值为0,说明此响应报文为检测报文, 将报文丢弃。会话协商单元确定建立会话链路后,将建立会话链路的消息发送给会话状态设置 单元,会话状态设置单元将bfdTable表中会话LD对应的toCpu置0,这样后续H = 1的报 文将不会再发送给CPU。步骤203,会话链路断开,根据toCpu的值确定报文类型。会话链路断开后,会话一端的会话拆除单元将会话信息清除,如果会话另一端 的会话信息仍然存在,会话信息清除的一端的NP接收报文后,根据报文携带的YD,索引 bfdTable条目中YD对应的toCpu的值,确定接收的报文的类型,若toCpu为0,则接收的报 文为检测报文,若toCpu为1,则接收的报文为协商报文,发送给CPU。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种双向转发检测BFD报文的处理装置,其特征在于,该装置包括会话协商单元,用于分配本地连接标识符LD,发送或接收报文;会话状态设置单元,用于设置本地会话信息表中会话协商单元分配的LD对应的toCpu的值;网络处理器NP,用于根据toCpu的值确定报文类型。
2.根据权利要求1所述的装置,其特征在于,该装置还包括会话初始化单元,用于初始化本地会话信息表,将条目中toCpu的值初始化。
3.根据权利要求1所述的装置,其特征在于,所述会话协商单元位于会话主动端时,具体用于建立会话时,为会话分配LD,发送H =0的报文,将分配LD消息发送给会话状态设置单元,接收会话被动端发送的响应报文,回 复H = 1的协商报文;所述NP具体用于收到H= 1的报文后,根据报文中携带的YD查找本地会话信息表中 的条目,根据条目toCpu的值确定报文处于协商阶段,将报文发送给CPU ;所述会话协商单元位于会话被动端时,具体用于接收H = 0的报文后,给该会话分配 LD,将分配LD的消息发送给会话状态设置单元,发送H = 1的响应报文;所述会话状态设置单元,用于接收分配LD消息后,将LD对应的本地会话信息表条目中 toCpu设置为处于协商阶段。
4.根据权利要求3所述的装置,其特征在于,所述会话协商单元具体用于确定建立会话链路,将建立会话链路的消息发送给会话 状态设置单元;相应的,会话状态设置单元具体用于将本地会话信息表中会话对应条目的toCpu设 置为处于检测阶段。
5.根据权利要求1至4任一所述的装置,其特征在于,该装置还包括会话拆除单元,用于会话链路断开时,清除会话信息。
6.一种BFD报文的处理方法,其特征在于,该方法包括会话协商单元分配LD、发送或接收报文,会话状态设置单元设置会话LD对应条目中 toCpu的值,NP根据接收报文索引到的toCpu的值确定报文类型。
7.根据权利要求6所述的方法,其特征在于,所述会话协商单元分配LD、发送或接收报 文之前,进一步包括会话初始化单元以LD为索引初始化本地会话信息表,所述本地会话信息表的条目包 含toCpu字段,会话初始化单元将条目中toCpu设置为处于检测阶段。
8.根据权利要求7所述的方法,其特征在于,所述会话协商单元分配LD、发送或接收报 文,包括建立会话,会话主动端的会话协商单元分配LD并发送H = 0的报文,会话主动端的会 话状态设置单元将本地会话信息表中LD对应条目的toCpu设置为处于协商阶段;会话被动 端的会话协商单元收到H = 0的报文并给会话分配LD,发送H = 1的响应报文,会话被动端 的会话状态设置单元将本地会话信息表中LD对应条目的toCpu设置为处于协商阶段。
9.根据权利要求7所述的方法,其特征在于,所述设置发送报文携带的LD对应条目中 toCpu的值,包括会话协商单元确定会话链路建立后,将会话链路建立的消息发送给会话状态设置单 元,会话状态设置单元将本地会话信息表中该会话LD对应条目的toCpu设置为处于检测阶 段。
10.根据权利要求6至9任一所述的方法,其特征在于,该方法进一步包括 会话链路断开时,会话拆除单元清除会话信息。
全文摘要
本发明提供了一种双向转发检测BFD报文的处理装置,会话协商单元,用于分配本地连接标识符LD、发送或接收报文;会话状态设置单元,用于设置本地会话信息表中会话协商单元分配的LD对应的toCpu的值;网络处理器NP,用于根据toCpu的值确定报文类型。本发明还提供了一种双向转发检测BFD报文的处理方法,采用本装置及方法,可以有效的避免BFD报文冲击CPU,提高系统的稳定性及安全性。
文档编号H04L12/56GK101800677SQ201010119149
公开日2010年8月11日 申请日期2010年2月24日 优先权日2010年2月24日
发明者姜海明, 钱勇, 陈春雷 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1