一种报文处理方法和装置与流程

文档序号:12492407阅读:143来源:国知局
一种报文处理方法和装置与流程

本发明涉及计算机通信领域,特别涉及一种报文处理方法和装置。



背景技术:

在部署有高级数据链路控制(High-level Data Link Control-HDLC)捆绑口和BFD的网络中,有时候需要对HDLC捆绑口进行扩容,以扩容HDLC链路的带宽,即在路由设备之间增加新的物理POS(Packet over SONET/SDH)接口(成员端口),其中,BFD(Bidirectional Forwarding Detection-双向转发检测)提供了一个通用的、标准化的、介质无关、协议无关的快速故障检测机制,可以为各上层协议如路由协议、MPLS等统一地快速检测两台路由设备间双向转发路径的故障。举例而言,在两个路由设备之间原来部署有HDLC捆绑口,但各自只有1个成员端口,在路由设备DUT1上是PORT1,在DUT2上是PORT2,PORT1和PORT2之间的链路1即为路由设备DUT1和DUT2之间通过HDLC捆绑的链路,同时PORT1和PORT2上部署BFD,同OSPF(Open Shortest Path Firs-开放式最短路径优先)路由协议联动,就可以探测链路1是否故障。

对HDLC捆绑口进行扩容,就是在两个路由设备上分别增加一个成员端口,即在两个路由设备之间增加一条链路。但是,由于两个成员端口加入HDLC存在时间差,在报文传输过程中,会产生BFD震荡,即由于先加入HDLC的成员端口由于符合HDLC捆绑口成员端口的条件,会开始传输报文,但对端的成员端口还未加入HDLC的话,那该成员端口接收到的报文就会被当成异常报文而被丢弃,无法对先加入HDLC的成员端口进行回复,先加入HDLC的成员端口如果在预定时间内未收到对端成员端口的回复报文,就会认为没有收到对端路由设备的报文,就会判断BFD会话断开了,当对端的成员端口加入HDLC后,会判断该BFD会话处于连接状态。如图1所示,分别将PORT3和PORT4加入到HDLC中,假设PORT3先加入HDLC中并生效,对于路由设备DUT1来说,HDLC捆绑口就有2个成员口了,分别为PORT1和PORT3;采用现有技术,按预定的负载均衡算法计算,DUT1发往路由设备DUT2的BFD保活UP报文,有一定的可能性会从PORT1迁移到PORT3,也就是,DUT1和DUT2之间的 BFD会话会哈希到链路2上,而DUT2上的PORT4还未加入到HDLC,PORT4收到的BFD UP报文就会全部被当成异常报文而丢弃,超过一定周期后,DUT2就会认为没有收到DUT1的对应的BFD UP报文,并判断该对应的BFD会话处于断开状态了,继而会通知OSPF也断开,引发流量中断,导致BFD震荡。



技术实现要素:

本发明实施例公开了一种报文处理方法及装置,以实现有效地解决HDLC捆绑链路上新增成员端口导致的BFD震荡。具体方案如下:

一方面,本发明实施例提供了一种报文处理方法,应用于第一路由设备,其中,所述第一路由设备与第二路由设备连接,所述第一路由设备与所述第二路由设备之间部署有高级链路控制HDLC捆绑口和双向转发检测BFD,所述方法包括:

在检测到所述第一路由设备增设成员端口时,通过所述第一路由设备中除所述增设成员端口以外的成员端口,向所述第二路由设备发送所述第一路由设备中的当前BFD会话对应的报文;

将所述当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话;

复制所述第一BFD会话的当前待发送的报文,并确定所复制的报文为当前参考报文;

通过所述增设成员端口向所述第二路由设备发送所述当前参考报文;

获得所述增设成员端口接收的所述第二路由设备向所述第一路由设备发送的目标报文;

判断所述目标报文是否为所述当前参考报文所对应的回应报文,如果否,返回执行所述复制所述第一BFD会话的当前待发送的报文的步骤。

另一方面,本发明实施例提供了一种报文处理装置,应用于第一路由设备,其中,所述第一路由设备与第二路由设备连接,所述第一路由设备与所述第二路由设备之间部署有高级链路控制HDLC捆绑口和双向转发检测BFD,所述装置包括:第一报文发送模块、第一BFD会话确定模块、当前参考报文确定模块、当前参考报文发送模块、目标报文获得模块和目标报文判断模块;

