检测链路状态的方法、装置和路由器与流程

文档序号:15930098发布日期:2018-11-14 01:32阅读:518来源:国知局
本公开涉及通信
技术领域
,尤其是涉及一种检测链路状态的方法、装置和路由器。
背景技术
sr(segmentrouting,段路由)技术是一种源路由技术,其采用源路径选择机制;报文在进入sr隧道之前,预先在头节点封装好该报文转发路径所要经过的路由段的sid(segmentidentifier,段标识);当报文经过sr节点时,该节点根据报文的sid对报文进行转发。除头节点外,其它节点无需维护路径状态。sr技术可以应用于mpls(multi-protocollabelswitching,多协议标签交换)流量转发技术,也可以应用于ipv6(internetprotocolversion6,第六版的互联网协议)网络。其中,对于ipv6网络,考虑到组网稳定性,ipv6网络中的sr隧道常常部署有主备路径;当主路径发生故障时,启用备用路径进行流量转发,以避免流量转发中断;然而,主路径中可能存在多条等价链路,即在主路径的某些特定转发段存在并列的多个子链路,如果网络监测到其中一条子链路发生故障,则会启用备用路径;由于其他子链路依然通畅,网络会发生从主路径切换到备用路径又很快切换回主路径的情况,这就形成了网络切换震荡,造成网络稳定性较差。技术实现要素:有鉴于此,本公开的目的在于提供一种检测链路状态的方法、装置和路由器,以提高网络的稳定性。为了实现上述目的,本公开采用的技术方案如下:第一方面,本公开提供了一种检测链路状态的方法,该方法应用于ipv6sr隧道的头节点,该方法包括:检测主路径上是否存在等价链路;如果存在等价链路,按照预设的报文双发机制进行bfd检测;其中,报文双发机制指示发送携带不同报文标识的bfd报文;如果检测结果为主路径可达,设置主路径的链路状态为up。第二方面,本公开提供了一种检测链路状态的方法,该方法应用于ipv6sr隧道中的中间节点,该方法包括:接收协议报文,其中,协议报文包括探测报文和bfd报文;检查协议报文的报文头中的报文标识和下一个关键节点;如果当前的中间节点与下一个关键节点之间存在至少两条等价链路,根据报文标识对协议报文进行转发处理;报文标识为头节点按照报文双发机制进行bfd检测时,发送的bfd报文中携带的报文标识。第三方面,本公开提供了一种检测链路状态的装置,该装置设置于ipv6sr隧道的头节点,该装置包括:等价链路检测模块,用于检测主路径上是否存在等价链路;第一bfd检测模块,用于如果存在等价链路,按照预设的报文双发机制进行bfd检测;其中,报文双发机制指示发送携带不同报文标识的bfd报文;设置模块,用于如果检测结果为主路径可达,设置主路径的链路状态为up。第四方面,本公开提供了一种检测链路状态的装置,该装置设置于ipv6sr隧道中的中间节点,该装置包括:报文接收模块,用于接收协议报文,其中,协议报文包括探测报文和bfd报文;检查模块,用于检查协议报文的报文头中的报文标识和下一个关键节点;报文转发模块,用于如果下一个关键节点存在至少两条等价链路,根据报文标识对协议报文进行转发处理;报文标识为头节点按照报文双发机制进行bfd检测时,发送的bfd报文中携带的报文标识。第五方面,本公开实施方式提供了一种报文传输的实现装置,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述检测链路状态的方法。第六方面,本公开实施方式提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述检测链路状态的方法。上述检测链路状态的方法、装置和路由器和机器可读存储介质,如果主路径上存在等价链路,则按照预设的报文双发机制,发送携带不同报文标识的bfd报文,从而对主路径上的各等价链路进行bfd检测,如果检测结果为主路径可达,则设置该主路径的链路状态为up。该方式中,只有检测到主路径上的所有等价链路均中断时,才上报主路径中断,避免了其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本公开实施方式提供的报文经ipv6网络中的sr隧道进行转发的示意图;图2为本公开实施方式提供的一种ipv6网络中sr隧道的结构示意图;图3为本公开实施方式提供的ipv6网络中sr隧道进行主备链路切换的示意图;图4为本公开实施方式提供的一种检测链路状态的方法的流程图;图5为本公开实施方式提供的另一种检测链路状态的方法的流程图;图6为本公开实施方式提供的另一种检测链路状态的方法中,第一探测报文和第二探测报文在主路径中传输的示意图;图7为本公开实施方式提供的另一种检测链路状态的方法的流程图;图8为本公开实施方式提供的另一种检测链路状态的方法中,t1定时器和t2定时器的计时关系示意图;图9为本公开实施方式提供的另一种检测链路状态的方法的流程图;图10为本公开实施方式提供的一种检测链路状态的装置的结构示意图;图11为本公开实施方式提供的另一种检测链路状态的装置的结构示意图;图12为本公开实施方式提供的一种路由器的结构示意图。具体实施方式为使本公开实施方式的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。为了更好地理解本公开的技术方案,下面首先对基于ipv6的sr技术进行描述。基于ipv6的sr采用源路径选择机制,头节点收到报文后,封装好该报文的后续转发路径中所有节点的ipv6地址,该封装可以称为srheader(后续简称srh或sr头);当报文依次经过中间节点时,中间节点对该srh进行逐层的解封装,并从srh中取出对应ipv6地址,并作为报文的目的ip继续转发,直至到终节点完成该srh的全部解封装。由于采用源路径选择机制,上述头节点可以根据需要选择任意可达的路径或目的节点,除头节点外,其它节点无需维护路径状态。为了实现上述ipv6报文的封装,ipv6的sr隧道采用单向隧道,相对于ipv6中常见的单播隧道,用户只需要在该单向隧道的头节点配置用于sr转发的路由段清单(segmentlist),sr隧道中的中间节点和终节点无需感知报文或网络所涉及的具体业务。上述ipv6中报文头部的封装形式具体可以如下述表1所示。表1由表1可知,该报文头部包括上述ipv6常规封装部分和sr相关的特殊封装部分;该ipv6常规封装部分可以根据协议rfc2460进行标准封装设置,也可以称为ipv6header(后续简称ipv6h或ipv6头);该sr相关的特殊封装部分即为上述srh。其中,“扩展首部”字段(也可以称为nextheader或nh字段)用于表明该报文内层封装的协议类型,例如,如果nh=4,则表明协议类型为ipv4(internetprotocolversion4,第四版的互联网协议);如果nh=6,则表明协议类型为tcp(transmissioncontrolprotocol传输控制协议);如果nh=43,则表明协议类型为ipv6。上述封装形式中,其他各字段的含义如下:“下一个首部”字段:也可以称为nextheader,长度为8位,表示内层封装的协议类型,与上述“扩展首部”字段含义一致。“下一个首部的长度”字段:也可以称为hdrextlen,其数值等于srh占用的字节数减去8字节后再除以8,即hdrextlen=2n,n为路由段清单的个数。“路由类型”字段:也可以称为routingtype,该routingtype可以设置为4,表示该报文的路由类型为段路由。“剩余节点数”字段:也可以称为segmentsleft,该字段用于标识sr路径的剩余节点数目,每经过一个节点,该字段中的数值减1,当segmentsleft=0时,设备会根据这个字段判断该报文的sr隧道转发是否终结,并开始常规的转发方式,例如,基于ip地址的转发。“路由段清单”字段:也可以称为segmentlist,用于保存128位的ipv6地址,共包含从头节点到终节点所经过的所有节点的路径地址。另外,“下一个入口”字段(也可以称为lastentry字段)、“标识”字段(也可以称为flags字段)和“标签”字段(也可以称为tag字段)尚未被利用,因此这些字段通过0进行初始封装。参见图1为报文经ipv6中的sr隧道进行转发的示意图;ipv6中的sr隧道中通常包括具有更新上述报文头部功能的关键节点,以及仅能查询和识别该报文头部指定字段的非关键节点;图1中,设备a1、设备a2和设备a3为关键节点,设备b为非关键节点;其中,设备a1为头节点,设备a2和设备b为中间节点,设备a3为终节点。转发过程具体包括如下步骤:步骤(1),设备a1接收到报文,该报文即进入sr隧道;设备a1在报文的ipv6负载和以太网eth头之间增加上述ipv6h和srh。具体而言,设备a1可以根据报文的目的地址,确定该报文需要经过的关键节点,并将该关键节点的ipv6地址写入上述srh中的“路由段清单”字段中,如图1中的设备a2和设备a3的ipv6地址;由于设备1的后续有两个关键节点的设备,上述“剩余节点数”设置为segmentsleft=2。设备a1完成上述封装过程后,该报文的源ip(即sip)设置为设备a1的环回口地址(也可以称为loopback口地址),该报文的目的ip(即dip)设置为上述路由段清单中的第一层ipv6地址,即设备a2的ipv6地址,进而将报文转发至设备b。步骤(2),设备b接收到报文后,根据报文的dip查找到设备a2的ipv6地址,将该报文转发至设备a2;通常,设备b仅用于查询ipv6地址,并转发报文,不具有识别srh或编辑更新报文头的功能。步骤(3),设备a2接收到报文后,“剩余节点数”字段更新为segmentsleft=1;设备a2从路由段清单中查找到该设备a2的下一个关键节点,即设备a3的ipv6地址,将原dip替换为该a3的ipv6地址,进而根据更新后的dip将报文转发至设备a3。上述设备a2和设备a3之间也可能存在非关键节点,这些非关键节点可以组成一条设备a2和设备a3之间的通信路径,也可以组成多条通信路径;当组成一条通信路径时,这些非关键节点可以按顺序依次转发报文,直至设备a3;当组成多条通信路径时,这些非关键节点可以根据各通信路径的报文转发量,报文本身的地址参数等选取指定的通信路径转发该报文,当然,也可以采取随机的方式选取通信路径。步骤(4),设备a3接收到报文后,“剩余节点数”字段更新为segmentsleft=0;当segmentsleft=0时,表明该设备a3为sr设备终节点;设备a3作为终结点,会删除报文中的ipv6h和srh,将报文还原成刚进入设备a1时的状态,即ipv6负载和以太网eth头的报文结构。报文还原后,设备a3根据报文本身的目的ip地址,将报文转发至对应的下一个节点设备。在实际实现时,上述ipv6中的sr隧道可能具有更为复杂的网络结构,例如,为了保证组网稳定性,sr隧道部署有主路径和备用路径。如图2所示,设备a1为头节点,设备a4为终节点;在设备a1和设备a4之间,设备a1、设备a2和设备a4组成主路径,设备a1、设备a3和设备a4组成备用路径;其中,主路径中的设备b、设备c和设备d为非关键节点,即仅支持ipv6的报文转发功能。如果主路径发生故障,可以将报文转发流量切换至备用路径,避免网络堵塞的情况。为了提高切换速度,可以采用bfd(bidirectionalforwardingdetection,双向转发侦测)机制实时或定时检测主路径是否中断,如果bfd检测到中断,则立即切换流量至备用路径,图3为主备链路的切换示意图。继续参阅图2,设备a1与设备a2之间存在两条通信链路,其中一条由设备a1、设备b、设备c和设备a2组成,另一条由设备a1、设备b、设备d和设备a2组成,这两条通信链路为等价路由;因此,不论是bfd检测报文,还是普通的数据报文,都可能走这两条等价路由中的任意一条。另外,当报文到达设备b时,设备b节点通常根据报文的ipv6h和srh中的相关参数或字段(例如,dip)进行哈希计算,以确定该报文是转发至设备c还是设备d;因此,如果bfd检测报文和数据报文封装的ipv6h和srh相同,哈希计算的结果就会相同,则该bfd检测报文和数据报文通常会选择上述两个等价路由中的同一路径。当上述bfd检测报文和数据报文选择了由设备a1、设备b、设备c和设备a2组成的路径时,如果设备b和设备a2之间发生的故障,则会造成设备a1和设备a2之间通信中断;bfd机制会感知到该中断,并将中断信号上报至设备a1,设备a1会立即进行主备链路的切换,将流量切换至设备a1、设备a3和设备a4组成的备用路径上。上述设备b和设备a2之间发生的故障,可能为设备c发生故障,或者设备b与设备c之间的链路发生故障(如图2所示),还可能为设备c与设备a2之间的链路发生故障。但是,设备b和设备a2之间的另一条等价路由并没有中断,处于正常连接状态,bfd机制在不断检测主路径通断的过程中,很有可能会发现设备a1和设备a2之间的通信还可以通过设备a1、设备b、设备d和设备a2这一路由实现,bfd机制会通知设备a1将流量再次切换回主路径中。在上述过程中,设备b和设备a2之间故障后,流量从主路径切换至备用路径,继而又切换回主路径,由于主路径始终没有真正中断过,这种切换震荡并没有带来好处,反而会造成网络的不稳定,因而用户并不期望这种没有必要的切换震荡。为了避免这种切换震荡,本公开实施方式提供了一种检测链路状态的方法,该方法应用于ipv6sr隧道的头节点,如图4所示,该方法包括如下步骤:步骤s402,检测主路径上是否存在等价链路;在ipv6网络中部署sr隧道时,通常通过头节点指定sr隧道需要经过的关键节点的位置,以控制报文的流向;但往往很难知晓关键节点之间的非关键节点的分布情况,更加难以确定主路径中是否存在等价链路。为了检测主路径上的等价链路,可以在sr隧道的头节点和终节点之间传递多个检测报文;多个检测报文从头节点传输至终节点的过程中,报文自身保存所经过的所有节点,检测报文到达终结点后,再将该报文返回至头节点;头节点对返回的报文一一查询,如果所有检测报文中保存的节点全部相同,则说明该主路径上没有等价链路,仅存在一条链路;如果所有的检测报文中保存的节点不完全相同,则说明该主路径上存在等价链路;头节点可以对检测报文中保存的节点进行进一步分析,从而得到更加准确的等价链路的结构。头节点还可以通过其他方式检测等价链路,例如,可以从头节点开始,头节点向与之连接的中间节点a发送上述检测报文,从而检测头节点与中间节点a之间是否存在等价链路;检测完毕后,再由中间节点a向与之连接的下一跳中间节点b发送上述检测报文,依次类推,直至检测到终节点,以完成整个主链路的等价链路检测过程。步骤s404,如果存在等价链路,按照预设的报文双发机制进行bfd检测;其中,该报文双发机制指示发送携带不同报文标识的bfd报文;如果存在等价链路,则说明头节点和终节点之间至少存在两条不完全相同的通信链路;以两条通信链路为例,头节点可以发送两个bfd检测报文;这两个bfd检测报文经上述报文双发机制处理,携带有不同的报文标识,报文标识的具体形式可以为数字、字母或其他形式;该报文标识具体可以设置在检测报文的报文头中,例如ipv6h或srh。当报文到达等价链路的分叉节点时,该分叉节点通过ipv6h和srh中的相关参数或字段进行哈希计算,上述报文标识同时参与计算,此时不同报文标识对应的报文得到的计算结果不同,即可以使携带有不同报文标识的报文走不同的等价链路。上述分叉节点可以理解为,该分叉节点为等价链路共享的节点,但同时连接有等价链路之间的不同节点。如果头节点和终节点之间存在三条以上的等价链路,采用上述预设的报文双发机制进行bfd检测时,依然可以发送携带有不同标识的两个bfd检测报文,以随机检测其中的两条等价链路;当然,也可以根据等价链路的条数,发送携带有不同标识多个bfd检测报文,以同时对多个等价链路进行检测。步骤s406,如果检测结果为主路径可达,设置该主路径的链路状态为up。终节点如果接收到头节点发送的上述bfd检测报文,通常会向头节点发送对应的回应报文;bfd检测报文与回应报文一一对应;不论头节点发送多少个bfd检测报文,只要接收到了其中一个回应报文,即可表明该主路径为通畅状态(即up状态);如果头节点接收不到任何一个回应报文,则可以表明该主路径为中断状态(即down状态),此时则需要将流量切换至备用路径上。本公开实施方式提供的上述检测链路状态的方法,如果主路径上存在等价链路,则按照预设的报文双发机制,发送携带不同报文标识的bfd报文,从而对主路径上的各等价链路进行bfd检测,如果检测结果为主路径可达,则设置该主路径的链路状态为up。该方式中,只有检测到主路径上的所有等价链路均中断时,才上报主路径中断,避免了其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。本公开实施方式提供了另一种检测链路状态的方法,该方法进一步描述了检测等价链路,以及进行bfd检测的具体实现方式;由上述可知,头结点可以向终结点发送检测报文,以检测主路径中是否存在等价链路,本实施方式对该方式进行具体描述。该方法应用于ipv6sr隧道的头节点,如图5所示,该方法包括如下步骤:步骤s502,通过sr隧道的主路径发送第一探测报文和第二探测报文,其中,该第一探测报文和第二探测报文携带的报文标识不同,以使sr隧道中的非关键节点根据报文标识转发第一探测报文和第二探测报文;由上述可知,非关键结点通常仅具有查询ipv6地址,并转发报文,不具有识别srh或编辑更新报文头的功能;本实施方式中,为了使非关键节点识别携带有不同报文标识的报文,可以开启非关键节点对sr隧道的检测功能,即具有识别srh中相关字段的功能。上述报文标识可以设置在报文头中,尚未被利用的字段中,例如,将报文标识设置于srh头的flags字段,当然也可以设置在srh头的tag字段中。该报文标识可以为不同的数值,例如,0x01、0x02;由于非关键节点已经具有识别srh中相关字段的功能,因此,非关键节点接收到上述第一探测报文和第二探测报文时,可以根据报文标识将第一探测报文和第二探测报文分别通过不同的端口转发,以使第一探测报文和第二探测报文走不同的等价链路。通常,ipv6sr隧道以及对应的bfd检测机制构建完成后,该sr隧道的主路径包含的关键节点已经确定;当bfd构建会话成立后,头结点即开始发出上述第一探测报文和第二探测报文,这些探测报文与普通的数据报文性质相同,这些探测报文通常需要经过主路径上的关键节点,目的节点为主路径上的终节点,即探测报文的目的ip为sr隧道终节点的ip地址。步骤s504,接收第一探测报文对应的第一回应报文和第二探测报文对应的第二回应报文;该第一探测报文和第二探测报文在主路径中传输时,为了记录探测报文的传输路径,每经过一个节点(包括关键节点和非关键节点),探测报文可以将当前所处的节点标识,或者从当前节点的发送端口标识记录至探测报文中;节点标识或发送端口标识可以记录在报文的“段路由清单”字段中,也可以记录在新增的ipv6扩展头中,或者报文的负载字段中,当然也可以采用其他形式记录这些标识,本实施方式对此不作限定。图6所示为第一探测报文和第二探测报文在主路径中的传输示意图;图6中,以探测报文记录从当前节点的发送端口标识为例进行具体说明;其中,实线箭头代表第一探测报文的传输路径,虚线箭头代表第二探测报文的传输路径;该第一探测报文和第二探测报文分部携带有报文标识0x01和0x02。对于第一探测报文,传输过程包括下述步骤:步骤(1),该第一探测报文经设备a1的端口11.1.1.1发送至设备b,记录端口标识11.1.1.1;步骤(2),设备b对第一探测报文的ipv6h和srh进行分析,可知该报文下一跳的关键节点的地址为a2,且设备b经查询路由表可以知道有两条路径可到达设备a2,因此,设备b可以从两条路径中选择一个路径供第一探测报文传输,例如,第一探测报文经设备b的端口12.1.1.1发送至设备c,并记录端口标识12.1.1.1;步骤(3),设备c对第一探测报文的ipv6h和srh进行分析,可知该报文下一跳的关键节点的地址为a2,因而将第一探测报文经设备c的端口13.1.1.1发送至设备a2,并记录端口标识13.1.1.1;步骤(4),设备a2收到第一探测报文后,从srh的路由段清单中查找到该设备a2的下一个关键节点,即设备a4的ipv6地址,将原dip替换为该a4的ipv6地址,进而根据更新后的dip将第一探测报文转发至设备a4,同时记录设备a2发送第一探测报文的端口标识16.1.1.1。步骤(5),设备a4收到该第一探测报文后,可以生成第一回应报文发送至a1;该第一回应报文中携带有第一探测报文记录的上述全部端口标识;该第一回应报文的具体形式可以为单播ipv6sr报文。与上述第一探测报文的传输过程类似,对于第二探测报文,传输过程包括下述步骤:步骤(1),该第二探测报文经设备a1的端口11.1.1.1发送至设备b,记录端口标识11.1.1.1;步骤(2),设备b对第二探测报文的ipv6h和srh进行分析,可知该报文下一跳的关键节点的地址为a2,且设备b经查询路由表可以知道有两条路径可到达设备a2,因此,设备b可以从两条路径中选择一个路径供第一探测报文传输,例如,第二探测报文经设备b的端口14.1.1.1发送至设备d,并记录端口标识14.1.1.1;上述第一探测报文和第二探测报文可能同时到达设备b,也可能先后到达设备b;如果是同时到达,设备b可以随机为该第一探测报文和第二探测报文分配发送端口,只要满足第一探测报文和第二探测报文的发送端口不同即可;如果是先后到达,以第一探测报文先到达为例,设备b可以先为第一探测报文随机选择发送端口,例如,选择了端口12.1.1.1,并记录该端口12.1.1.1已经发送携带有报文标识0x01的探测报文,以避免设备b为第二探测报文再次选择该端口12.1.1.1,此时设备b只能选择除端口12.1.1.1以外的端口发送第二探测报文,例如,端口14.1.1.1。当然,设备b可以预先指定报文标识与发送端口的对应关系,例如,报文标识0x01对应端口标识为12.1.1.1,报文标识0x02对应端口标识为14.1.1.1;此时,设备b只要查找该对应关系,即可获得发送探测报文的端口。步骤(3),设备d对第二探测报文的ipv6h和srh进行分析,可知该报文下一跳的关键节点的地址为a2,因而将第二探测报文经设备d的端口15.1.1.1发送至设备a2,并记录端口标识15.1.1.1;步骤(4),设备a2收到第二探测报文后,从srh的路由段清单中查找到该设备a2的下一个关键节点,即设备a4的ipv6地址,将原dip替换为该a4的ipv6地址,进而根据更新后的dip将第二探测报文转发至设备a4,同时记录设备a2发送第二探测报文的端口标识16.1.1.1。步骤(5),设备a4收到该第二探测报文后,可以生成第二回应报文发送至a1;该第二回应报文中携带有第二探测报文记录的上述全部端口标识;该第二回应报文的具体形式可以为单播ipv6sr报文。至此,头节点接收到了第一探测报文对应的第一回应报文和第二探测报文对应的第二回应报文,继续参阅图5:步骤s506,如果第一回应报文和第二回应报文携带的下一跳不同,确定主路径上存在等价链路。头节点可以对第一回应报文和第二回应报文中记录的端口标识进行逐一比对,如果记录的端口标识,以及端口标识之间的顺序完全相同,则可以表明主链路上不存在等价链路;如果记录的端口标识,以及端口标识之间的顺序不完全相同,则可以标识主链路上存在等价链路。下述表2为第一探测报文和第二探测报文经上述图6所示传输路径后,记录的端口标识;表2第一探测报文第二探测报文11.1.1.111.1.1.112.1.1.114.1.1.113.1.1.115.1.1.116.1.1.116.1.1.1由表2可知,第一探测报文和第二探测报文记录有不同的端口标识,因此,图6所示的主路径上存在等价链路。步骤s508,通过主路径发送第一bfd报文和第二bfd报文,其中,该第一bfd报文和第二bfd报文携带有不同的报文标识,以使sr隧道中的非关键节点根据报文标识转发第一bfd报文和第二bfd报文;该第一bfd报文和第二bfd报文携带的报文标识同样可以设置在报文头中尚未被利用的字段中,例如,srh头的flags字段或者tag字段。该报文标识也可以为不同的数值,例如,0x01、0x02。与上述非关键节点发送第一探测报文和第二探测报文的方式类似,非关键节点也可以根据报文标识,将第一bfd报文和第二bfd报文发送至不同的等价链路上。该第一bfd报文和第二bfd报文可以同时发送,也可以按照先后顺序发送;第一bfd报文和第二bfd报文可以仅发送一次,也可以分批多次发送。步骤s510,如果在设定时间内接收到主路径返回的bfd回应报文,得出主路径可达的检测结果;如果主路径的等价链路均畅通,则头结点会接收到第一bfd报文的bfd回应报文,以及第二bfd报文的bfd回应报文;如果主链路上的等价链路中,部分链路发生了故障,由于第一bfd报文和第二bfd报文走的是不同的等价链路,则终节点很有可能仅能收到其中一个bfd报文,并向头节点返回一个bfd回应报文。不论头节点接收到多少个bfd回应报文,只要头结点在设定时间内接收到至少一个bfd回应报文,则可以表明主路径为畅通状态,即主路径可达。步骤s512,设置主路径的链路状态为up。相应地,如果头结点在设定时间内一个bfd回应报文都没有接收到,则可以表明主路径为中断状态,即主路径不可达;此时,可以设置主路径的链路状态为down;当头结点检测到主路径的链路状态为down时,可以立即切换流量至备用路径。上述检测链路状态的方法,通过发送探测报文检测主路径上是否存在等价链路;如果存在,采用双发的形式发送携带不同报文标识的bfd报文,从而对主路径上的各等价链路进行bfd检测,只有在头结点接收不到任何bfd回应报文的时候,才上报主路径中断,避免了其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。本公开实施方式提供了另一种检测链路状态的方法;考虑到探测报文的时效性,头结点在发送探测报文之后,通常需要设置一个合理的时间段(该实施方式中,该时间段通过t1定时器实现),用于接收探测报文对应的回应报文,并进行后续的bfd检测等过程。另外,在大多数情况下,不论是企业网络还是运营商网络,网络总体环境都是相对稳定的,网络发生故障并造成中断的情况发生概率较低;考虑到发送上述探测报文和bfd报文均有可能增加网络链路的开销,可以设置另一个时间段(该实施方式中,该时间段通过t2定时器实现),根据该时间段周期性地发送探测报文以评估网络结构是否发生变化,进而重新确定bfd报文的发送机制。通常,如果当前网络较为稳定,且网络结构变化不大,该时间段可以设置为较大的数值。如图7所示,该方法具体包括如下步骤:步骤s702,通过sr隧道的主路径发送第一探测报文和第二探测报文,其中,该第一探测报文和第二探测报文携带的报文标识不同,以使sr隧道中的非关键节点根据报文标识转发第一探测报文和第二探测报文;步骤s704,如果完成第一探测报文和第二探测报文的发送,启动计时器;该计时器可以通过上述t1定时器实现;步骤s706,在计时器的计时时长内接收第一探测报文对应的第一回应报文和第二探测报文对应的第二回应报文;如果接收到第一回应报文和第二回应报文,执行步骤s708;如果接收到第一回应报文或第二回应报文之一,执行步骤s710;如果没有接收到任何回应报文,执行步骤s712;步骤s708,判断第一回应报文和第二回应报文携带的下一跳是否相同;如果是,执行步骤s710,如果否,执行步骤s714;如果在计时器的计时时长内接收到上述第一回应报文和第二回应报文,则结束t1定时器,上述步骤s708执行完毕后,启动t2定时器。在t2定时器的计时时长内,执行步骤s710或步骤s714。步骤s710,按照预设的报文单发机制进行bfd检测,报文单发机制指示bfd报文携带相同的报文标识或不携带报文标识,执行步骤s716;如果在计时器的计时时长内(即t1定时器计时结束后)仅接收到第一回应报文或第二回应报文之一,则表明主路径内可能存在等价链路,但可能其中一个等价链路中断,导致对应的探测报文没有发送至终节点;此时,主路径的状态相当于不存在等价链路。步骤s712,确定主路径不可达,设置主路径的链路状态为down,立即切换流量至备用路径。步骤s714,确定主路径上存在等价链路,按照预设的报文双发机制进行bfd检测;步骤s716,判断检测结果;如果检测结果为主路径可达,执行步骤s718;如果检测结果为主路径不可达,执行步骤s712。步骤s718,设置主路径的链路状态为up。通常,头结点在第一次发送探测报文时,可以先启动t1定时器,t1定时器关闭或计时结束后,再启动t2定时器;由于报文在网络中的传输速度较快,因而上述计时时长,即t1定时器的数值会远远小于t2定时器的数值。由上述可知,t2定时器用于控制探测报文的发送周期,因此,探测报文的发送时机可以为距离t2定时器计时结束之前的t1定时器计时时长的时间点,如图8所示,由于t1定时器每次计时的时长不确定,采用这种方式,可以使t1定时器不影响t2定时器的计时周期,即t1定时器和t2定时器能够相互独立。当然,上述t2定时器也可以设置为在t1定时器计时结束之后再启动计时。假设当前的bfd报文采用的是双发机制,再次发送两个探测报文后,如果发现回应报文中的端口标识均相同,则该周期内的bfd报文会采用单发机制,即bfd报文的发送机制可以以t2定时器的计时时长为周期进行更新。上述检测链路状态的方法,头结点通过发送探测报文可以明确感知主路径上非关键节点是否存在路由等价的情况,使得bfd报文在合理的条件下进行双发,从而对主路径上的各等价链路进行bfd检测,只有在头结点接收不到任何bfd回应报文的时候,才上报主路径中断,避免了其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。本公开实施方式还提供了另一种检测链路状态的方法;该方法应用于ipv6sr隧道中的中间节点,该方法在上述应用于头结点的方法基础上实现;如图9所示,该方法包括如下步骤:步骤s902,接收协议报文,其中,该协议报文包括探测报文和bfd报文;步骤s904,检查协议报文的报文头中的报文标识和下一个关键节点;步骤s906,如果当前的中间节点与下一个关键节点之间存在至少两条等价链路,根据报文标识对协议报文进行转发处理。上述检测链路状态的方法中,如果中间节点与下一个关键节点之间存在至少两条等价链路,则根据报文标识对转发该协议报文,以检测主路径上是否存在等价链路,并对等价链路进行bfd检测;该方式可以避免其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。需要说明的是,上述各方法实施方式均采用递进的方式描述,每个实施方式重点说明的都是与其他实施方式的不同之处,各个实施方式之间相同相似的部分互相参见即可。对应于上述方法实施方式,参见图10所示的一种检测链路状态的装置的结构示意图,该装置设置于ipv6sr隧道的头节点,该装置包括:等价链路检测模块1000,用于检测主路径上是否存在等价链路;第一bfd检测模块1002,用于如果存在等价链路,按照预设的报文双发机制进行bfd检测;其中,报文双发机制指示发送携带不同报文标识的bfd报文;设置模块1004,用于如果检测结果为主路径可达,设置该主路径的链路状态为up。本公开实施方式提供的上述检测链路状态的装置,如果主路径上存在等价链路,则按照预设的报文双发机制,发送携带不同报文标识的bfd报文,从而对主路径上的各等价链路进行bfd检测,如果检测结果为主路径可达,则设置该主路径的链路状态为up。该方式中,只有检测到主路径上的所有等价链路均中断时,才上报主路径中断,避免了其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。上述等价链路检测模块,还用于:通过sr隧道的主路径发送第一探测报文和第二探测报文,其中,第一探测报文和第二探测报文携带的报文标识不同,以使sr隧道中的非关键节点根据报文标识转发第一探测报文和第二探测报文;接收第一探测报文对应的第一回应报文和第二探测报文对应的第二回应报文;如果第一回应报文和第二回应报文携带的下一跳不同,确定主路径上存在等价链路。上述等价链路检测模块,还用于:如果完成第一探测报文和第二探测报文的发送,启动计时器;在计时器的计时时长内接收第一探测报文对应的第一回应报文和第二探测报文对应的第二回应报文;装置还包括第二bfd检测模块,用于如果在第一计时器的计时时长内仅接收到第一回应报文或第二回应报文,按照预设的报文单发机制进行bfd检测,报文单发机制指示bfd报文携带相同的报文标识或不携带报文标识。上述第一bfd检测模块,还用于:通过主路径发送第一bfd报文和第二bfd报文,其中,第一bfd报文和第二bfd报文携带有不同的报文标识,以使sr隧道中的非关键节点根据报文标识转发第一bfd报文和第一bfd报文;如果在设定时间内接收到主路径返回的bfd回应报文,得出主路径可达的检测结果。上述报文标识设置于srh头的flags字段。参见图11所示的另一种检测链路状态的装置的结构示意图,该装置设置于ipv6sr隧道中的中间节点,该装置包括:报文接收模块1102,用于接收协议报文,其中,协议报文包括探测报文和bfd报文;检查模块1104,用于检查协议报文的报文头中的报文标识和下一个关键节点;报文转发模块1106,用于如果下一个关键节点存在至少两条等价链路,根据报文标识对协议报文进行转发处理;报文标识为头节点按照报文双发机制进行bfd检测时,发送的bfd报文中携带的报文标识。上述检测链路状态的装置中,如果中间节点与下一个关键节点之间存在至少两条等价链路,则根据报文标识对转发该协议报文,以检测主路径上是否存在等价链路,并对等价链路进行bfd检测;该方式可以避免其中一条等价路径中断就进行主备路径切换造成的切换震荡,提高了网络的稳定性。本实施方式提供了一种与上述方法实施方式相对应的路由器。图12为该路由器的结构示意图,如图12所示,该设备包括处理器1201和存储器1202;其中,存储器1202用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述检测链路状态的方法。图12所示的路由器还包括总线1203和转发芯片1204,处理器1201、转发芯片1204和存储器1202通过总线1203连接。该路由器可以是网络边缘设备。其中,存储器1202可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。总线1203可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。转发芯片1204用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的ipv4报文或ipv6报文通过网络接口发送至用户终端。处理器1201可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1201中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1201可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施方式中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施方式所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1202,处理器1201读取存储器1202中的信息,结合其硬件完成前述实施方式的方法的步骤。本发明实施方式还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述检测链路状态的方法,具体实现可参见方法实施方式,在此不再赘述。本发明实施方式所提供的路由器,其实现原理及产生的技术效果和前述方法实施方式相同,为简要描述,装置实施方式部分未提及之处,可参考前述方法实施方式中相应内容。在本申请所提供的几个实施方式中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施方式仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施方式的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施方式中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上所述实施方式,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施方式对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本公开揭露的技术范围内,其依然可以对前述实施方式所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施方式技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1