一种检测路径的方法和装置与流程

文档序号:11326921阅读:296来源:国知局
一种检测路径的方法和装置与流程

本申请涉及通信领域,尤其涉及一种在检测路径的方法和装置。



背景技术:

在通信网络中,一般采用路由跟踪(英文:traceroute)路径检测方法来检测一条路径上的延时或者故障情况。该路径是由至少两个节点构成的路径。例如,该条路径包括首节点、中间节点和尾节点。其中,首节点(英文:ingress)分别依次向中间节点、尾节点发送用于traceroute路径检测的请求报文,接收到该请求报文的中间节点(也可以称为转发节点)或者尾节点(英文:egress)会向首节点反馈应答报文,首节点根据各个节点反馈的应答报文来确定延时和/或节点之间的链路是否正常。

在报文中携带多层标签、进行标签转发的网络中,首节点发送检测报文时,会将一条标签转发路径上的全部标签(即标签栈)都封装到该报文中。此时,当所述首节点对这条标签转发路径发起traceroute检测时,首节点分别依次向这条标签转发路径上的中间节点、尾节点发送traceroute路径检测的请求报文,所述路径检测请求报文封装了所述标签转发路径上的全部标签。中间节点在收到首节点发来的所述路径检测请求报文后,反馈的应答报文会继续根据标签栈中的标签走完标签转发路径,一直到达尾节点后再通过ip路由回到首节点,而不能直接由中间节点走ip路由回到首节点。从而导致检测路径的时延或者故障情况不准确。



技术实现要素:

本申请提供了一种检测路径的方法和装置,以提高检测路径的时延或故障情况的准确性。

第一方面,本申请提供了一种检测路径的方法,该方法可应用于至少两层mpls标签转发的技术场景,具体地,所述方法包括:第一网络设备生成用于路径检测的第一请求报文,所述第一请求报文中包括标签栈和ttl,且所述mpls标签栈的初始层数与ttl的初始值相匹配,所述ttl的初始值等于在待检测路径上从所述第一网络设备到第二网络设备之间的跳数;

所述第一网络设备向第二网络设备发送所述第一请求报文,所述第一请求报文用于指示所述第二网络设备在接收到所述第一请求报文,且所述第一请求报文中所携带的ttl的值减1为0的情况下,即ttl超时时,向所述第一网络设备发送第一应答报文,所述第一应答报文通过互联网协议ip路由到达所述第一网络设备。

本方面提供的方法,第一网络设备通过配置标签栈的初始层数与ttl的初始值相匹配的请求报文,使得第二网络设备接收到该请求报文后,确定在ttl减1为0的情况下,直接通过ip路由向第一网络设备反馈应答报文,从而避免了该应答报文继续走标签ttl超时流程,到达尾节点后再通过ip路由反馈给第一网络设备,由于该应答报文无需再走ttl超时流程,因此减少了链路检测的时延,提高了对链路时延检测的准确性。

结合第一方面,在第一方面的一种实现方式中,所述标签栈的初始层数与所述ttl的初始值相匹配包括两种匹配关系,一种是,在不使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数与所述ttl的初始值相同;另一种是,在使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数比ttl的初始值少1,其中,所述标签栈的初始层数和所述ttl的初始值可以是通过所述第一请求报文头里的两个字段携带。

进一步地,在所述标签栈的初始层数与ttl的初始值相匹配的关系中,在第一网络设备与第二网络设备之间是直接相连接的情况下,采用倒数第二跳弹出标签栈的处理机制下,配置的标签栈的初始层数是0,ttl的初始值是1;另一方面,在不采用倒数第二跳弹出标签栈的处理机制下,所述第一请求报文中标签栈的初始层数至少是1层,对应的,ttl的初始值比所述标签栈的初始层数多1。

采用本实现方式,在采用倒数第二跳弹出标签栈标签的机制下,当第一请求报文经过倒数第二跳节点转发到达目标的第二网络设备时,第二网络设备只需要查询一次其预存转发表就可以确定并转发第一应答报文给第一网络设备,从而避免了在第一请求报文到达最后一跳的第二网络设备时,由于还携带有标签,导致第二网络设备要先查询一次转发表来更换标签,然后再查询一次转发表确定目的ip,即需要进行两次查表才能确定并转发应答报文,本方式中的这种基于倒数第二跳弹出标签栈的机制只需要查一次转发表,进而提高了报文转发性能。

结合第一方面,在第一方面的另一种实现方式中,第一网络设备生成用于路径检测的第一请求报文的过程具体包括:所述第一网络设备获取关键字信息,例如所述关键字信息为ipreply,所述关键字信息用于指示所述第一网络设备在发起路径检测的情况下,封装的所述标签栈的初始层数与ttl的初始值相匹配;所述第一网络设备根据所述关键字信息生成所述第一请求报文。

结合第一方面,在第一方面的又一种实现方式中,所述第一网络设备获取关键字信息的方式包括如下任意一种:通过命令行预先配置、通过接收其它控制管理设备发送的消息、根据自身运行算法软件自动生成并配置,以及所述第一网络设备中软件设置的默认值。其中,所述接收其它控制管理设备发送的消息用于指示所述第一网络设备配置所述关键字信息。

结合第一方面,在第一方面的又一种实现方式中,上述方法还包括:第一网络设备在预设时间内检测是否接收到来自第二网络设备的第一应答报文,如果接收到该第一应答报文,则第一网络设备确定在第一网络设备与第二网络设备之间的链路正常;否则,确定第一网络设备与第二网络设备之间的链路发生故障。一般情况下,所述待检测路径上包括两条或两条以上链路组成,这些链路组成的待检测路径可称为段路由隧道,简称sr隧道。