所述第一报文发送模块:用于在检测到所述第一路由设备增设成员端口时,通过所述第一路由设备中除所述增设成员端口以外的成员端口,向所述第二路由设备发送所述第一路由设备中的当前BFD会话对应的报文;

所述第一BFD会话确定模块:用于将所述当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话;

所述当前参考报文确定模块:用于复制所述第一BFD会话的当前待发送的报文,并确定所复制的报文为当前参考报文;

所述当前参考报文发送模块:用于通过所述增设成员端口向所述第二路由设备发送所述当前参考报文;

所述目标报文获得模块:用于获得所述增设成员端口接收的所述第二路由设备向所述第一路由设备发送的目标报文;

所述目标报文判断模块:用于判断所述目标报文是否为所述当前参考报文所对应的回应报文,如果否,返回触发所述当前参考报文确定模块。

本方案中,在检测到该第一路由设备增设成员端口时,并非直接将增设成员端口应用于报文负载分担过程,而是,首先通过该第一路由设备中除该增设成员端口以外的成员端口,向该第二路由设备发送该第一路由设备中的当前BFD会话对应的报文,保证路由业务(BFD会话)正常被处理,进而,将该当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话,复制该第一BFD会话的报文,并通过该增设成员端口发送当前参考报文到第二路由设备的增设成员端口,以检测第二路由设备的增设成员端口是否加入HDLC,并在未收到关于第一BFD会话的回应报文时,循环执行检测第二路由设备的增设成员端口是否加入HDLC的步骤,避免了在第二路由设备中的增设成员端口加入HDLC前,该第一路由设备由于未接收到关于第一BFD会话的回应报文而导致该第一路由设备判断该第一BFD会话处于断开状态的情况,以实现在保证不影响正常路由业务处理的前提下,有效地解决HDLC捆绑链路上新增成员端口导致的BFD震荡。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种报文处理方法的流程示意图;

图2为本发明实施例提供的一种报文处理方法的另一流程示意图;

图3为本发明实施例提供的一种报文处理装置的结构示意图;

图4为本发明实施例提供的一种报文处理装置的另一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种报文处理方法及装置,以实现有效地解决HDLC捆绑链路上新增成员口导致的BFD震荡。

下面首先对本发明实施例所提供的一种报文处理方法进行介绍。

需要说明的是,本发明实施例所提供的一种报文处理方法可以应用于第一路由设备,其中,该第一路由设备与第二路由设备连接,该第一路由设备与该第二路由设备之间部署有高级链路控制HDLC捆绑口和双向转发检测BFD。进一步的,该第二路由设备也可以作为第一路由设备,该第一路由设备可以是部署有HDLC捆绑口和BFD的网络中的任一路由设备。该BFD会联动OSPF(Open Shortest Path Firs-开放式最短路径优先),OSPF是一种典型的链路状态(Link-state)的路由协议,BFD联动OSPF属于现有技术,在此不做赘述。并且,对HDLC捆绑口进行扩容,就是在两个路由设备上分别增设一个成员端口,即在该两个路由设备之间增加一条传输报文的链路。另外,需要强调的是,本发明实施例 中的“第一路由设备”中的“第一”和“第二路由设备”中的“第二”仅仅用于从命名上区分不同的路由设备,并不具有任何限定意义。

如图1所示,本发明实施例所提供的一种报文处理方法,可以包括步骤:

S101:在检测到该第一路由设备增设成员端口时,通过该第一路由设备中除该增设成员端口以外的成员端口,向该第二路由设备发送该第一路由设备中的当前BFD会话对应的报文;

可以理解的是,该第一路由设备在检测到自身增设成员端口时,该第一路由设备仍保持原有的负载分担算法,对存在的当前BFD会话进行负载分担,即该当前BFD会话对应的报文仍各自保持以当前对应的成员端口进行发送。也可以理解为该当前BFD会话对应的报文未被分担到该增设成员端口进行发送。其中,需要说明的是,当该第一路由设备检测到自身增设成员端口时,该增设成员端口已正式成为HDLC捆绑口的成员端口,可以执行发送BFD会话对应的报文的动作。

