一种双向转发检测方法和装置与流程

文档序号:22171244发布日期:2020-09-11 21:14阅读:338来源:国知局
一种双向转发检测方法和装置与流程
本申请涉及网络通信技术,特别涉及一种双向转发检测方法、装置。
背景技术
:链路聚合为现代数据通信网络常用的技术,其主要作用为扩大设备间带宽,同时增加链路的可靠性,冗余度。在故障检测方面,虽然动态链路聚合使用链路汇聚控制协议lacp(linkaggregationcontrolprotocol,缩写为lacp),也可以起到故障检测的作用,但其收敛时间一般较慢,最短收敛时间也在3秒,不能满足现代网络要求。因此,双向转发检测bfd(bidirectionalforwardingdetect,缩写为bfd)作为通用的故障检测协议,也用于链路聚合中对聚合组内的成员口分别进行成员口级的链路保护。现有技术中用于链路聚合组中的bfd有一种轻量级的bfd,即micro-bfd,micro-bfd是从聚合成员口每个口同时发出microbfd报文,分别对每条链路进行监控,达到故障检测的效果。但micro-bfd需要启用链路聚合的两台设备同时支持micro-bfd才可以完成探测,对于不支持micro-bfd的设备,必须升级版本甚至更换设备才能完成该功能。技术实现要素:本申请提供了一种双向转发检测方法、装置,以解决现有技术中micro-bfd需要启动聚合链路的两台设备需要同时支持micro-bfd的问题。本公开第一方面提供了一种双向转发检测方法,该方法包括:本端设备向对端设备发送预设数量的bfd回声报文;接收对端设备转发的所述回声报文;记录本端设备接收所述回声报文的接收端口;当到达链路聚合组的成员口的检测周期时,通过与所述成员口相同的接收端口向对端设备发送与该接收端口关联的回声报文。本公开通过预处理过程,记录发出的回声报文的接收端口,由此保证通过该接收端口发出的bfd回声报文,依然可以由该接收端口接收,由此可以保证本端设备发送bfd回声报文与接收bfd回声报文是同一成员链路,达到了对链路聚合组的成员链路的监测的目的。可选的,当记录的所述接收端口包括了所述本端设备所包括的成员口时,停止发送所述回声报文。这样做的目的是为例保证被对端设备转发回本端设备的回声报文能遍历聚合组的所有成员口。可选的,当链路聚合组的成员口的数目发生变化、或者链路聚合组的ip地址发生变化、或者根据回声报文确定成员口的故障时,则执行本端设备向对端设备发送预设数量的bfd回声报文的步骤,以更新本端设备记录的接收端口。可选的,在到达链路聚合组的成员口的检测周期之前,根据对应关系确定与所述成员口对应的源ip地址以及源端口;根据所述源ip地址及源端口确定待发送的bfd回声报文的源ip地址以及源端口。从而可以使得与该源ip地址以及源端口对应的bfd回声报文可以由发送该bfd报文的端口接收。可选的,可以根据成员口待发送的bfd回声报文的五元组信息计算哈希值;若该哈希值指向的出端口与所述成员口不同,则生成强制指向所述出端口的哈希值;记录所述五元组信息与强制生成的哈希值以及成员口的对应关系,记录的该对应关系,用于在到达所述成员口的检测周期时,使得待发送的bfd回声报文经过所述成员口发出。本公开的第二方面还提供了一种双向转发检测装置,该装置包括:发送模块,用于本端设备向对端设备发送预设数量的bfd回声报文;接收模块,用于接收对端设备转发的所述回声报文;记录模块,用于记录本端设备接收所述回声报文的接收端口;所述发送模块用于在到达链路聚合组的成员口的检测周期时,通过与所述成员口相同的接收端口向对端设备发送与该接收端口关联的回声报文。本公开的装置通过记录模块记录发出的回声报文的接收端口,由此保证通过该接收端口发出的bfd回声报文,依然可以由该接收端口接收,由此可以保证本端设备发送bfd回声报文与接收bfd回声报文是同一成员链路,达到了对链路聚合组的成员链路的监测的目的。可选的,所述发送模块用于当记录的所述接收端口包括了所述本端设备所包括的成员口时,停止发送所述回声报文。可选的,当链路聚合组的成员口的数目发生变化、或者链路聚合组的ip地址发生变化、或者根据回声报文确定成员口的故障时,则所述发送模块向对端设备发送预设数量的bfd回声报文,以使得记录模块更新本端设备记录的接收端口。可选的,所述装置还包括确定模块;所述记录模块还用于记录发送的回声报文的源ip地址、源端口与所述接收端口的对应关系;所述确定模块用于在到达链路聚合组的成员口的检测周期之前,根据对应关系确定与所述成员口对应的源ip地址以及源端口;所述确定模块还用于根据所述源ip地址及源端口确定待发送的bfd回声报文的源ip地址以及源端口。可选的,所述装置还包括:计算模块,用于根据成员口待发送的bfd回声报文的五元组信息计算哈希值;计算模块还用于在哈希值指向的出端口与所述成员口不同,则生成强制指向所述出端口的哈希值;记录模块还用于记录所述五元组信息与强制生成的哈希值以及成员口的对应关系,记录的该对应关系用于在到达所述成员口的检测周期时,使得待发送的bfd回声报文经过所述成员口发出。附图说明图1为本发明实施例提供的网络架构图;图2为本发明实施提供的一种双向转发检测方法的流程图;图3为本发明又一实施例所提供的双向转发检测方法的流程图;图4为本发明再一实施例所提供的双向转发检测方法的流程图;图5为本发明一实施例提供的双向转发检测装置的结构示意图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。为了解决现有技术中micro-bfd需要启动聚合链路的两台设备需要同时支持micro-bfd的问题,本公开通过发送bfd回声报文,实现对链路聚合组中成员口的探测,从而达到故障探测的作用。echobfd的基本原理为:本端设备发送一个目的地址为本端ip地址的bfd回声报文报文,对端设备接收这个回声报文后,查询路由表,将这个报文转发回本端设备,从而达到bfd建立并检查链路效果的作用。可见,bfd回声报文只需要本端设备支持即可,无需对端设备支持,对端设备只需要按照回声报文携带的ip地址查询路由表,即可将该回声报文返回至本端设备。但采用bfd回声报文应用于聚合链路组,需要克服的一个问题是:本端设备通过聚合链路组的成员口a向对端设备发送bfd回声报文,对端设备收到报文之后,由于对端设备也是聚合链路,其内部的负载分担是哈希机制,对端设备不能保证该回声报文一定能从对端设备上与成员口a对应的成员口b发出。实施例一为了进一步的克服上述问题,本公开提供了一种双向转发检测方法,如图1和图2所示,图1为本公开提供的组网架构图,网络中包括本端设备100和对端设备200,本端设备100与对端设备200通过二层端口建立链路聚合组。本端设备100示出了包括端口1-1、端口1-2、端口1-3、端口1-4、端口1-5、端口1-6,对端设备200示出包括端口2-1、端口2-2、端口2-3、端口2-4、端口2-5、端口2-6,以端口1-1、端口1-2、端口1-3分别与端口2-1、端口2-2、端口2-3形成聚合链路为例进行说明。图2为公开提供的双向转发检测方法的流程图。具体的该方法包括:步骤202-步骤208。其中,在本端设备配置了bfdecho模式之后,可以执行bfd回声报文的预处理流程,该预处理流程包括步骤202-步骤206。进而在到达成员口的检测周期时,执行步骤208之后的步骤。步骤202,本端设备向对端设备发送预设数量的bfd回声报文。其中,发送上述回声报文的数量可以根据聚合链路组的成员口的数量确定,只要保证被对端设备200转发回本端设备100的回声报文能遍历聚合组的所有成员口即可,即当本端设备100记录的接收端口包括本端设备100的所有成员口时,则停止发送回声报文。一种可选的方式,可以根据经验设置发送回声报文的数量为成员口数量的3倍。步骤204,接收对端设备转发的所述回声报文;步骤206,记录本端设备接收所述回声报文的接收端口。步骤208,当到达链路聚合组的成员口的检测周期时,通过与所述成员口相同的接收端口向对端设备发送与该接收端口关联的回声报文。其中,与接收端口关联的回声报文可以是步骤206中接收到的回声报文,也可以是通过步骤206接收到的报文的五元组信息确定出的回声报文。具体的,会在后面的实施例中详细描述。本端设备记录这多个bfd回声报文分别是从哪些物理端口接收的,当需要检测聚合链路组的成员口的状态时,通过与该成员口相同的接收端口向对端设备200发送回声报文。例如,本端设备100发送预设数量的bfd回声报文,对端设备200在接收到bfd回声报文之后,经过了哈希机制处理之后,会将该bfd回声报文通过对端设备上的端口发送,本实施例中以对端设备200经过哈希处理之后,经由端口2-1将bfd回声报文发出为例,由于对端设备200端口2-1与本端设备100的端口1-1为物理连接,因此,本端设备的端口1-1会接收对端设备通过端口2-1转发回来的回声报文。当到达成员口1-1的bfd检测周期时,通过端口1-1向对端设备发送与该接收端口关联的回声报文。由于在对端设备200上,端口2-1对应的成员链路所对应的端口即为端口1-1。由此,可以保证本端设备发送bfd回声报文与接收bfd回声报文是同一成员链路,由此达到了对链路聚合组的成员链路的监测的目的。在步骤208之后,本端设备100通过对端设备200转发回的回声报文,判断与该成员口关联的成员链路的状态。本实施例以回声报文1为例进行说明,若本端设备100在预设时间内接收到对端设备200转发回来的回声报文1,则说明成员口1-1与对端设备200的端口2-1的成员链路的工作正常;若本端设备100在预设时间内未收到对端设备200转发的回声报文1,则说明成员口1-1余对端设备200的端口2-1之间的成员链路工作异常。需要说明的是,本公开所述提到的bfd回声报文的源端口均指的应用端口,即udp端口。而其他的接收端口、接收端口、端口等均指的物理端口。其中,接收端口指的是通过该端口接收报文。实施例二为了使本公开的双向转发检测方法更便于理解,本实施例对与接收端口关联的回声报文做详细的说明。在一种可选的方式中,如图3所示,本公开实施提供的双向转发检测方法包括:步骤302和步骤304,其中步骤302和步骤304与上述实施例中步骤202与步骤204相同,在此不再赘述。步骤306,所述本端设备还记录发送的回声报文的源ip地址、源端口与所述接收端口的对应关系;步骤308,在到达链路聚合组的成员口的检测周期之前,根据对应关系确定与所述成员口对应的源ip地址以及源端口;步骤310,根据所述源ip地址及源端口确定待发送的bfd回声报文的源ip地址以及源端口。步骤312,当到达链路聚合组的成员口的检测周期时,通过与成员口相同的接收端口向对端设备发送步骤210中确定出的bfd回声报文。对于链路聚合组中的每一个成员口,都对应建立由唯一的bfd会话。每个bfd会话对应有相应的检测周期,检测周期也可以称为bfd回声报文的发送间隔,例如可以为1000ms,即,本端设备100的链路聚合组中的每个成员端口每间隔1000ms均会发送bfd回声报文至对端设备200。本端设备100可以向对端设备200发送预设数量的回声报文,可选的,预设数量的回声报文的源ip地址均不相同、但源端口相同;本实施例中以预设数量为100进行说明。在预处理阶段,发送的预设数量的bfd报文的源ip地址分别为10.0.0.1—10.0.0.100、源端口为1000为例,对端设备200收到回声报文之后,可以根据回声报文进行哈希,其中,本申请所使用的方法,不关注对端设备200究如何利用回声报文进行哈希的。下述实施中以源ip地址为10.0.0.1的回声报文哈希之后确定的出端口为端口2-1、源ip地址为10.0.0.2的回声报文哈希之后确定的出端口为端口2-2、源ip地址为10.0.0.3的回声报文哈希之后确定的出端口为端口2-3、源ip地址为10.0.0.4的回声报文哈希之后确定的出端口为端口2-4、源ip地址为10.0.0.5的回声报文哈希之后确定的出端口为端口2-5、源ip地址为10.0.0.6的回声报文经过哈希处理之后确定的出端口为端口2-6……源ip地址为10.0.0.100的回声报文哈希之后确定的出端口为端口2-5为例进行说明。当本端设备100接收到对端设备200转发的上述回声报文之后,根据本端设备100接收上述回声报文的接收端口、回声报文的源ip地址以及源端口生成对应关系,对应关系指的是如表1中所示的源ip地址、源端口与接收端口之间的对应关系。因此,本端设备100记录的对应关系如下表1所示:源ip地址源端口接收端口10.0.0.110001-110.0.0.210001-210.0.0.310001-310.0.0.410001-410.0.0.510001-510.0.0.610001-6………………10.0.0.10010001-5表1本实施例中,由于本端设备100与对端设备200之间的成员链路之间是物理连接,因此,后续从对端设备200的端口2-1转发的回声报文,必然是由本端设备100的端口1-1接收。对于bfd回声报文而言,只要保证目的ip地址是本端设备100的聚合口的ip地址,能够使得对端设备200将回声报文转发回本端设备100即可,bfd报文的源ip地址和源端口可以按照表1中给出的信息确定。在一种可以替换的实施方式中,本端设备100向对端设备200发送的多个回声报文,可以为源端口均不相同、源ip地址相同的回声报文;相应的,本端设备100根据接收的对端设备200转发回来的回声报文生成的对应关系可以如表2所示:表2当到达链路聚合组的成员口的bfd检测周期时,可以根据表1或者表2确定bfd回声报文的源ip地址和/或源端口。与接收端口关联的回声报文可以是根据表1或表2的对应关系确定的回声报文,例如,与接收端口1-1关联的回声报文的源ip地址以及源端口可以是表1中确定的10.0.0.1、端口1000。由于本端设备100与对端设备200之间的成员链路之间是物理连接,本端设备100通过预处理的过程实际上已经记录了所有的从对端设备200的转发的回声报文的接收端口,而通过该接收端口发出的回声报文,后续必然是从该接收端口接收到转发的回声报文。例如,在预处理的过程中,对端设备200对接收到的源ip地址为10.0.0.1的回声报文哈希处理之后确定的出端口为2-1,本端设备100是通过端口1-1接收到转发的回声报文,因此,后续当本端设备100到达链路聚合组的检测周期时,通过端口1-1发送的回声报文(源ip地址10.0.0.1)必然是通过端口1-1接收。由此,实现了发送bfd回声报文的端口与接收bfd回声报文的接收是同一端口,实现了监控成员口以及成员链路的作用。在一种可选的实施方式中,当链路聚合组的成员口的数目发生变化、或者链路聚合组的ip地址发生变化、或者根据回声报文确定成员口的故障时,则更新上述对应关系。具体的可以重新执行实施例一的预处理过程,达到更新对应关系的目的。实施例三对于链路聚合组而言,在发送报文时,会哈希到某个成员端口上发送,因此,为了实现对成员口的bfd检测,应当使得bfd回声报文能够在哈希之后依然在待检测的成员口发出。例如,想要检测的端口为成员口1-1,那么应当在bfd回声报文进行哈希处理之后,确定的出端口也为成员口1-1,这样可以保证对现有的链路聚合组的兼容性。以表1举例来说,若到达成员口1-1的bfd检测周期,从成员口1-1发送的bfd回声报文的源ip地址为10.0.0.1,源端口为1000,若本端设备100根据上述的源ip地址以及源端口信息确定出的哈希值为k,而哈希之后确定的bfd回声报文指向的出端口为1-5,而此前根据预处理阶段表1的记录,源ip地址为10.0.0.1,源端口为1000的bfd回声报文的是通过端口1-1接收的对端设备200转发回的回声报文。这样会导致在对成员端口的端口状态检测的过程中,发送bfd回声报文的成员链路与接收bfd回声报文的回声链路不是同一个链路。为了保证发送bfd回声报文的链路与接收bfd回声报文的链路为同一成员链路,本公开还提供一种双向转发检测方法,如图4所示,该方法包括:步骤402-步骤412,其中,步骤420-步骤406与上述实施例中的步骤202-步骤206相同,在此不再赘述。步骤408,根据成员口待发送的bfd回声报文的五元组信息计算哈希值;步骤410,若该哈希值指向的出端口与所述成员口不同,则生成强制指向所述出端口的哈希值;步骤412,记录所述五元组信息与强制生成的哈希值的对应关系,记录的该对应关系,用于在到达所述成员口的检测周期时,使得待发送的bfd回声报文经过所述成员口发出。其中,确定哈希值可以根据根据五元组信息中的任意一个或者多个,例如可以根据ip地址和/或源端口,也可以根据源ip地址和目的ip地址,或者,也可以如表3给出的示例,根据源ip地址、源端口、目的ip地址、目的端口计算哈希值。此外,还需要说明的是,对于bfd回声报文而言,只要保证目的ip地址是本端设备100的聚合口的ip地址,能够使得对端设备200将回声报文转发回本端设备100即可,因此,不同成员口发送的bfd回声报文的源ip地址可以是相同的,均是预先配置好的ip地址,或者,也可以是如同表1所示的,针对不同的接收端口源ip地址是不同的。为了让后续发送的bfd回声报文可以从各个成员口发出,实现对各个成员口的检测,在一种实现方式中,可以强制生成指向对应成员口的哈希值。例如,在上述示例中,强制生成哈希值k01,该哈希值k01指向接收端口1-1。由此,当到达成员口1-1的bfd检测周期时,根据该强制生成的哈希值,可以确定bfd回声报文的出端口为1-1。源ip地址源端口哈希值接收端口10.0.0.11000k011-1在另一种可以替换的实现方式中,还可以根据指向对应接收端口的哈希值逆向推导确定待发送的bfd报文的五元组信息。例如,后续为了检测端口1-1对应的成员链路的状态,必须要使得bfd回声报文进行哈希处理之后,计算出的哈希值指向的出端口为1-1,这里可以变化bfd回声报文的源ip地址和/或源端口,直至根据确定出的源ip地址和源端口计算的哈希值指向端口1-1。bfd回声报文的源ip地址和源端口并不是唯一值,只要保证根据源ip地址和/或源端口计算出的哈希值能够与出端口对应即可。举例来说,若待发送的bfd报文的源ip地址为100.0.0.1、源端口1000、目的ip地址为1.1.1.1、目的端口为4784,根据上述信息确定出的哈希值k1指向的出端口为1-2,此时可以记录上述源ip地址、源端口、目的ip地址、目的端口信息,例如如表3所示。当待检测的端口为1-2时,可以采用表3中端口1-2对应的四元组,发送bfd回声报文。进一步的,可以变换源ip地址和/或者源端口,直至将链路聚合组中的成员端口确定出有对应的哈希值。表3在另一种替换的实现方式中,在到达成员口的bfd的检测周期之前,根据表3的对应关系中,确定该成员口对应的的源ip地址、源端口,作为待发送的bfd回声报文的源ip根据源ip地址以及源端口;即与接收端口对应的回声报文可以是根据表3中的对应关系确定的。当到达成员口的bfd检测周期时,在确定出端口时,针对链路聚合组,会根据源ip地址和/或源端口进行哈希处理,确定bfd回声报文的出端口。举例来说,当到达成员口1-1的bfd检测周期之前,根据表3可以确定端口1-1对应bfd回声报文的源ip地址为100.0.0.2,源端口1000,目的ip地址为1.1.1.1,目的端口为4784;当进行bfd回声报文的报文转发时,链路聚合组可以根据源ip地址、源端口、目的ip地址、目的端口进行哈希,得到的哈希值为k2,而该哈希值对应的接收端口即为1-1,由此可以保证发送的bfd回声报文可以从待检测的成员口1-1发出。实施例四本公开还提供一种双向转发检测装置,如图5所示,该装置包括:发送模块501,用于本端设备向对端设备发送预设数量的bfd回声报文;接收模块502,用于接收对端设备转发的所述回声报文;记录模块503,用于记录本端设备接收所述回声报文的接收端口;所述发送模块501用于在到达链路聚合组的成员口的检测周期时,通过与所述成员口相同的接收端口向对端设备发送与该接收端口关联的回声报文。本公开的装置通过记录模块记录发出的回声报文的接收端口,由此保证通过该接收端口发出的bfd回声报文,依然可以由该接收端口接收,由此可以保证本端设备发送bfd回声报文与接收bfd回声报文是同一成员链路,达到了对链路聚合组的成员链路的监测的目的。可选的,所述发送模块501用于当记录的所述接收端口包括了所述本端设备所包括的成员口时,停止发送所述回声报文。可选的,当链路聚合组的成员口的数目发生变化、或者链路聚合组的ip地址发生变化、或者根据回声报文确定成员口的故障时,则所述发送模块501向对端设备发送预设数量的bfd回声报文,以使得记录模块更新本端设备记录的接收端口。可选的,所述装置还包括确定模块;所述记录模块还用于记录发送的回声报文的源ip地址、源端口与所述接收端口的对应关系;所述确定模块用于在到达链路聚合组的成员口的检测周期之前,根据对应关系确定与所述成员口对应的源ip地址以及源端口;所述确定模块还用于根据所述源ip地址及源端口确定待发送的bfd回声报文的源ip地址以及源端口。可选的,所述装置还包括:计算模块,用于根据成员口待发送的bfd回声报文的五元组信息计算哈希值;计算模块还用于在哈希值指向的出端口与所述成员口不同,则生成强制指向所述出端口的哈希值;记录模块还用于记录所述五元组信息与强制生成的哈希值以及成员口的对应关系,记录的该对应关系用于在到达所述成员口的检测周期时,使得待发送的bfd回声报文经过所述成员口发出。本公开所提供的装置执行的步骤可以参见上述方法实施例,本实施例中不再赘述。在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1