结合第一方面,在第一方面的又一种实现方式中,如果在第一网络设备和第二网络设备之间还包括第三网络设备,第三网络设备作为中间转发请求报文的节点,那么上述实现方式中,所述确定第一网络设备与第二网络设备之间的链路发生故障具体包括:在第一网络设备通过第一应答报文确定第一网络设备和第三网络设备之间的链路正常的情况下,确定第三网络设备与第二网络设备之间的链路发生故障。例如第一网络设备在预设时间内获取来自第三网络设备的应答报文,但是未接收到来自第二网络设备的应答报文,则能够确定第三网络设备与第二网络设备之间的链路发生故障。

在本实现方式中,第二网络设备在获取到第一请求报文之后,由于第一请求报文中携带的标签栈的初始层数与ttl的初始值相匹配,所以第二网络设备会在ttl的值减1为0的情况下直接通过ip路由反馈第一应答报文,避免了该第一应答报文继续走标签转发流程,节约了转发报文的时间。本方法所提供的应答报文反馈机制,在首节点第一网络设备控制第一应答报文采用回程直接走ip路由的方式,能够准确检测出链路发生故障之处,提高了链路故障检测的准确性。

第二方面,本申请还提供了一种检测路径的方法,该方法可应用于第二网络设备,具体地,该方法包括:在第一网络设备与第二网络设备直接相连接的情况下,所述第二网络设备接收来自所述第一网络设备的第一请求报文,所述第二网络设备在所述第一请求报文中的ttl的值减1为0的情况下,生成第一应答报文;并通过ip路由向所述第一网络设备发送所述第一应答报文。

结合第二方面,在第二方面的另一种实现方式中,在第一网络设备与第二网络设备之间还包括第三网络设备的情况下,所述第二网络设备接收所述第三网络设备转发的第一请求报文,所述第一请求报文中包括生存时间ttl;所述第二网络设备在所述ttl的值减1为0的情况下,生成第一应答报文;并通过ip路由向所述第一网络设备发送所述第一应答报文。

其中,所述第一请求报文表示一类报文,既包括首节点生成的请求报文,也包括中间节点转发的请求报文,例如第一网络设备将生成的请求报文发送给中间节点的第三网络设备,第三网络设备接收并转发该请求报文给第二网络设备,在第三网络设备转发的过程中,所述请求报文中的内容,例如标签的层数和ttl的值均会发生变化,但也称为第一请求报文。

结合第二方面,在第二方面的另一种实现方式中,所述第二网络设备在所述ttl的值减1为0,即ttl超时的情况下,通过ip路由向所述第一网络设备发送所述第一应答报文,包括:所述第二网络设备在所述ttl的值减1为0,且所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址不同的情况下,所述第二网络设备通过ip路由向所述第一网络设备发送所述第一应答报文。

结合第二方面,在第二方面的另一种实现方式中,所述第二网络设备在ttl的值减1为0的情况下,通过ip路由向所述第一网络设备发送所述第一应答报文,包括:在所述ttl的值减1为0,所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址相同,以及,所述第一请求报文是udp报文,且所述udp报文的端口号空闲的情况下,所述第二网络设备通过ip路由向所述第一网络设备发送端口不可达应答报文。

结合第二方面,在第二方面的另一种实现方式中,所述第二网络设备在所述ttl超时的情况下,通过ip路由向所述第一网络设备发送所述第一应答报文,包括:在所述ttl的值减1为0,所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址相同,以及,所述第一请求报文是控制报文协议icmp报文,且所述icmp报文头的类型字段值为8、代码字段值为0的情况下,所述第二网络设备通过ip路由向所述第一网络设备发送端口不可达应答报文。

第三方面,本申请实施例提供了一种检测路径的装置,该装置可应用于第一网络设备中,且在至少两层标签转发的场景下,用于执行上述第一方面各种实现方式中方法步骤的模块或单元,进一步地,所述装置包括处理单元、发送单元和接收单元等。

第四方面,本申请实施例提供了一种网络设备,例如第一网络设备,所述网络设备包括处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、随机存取存储器以及只读存储器。其中,当需要运行该网络设备时,通过固化在只读存储器中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导该网络设备进入正常运行状态。在该网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。

第五方面,本申请实施例提供一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。

第六方面,本申请实施例提供了另一种检测路径的装置,该装置可应用于第二网络设备,用于执行上述第二方面各种实现方式中方法步骤的模块或单元,进一步地,所述装置包括处理单元、发送单元和接收单元等。

第七方面,本申请实施例提供了一种网络设备,例如第二网络设备,所述第二网络设备包括:处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、随机存取存储器以及只读存储器。其中,当需要运行该网络设备时,通过固化在只读存储器中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导网络设备进入正常运行状态。在该网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。

第八方面,本申请实施例提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。

第九方面,本申请实施例还提供了一种系统,所述系统包括第三方面至第五方面任一的第一网络设备和第六方面至第八方面任一的第二网络设备。

附图说明

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

图1为本申请提供的一种由pe1发起的ttl的值为1的路径检测的示意图;

图2为本申请提供的另一种由pe1发起的ttl的值为1的路径检测的示意图;

图3本申请实施例提供的一种路径检测方法的流程示意图;

图4a本申请实施例提供又一种由pe1发起的ttl的初始值为1的路径检测的示意图;

图4b本申请实施例提供的一种由pe1发起的ttl的初始值为2的路径检测的示意图;

图4c本申请实施例提供的一种由pe1发起的ttl的初始值为3的路径检测的示意图;

图4d本申请实施例提供又一种由pe1发起的ttl的初始值为1的路径检测的示意图;

图4e本申请实施例提供又一种由pe1发起的ttl的初始值为2的路径检测的示意图;