其中,对于本发明实施例中所提到的报文均可以认为是关于BFD的UP报文,该UP报文是BFD的协议报文中的一种,可以看作是BFD会话建立成功后的所发送的一种保活报文。BFD会话分担到不同成员端口后,可以通过该BFD会话对应的保活报文探测与对端的链路的状态。举例而言,路由设备1(成员端口1和2)和路由设备2(成员端口3和4)部署有HDLC捆绑口与BFD,成员端口1和3组成链路1,成员端口2和4组成链路2,对于路由设备1和路由设备2之间构建的BFD会话有BFD会话1和BFD会话2。利用负载分担算法将该BFD会话1分担到了链路1上,该BFD会话2分担到了链路2上,则该BFD会话1对应的UP报文可以探测链路1的状态,该BFD会话2对应的UP报文可以探测链路2的状态。当路由设备1通过链路1向路由设备2发送BFD会话1对应的UP报文,路由设备2接收后,可以判断链路1正常,BFD会话1处于连接状态;如果路由设备2超过一定时间未收到路由设备1的BFD会话1对应的UP报文,则判断BFD会话1处于断开状态了,继而会通知联动的OSPF也断开,引发流量中断。

S102:将该当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话;

需要说明的是,对于该第一路由设备中的当前BFD会话,其建立时间不同,其持续连接时长也就各有不同,或者,由于该BFD会话不稳定,会出现断开的状态,在BFD会话再次连接时,重新计算持续连接时长,则其持续连接时长也就各有不同。持续连接时间最长的BFD会话可以认为是相对稳定的BFD会话,选择该类BFD会话进行后续的报文处理流程,当出现被判断为BFD会话处于断开状态时,可以排除BFD会话自身不稳定的原因,可以唯一确定是由于链路不通,即第二路由设备中的增设成员端口未加入HDLC。可以理解的是,该BFD会话持续连接时长越长,可以认为该BFD会话越稳定,即可以确定该持续连接时间最长的BFD会话为最稳定的BFD会话。

S103:复制该第一BFD会话的当前待发送的报文,并确定所复制的报文为当前参考报文;

在实际应用中,该第一BFD会话中也许会存在许多报文,复制该第一BFD会话的当前待发送的报文,是为了与发送该第一BFD会话对应的报文的成员端口达到同步的目的。其中,该复制该第一BFD会话的当前待发送的报文可以采用现有技术,在此不做赘述。

S104:通过该增设成员端口向该第二路由设备发送该当前参考报文;

需要说明的是,复制该第一BFD会话的当前待发送的报文,并且通过该增设成员端口发送该所复制的当前参考报文,是为了避免该第一路由设备的增设成员端口对应的第二路由设备中的增设成员端口未加入HDLC,而导致第二路由设备接收不到第一BFD会话当前待发送的报文,认为第一BFD会话处于断开状态的情况。

在实际应用中,对于报文的发送都是有规律的,具体的,所述通过该增设成员端口向该第二路由设备发送该当前参考报文,可以包括:以预定发送频率,通过该增设成员端口向该第二路由设备发送该当前参考报文。

实际应用中,正常情况下的一BFD会话对应的报文一般有100ms/个、10ms/个和1s/个,由于对于该HDLC捆绑口进行扩容,该两个路由设备增设成员端口的时间差是不确定的,因此可以将该增设成员端口的发送当前参考报文的时间间隔稍长一些,以使该第一路由设备与第二路由设备通过该增设成员端口进行报文传输的时间稍长些,对于后续的检测流程的时间也会稍长些。该预定发送频 率可以为1s/个。

S105:获得该增设成员端口接收的该第二路由设备向该第一路由设备发送的目标报文;

需要说明的是,该第一路由设备与第二路由设备之间的的成员端口都是对应存在的,在进行报文传输时,该报文的发送和接收也存在对应性。举例而言,BFD会话1对应的报文由第一路由设备的成员端口1发送给第二路由设备的成员端口2,该第二路由设备所发送的对该BFD会话1对应的报文的目标报文(回应报文),也会由该成员端口2发送给成员端口1,但实际上,该成员端口1与成员端口2并不一定只会相互传输该BFD会话1对应的报文,并且发送的报文也有可能出错。

