双向转发检测方法、装置、电子设备及可读存储介质与流程

文档序号:18329086发布日期:2019-08-03 11:50阅读:168来源:国知局
双向转发检测方法、装置、电子设备及可读存储介质与流程

本公开涉及数据通信技术领域,具体涉及一种双向转发检测方法、装置、电子设备及可读存储介质。



背景技术:

bfd(bidirectionalforwardingdetection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测ip网络中链路的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。

在目前分布式高端路由器中,bfdup报文由cpu发送的,称为软件bfd;bfdup报文由硬件发送的,称为硬件bfd;对于硬件bfd,通常由维护板和备用维护板构成。维护板是负责发送up报文的硬件单板,备用维护板是维护板不在位时,来接替维护板发包的单板。然而,在bfd硬件发包的环境下,由于维护板故障使得对端设备没有在预定时间内收到up报文,导致对端设备因为超时而引发bfd协议down的问题。



技术实现要素:

基于此,本公开实施例提供了一种报文发送方法、装置、电子设备及可读存储介质,以解决现有技术中bfd硬件发包的环境下,对端设备没有在预定时间内收到up报文,导致对端设备因为超时而引发bfd协议down的问题。

根据第一方面,本公开实施例提供了一种双向转发检测方法,应用于第一设备,包括:若获取到对端设备发送的已就绪状态报文,则将bfd会话状态切换为已建立状态;控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文。

根据第二方面,本公开实施例提供了一种双向转发检测方法,应用于第二设备,包括:接收所述对端设备发送的已建立状态报文,所述对端设备发送的已建立状态报文由所述对端设备的主硬件单板和备硬件单板交替发送;若预设时间内接收到所述对端设备发送的已建立状态报文,则控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文。

根据第三方面,本公开实施例提供了一种双向转发检测装置,应用于第一设备,包括:第一处理模块,用于若获取到对端设备发送的已就绪状态报文,则将bfd会话状态切换为已建立状态;第二处理模块,用于控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文。

根据第四方面,本公开实施例提供了一种双向转发检测装置,应用于第二设备,包括:第二接收模块,用于接收所述对端设备发送的已建立状态报文,所述对端设备发送的已建立状态报文由所述对端设备的主硬件单板和备硬件单板交替发送;第五处理模块,用于若预设时间内接收到所述对端设备发送的已建立状态报文,则控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文。

根据第五方面,本公开实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行本公开第一方面中任一所述的双向转发检测方法,或者执行本公开第二方面中任一所述的双向转发检测方法。

根据第六方面,本公开实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机从而执行本公开第一方面中任一所述的双向转发检测方法,或者执行本公开第二方面中任一所述的双向转发检测方法。

本公开技术方案,具有如下优点:

本公开提供的双向转发检测方法,包括:若获取到对端设备发送的已就绪状态报文,则将bfd会话状态切换为已建立状态;控制主硬件单板和备硬件单板向对端设备交替发送已建立状态报文。该方法通过智能动态调整参数的发送报文的方式使得对端设备在预定时间内收到up报文,避免了当主硬件单板发生不在位事件时,cpu单板控制器无法在预定时间之内感知到主硬件单板已经不在位,也就没办法发送给备硬件单板升为主硬件单板的消息,从而导致备硬件单板无法在预设时间内发送up报文,进而使得对端设备没有在预定时间内收到up报文,导致对端设备因为超时而引发bfd协议down。

附图说明

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

图1为路由器的一个具体示例的结构图;

图2为bfd协议交互状态的示意图;

图3为本公开实施例的双向转发检测方法的一个应用场景的示意图;

图4为本公开实施例的双向转发检测方法的一个具体示例的流程图;

图5为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图6为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图7为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图8为本公开实施例的第一设备的主硬件单板和备硬件单板交替发送up报文的一个具体示例的示意图;

图9为本公开实施例的第一设备接收第二设备交替发送up报文的示意图;

图10为本公开实施例的第二设备调整后的发包时间的示意图;

图11为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图12为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图13为本公开实施例的第一设备的主硬件单板和备硬件单板交替发送up报文的一个具体示例的示意图;

图14为本公开实施例的第一设备接收到误差偏差的示意图;

图15为本公开实施例的双向转发检测方法的一个具体示例的流程图;

图16为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图17为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图18为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图19为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图20为本公开实施例的双向转发检测方法的另一个具体示例的流程图;

图21为本公开实施例的双向转发检测装置的一个具体示例的框图;

图22为本公开实施例的双向转发检测装置的一个具体示例的框图;

图23为本公开实施例的电子设备的硬件结构示意图。

具体实施方式

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

在本公开的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本公开的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本公开中的具体含义。

此外,下面所描述的本公开不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

如图1所示,环境稳定时,up报文一直是由维护板a来发送,但当维护板a出现故障、重启、插拔等检测出不在位时,对于发包流程,理想状况下,需要备用维护板b迅速的升为维护板,来接管维护板a的工作,通过备用维护板b将bfdup报文发送出去,这样就不会因为超时导致bfddown事件。然而,在实际应用过程中,当维护板a发生不在位事件时,cpu单板master无法在30ms之内感知到维护板a已经不在位,也就没办法发送给备用维护板b升为维护板的消息,从而导致备用维护板b无法在预设时间内发送up报文,进而使得对端设备没有在三个周期收到up报文,对端设备就会因为超时而引发bfd协议down。

bfd(bidirectionalforwardingdetection,双向转发检测)协议的实现有其比较复杂的处理机制,总体一个建立和到达交互稳态的流程图如图2所示。在2个邻居达到协议都up后,他们就彼此发送bfd协议里的up报文来维持这个会话。图3为本公开实施例的一个应用场景示意图,如图3所示,第一设备dut1和第二设备dut2之间进行一个bfd会话,在第一设备和第二设备上该bfd会话的初始状态都为down,第一设备上包括主硬件单板slota和备硬件单板slotb,第二设备上也包括主硬件单板和备硬件单板(图中未示出),在第一设备向第二设备发送up报文时,由第一设备的主硬件单板slota和备硬件单板slotb交替发送up报文至第二设备,在第二设备向第一设备发送up报文时,由第二设备的主硬件单板和备硬件单板交替发送up报文至第一设备,通过上述交替发送up报文的方式,解决了现有技术中bfd硬件发包的环境下,对端设备没有在预定时间内收到up报文,导致对端设备因为超时而引发bfd协议down的问题。

本公开实施例提供了一种双向转发检测方法,可应用于交换网系统中的第一设备,图4为本公开实施例中双向转发检测方法的一个具体示例的流程图,该双向转发检测方法包括步骤s11-s13。

步骤s11:若获取到对端设备发送的已就绪状态报文,则将bfd会话状态切换为已建立状态。

具体地,第一设备的bfd会话初始状态为down时,收到第二设备发送的未就绪状态报文(down报文)时,第一设备的bfd会话状态切换至已就绪状态,然后第一设备发送第一设备已就绪报文(init报文)给第二设备;第二设备接收到第一设备发送的第一设备init报文之后,将第二设备的bfd会话状态切换至已就绪状态,然后第二设备发送第二设备init报文给第一设备;第一设备接收到第二设备发送的第二设备init报文之后,将第一设备的bfd会话状态切换至已建立状态。

步骤s12:控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文。

具体地,在第一设备的bfd会话状态切换至up状态后,控制第一设备的主硬件单板和备硬件单板向第二设备交替发送已建立状态报文(up报文)。

在一实施例中,第一设备的主硬件单板和备硬件单板向第二设备交替发送up报文的时间间隔可以是10ms,例如,如图8所示,在0ms时第一设备的主硬件单板向第二设备发送up报文,在10ms时第一设备的备硬件单板向第二设备发送up报文,在20ms时第一设备的主硬件单板向第二设备发送up报文,在30ms时第一设备的备硬件单板向第二设备发送up报文,依此类推,up报文由主硬件单板和备备硬件单板交替发送,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,上述时间间隔也可以是大于10ms的任一时间,如50ms等,根据实际需要合理设置即可。

上述双向转发检测方法,第一设备在收到第二设备发送的已就绪状态报文之后,将第一设备的bfd会话状态切换至已建立状态,并控制第一设备的主硬件单板和备硬件单板向第二设备交替发送up报文,保证了在第一设备的主硬件单板由于故障、重启、插拔等发生不在位事件时,通过交替发送报文的方式使得第二设备在预定时间内收到up报文,避免了当主硬件单板发生不在位事件时,cpu单板控制器无法在预定时间之内感知到主硬件单板已经不在位,也就没办法发送给备硬件单板升为主硬件单板的消息,从而导致备硬件单板无法在预设时间内发送up报文,进而使得对端设备没有在预定时间内收到up报文,导致对端设备因为超时而引发bfd协议down。

如图5所示,在步骤s12之后,该双向转发检测方法还包括步骤s13-s15。

步骤s13:接收对端设备反馈的已建立状态报文,对端设备反馈的已建立状态报文由对端设备的主硬件单板和备硬件单板交替发送。

具体地,在第一设备交替发送up报文至第二设备时,第二设备接收到第一设备发送的第一设备up报文之后,第二设备的bfd会话状态切换为已建立状态,并通过第二设备的主硬件单板和备硬件单板交替向第一设备发送第二设备已建立状态报文;之后,第一设备接收第二设备反馈的up报文。

步骤s14:若预设时间内接收到所述对端设备反馈的已建立状态报文,则保活会话。

在一实施例中,先判断预设时间内是否接收到第二设备反馈的up报文,若预设时间内接收到up报文,则执行步骤s14;若预设时间内未接收到up报文,则执行步骤s15。

具体地,第一设备在预设时间内接收到预设数量的第二设备反馈的up报文时,说明第一设备和第二设备均已就绪,保持会话。

在一实施例中,预设时间可以是30ms,预设数量可以是1个,也可以是2个或者更多个,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,还可以根据实际需要合理设置。

步骤s15:若预设时间内未接收到所述对端设备反馈的已建立状态报文,则将bfd会话状态切换为down。

具体地,在预设时间内未接收到预设数量的第二设备反馈的第二设备up报文,说明第二设备的bfd会话超时,第一设备切换为down状态。

上述双向转发检测方法,通过第二设备的主硬件单板和备硬件单板交替发送up报文至第一设备,使得第一设备能够在预设时间内接收到up报文,避免了第二设备在主硬件单板不在位时,导致bfd会话由于超时引发bfd协议down。

由于不同的硬件单板存在时钟不一致的情况,导致主硬件单板和备硬件单板交替发送up报文的发送间隔不同,进而在预设时间内无法接收到up报文导致bfd会话down;故需要对up报文的发包时间进行调整。在一实施例中,如图6所示,步骤s13接收对端设备反馈的已建立状态报文的步骤中,具体地可包括步骤s131-s134。

步骤s131:确定相邻两个已建立状态报文之间的间隔偏差。

具体地,可通过获取已建立状态报文的接收时间,将第一设备接收到的报文的接收时间作差值得到相邻两个已建立状态报文之间的间隔偏差,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,也可直接得到相邻两个已建立状态报文之间的间隔偏差,根据需要合理设置即可。

具体地,如图7所示,步骤s131可包括步骤s1311-s1312。

步骤s1311:获取相邻已建立状态报文之间的多个间隔偏差。

具体地,可以是将接收到的up报文的时间作差值得到多个间隔偏差。

步骤s1312:确定多个间隔偏差中的最大偏差为间隔偏差。

具体地,可以通过比较法(如差值比较或者比值比较)得到多个间隔偏差中的最大偏差,并将最大偏差作为间隔偏差,避免了由于波动等干扰造成误判,提高了准确度。

步骤s132:判断间隔偏差是否大于预设偏差;若间隔偏差大于预设偏差,则执行步骤s133;若间隔偏差小于或等于预设偏差,则不执行任何操作。

在一实施例中,发包间隔为10ms,预设偏差可以是发包间隔的5%,预设偏差为0.5ms,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,还可以设置为其它数值,例如4%或者10%等,根据需要合理设置即可。

步骤s133:若间隔偏差大于预设偏差,则根据间隔偏差确定偏差调整时间。

具体地,根据间隔偏差确定偏差调整时间,包括:通过如下公式得到偏差调整时间,

t=2d/(1+δ)

其中,t为偏差调整时间;d为相邻两个已建立状态报文之间的预设间隔时间;δ为相邻两个已建立状态报文之间的间隔偏差。

步骤s134:通知对端设备根据偏差调整时间调整已建立状态报文的发送时间。

具体地,可通过在bfd协议中新增tlv来通知对端设备进行bfd发送up报文频率的调整。

例如,tlv1:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8890;

length:4b(32bit);

value:单精度,修改频率为原来的多少倍的数值。

上述双向转发检测方法通过在接收到的对端设备反馈的相邻两个已建立状态报文之间的间隔偏差超过预设偏差时,对对端设备的硬件单板的发包时间进行调整,使得接收到的对端设备反馈的up报文满足bfd协议要求。

下面以一个具体示例进行详细说明。设定bfd的发包时间间隔是10ms,第二设备的主硬件单板和备硬件单板每10ms发送bfdup报文(由于时钟不一致、链路环境影响,实际发包间隔和10ms有偏差),并在第一设备dut1记录获取到up报文的时间。各发送5个up报文之后,找出主硬件单板和备硬件单板发包间隔的偏差最大值,如果发包间隔偏差小于5%,第一设备不发送调整频率消息给第二设备;如果发包间隔偏差大于5%,第一设备发送调整频率消息给第二设备,以使第二设备调整发包的频率。

如图9所示,第1次和第3次是第二设备的主硬件单板发包,第2次和第4次是第二设备的备硬件单板发包,第一设备接收到的时间分别为0ms、11ms、20ms和31ms,计算出来的间隔偏差是1ms,偏差值就是10%,10%>5%,需要对第二设备进行频率调整。这时,第一设备发送bfd消息到第二设备,更改up报文的发包频率,设定原来的的频率是f,现在需要频率值改为1.1f,原来发包间隔是t,现在要变成0.9t,第二设备的发包时间将如图10所示,发包间隔由原来的20ms变成了18ms。

由于硬件单板发包的频率精度存在偏差,这种偏差还会不断累积,最差的情况下会产生在三个周期内只发送两个up报文的情况,这大大提高了误报的风险;故需要对up报文的发包时间进行调整。在另一实施例中,如图11所示,步骤s13接收所述对端设备反馈的已建立状态报文的步骤中,具体可包括步骤s135-s138。

步骤s135:确定相邻两个已建立状态报文之间的相对误差。

具体地,可通过获取已建立状态报文的接收时间,第一设备根据接收到的报文的接收时间得到相邻两个已建立状态报文之间的相对误差,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,也可直接得到相邻两个已建立状态报文之间的相对误差,根据需要合理设置即可。

步骤s136:判断相对误差值是否大于预设误差;若相对误差值大于预设误差,则执行步骤s137;若相对误差值小于或者等于预设误差,则不执行任何操作。

在一实施例中,预设误差可以是误差时间/发包间隔,误差时间为偏差值和发包间隔的差值的绝对值;例如发包间隔为10ms,预设误差可以是50%,则误差时间为5ms,接收到的相邻两个已建立状态报文的偏差时间要小于5ms才能使得相对误差不大于预设误差。

步骤s137:若相对误差值大于预设误差,则根据相对误差确定误差调整时间。

具体地,如图12所示,步骤s137可包括步骤s1371-s1373。

步骤s1371:若相对误差值大于预设误差,则根据相对误差确定对端设备的主硬件单板和备硬件单板中误差较大的硬件单板。

具体地,可通过up报文携带的tlv不同来区分是从哪个单板发送过来的报文,进而第一设备可以根据接收到的up报文时刻确定第二设备的主硬件单板和备硬件单板中误差较大的硬件单板。

例如,增加tlv4和tlv5,tlv4中的标识报文可以用来表示主硬件单板发送的报文;tlv5中的标识报文可以用来表示备硬件单板发送的报文。

tlv4:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8893;

length:4b(32bit);

value:标识报文。

tlv5:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8894;

length:4b(32bit);

value:标识报文。

步骤s1372:获取对端设备的主硬件单板和备硬件单板的发包次数。

步骤s1373:根据发包次数确定所述误差较大的硬件单板的下一次发包时刻,将下一次发包时刻作为误差调整时间。

具体地,根据发包次数确定误差较大的硬件单板的下一次发包时刻,包括:通过如下公式得到误差较大的硬件单板的下一次发包时刻,

tbn+1=tbn+d+|tbn-tan+1|

其中,tbn+1为误差较大的硬件单板的下一次发包时刻;tbn为误差较大的硬件单板的当前发包时刻;tan+1为误差较小的硬件单板的下一次发包时刻;d为相邻两个已建立状态报文之间的预设间隔时间;n为正整数。

步骤s138:通知对端设备根据误差调整时间调整已建立状态报文的发送时间。

在一实施例中,通知第二设备在误差较大的硬件单板发送n个up报文之后,第n+1个报文的发包时间为tbn+1;第二设备每发送n个up报文后,调整下一次的发包时间。

具体地,可通过在bfd协议中新增tlv2和tlv3来通知对端设备进行bfd发送up报文频率的调整。

例如,tlv2:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8891;

length:4b(32bit);

value:置1时,通知下次发包调整到初始发包值。

tlv3:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8892;

length:4b(32bit);

value:传递周期值。

上述双向转发检测方法通过在接收到的对端设备反馈的相邻两个已建立状态报文之间的相对误差超过预设误差时,对对端设备的硬件单板的发包时间进行调整,使得接收到的对端设备反馈的up报文满足bfd协议要求。

下面以一个具体示例进行详细说明。设定bfd的发包时间间隔d是10ms,第二设备的主硬件单板和备硬件单板每10ms发送bfdup报文,并在第一设备dut1记录获取到up报文的时间。如图13所示,第1次、第3次和第5次是第二设备的主硬件单板发包,第2次、第4次和第6次是第二设备的备硬件单板发包,第一设备接收到的时间分别为0ms、10.1ms、20ms、30.3ms、40ms和50.5ms,依此类推,第一设备接收到的第二设备备硬件单板发送的up报文的时间偏差会越来越大。第5次到第6次之前已经由原来的10.1ms变成了10.5ms。假设两次实际探测(b板-a板)间隔值是t1(可以通过up报文携带的tlv不同来区分是从哪个单板发送过来的报文),当(t1-d)/d大于或等于50%时进行调整。

具体可通过另外一个定时器来检测这个事件,如图14所示,图14中的横轴表示的是每个周期a-b之间的差值。预设周期为10ms,假设b板的误差比a板大,以a板为参考,由于精度误差,导致a、b两块单板相邻两次间隔会越来越大,当检测到间隔是bn到an的差值大于15ms时,即|bn-an-10|/10大于50%,记录一共是多少个周期,记为n,通过新增一种bfdtlv2来通知第二设备将备硬件单板的下一次的发包时间调整以使下一次发包时候重新回到无误差时刻。具体的调整方式开启一个定时器监控这个会话(session),需要调整时停掉这个session,在上述计算出的误差较大的硬件单板的下一次发包时刻时再开启,将备硬件单板的发包时刻调整为备硬件单板的发包准确值。

例如,d=10ms,tan=80ms,tbn=95.5ms,tan+1=100,由于tbn-tan=15.5ms>15ms,故tbn+1=95.5+10+|95.5-100|=110ms。

需要说明的是,在主硬件单板的误差比备硬件单板的误差大时,也是一样的原理,这里就不再描述。

本实实施例还提供了一种双向转发检测方法,可应用于交换网系统中的第二设备,图15为本公开实施例中双向转发检测方法的一个具体示例的流程图,该双向转发检测方法包括步骤s21-s22。

步骤s21:接收对端设备发送的已建立状态报文,对端设备发送的已建立状态报文由对端设备的主硬件单板和备硬件单板交替发送。

具体地,第二设备接收第一设备发送的已建立状态报文,第一设备发送的已建立状态报文是由第一设备的主硬件单板和备硬件单板交替发送,其发送过程参考上述实施例中的描述,在此不再赘述。

步骤s22:若预设时间内接收到对端设备发送的已建立状态报文,则控制主硬件单板和备硬件单板向对端设备交替发送已建立状态报文。

具体地,第二设备在预设时间内接收到预设数量的第一设备发送的已建立状态报文时,控制第二设备的主硬件单板和备硬件单板向第一设备交替发送已建立状态报文。

在一实施例中,预设时间可以是30ms,预设数量可以是1个,也可以是2个或者更多个,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,还可以根据实际需要合理设置。

在一实施例中,第二设备的主硬件单板和备硬件单板向第一设备交替发送up报文的时间间隔可以是10ms,例如,在0ms时第二设备的主硬件单板向第一设备发送up报文,在10ms时第二设备的备硬件单板向第一设备发送up报文,在20ms时第二设备的主硬件单板向第一设备发送up报文,在30ms时第二设备的备硬件单板向第一设备发送up报文,依此类推,up报文由主硬件单板和备备硬件单板交替发送,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,上述时间间隔也可以是大于10ms的任一时间,如50ms等,根据实际需要合理设置即可。

上述双向转发检测方法,通过第一设备的主硬件单板和备硬件单板交替发送up报文至第二设备,之后,第二设备接收到第一设备发送的up报文后,第二设备的主硬件单板和备硬件单板交替发送up报文至第一设备,使得第一设备和第二设备均能够在预设时间内接收到对端设备发送的up报文,避免了在对端设备的主硬件单板不在位时,导致bfd会话由于超时引发bfd协议down。

如图16所示,该方法还包括步骤s23。

步骤s23:若预设时间内未接收到对端设备反馈的已建立状态报文,则将bfd会话状态切换为down。

具体地,第二设备在预设时间内未收到预设数量的第一设备反馈的已建立状态报文时,说明会话超时,将第二设备的bfd会话状态切换为dowm。

由于不同的硬件单板存在时钟不一致的情况,导致主硬件单板和备硬件单板交替发送up报文的发送间隔不同,进而在预设时间内无法接收到up报文导致bfd会话down;故需要对up报文的发包时间进行调整。如图17所示,具体地,步骤s21接收对端设备发送的已建立状态报文,包括步骤s211-s214。

步骤s211:确定相邻两个已建立状态报文之间的间隔偏差。

具体地,可通过获取已建立状态报文的接收时间,将第二设备接收到的报文的接收时间作差值得到相邻两个已建立状态报文之间的间隔偏差,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,也可直接得到相邻两个已建立状态报文之间的间隔偏差,根据需要合理设置即可。

具体地,如图18所示,步骤s211可包括步骤s2111-s2112。

步骤s2111:获取相邻已建立状态报文之间的多个间隔偏差;具体地,可以是将接收到的up报文的时间作差值得到多个间隔偏差。

步骤s2112:确定所述多个间隔偏差中的最大偏差为间隔偏差。具体地,可以通过比较法(如差值比较或者比值比较)得到多个间隔偏差中的最大偏差,并将最大偏差作为间隔偏差,避免了由于波动等干扰造成误判,提高了准确度。

步骤s212:判断间隔偏差是否大于预设偏差;若间隔偏差大于预设偏差,则执行步骤s213;若间隔偏差小于或等于预设偏差,则不执行任何操作。

在一实施例中,发包间隔为10ms,预设偏差可以是发包间隔的5%,预设偏差为0.5ms,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,还可以设置为其它数值,例如4%或者10%等,根据需要合理设置即可。

步骤s213:若间隔偏差大于预设偏差,则根据间隔偏差确定偏差调整时间。

具体地,根据间隔偏差确定偏差调整时间,包括:通过如下公式得到偏差调整时间,

t=2d/(1+δ)

其中,t为偏差调整时间;d为相邻两个已建立状态报文之间的预设间隔时间;δ为相邻两个已建立状态报文之间的间隔偏差。

步骤s214:通知对端设备根据偏差调整时间调整已建立状态报文的发送时间。

具体地,可通过在bfd协议中新增tlv来通知对端设备进行bfd发送up报文频率的调整。

例如,tlv1:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8890;

length:4b(32bit);

value:单精度,修改频率为原来的多少倍的数值。

上述双向转发检测方法通过在接收到的对端设备反馈的相邻两个已建立状态报文之间的间隔偏差超过预设偏差时,对对端设备的硬件单板的发包时间进行调整,使得接收到的对端设备反馈的up报文满足bfd协议要求。

由于硬件单板发包的频率精度存在偏差,这种偏差还会不断累积,最差的情况下会产生在三个周期内只发送两个up报文的情况,这大大提高了误报的风险;故需要对up报文的发包时间进行调整。在另一实施例中,如图19所示,步骤s21接收对端设备发送的已建立状态报文的步骤中,具体可包括步骤s215-s218。

步骤s215:确定相邻两个已建立状态报文之间的相对误差。

具体地,可通过获取已建立状态报文的接收时间,第二设备根据接收到的报文的接收时间得到相邻两个已建立状态报文之间的相对误差,本实施例仅作示意性说明,并不以此为限;当然,在其它实施例中,也可直接得到相邻两个已建立状态报文之间的相对误差,根据需要合理设置即可。

步骤s216:判断相对误差值是否大于预设误差;若相对误差值大于预设误差,则执行步骤s217;若相对误差值小于或者等于预设误差,则不执行任何操作。

步骤s217:若相对误差值大于预设误差,则根据相对误差确定误差调整时间。

具体地,如图20所示,步骤s217可包括步骤s2171-s2173。

步骤s2171:若相对误差值大于预设误差,则根据相对误差确定对端设备的主硬件单板和备硬件单板中误差较大的硬件单板。

具体地,可通过up报文携带的tlv不同来区分是从哪个单板发送过来的报文,进而第二设备可以根据接收到的up报文时刻确定第一设备的主硬件单板和备硬件单板中误差较大的硬件单板。

例如,增加tlv4和tlv5,tlv4中的标识报文可以用来表示主硬件单板发送的报文;tlv5中的标识报文可以用来表示备硬件单板发送的报文。

tlv4:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8893;

length:4b(32bit);

value:标识报文。

tlv5:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8894;

length:4b(32bit);

value:标识报文。

步骤s2172:获取对端设备的主硬件单板和备硬件单板的发包次数。

步骤s2173:根据发包次数确定误差较大的硬件单板的下一次发包时刻,将下一次发包时刻作为误差调整时间。

具体地,根据发包次数确定误差较大的硬件单板的下一次发包时刻,包括:通过如下公式得到误差较大的硬件单板的下一次发包时刻,

tbn+1=tbn+d+|tbn-tan+1|

其中,tbn+1为误差较大的硬件单板的下一次发包时刻;tbn为误差较大的硬件单板的当前发包时刻;tan+1为误差较小的硬件单板的下一次发包时刻;d为相邻两个已建立状态报文之间的预设间隔时间;n为正整数。

步骤s218:通知对端设备根据误差调整时间调整已建立状态报文的发送时间。

在一实施例中,通知第一设备在误差较大的硬件单板发送n个up报文之后,第n+1个报文的发包时间为tbn+1;第一设备每发送n个up报文后,调整下一次的发包时间。

具体地,可通过在bfd协议中新增tlv2和tlv3来通知对端设备进行bfd发送up报文频率的调整。

例如,tlv2:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8891;

length:4b(32bit);

value:置1时,通知下次发包调整到初始发包值。

tlv3:

type:定义传输这类消息的协议报文,选取目前没有用到的,例如8892;

length:4b(32bit);

value:传递周期值。

上述双向转发检测方法通过在接收到的对端设备反馈的相邻两个已建立状态报文之间的相对误差超过预设误差时,对对端设备的硬件单板的发包时间进行调整,使得接收到的对端设备反馈的up报文满足bfd协议要求。

在本实施例中还提供了一种双向转发检测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

相应地,请参考图21,本公开实施例提供一种双向转发检测装置,应用于第一设备,包括:第一处理模块11和第二处理模块12。

第一处理模块11,用于若获取到对端设备发送的已就绪状态报文(init),则将bfd会话状态切换为已建立状态;详细内容参考步骤s11所述。

第二处理模块12,用于控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文(up);详细内容参考步骤s12所述。

在一实施例中,该双向转发检测装置还包括:第一接收模块,用于接收所述对端设备反馈的已建立状态报文,所述对端设备反馈的已建立状态报文由所述对端设备的主硬件单板和备硬件单板交替发送,详细内容参考步骤s13所述;第三处理模块,用于若预设时间内接收到所述对端设备反馈的已建立状态报文,则保活会话,详细内容参考步骤s14所述。

在一实施例中,该双向转发检测装置还包括:第四处理模块,用于若预设时间内未接收到所述对端设备反馈的已建立状态报文,则将bfd会话状态切换为down,详细内容参考步骤s15所述。

在一实施例中,所述第一接收模块包括:第一处理子模块,用于确定相邻两个已建立状态报文之间的间隔偏差,详细内容参考步骤s131所述;第一判断子模块,用于判断所述间隔偏差是否大于预设偏差,详细内容参考步骤s132所述;第二处理子模块,用于若所述间隔偏差大于所述预设偏差,则根据所述间隔偏差确定偏差调整时间,详细内容参考步骤s133所述;第三处理子模块,用于通知所述对端设备根据所述偏差调整时间调整已建立状态报文的发送时间,详细内容参考步骤s134所述。

在一实施例中,所述第一处理子模块包括:第一获取单元,用于获取相邻已建立状态报文之间的多个间隔偏差,详细内容参考步骤s1311所述;第一处理单元,用于确定所述多个间隔偏差中的最大偏差为间隔偏差,详细内容参考步骤s1312所述。

在一实施例中,所述第二处理子模块包括:通过如下公式得到所述偏差调整时间,t=2d/(1+δ),其中,t为偏差调整时间;d为相邻两个已建立状态报文之间的预设间隔时间;δ为相邻两个已建立状态报文之间的间隔偏差。

可选地,所述第一接收模块包括:第四处理子模块,用于确定相邻两个已建立状态报文之间的相对误差,详细内容参考步骤s135所述;第二判断子模块,用于判断所述相对误差值是否大于预设误差,详细内容参考步骤s136所述;第五处理子模块,用于若所述相对误差值大于所述预设误差,则根据所述相对误差确定误差调整时间,详细内容参考步骤s137所述;第六处理子模块,用于通知所述对端设备根据所述误差调整时间调整已建立状态报文的发送时间,详细内容参考步骤s138所述。

所述第五处理子模块包括:第二处理单元,用于若所述相对误差值大于所述预设误差,则根据所述相对误差确定对端设备的主硬件单板和备硬件单板中误差较大的硬件单板,详细内容参考步骤s1371所述;第二获取单元,用于获取对端设备的主硬件单板和备硬件单板的发包次数,详细内容参考步骤s1372所述;第三处理单元,用于根据所述发包次数确定所述误差较大的硬件单板的下一次发包时刻,将所述下一次发包时刻作为误差调整时间,详细内容参考步骤s1373所述。

可选地,所述第三处理单元包括:通过如下公式得到所述误差较大的硬件单板的下一次发包时刻,

tbn+1=tbn+d+|tbn-tan+1|

其中,tbn+1为误差较大的硬件单板的下一次发包时刻;tbn为误差较大的硬件单板的当前发包时刻;tan+1为误差较小的硬件单板的下一次发包时刻;d为相邻两个已建立状态报文之间的预设间隔时间。

上述各个模块的更进一步的功能描述与上述方法实施例相同,在此不再赘述。

在本实施例中还提供了一种双向转发检测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

相应地,请参考图22,本公开实施例提供一种双向转发检测装置,应用于第二设备,包括:第二接收模块21和第五处理模块22。

第二接收模块,用于接收所述对端设备发送的已建立状态报文,所述对端设备发送的已建立状态报文由所述对端设备的主硬件单板和备硬件单板交替发送,详细内容参考步骤s21所述。

第五处理模块,用于若预设时间内接收到所述对端设备发送的已建立状态报文,则控制主硬件单板和备硬件单板向所述对端设备交替发送已建立状态报文(up),详细内容参考步骤s22所述。

可选地,还包括:第六处理模块,用于若预设时间内未接收到所述对端设备反馈的已建立状态报文,则将bfd会话状态切换为down,详细内容参考步骤s23所述。

可选地,所述第二接收模块包括:第七处理子单元,用于确定相邻两个已建立状态报文之间的间隔偏差,详细内容参考步骤s211所述;第三判断子模块,用于判断所述间隔偏差是否大于预设偏差,详细内容参考步骤s212所述;第八处理子模块,用于若所述间隔偏差大于所述预设偏差,则根据所述间隔偏差确定偏差调整时间,详细内容参考步骤s213所述;第九处理子模块,用于通知所述对端设备根据所述偏差调整时间调整已建立状态报文的发送时间,详细内容参考步骤s214所述。

可选地,所述第七处理子单元包括:第三获取单元,用于获取相邻已建立状态报文之间的多个间隔偏差,详细内容参考步骤s2111所述;第四处理单元,用于确定所述多个间隔偏差中的最大偏差为间隔偏差,详细内容参考步骤s2112所述。

可选地,所述第八处理子模块包括:通过如下公式得到所述偏差调整时间,

t=2d/(1+δ)

其中,t为偏差调整时间;d为相邻两个已建立状态报文之间的预设间隔时间;δ为相邻两个已建立状态报文之间的间隔偏差。

可选地,所述第二接收模块包括:第十处理子模块,用于确定相邻两个已建立状态报文之间的相对误差,详细内容参考步骤s215所述;第四判断子模块,用于判断所述相对误差值是否大于预设误差,详细内容参考步骤s216所述;第十一处理子模块,用于若所述相对误差值大于所述预设误差,则根据所述相对误差确定误差调整时间,详细内容参考步骤s217所述;第十二处理子模块,用于通知所述对端设备根据所述误差调整时间调整已建立状态报文的发送时间,详细内容参考步骤s218所述。

可选地,所述十一处理子模块包括:第五处理单元,用于若所述相对误差值大于所述预设误差,则根据所述相对误差确定对端设备的主硬件单板和备硬件单板中误差较大的硬件单板,详细内容参考步骤s2171所述;第四获取单元,用于获取对端设备的主硬件单板和备硬件单板的发包次数,详细内容参考步骤s2172所述;第六处理单元,用于根据所述发包次数确定所述误差较大的硬件单板的下一次发包时刻,将所述下一次发包时刻作为误差调整时间,详细内容参考步骤s2173所述。

可选地,所述第六处理单元包括:通过如下公式得到所述误差较大的硬件单板的下一次发包时刻,

tbn+1=tbn+d+|tbn-tan+1|

其中,tbn+1为误差较大的硬件单板的下一次发包时刻;tbn为误差较大的硬件单板的当前发包时刻;tan+1为误差较小的硬件单板的下一次发包时刻;d为相邻两个已建立状态报文之间的预设间隔时间。

上述各个模块的更进一步的功能描述与上述方法实施例相同,在此不再赘述。

本公开实施例还提供了一种电子设备,如图23所示,包括:处理器101和存储器102;其中,处理器101和存储器102可以通过总线或者其他方式连接,图23中以通过总线连接为例。

处理器101可以为中央处理器(centralprocessingunit,cpu)。处理器101还可以为其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器102作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施例中的双向转发检测方法对应的程序指令/模块(例如,图21所示的第一处理模块11和第二处理模块12,或者图22所示的第二接收模块21和第五处理模块22)。处理器101通过运行存储在存储器102中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的双向转发检测方法。

存储器102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器101所创建的数据等。此外,存储器102可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器102可选包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至处理器101。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器102中,当被所述处理器101执行时,执行如图4至图20所示实施例中的双向转发检测方法。

上述服务器具体细节可以对应参阅图4至图20所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。

本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述任一所述的双向转发检测方法。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

虽然结合附图描述了本公开的实施例,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

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