图4f本申请实施例提供又一种由pe1发起的ttl的初始值为3的路径检测的示意图;

图5a本申请实施例提供的一种第一网络设备的结构示意图;

图5b本申请实施例提供的另一种第一网络设备的结构示意图;

图6a本申请实施例提供的一种第二网络设备的结构示意图;

图6b本申请实施例提供的另一种第二网络设备的结构示意图;

图7本申请实施例提供的一种路径检测系统的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中的技术方案作进一步详细的说明。在对本申请实施例的技术方案说明之前,首先结合附图对本发明实施例的应用场景进行说明。

本申请的技术方案可应用于报文中携带了至少两层标签进行标签转发的网络场景,例如,基于多协议标记交换(multi-protocollabelswitching,mpls)技术的多层标签转发场景,在这种携带多层mpls标签进行转发的网络场景下,通过在源节点或首节点压上(或封装上)标签转发路径上的全部mpls标签,从而实现了在源节点或首节点控制报文转发的路径。

其中,在一种具体的技术场景中,例如,段路由(segmentrouting,sr)技术中,定义了从首节点(即源节点)到尾节点之间的路径为一条sr隧道,通过在首节点封装上该sr隧道上的所有mpls转发标签,从而实现在源节点控制转发路径。且该sr隧道上的所有路径都封装了mpls标签。

如图1所示,一条sr隧道由运营商边缘(provideredge,pe)设备1(简称pe1),经过运营商(provider,p)设备1(简称p1)、p2,到pe2构成。pe1为该sr隧道的源节点或首节点,p1和p2为该sr隧道的中间节点,pe2为该sr隧道的尾节点。在pe1上发起ip(英文:internetprotocol)traceroute路径检测,迭代到该sr隧道,以检测pe1到pe2之间的sr隧道是否正常。

首先,pe1向p1发送用于traceroute路径检测的第一请求报文,例如,该第一请求报文为第一mpls报文(或帧),该第一mpls报文头中包括标签栈字段和生存时间(timetolive,ttl)字段,该标签栈字段携带该sr隧道的所有mpls标签(即标签栈),该ttl字段携带的ttl的值为1。该第一mpls报文的净荷或载荷(英文:payload)中包括ip报文。该ip报文的载荷中包括用于进行traceroute路径检测请求的用户数据报协议(userdatagramprotocol,udp)报文或控制报文协议(internetcontrolmessageprotocol,icmp)报文。

p1接收到来自pe1的请求报文后,执行ttl的值减1,此时ttl的值为0,并且比较该第一请求报文中的目的ip地址与本机的ip地址是否相同,如果不同,则p1会向pe1回复第一应答报文,例如,该第一应答报文为第二mpls报文,该第二mpls报文携带去掉最外层mpls标签的标签栈(即去除一层标签后剩余的标签栈)。该第二mpls报文的载荷中包括ip报文。该ip报文的载荷中包括用于进行traceroute路径检测应答的icmp应答报文,该icmp应答报文为icmpttl超时报文,例如icmp报文的类型(英文:type)字段的值为11,代码(英文:code)字段的值为0。因为该第二mpls报文中封装着该sr隧道剩余的标签栈,使得p1在ttl的值为0超时情况下,该icmp应答报文会继续沿着该sr隧道转发到p2、再到pe2,然后pe2再通过ip路由将该icmp应答报文转发给pe1。这样使得pe1检测pe1到p1这段路径(或链路)的时延时还包括了p1到p2、p2到pe2的时间等,从而导致pe1获取应答报文反馈的时延较长,检测延时的结果不准确。

需要说明的是,本申请实施例中的traceroute路径检测,可以是基于互联网协议第四版本(internetprotocolversion4,ipv4)的,也可以是基于互联网协议第六版本(internetprotocolversion6,ipv6)的traceroute路径检测,此处不做限定。还需要说明的是,两个相连的节点之间的一段线路构成一条链路,至少一条链路构成一条路径,例如一条路径可以仅仅由一条链路构成(如图1:pe1到p1的路径由pe1到p1的链路构成),也可以由多条链路相接构成(如图1:pe1到pe2的路径由pe1到p1的链路、p1到p2的链路、p2到pe2的三条链路构成)。

此外,对于链路异常的情况,路径检测结果也会不准确,例如,基于图1的描述,如图2所示,在p1与p2之间的链路发生故障的情况下,pe1向p1发起用于traceroute路径检测的第一请求报文之后,定时器开始记录检测时间。p1收到所述第一请求报文之后的处理过程与上文图1部分的描述一致,不再赘述。不同的是p1回复的所述第一应答报文会继续沿着p1-p2-pe2-pe1的路径回到pe1,而因为此时p1与p2之间的链路发生故障,所以所述第一应答报文无法到达pe1,从而导致pe1在预定时间内(例如1秒)未收到第一跳p1反馈的所述第一应答报文(即icmp应答报文),就会错误地判断pe1到p1之间链路发生故障,而实际上是p1到p2之间的链路发生了故障,因此,pe1无法准确地检测出发生故障的链路。

与上述pe1向p1发起traceroute路径检测的流程同理,pe1还会分别依次向p2、pe2发送第二、三请求报文,并接收p2、pe2分别回复的第二、三应答报文。从而完成了对该pe1-p1-p2-pe2构成的sr隧道的traceroute路径检测。同理,在pe1向中间节点p2发起的traceroute路径检测请求中,也存在上面所述的时延检测或故障检测不准确的问题。

上面描述了本申请涉及的应用场景,下面将基于此对本申请实施例进一步详细说明。