S106:判断该目标报文是否为该当前参考报文所对应的回应报文,如果否,返回执行步骤S103。

具体的,所述判断该目标报文是否为该当前参考报文所对应的回应报文,可以包括:

判断该目标报文是否与该增设成员端口发送的该当前参考报文的格式匹配,如果是,则表明该目标报文为该当前参考报文所对应的回应报文。

可以理解的是,对于不同的BFD会话对应的报文,其格式都是存在差异的,具体的,对于不同的BFD会话对应的报文,其报文中携带的SIP(来源IP地址)/DIP(目的IP地址)/SPORT(来源端口)/DPORT(目的端口)会存在不同,可以通过判断目标报文的SIP(来源IP地址)、DIP(目的IP地址)与该当前参考报文的SIP(来源IP地址)、DIP(目的IP地址)是否匹配,进而判断该目标报文是否与该增设成员端口发送的该当前参考报文的格式匹配;或者通过判断目标报文的SPORT(来源端口)、DPORT(目的端口)与该当前参考报文的SPORT(来源端口)、DPORT(目的端口)是否匹配,进而判断该目标报文是否与该增设成员端口发送的该当前参考报文的格式匹配,这都是可以的。

当然,可以理解的是,对于该第一路由设备中除该增设成员端口以外的成员端口来说,也是在实时地进行着接收到的报文的检测(判断)过程。检测该接收到的报文是否是错报,是否CRC错误,是否携带的IP地址无效等等。其中,对于报文的上述检测可以采用现有技术,在此不做赘述。

如果确定该增设成员端口发送的该当前参考报文的格式匹配时,则可以证明该目标报文为该当前参考报文所对应的回应报文,如果确定该增设成员端口发送的该当前参考报文的格式不匹配,则可以证明该目标报文不为该当前参考报文所对应的回应报文,此时,可以返回执行该复制该当前BFD会话的当前待发送的报文的步骤,以继续执行该报文处理流程,直至判断出该获得的该增设成员端口接收的目标报文为该当前参考报文所对应的回应报文。

应用本发明实施例,在检测到该第一路由设备增设成员端口时,并非直接将增设成员端口应用于报文负载分担过程,而是,首先通过该第一路由设备中除该增设成员端口以外的成员端口,向该第二路由设备发送该第一路由设备中的当前BFD会话对应的报文,保证路由业务(BFD会话)正常被处理,进而,将该当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话,复制该第一BFD会话的报文,并通过该增设成员端口发送当前参考报文到第二路由设备的增设成员端口,以检测第二路由设备的增设成员端口是否加入HDLC,并在未收到关于第一BFD会话的回应报文时,循环执行检测第二路由设备的增设成员端口是否加入HDLC的步骤,避免了在第二路由设备中的增设成员端口加入HDLC前,该第一路由设备由于未接收到关于第一BFD会话的回应报文而导致该第一路由设备判断该第一BFD会话处于断开状态的情况,以实现在保证不影响正常路由业务处理的前提下,有效地解决HDLC捆绑链路上新增成员端口导致的BFD震荡。

进一步的,如图2所示,本发明实施例所提供的一种报文处理方法还可以包括:

S107:当判断出该目标报文为该当前参考报文所对应的回应报文时,通过该第一路由设备中的所有成员端口向该第二路由设备发送该第一路由设备中的当前BFD会话对应的报文。

需要说明的是,当该第一路由设备判断出接收到的目标报文为该当前参考报文所对应的回应报文,可以表明该第二路由设备中的增设成员端口(与该第一路由设备增设成员端口对应)已加入HDLC,此时该增设成员端口对应的链路可以正常使用了,则该第一路由设备会根据该当前的所有成员端口,将当前BFD会话重新进行负载分担,将当前BFD会话中的部分BFD会话,分配到该增设成员端口上。其中在对当前BFD会话重新进行负载分担时,可以采用哈希 算法。

更进一步的,在实际应用中,为了更好的保证利用该增设成员端口所对应的链路进行传输的信息(报文)的安全性,要精确确定该链路的稳定性,此时,就需要该在判断出该目标报文为该当前参考报文所对应的回应报文后,仍进行预定次数的判断目标报文是否为该当前参考报文所对应的回应报文,当判断出目标报文为该当前参考报文所对应的回应报文的次数超过预定次数后,可以认为该链路较稳定了,则可以继续执行后续的报文处理流程了,具体的,本发明实施例所提供的一种报文处理方法还可以包括:

当判断出该目标报文为该当前参考报文所对应的回应报文时,继续返回执行该复制该第一BFD会话的当前待发送的报文的步骤(S103);

当检测到该判断出该目标报文为该当前参考报文所对应的回应报文的次数超过预定次数后,执行该通过该第一路由设备中的所有成员端口向该第二路由设备发送该当前BFD会话对应的报文的步骤(S107)。

相应于上述方法实施例,如图3所示,本发明实施例还提供了一种报文处理装置,可以应用于第一路由设备,其中,所述第一路由设备与第二路由设备连接,所述第一路由设备与所述第二路由设备之间部署有高级链路控制HDLC捆绑口和双向转发检测BFD,所述装置可以包括:第一报文发送模块301、第一BFD会话确定模块302、当前参考报文确定模块303、当前参考报文发送模块304、目标报文获得模块305和目标报文判断模块306;

所述第一报文发送模块301:用于在检测到所述第一路由设备增设成员端口时,通过所述第一路由设备中除所述增设成员端口以外的成员端口,向所述第二路由设备发送所述第一路由设备中的当前BFD会话对应的报文;

所述第一BFD会话确定模块302:用于将所述当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话;

所述当前参考报文确定模块303:用于复制所述第一BFD会话的当前待发送的报文,并确定所复制的报文为当前参考报文;

所述当前参考报文发送模块304:用于通过所述增设成员端口向所述第二路由设备发送所述当前参考报文;

所述目标报文获得模块305:用于获得所述增设成员端口接收的所述第二路由设备向所述第一路由设备发送的目标报文;

所述目标报文判断模块306:用于判断所述目标报文是否为所述当前参考报文所对应的回应报文,如果否,返回触发所述当前参考报文确定模块303。

应用本发明实施例,在检测到该第一路由设备增设成员端口时,并非直接将增设成员端口应用于报文负载分担过程,而是,首先通过该第一路由设备中除该增设成员端口以外的成员端口,向该第二路由设备发送该第一路由设备中的当前BFD会话对应的报文,保证路由业务(BFD会话)正常被处理,进而,将该当前BFD会话中的持续连接时间最长的BFD会话,确定为第一BFD会话,复制该第一BFD会话的报文,并通过该增设成员端口发送当前参考报文到第二路由设备的增设成员端口,以检测第二路由设备的增设成员端口是否加入HDLC,并在未收到关于第一BFD会话的回应报文时,循环执行检测第二路由设备的增设成员端口是否加入HDLC的步骤,避免了在第二路由设备中的增设成员端口加入HDLC前,该第一路由设备由于未接收到关于第一BFD会话的回应报文而导致该第一路由设备判断该第一BFD会话处于断开状态的情况,以实现在保证不影响正常路由业务处理的前提下,有效地解决HDLC捆绑链路上新增成员端口导致的BFD震荡。

具体的,如图4所示,本发明实施例所提供的一种报文处理装置还可以包括第二报文发送模块401;

所述第二报文发送模块401:用于当判断出所述目标报文为所述当前参考报文所对应的回应报文时,通过所述第一路由设备中的所有成员端口向所述第二路由设备发送所述第一路由设备中的当前BFD会话对应的报文。

具体的,所述当前参考报文发送模块304具体用于:

以预定发送频率,通过所述增设成员端口向所述第二路由设备发送所述当前参考报文。

具体的,所述目标报文判断模块306具体用于:

判断所述目标报文是否与所述增设成员端口发送的所述当前参考报文的格式匹配,如果是,则表明所述目标报文为所述当前参考报文所对应的回应报文。

具体的,本发明实施例所提供的一种报文处理装置还可以包括第一返回触发模块和第二返回触发模块;

所述第一返回触发模块:用于当判断出所述目标报文为所述当前参考报文所对应的回应报文时,继续返回触发所述当前参考报文确定模块;

所述第二返回触发模块:用于当检测到所述判断出所述目标报文为所述当前参考报文所对应的回应报文的次数超过预定次数后,触发所述第二报文发送模块。

对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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