本申请如下各个实施例提供的检测路径的方法和装置,通过在首节点控制回程的应答报文的转发方式,以控制所述应答报文采用回程直接走ip路由或者回程走完sr隧道再走ip路由的方式,从而提高路径检测的时延和故障情况判断的准确性。

具体地,在一个实施例中,如图3所示,为本申请实施例提供的一种检测路径的方法流程示意图。该方法应用于图1和图2所示的多层标签转发的网络场景。进一步地,可以应用在图1和图2所示的traceroute路径检测过程中。

本实施例提供的方案包括301部分、302部分、303部分和304部分,301部分和302部分在第一网络设备上执行,303部分和304部分在第二网络设备上执行,其中,第一网络设备包括源节点或首节点,第二网络设备可以是中间节点或尾节点。

在301部分,第一网络设备生成用于路径检测的第一请求报文,所述第一请求报文中包括标签栈和ttl,且所述标签栈的初始层数与所述ttl的初始值相匹配,所述ttl的初始值等于在待检测路径上从所述第一网络设备到第二网络设备之间的跳数。

所述第一请求报文包括udp报文和icmp报文,具体地,可根据设备端口号大小、报文的类型和代码等确定发起udp报文还是icmp报文。所述第一请求报文为第一mpls报文,该第一mpls报文中包括mpls标签栈字段、ttl的值、源ip地址、目标ip地址、协议、数据等信息。该mpls标签栈字段携带sr隧道的所有mpls标签。

其中,所述traceroute是一种网络工具,用于显示路径和测量数据包在ip网络经过路由器或节点转发的时延。traceroute可以应用于不同的程序运行系统,例如,在现代unix系统,比如linux系统,traceroute被称为tracepath;在windows系统则被称为tracert;在ipv6协议中可以被称为traceroute6或tracert6。对于不同的应用系统,相应的traceroute的名称有所不同,本申请实施例对此不予限定。

在traceroute检测过程中,第一网络设备通过向目标的第二网络设备发送具有不同生存时间(ttl)的udp请求报文,然后根据各个中间节点(比如路由器)反馈的应答报文,以确定第一网络设备到第二网络设备之间的各段链路是否正常。

其中,所述标签栈的初始层数与ttl的初始值相匹配包括:在不使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数与所述ttl的初始值相同;或者,在使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数比所述ttl的初始值少1。其中,所述采用倒数第二跳弹出机制是指:在一次检测路径(pe1-p1-p2-pe2)过程中,针对最后一个节点/设备,比如pe2节点的情况,配置的标签栈的初始层数比ttl的初始值少1,对于非最后一个节点/设备的情况,第一网络设备配置的标签栈的初始层数与ttl的初始值相同。

可选的,在第一网络设备与第二网络设备之间直接相连接,无论是否采用倒数第二跳弹出标签栈的机制,或者在不采用倒数第二跳弹出标签栈的处理机制,所述第一请求报文中标签栈的初始层数和ttl的初始值均为1。

在302部分,第一网络设备向第二网络设备发送第一请求报文,所述第一请求报文用于指示第二网络设备在接收到所述第一请求报文,且所述第一请求报文中所携带的ttl的值减1为0的情况下,向第一网络设备发送第一应答报文。其中,所述第一应答报文通过互联网协议ip路由到达所述第一网络设备。

在303部分,第二网络设备接收所述第一请求报文,并根据所述第一请求报文生成第一应答报文,例如icmp应答报文。

具体过程包括:在第一网络设备与第二网络设备直接相连接的情况下,所述第二网络设备接收来自所述第一网络设备的第一请求报文,第二网络设备在所述第一请求报文中的ttl的值减1为0的情况下,生成所述第一应答报文。其中,所述第一请求报文中包括标签栈和ttl,且所述ttl的值与所述标签栈的层数相同,所述ttl的值与第一网络设备配置的ttl的初始值相同,与标签栈的初始层数也相同。

在第一网络设备与第二网络设备之间还包括第三网络设备的情况下,所述第二网络设备接收所述第三网络设备转发的第一请求报文,所述第一请求报文中包括生存时间ttl;所述第二网络设备在所述ttl的值减1为0的情况下,生成所述第一应答报文。此时,第二网络设备接收第三网络设备转发的请求报文中所携带的标签栈层数与ttl的值会发生变化,与第一网络设备配置的标签栈的初始层数和ttl的初始值不同。

需要说明的是,本实施例中所述的第一请求报文表示一类报文,既包括首节点生成的请求报文,也包括中间节点(第三网络设备)转发的请求报文,以及目标的第二网络设备接收的请求报文。但这些请求报文在转发的过程中,其携带的内容,例如标签栈的层数和ttl的值会发生变化,与第一请求报文中标签栈的初始层数和ttl的初始值不同。

在304部分,第二网络设备通过ip路由向第一网络设备直接发送所述第一应答报文。

其中,所述第一请求报文在走mpls标签转发流程中,每经过一跳到达一个网络设备时ttl的值对应减1,当第二网络设备检测第一请求报文中所携带的ttl的值减1为0时,比较第一请求报文中的目的ip地址与本机的ip地址是否相同,如果不相同,则会向第一网络设备反馈所述第一应答报文。

本实施例提供的方法,第一网络设备通过配置标签栈的初始层数与ttl的初始值相匹配的请求报文,使得第二网络设备接收到该请求报文后,确定在ttl减1为0的情况下,直接通过ip路由向第一网络设备反馈应答报文,从而避免了该应答报文继续走标签ttl超时流程,到达尾节点后再通过ip路由反馈给第一网络设备,由于该应答报文无需再走ttl超时流程,因此减少了链路检测的时延,提高了对链路时延检测的准确性。

此外,在301部分,配置标签栈的初始层数与ttl的初始值相匹配,使用倒数第二跳弹出的标签栈处理机制,例如图4a所示,pe1向p1发起ttl的值为1的traceroute路径检测报文,该报文中的mpls标签栈的初始层数和ttl的初始值均为1,当pe1发送的第一请求报文到达p1时,p1只需要查询一次其预存转发表就可以确定并转发应答报文给pe1,从而避免了在配置有多层标签的第一请求报文到达p1时,由于还携带有标签,导致p1要先查询一次转发表来更换标签,然后再查询一次转发表确定目的ip,即需要进行两次查表才能确定并转发应答报文,本实施例的这种基于倒数第二跳弹出所有标签的机制,使第二网络设备p1只需要查一次转发表,进而提高了应答报文转发性能,提高了转发效率。

在上述301部分,第一网络设备生成第一请求报文的具体实现方式包括:第一网络设备获取关键字信息,然后根据该关键字信息生成用于路径检测的第一请求报文。所述关键字信息用于指示该第一网络设备在发起路径检测报文的情况下,封装的所述标签栈的初始层数与所述ttl初始值相匹配。

具体地,第一网络设备获取的关键字信息,例如ipreply(中文:ip应答)可以是网络管理员通过命令行预先配置在该第一网络设备上的;也可以是该第一网络设备接收其它控制管理设备发来的携带有关键字的消息,根据该消息指示配置的;还可以是该第一网络设备自身运行算法软件自动生成,并完成配置的;还可以是该第一网络设备的软件实现时设置的默认值,对此本实施例不予限制。

在本实施例的一种可能的实现中,上述方法还包括检测sr隧道/路径中各个链路是否正常的方法步骤,具体包括:第一网络设备在向第二网络设备发送第一请求报文之后,定时器开始记录时间,并检测第一网络设备在预设时间(例如1秒)内是否接收到来自第二网络设备的第一应答报文。如果是,则第一网络设备确定在第一网络设备与第二网络设备之间的链路正常;否则,确定第一网络设备与第二网络设备之间的链路发生故障,其中,第一网络设备和第二网络设备之间的链路可以包括一条或多条链路。例如,当第一网络设备和第二网络设备是直接相连的两个网络节点,第一网络设备和第二网络设备之间的链路由一条链路构成。当第一网络设备和第二网络设备之间还包括若干个中间节点,则第一网络设备和第二网络设备之间的链路由至少两条链路构成,例如,第一网络设备和第二网络设备之间还包括第三网络节点,则第一网络设备和第二网络设备之间的链路由第一网络设备和第三网络设备之间的第一条链路,以及第三网络设备和第二网络设备的之间的第二条链路构成。

进一步地,如果在第一网络设备和第二网络设备之间还包括第三网络设备,那么上述第一网络设备与第二网络设备之间的链路发生故障包括如下两种情况:一种情况是,第一网络设备与第三网络设备之间发生故障;另一种情况是,第二网络设备与第三网络设备之间发生故障。具体地,如果第一网络设备在预设时间内接收到来自第三网络设备反馈的应答报文,则确定第一网络设备和第三网络设备之间的链路正常,在这种情况下,可以确定第三网络设备与第二网络设备之间的链路发生故障。如果第一网络设备在预设时间内未接收到来自第三网络设备反馈的应答报文,则确定第一网络设备和第三网络设备之间的链路发生故障。

在本实施例中,第二网络设备在获取到第一请求报文之后,会在ttl的值减1为0的情况下,直接通过ip路由反馈第一应答报文,避免了该第一应答报文继续走标签转发流程,节约了转发时间。如果第一网络设备在预设时间内接收到该第一应答报文,则说明第一网络设备和第二网络设备之间的链路正常;否则,说明链路发生故障,采用本方法的应答报文反馈机制,在首节点第一网络设备控制第一应答报文采用回程直接走ip路由的方式,能够准确检测出链路发生故障之处,提高了链路故障检测的准确性。

需要说明的是,本实施例中所述的链路故障,可以包括两个相连的网络设备之间的链路故障的情况,也可以包括由网络设备故障导致与该网络设备相连的链路故障的情况等。所述链路可以是物理链路,也可以是虚拟网络中的虚拟链路。

还需要说明的是,本实施例中所述的标签栈,可以包括至少一层标签。例如,可以是一层标签构成的标签栈,也可以是两层标签构成的标签栈,还可以是三层标签构成的标签栈。

在一个具体的实施例中,如图4a至图4c所示,由第一网络设备pe1发起的traceroute路径检测,以检测sr隧道pe1至pe2中各个节点之间的链路的是否发生故障。

本实施例以倒数第二跳弹出标签机制进行说明。

如图4a所示,示出一种由pe1发起的ttl的初始值为1的traceroute路径检测的示意图。pe1向p1发送用于traceroute路径检测的第一请求报文,例如,该第一请求报文为第一mpls报文(或帧)。该第一mpls报文头中包括标签栈字段和ttl字段,该标签栈字段携带该sr隧道的所有mpls标签(即标签栈),该ttl字段携带的ttl的初始值与标签栈的初始层数均为1。该第一mpls报文的净荷或载荷中包括ip报文。该ip报文的载荷中包括用于进行traceroute路径检测请求的udp报文或icmp报文。

p1接收到来自pe1的第一请求报文后,弹掉一层标签,同时执行ttl的值减1操作,此时ttl的值为0,触发ttl超时流程,并且比较该第一请求报文中的目的ip地址与p1的ip地址是否相同,如果不同,则p1会通过ip路由直接向pe1反馈第一应答报文,例如第一icmp应答报文,该第一icmp应答报文的类型字段值为11,代码字段的值为0。pe1检测如果在预设时间(例如1秒)内,接收到p1反馈的第一icmp应答报文,则pe1确定pe1到p1之间的链路正常;如果在预设时间内未收到该第一icmp应答报文,则链路发生故障。

然后,pe1向p2发起ttl的值为2的traceroute第二请求报文,如图4b所示,pe1发送的第二请求报文中携带的mpls标签栈的层数与ttl的值相同均为2。可选的,所述第二请求报文可以是udp报文或者icmp报文。p1接收到来自pe1的第二请求报文后,弹掉一层标签,并执行ttl的值减1,此时ttl的值为1,mpls标签栈的层数也为1。

p1转发所述标签栈层数与ttl的值均为1的第二请求报文给p2,p2接收之后对应执行ttl的值减1为0,且所述第二请求报文中携带的目的ip地址与p2本机的ip地址不同,生成第二icmp应答报文,该第二icmp应答报文的类型字段值为11,代码字段的值为0,并将该第二icmp应答报文通过ip路由直接反馈给pe1。pe1检测如果在预设时间内,接收到p2反馈的第二icmp应答报文,则pe1确定p1到p2之间的链路正常;否则,确定p1到p2之间的链路发生故障。

其中,需要说明的是,所述第二请求报文中还携带了p2的ip地址,使得p1在接收到pe1发送的第二请求报文后,能够根据所述ip地址将该第二请求报文转发给p2。

按照上述图4a和图4b所述的流程,pe1在接收到p2反馈的第二icmp应答报文之后,向pe2发起ttl的初始值为3的traceroute第三请求报文,如图4c所示,pe1发送的第三请求报文中携带的mpls标签栈的初始层数比ttl的初始值少1为两层。其中,所述第三请求报文可以是udp报文或者icmp报文。p1接收到来自pe1的第三请求报文后,执行ttl的值减1操作,此时ttl的值为2,mpls标签栈的层数减1为1。中间节点p1将所述mpls标签栈的层数为1、ttl的值为2的第三请求报文转发给p2。p2接收来自p1的第三请求报文之后,继续执行ttl减1,去掉标签栈中的最外层标签,至此,标签栈中的所有标签都被弹出,也就是将第三请求报文中的mpls报文头被剥掉(或者解封装),此时的第三请求报文也就不包括标签和ttl字段,然后p2将该完成mpls解封装的第三请求报文转发给pe2。pe2接收到来自p2的该完成mpls解封装的第三请求报文之后,比较所述第三请求报文中的目的ip地址是否与pe2的ip地址相同。如果不相同,则触发ttl超时流程,pe2回复icmp应答报文,对应的所述icmp应答报文的类型字段值为3,代码字段的值也为3,表示端口不可达。

如果比较的两个ip地址相同,则进一步判断该第三请求报文是udp报文还是icmp报文。如果是udp报文,则判断该udp报文中的目的udp端口号是否被使用,即本机pe2是否有应用程序在使用udp端口,因为tracroute检测需要较大的udp端口,如果未被使用,则pe2向pe1通过ip路由回复icmp端口不可达的应答报文(第三icmp应答报文),其中,所述第三icmp应答报文的类型字段值为11,代码字段的值为0。如果所述第三请求报文是icmp报文,且该icmp报文的报文头中类型字段值为8,代码字段的值为0(为icmp请求回显报文),则pe2回复的icmp端口不可达应答报文的类型字段值为11,代码字段的值为0。

pe1发出第三请求报文后,定时器开始计时,如果pe1检测在预设时间内,接收到pe2反馈的第三icmp应答报文,则pe1确定p2到pe2之间的链路正常;否则,确定p2到pe2之间的链路发生故障。

在本实施例中,pe1通过分别向不同的节点(包括中间节点和尾节点)发送traceroute请求报文,其中第三请求报文中mpls标签栈的层数比ttl的值少1,采用倒数第二跳弹出所有标签的机制,避免尾节点需要查询两次转发表来确定反馈应答报文的ip地址,从而提高了报文转发效率。

此外,在发送第三请求报文的情况下,配置mpls标签栈的初始层数比ttl的初始值少1的请求报文,使接收节点在ttl超时的情况下,直接通过ip路由向pe1反馈icmp应答报文,从而避免了该icmp应答报文继续走mpls标签ttl超时流程,到达尾节点pe2后再反馈给pe1,减少了链路检测的时延,提高了对链路时延检测的准确性。并且,本实施例采用pe1逐段发起请求报文检测每个节点之间的路径,通过中间节点或尾节点通过走ip路由直接反馈的方式,能够准确检测出链路发生故障之处,提高了链路故障检测的准确性。

需要说明的是,本实施例以配置的mpls标签栈的层数比ttl的值少1为例,在另一种匹配方式中,在目标网络设备为待检测路径上的中间节点或者尾节点的情况下,配置mpls标签栈的层数与ttl的值相同的路径检测方法,与上述实施例图4a至4c的方法流程相似。

具体地,如图4d至4f所示,首节点pe1向p1节点发起traceroute检测的第一请求报文,其中该第一请求报文中的标签栈的初始层数与ttl的初始值均为1,p1节点接收到该第一请求报文之后,执行ttl的值减1为0操作,直接向pe1通过ip路由回复第一icmp应答报文。

pe1接收到第一icmp应答报文后,继续向p2节点发起traceroute检测的第二请求报文,该第二请求报文中标签栈的初始层数与ttl的初始值均为2,第二请求报文经过第一跳到达p1节点时,对应的第一请求报文中的ttl的值为1,标签栈的层数也是1,p1节点的ip地址与第一请求报文中的目的ip地址不同,则继续走mpls标签转发流程,p1将携带1层标签和ttl的值为1内容的第二请求报文转发给p2节点,p2节点判断该第二报文中的标签栈的层数和ttl的值都减1为0,即ttl超时,p2直接通过ip路由向pe1反馈第二icmp应答报文,且该第二icmp应答报文的类型字段值为11,代码字段的值为0。

pe1接收到来自p2的第二应答报文之后,向pe2发起traceroute检测的第三请求报文,其中该第三请求报文中的mpls标签栈的初始层数与ttl的初始值均为3,并且该mpls标签栈的3层标签分别是202、302、602。该第三请求报文达到p1节点时,弹掉标签栈的最外层标签302,然后继续走标签转发路径达到p2节点,达到p2节点的第三请求消息中标签栈的层数为1层,ttl的值为1,然后再将该标签层数为1层,ttl值也为1的第三请求报文转发给pe2,pe2检测在接收的第三请求报文中所携带的ttl的值减1为0,且第三请求报文中的ip地址与pe2的本机ip地址相同的情况下,pe2直接通过ip路由向pe1回复icmp端口不可达的第三应答报文,具体的转发和反馈报文的过程与前述实施例相同,不再赘述。

需要说明的是,本实施例中附图4d和4e所配置的第一请求报文和第二请求报文中标签栈的初始层数与ttl的初始值均与附图4a和4b所配置的第一请求报文和第二请求报文相同,区别在于第三请求报文中配置的标签栈的初始层数与ttl的初始值是否相同,如果采用倒数第二跳弹出标签栈的机制,则第三请求报文中的标签栈的初始层数比ttl的初始值少1。

相对于上面的方法实施例,本申请实施例还提供了相应的网络设备等装置实施例。

参见图5a,为本实施例提供的第一网络设备的一种可能的结构示意图。该第一网络设备用于执行如图3所示在至少两层mpls标签转发的场景下的路径检测的方法,具体地,该第一网络设备可以包括处理单元501和发送单元502。

其中,处理单元501用于生成用于路径检测的第一请求报文,所述第一请求报文中包括标签栈和ttl,且所述标签栈的初始层数与所述ttl的初始值相匹配,所述ttl的初始值等于在待检测路径上从所述第一网络设备到第二网络设备之间的跳数。

所述标签栈包括mpls标签栈。所述第一请求报文可以是udp请求报文,还可以是icmp请求报文。

具体地,所述标签栈的初始层数与所述ttl的初始值相匹配包括:在不使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数与所述ttl的初始值相同,或者,在使用倒数第二跳弹出的标签栈处理机制的情况下,所述标签栈的初始层数比所述ttl的初始值少1。

发送单元502用于向第二网络设备发送所述第一请求报文,所述第一请求报文用于指示第二网络设备在接收到所述第一请求报文,且所述第一请求报文中所携带的ttl的值减1为0的情况下,向第一网络设备发送第一应答报文,第一应答报文通过ip路由到达所述第一网络设备,所述第一应答报文包括icmp应答报文。

本实施例提供的第一网络设备,通过配置mpls标签栈的初始层数与ttl的初始值相匹配的请求报文,使得第二网络设备接收到该请求报文后,确定在ttl减1为0的情况下,,直接通过ip路由向第一网络设备反馈应答报文,从而避免了该应答报文走mpls标签ttl超时流程,经过其它转发节点转发至尾节点后再通过ip路由反馈给第一网络设备,由于该应答报文不再走ttl超时流程,因此减少了链路检测的时延,提高了链路检测的准确性。

可选的,在本申请实施例的一种具体实现方式中,处理单元501具体用于获取关键字信息,根据所述关键字信息生成用于路径检测的所述第一请求报文,其中,所述关键字信息用于指示所述第一网络设备在发送路径检测报文的情况下,封装的所述标签栈的初始层数与所述ttl的初始值相匹配。

可选的,在本申请实施例的另一种具体实现方式中,所述装置还包括:接收单元,用于在预设时间内接收所述第一应答报文;处理单元501,还用于检测在预设时间内接收到所述第一应答报文的情况下,确定所述第一网络设备与所述第二网络设备之间的链路正常;在未收到所述第一应答报文的情况下,确定所述第一网络设备与所述第二网络设备之间的链路发生故障。

可选的,在本申请实施例的另一种具体实现方式中,第一网络设备和第二网络设备之间还包括第三网络设备,处理单元501,具体用于获取在确定所述第一网络设备和所述第三网络设备之间的链路正常的情况下,确定第三网络设备与第二网络设备之间的链路发生故障。

参见图5b,示出了上述实施例中所涉及的第一网络设备的一种可能的结构示意图。该第一网关设备500包括:接收器510、处理器520、发送器530、随机存取存储器540、只读存储器550以及总线560。其中,处理器520通过总线560分别耦接接收器510、发送器530、随机存取存储器540以及只读存储器550。其中,当需要运行该网络设备500时,通过固化在只读存储器550中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备500进入正常运行状态。在第一网络设备500进入正常运行状态后,在随机存取存储器540中运行应用程序和操作系统,使得:

处理器520能够生成用于路径检测的第一请求报文,所述第一请求报文中包括标签栈和ttl,且所述标签栈的初始层数与所述ttl的初始值相匹配。

发送器530用于通过ip路由向第二网络设备发送所述第一请求报文,所述第一请求报文用于指示所述第二网络设备在所述ttl的值减1为0的情况下,向所述第一网络设备发送第一应答报文。具体地,所述第一应答报文通过ip路由到达所述第一网络设备。

其中,处理器520可以是中央处理器(centralprocessingunit,简称:cpu),网络处理器(networkprocessor,简称:np)或者cpu和np的组合。处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,简称:asic),可编程逻辑器件(programmablelogicdevice,简称:pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,简称:cpld),现场可编程逻辑门阵列(field-programmablegatearray,简称:fpga),通用阵列逻辑(genericarraylogic,简称:gal)或其任意组合。

本实施例的第一网络设备500可对应于上述图3至图4f所对应的实施例中的pe1,并且,该第一网络设备500中的处理器520、发送器530等可以实现图3至图4f所对应的实施例中的第一网络设备所具有的功能和/或所实施的各种步骤和方法。所述处理器520用于执行图5a所述第一网络设备的处理单元501的所有操作,所述发送器530用于执行图5a所述第一网络设备的发送单元502的所有操作。为了简洁,在此不再赘述。

参见6a,示出了上述实施例中所涉及的第二网络设备的一种可能的结构示意图。该第二网络设备包括:接收单元601、处理单元602和发送单元603。

接收单元601用于获取来自第一网络设备的第一请求报文,所述第一请求报文中包括标签栈和ttl,且所述标签栈的初始层数与所述ttl的初始值相匹配。

处理单元602用于根据所述第一请求报文生成第一应答报文。

发送单元603用于在所述ttl的值减1为0的情况下,通过ip路由向所述第一网络设备发送所述第一应答报文。

可选的,在本申请实施例的另一种具体实现方式中,所述第一请求报文每经过一跳到达一个网络设备时所述ttl的值对应减1。发送单元603具体用于在所述ttl的值减1为0且所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址不同的情况下,所述第二网络设备通过ip路由向所述第一网络设备发送所述第一应答报文。

可选的,发送单元603具体还用于在所述ttl的值减1为0,所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址相同,以及,所述第一请求报文是udp报文,且所述udp报文的端口号空闲的情况下,通过ip路由向所述第一网络设备发送端口不可达的应答报文,此时该应答报文头中的类型字段值为11,代码字段值为0。

可选的,发送单元603还用于在所述ttl的值减1为0,所述第一请求报文中的目的ip地址与所述第二网络设备的ip地址相同,以及,所述第一请求报文是icmp报文,且所述icmp报文头的类型字段值为8、代码字段值为0的情况下,通过ip路由向所述第一网络设备发送端口不可达应答报文,此时该应答报文头中的类型字段值为11,代码字段值为0。

本实施例的第二网络设备可以实施上述图3至图4f所对应的实施例中的第二网络设备中的各种实施功能和的步骤,所述第二网络设备可以是上述实施例中的中间节点p1/p2,或者是尾节点pe2。为了简洁,在此不再赘述。

参见图6b,示出了上述实施例中所涉及的第二网络设备的再一种可能的结构示意图。第二网络设备600包括:接收器610、处理器620、发送器630、随机存取存储器640、只读存储器650以及总线660。其中,处理器620通过总线660分别耦接接收器610、发送器630、随机存取存储器640以及只读存储器650。其中,当需要运行终端设备600时,通过固化在只读存储器650中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导终端设备600进入正常运行状态。在终端设备600进入正常运行状态后,在随机存取存储器640中运行应用程序和操作系统,使得第二网络设备能够根据第一网络设备发送的第一请求报文,控制第一应答报文回程走ip路由的方式反馈第一网络设备。

进一步地,接收器610用于接收来自所述第一网络设备的第一请求报文,且所述第一请求报文中包括存活时间ttl。发送器630用于在所述第一请求报文中所携带的ttl的值减1为0的情况下,向所述第一网络设备发送第一应答报文,所述第一应答报文通过互联网协议ip路由到达所述第一网络设备。

本实施例的第二网络设备600可对应于上述图3至图4f、图6a所对应的实施例中的第二网络设备,并且,该第二网络设备600中的处理器620、发送器630等可以实现图3至图4f、图6a所对应的实施例中的第二网络设备所具有的功能和/或所实施的各种步骤和方法。所述处理器620用于执行图6a所述第二网络设备的处理单元602的所有操作,所述接收器610用于执行图6a所述第二网络设备的接收单元601的所有操作,所述发送器630用于执行图6a所述第二网络设备的发送单元603的所有操作。为了简洁,在此不再赘述。

在本实施例中,第二网络设备在获取到第一请求报文之后,会根据报文头中ttl的值,在ttl的值减1为0的情况下,直接通过ip路由反馈第一应答报文,节约时延,避免了采用现有的应答报文需要走mpls转发流程走一圈回到首节点的反馈机制,并且在首节点第一网络设备控制第一应答报文采用回程直接走ip路由的方式,能够准确检测出链路发生故障之处,提高了链路故障检测的准确性。

需要说明的是,本申请实施例所述的源节点或首节点可以是第一网络设备,还可以是第二网络设备,所述转发节点或尾节点也可以是第一网络设备,也可以是第二网络设备,发送端pe1和接收端p1、p2、pe2可以为以无线方式进行数据传输的任意一种网络设备。所述网络设备可以是任意一种具有无线收发功能的设备,包括但不限于:路由器、交换机等数通转发设备。

参见图7是本申请实施例提供的一种路径检测的系统示意图。如图7所示,该系统包括第一网络设备500和第二网络设备600,其中,第一网络设备500为上述图5a和5b所述的任一网络设备。第二网络设备600为上述图6a和6b所述的任一网络设备。有关系统中各设备的详细描述,请参见上述图5a-5b和图6a-6b等相关描述,此处不再赘述。

其中,该系统中还可以包括其他的网络设备,例如第三网络设备、第四网络设备等。所述其他网络设备可以作为中间节点或尾节点,以实现对首节点到尾节点之间sr隧道的检测。

在具体实现中,本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的检测路径的方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,简称rom)或随机存储记忆体(randomaccessmemory,简称ram)等。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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