发明内容
本申请提供了MPLS网络中LSP的路径追踪方法和路由设备,以实现在避免大量报文的前提下进行负载分担路径的路由追踪。
本申请提供的技术方案主要包括:
一种MPLS网络中LSP的路径追踪方法,该方法包括:
A1,LSP的头部节点确定从本节点至所述LSP的尾部节点的环回接口IP地址的下一跳,为不同的下一跳分配不同的序列号及本地环回地址;
A2,针对每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点,下一跳对应的请求报文中源IP地址为本节点的IP地址,目的IP地址为该下一跳被分配的本地环回地址,且携带本节点保存的经由下游节点为所述请求报文所属的转发等价类FEC分配的MPLS标签信息、所述LSP的尾部节点的环回接口IP地址、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间TTL和IPTT;
A3,接收到请求报文的节点将所述请求报文的MPLSTTL减1,如果取值为0,则确定MPLSTTL超时,继续识别请求报文携带的所述LSP的尾部节点的环回接口IP地址是否为本节点的环回接口IP地址,如果否,执行步骤A4,如果是,执行步骤A5;
A4,为从本节点至所述LSP的尾部节点的环回接口IP地址的各个下一跳分配不同的序列号及本地环回地址,并针对每一下一跳建立对应的映射表项,下一跳对应的映射表项包含下游序列号、上游序列号、接收到请求报文的接口IP地址、请求报文的源IP地址和携带的MPLS标签信息,下游序列号为该下一跳分配的序列号、上游序列号为请求报文携带的序列号,返回执行步骤A2;
A5,回复目的IP地址为所述请求报文的源IP地址的响应报文,所述响应报文中源IP地址为接收到所述请求报文的接口IP地址,且携带接收到所述请求报文的接口IP地址、所述请求报文携带的序列号和MPLS标签信息;
A6,接收到响应报文的节点不为所述LSP的头部节点时,查找到下游序列号为响应报文携带的序列号的映射表项,将该映射表项中的MPLS标签信息及接收到对应请求报文的接口IP地址添加至该响应报文,并修改该响应报文的序列号、源IP地址、目的IP地址为该映射表项中的上游序列号、接收到对应请求报文的接口IP地址和源IP地址,向上游节点发送该响应报文,删除该映射表项;
接收到响应报文的节点为所述LSP的头部节点时,获取该响应报文携带的MPLS标签信息和接收到对应请求报文的接口IP地址,完成LSP的路径追踪。
一种路由设备,所述路由设备用于MPLS网络中LSP的头部节点,其包括:
下一跳确定单元,用于确定从本节点至所述LSP的尾部节点的环回接口IP地址的下一跳;
分配单元,用于为所述下一跳确定单元确定出的不同下一跳分配不同的序列号及本地环回地址;
发送单元,用于针对所述下一跳确定单元确定出的每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点,下一跳对应的请求报文中源IP地址为本节点的IP地址,目的IP地址为该下一跳被分配的本地环回地址,且携带本节点保存的经由所述下游节点为所述请求报文所属的转发等价类FEC分配的MPLS标签信息、所述LSP的尾部节点的环回接口IP地址、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间TTL和IPTTL;
接收单元,用于接收到响应报文时,获取该响应报文携带的MPLS标签信息和接收到对应请求报文的接口IP地址,完成LSP的路径追踪。
一种路由设备,所述路由设备用于MPLS网络中LSP的传输节点,所述路由设备包括:
请求接收单元,用于接收到请求报文时,将所述请求报文的MPLSTTL减去1,如果取值为0,则确定MPLSTTL超时,发送识别通知给识别单元;
识别单元,用于接收到所述识别通知后,识别请求报文携带的所述LSP的尾部节点的环回接口IP地址不为本节点的环回接口IP地址,则发送确定通知给下一跳确定单元;
下一跳确定单元,用于接收到所述确定通知后,确定从本节点至所述LSP的尾部节点的环回接口IP地址的各个下一跳;
分配单元,用于为所述下一跳确定单元确定出的各个下一跳分配不同序列号且及本地环回地址;
表项建立单元,用于针对所述下一跳确定单元确定出的每一下一跳建立对应的映射表项,下一跳对应的映射表项包含下游序列号、上游序列号、接收到请求报文的接口IP地址、请求报文的源IP地址和携带的MPLS标签信息,下游序列号为该下一跳分配的序列号、上游序列号为请求报文携带的序列号;
发送单元,用于针对所述下一跳确定单元确定出的每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点,下一跳对应的请求报文中源IP地址为本节点的IP地址,目的IP地址为该下一跳被分配的本地环回地址,且携带本节点保存的经由下游节点为所述请求报文所属的转发等价类FEC分配的MPLS标签信息、所述LSP的尾部节点的环回接口IP地址、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间TTL和IPTTL,所述IPTTL取值为1,表示所述请求报文强制走MPLS网络;
响应接收单元,用于在接收到响应报文时,找到下游序列号为响应报文携带的序列号的映射表项,将该映射表项中的MPLS标签信息及接收到对应请求报文的接口IP地址添加至该响应报文,并修改该响应报文的序列号、源IP地址、目的IP地址为该映射表项中的上游序列号、接收到对应请求报文的接口IP地址和源IP地址,向上游节点发送该响应报文,删除该映射表项。
一种路由设备,所述路由设备为MPLS网络中LSP的尾部节点,包括:
识别单元,用于接收到请求报文时,识别出该请求报文携带的LSP的尾部节点的环回接口IP地址为本节点的环回接口IP地址,发送通知给回复单元;
回复单元,用于回复目的IP地址为所述请求报文的源IP地址的响应报文,所述响应报文中源IP地址为接收到所述请求报文的接口IP地址,且携带接收到所述请求报文的接口IP地址、所述请求报文携带的序列号和MPLS标签信息。
由以上技术方案可以看出,本发明中,当MPLS网络中存在包含负载分担路径的LSP时,通过TraceRoute过程中传输节点(Transit节点)代理头部节点(Ingress节点)的技术手段,可以实现低负担,高准确率的跟踪到每条路径的连通性,避免整个TraceRoute过程中传送大量报文。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供的方法中,对MPLS网络中包含负载分担路径的LSP进行TraceRoute时,可在TraceRoute过程中采用传输(Transit)节点代理Ingress节点的技术手段继续进行TraceRoute,这能够避免整个TraceRoute过程中出现大量的MPLSEchoRequest报文,实现低负担,高准确率的覆盖检测到每条路径的连通性。
下面对本发明提供的方法进行描述:
如图2所示,本发明提供的方法包括以下步骤:
步骤201,在LSP的Ingress节点上配置LSPTracerouteX,X为LSP的尾部节点的Loopback接口IP地址。
步骤202,Ingress节点确定从本节点至所述X的下一跳。
本步骤202中,Ingress节点可基于本地路由表进行路由查询来确定从本Ingress节点至Engress节点Loopback接口IP地址X的下一跳。
以对图1所示从DUT1至DUT7的LSP执行Traceroute为例,则DUT1作为Ingress节点确定出到达DUT7的下一跳为2个,依次为DUT2和DUT3。
步骤203,Ingress节点为确定出的各个不同下一跳分配不同序列号及本地环回地址。之后执行步骤204。
本发明中,Ingress节点为下一跳分配的本地环回地址,是属于127/8网段的IPv4地址。其中,之所以为下一跳分配的本地环回地址属于127/8网段中的IPv4地址,目的是为了防止LSP断路时MPLSEchoRequest报文进行IP转发,保证LSP的连通性检测。
步骤204,Ingress节点针对每一个下一跳构造对应的请求报文并发送给该下一跳对应的下游节点。
以对图1所示从DUT1至DUT7的LSP执行Traceroute为例,则DUT1作为Ingress节点,其到达Engress节点即DUT7存在两个下一跳,分别为到达DUT2的下一跳和到达DUT3的下一跳,则构造与到达DUT2的下一跳对应的请求报文并发送给DUT2,以及构造与到达DUT3的下一跳对应的请求报文并发送给DUT3。
本发明中,下一跳对应的请求报文中源IP地址为本节点IP地址,目的IP地址为该下一跳分配的本地环回地址,且携带所述X、本节点保存的经由下游节点为所述请求报文所属的转发等价类(FEC)分配的MPLS标签信息、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间(TTL)和IPTTL。
应用于MPLS网络中,该构造的每一个下一跳对应的请求报文具体可优选为MPLSEchoRequest报文,其主要包括以下字段:
IP头部字段,在IP头部中,其至少包含源IP地址和目的IP地址,这里,源IP地址为Ingress节点的IP地址,目的IP地址为针对该下一跳分配的本地环回地址;
序列号字段(SequenceNumber),其是Ingress节点为该下一跳分配的SequenceNumber;
TargetFECStack字段,其包含Engress节点的Loopback接口IP地址X;
DownstreamMappingTLV字段,其至少包含本Ingress节点保存的经由下游节点为所述MPLSEchoRequest报文所属的FEC分配的MPLS标签信息,其中,MPLSEchoRequest报文所属FEC的划分依据可以是源地址、目的地址、源端口、目的端口、协议类型和VPN等的任意组合。
IPTTL字段,其设置为1;
MPLSTTL字段,其被设置为1。
步骤205,接收到请求报文的节点将所述请求报文的MPLSTTL减1,如果取值为0,则确定MPLSTTL超时,执行步骤206。
也就是说,步骤206及其之后的各个步骤是在MPLSTTL超时时执行的,反之,如果不超时,则接收到所述请求报文的节点只是按照普通MPLS报文转发方式转发该接收的请求报文。
步骤206,接收到请求报文的节点识别该请求报文携带的X是否为本节点的环回接口IP地址,如果否,确定本节点为Transit节点,则执行步骤207,如果是,确定本节点为Engress节点,则执行步骤209。
作为本发明的一个实施例,在步骤206执行之前,本节点还可进一步对接收的请求报文进行一些验证,在验证成功后,继续执行步骤206,而在验证不成功时,则按照现有的方式向Ingress节点返回错误。其中,该验证主要包括:报文格式验证、标签验证等,具体可与现有的验证处理方式类似,这里不再赘述。
步骤207,本Transit节点基于路由查找确定从本Transit节点至所述X的各个下一跳,为该确定的各个下一跳分配不同序列号及本地环回地址,并针对每一下一跳建立对应的映射表项,下一跳对应的映射表项包含下游序列号、上游序列号、接收到请求报文的接口IP地址、请求报文的源IP地址和携带的MPLS标签信息,下游序列号为该下一跳分配的序列号、上游序列号为请求报文携带的序列号。并执行步骤208。
步骤208,Transit节点针对每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点。之后返回步骤205。
以对图1所示从DUT1至DUT7的LSP执行Traceroute为例,则DUT2作为Transit节点,其到达DUT7存在两个下一跳,分别为到达DUT4的下一跳和到达DUT5的下一跳,则构造与到达DUT4的下一跳对应的请求报文并发送给DUT4,以及构造与到达DUT5的下一跳对应的请求报文并发送给DUT5。
本发明中,Transit节点发送的下一跳对应的请求报文中源IP地址为本节点IP地址,目的IP地址为本Transit节点为该下一跳分配的本地环回地址,且携带所述X、本Transit节点为该下一跳分配的序列号、本Transit节点保存的经由下游节点为所述请求报文所属的FEC分配的MPLS标签信息、以及取值均为1的MPLS生存时间TTL和IPTTL。
应用于MPLS网络中,本Transit节点构造的每一个下一跳对应的请求报文具体可优选为MPLSEchoRequest报文,主要包括以下字段:
IP头部字段,在IP头部中,其至少包含源IP地址和目的IP地址,这里,源IP地址为本Transit节点的IP地址,目的IP地址为本Transit节点为该下一跳分配的本地环回地址;
序列号字段(SequenceNumber),其是本Transit节点为该下一跳分配的SequenceNumber;
TargetFECStack字段,其包含Engress节点的Loopback接口IP地址X;
DownstreamMappingTLV字段,其至少包含本Transit节点保存的经由下游节点为所述请求报文所属的FEC分配的MPLS标签信息;
IPTTL字段,其设置为1;
MPLSTTL字段,其设置为1。
从步骤208可以看出,在整个LSP的Traceroute过程中,Transit节点是代理Ingress节点的角色来重新构造请求报文并作为该请求报文的初始发起者发送的,这与现有Traceroute过程中只有Ingress节点作为请求报文的初始发起者发送请求报文是完全不同的。
步骤209,本Engress节点回复目的IP地址为所述请求报文的源IP地址的响应报文。之后执行步骤210。
本发明中,所述响应报文中源IP地址为接收到所述请求报文的接口IP地址,且携带了接收到所述请求报文的接口IP地址、所述请求报文携带的序列号和MPLS标签信息。以请求报文为MPLSEchoRequest报文为例,则响应报文响应为MPLSEchoReply报文,主要包括以下几个字段:
IP头部,其中的源IP地址为本Engress节点接收到该MPLSEchoRequest报文的接口IP地址,目的IP地址为本Engress节点接收到的MPLSEchoRequest报文的源IP地址。
SequenceNumber字段,其包含该接收到的MPLSEchoRequest报文所携带的SequenceNumber;
DownstreamMappingTLV字段,其至少包含接收到MPLSEchoRequest报文的接口的IP地址、该MPLSEchoRequest报文所携带的MPLS标签信息。
步骤210,接收到响应报文的节点识别本节点是否为执行Traceroute的LSP的Ingress节点,如果是,执行步骤211,如果否,执行步骤212。
本发明中,针对一个LSP,其Ingress节点、Transit节点、Engress节点均被预先指定,因此,基于该预先执行,接收到响应报文的节点很容易识别出本节点是否为LSP的Ingress节点。
步骤211,查找到下游序列号为响应报文携带的序列号的映射表项,将该映射表项中的MPLS标签信息及接收到对应请求报文的接口IP地址添加至该响应报文,并修改该响应报文的序列号、源IP地址、目的IP地址为该映射表项中的上游序列号、接收到对应请求报文的接口IP地址和源IP地址,向上游节点发送该响应报文,删除该映射表项。
步骤212,获取该响应报文携带的MPLS标签信息和接收到对应请求报文的接口IP地址,完成LSP的路径追踪。
至此,通过步骤212,即可完成整个LSP的路径追踪。
优选地,本发明中,作为一个实施例,步骤203中,Ingress节点可进一步执行以下步骤:针对确定出的每一下一跳启动对应的定时器,该定时器的超时时间预先设定,比如为3000ms;基于此,步骤204中,Ingress节点向下一跳发送的请求报文可进一步包括:该下一跳对应的定时器的超时时间。其中,该超时时间可通过在请求报文增加TimerTLV字段来携带在请求报文中。
同样,步骤207中,Transit节点还进一步执行以下步骤:针对每一下一跳启动对应的定时器,该定时器的超时时间为接收到的请求报文所携带的超时时间与设定时间比如10ms之差;如此,步骤208中,Transit节点向下一跳发送的请求报文可进一步包括:该下一跳对应的定时器的超时时间。其中,该超时时间可通过在请求报文增加TimerTLV字段来携带在请求报文中。
基于此,本发明中,LSP的Ingress节点进一步执行以下步骤:
Ingress节点实时检测其启动的定时器;
当Ingress节点检测到启动的任一定时器超时、且还未从该定时器对应的下一跳收到响应报文,则确定本Ingress节点至该下一跳故障;
同样,本发明中,LSP的Transit节点进一步执行以下步骤:
Transit节点实时检测其启动的定时器;
当Transit节点检测到启动的任一定时器超时、且还未从该定时器对应的下一跳收到响应报文,则确定本节点至该下一跳故障,并向Ingress节点通知该故障,删除该下一跳对应的映射表项。
其中,该向Ingress节点通知故障具体为:
将该下一跳对应的映射表项中的源IP地址作为目的IP地址向该目的IP地址通知该故障,该通知实质也是一个响应报文,其携带该映射表项中的上游序列号;
接收到所述通知的节点在本节点不为所述LSP的头部节点时,查找到下游序列号为所述通知携带的序列号的映射表项,依次修改该通知的序列号、源IP地址、目的IP地址为该查找到的映射表项中的上游序列号、接口IP地址和源IP地址,并继续发送所述通知,并删除该查找到的映射表项;
接收到所述通知的节点在本节点为所述LSP的头部节点时,获取该通知中的故障。
通过上述步骤,能够方便、快速定位出LSP的故障点。
下面通过一个具体实施例对本发明提供的方法进行描述:
以图1所示的MPLS组网为例,假如对从DUT1至DUT7的LSP执行Traceroute,则从图1可以看出,从DUT1至DUT7的LSP存在以下三条路径:
路径1,DUT1->DUT2->DUT4->DUT7,
路径2,DUT1->DUT2->DUT5->DUT7,
路径3,DUT1->DUT3->DUT6->DUT7。
其中,在DUT1上存在两个下一跳DUT2、DUT3形成负载分担,同时在中间节点DUT2上也存在两个下一跳DUT4、DUT5形成负载分担,这也意味着待执行Traceroute的LSP可包含多个具有负载分担功能的路径。
在图1所示的待执行Traceroute的LSP中,DUT1为Ingress节点,DUT7为Egress节点,而从DUT1至DUT7所经过的各个DUT即DUT2至DUT6为Transmit节点,如此,基于步骤201,就在DUT1上配置LSPTraceroute10.10.10.10,10.10.10.10为DUT7的Loopback接口IP地址。
基于步骤202,DUT1基于路由查找确定从DUT1至DUT7的下一跳,发现有两个下一跳,分别为DUT2、DUT3,则基于步骤203,为DUT2分配一个序列号,以1为例,为DUT2分配一个序列号,以2为例,并为DUT2和DUT3分配不同的但属于127/8网段的本地环回地址,以为DUT2分配的本地环回地址为127.0.0.1为例,为DUT3分配的本地环回地址为127.0.0.2为例,同时,分别启动对应DUT1和DUT2的定时器,这里,该DUT1和DUT2对应的定时器的超时时间可以相同,比如均为3000ms,也可以不同,比如一个为3000ms,一个为35000ms,具体可依据实际应用设定;
基于步骤204,DUT1针对下一跳DUT2构造对应的请求报文并向下一跳DUT2发送,同时,其针对下一跳DUT3构造对应的请求报文并向下一跳DUT3发送。这里以请求报文为MPLSEchoRequest报文为例,则,DUT1构造的DUT2对应的MPLSEchoRequest报文主要包括:
IP头部字段,在IP头部中,源IP地址为DUT1的IP地址,目的IP地址为DUT2分配的本地环回地址127.0.0.1;
SequenceNumber,其是DUT2分配的SequenceNumber,以1为例;
TargetFECStack字段,其包含DUT7的Loopback接口IP地址10.10.10.10;
DownstreamMappingTLV字段,其至少包含下游节点DUT2之前为该构造的MPLSEchoRequest报文所属的FEC分配的MPLS标签信息;
IPTTL字段,其设置为1;
MPLSTTL字段,其设置为1。
同理,DUT1构造的DUT3对应的MPLSEchoRequest报文类似,这里不再一一描述。
在DUT1向DUT2和DUT3分别发送对应的MPLSEchoRequest报文后,该DUT1就实时检测其启动的定时器,当检测到启动的任一定时器比如DUT2对应的定时器超时、且还未从DUT2收到MPLSEchoReply响应报文,则确定从本DUT1至DUT2故障;同理,当检测到DUT3对应的定时器超时、且还未从DUT3收到MPLSEchoReply响应报文,则确定从本DUT1至DUT3故障。
在DUT2接收到MPLSEchoRequest报文后,基于步骤205将该MPLSEchoRequest报文中的MPLSTTL减去1,发现该计算的结果为0,用于指示MPLSTTL超时,则基于步骤206,检查该MPLSEchoRequest报文中TargetFECStack字段携带的地址是否为本DUT2的Loopback接口地址,发现该TargetFECStack携带的地址不为本DUT2的Loopback接口地址,则意味着本DUT2为Transit节点,基于步骤207,DUT2在本地的路由表中查找从本DUT2至该TargetFECStack携带的地址的下一跳,查找到两个下一跳,分别为DUT4、DUT5,则为DUT4分配一个序列号,以1为例,为DUT5分配一个序列号,以2为例,并为DUT4和DUT5分配不同的但属于127/8网段的本地环回地址,以为DUT4分配的本地环回地址为127.0.0.4为例,为DUT5分配的本地环回地址为127.0.0.5为例,并分别启动DUT4、DUT5对应的定时器。这里,该启动的定时器的超时时间为该接收的MPLSEchoRequest报文携带的定时器超时时间与设定时间比如100ms的差。
同时,DUT2还分别在本地为DUT4、DUT5建立对应的映射表项。这里,以MPLSEchoRequest报文携带的SequenceNumber为1,源IP地址为11.0.0.1,定时器超时时间为3000ms,设定时间为100ms、接收到该MPLSEchoRequest报文的接口的IP地址为11.0.0.2、该MPLSEchoRequest报文的携带的MPLS标签为3521为例,则DUT2在本地建立的DUT4、DUT5对应的映射表项如表1所示:
表1:
并且,DUT2作为Ingress节点代理重新构造与DUT4对应的MPLSEchoRequest报文并向DUT4发送,以及与DUT5对应的MPLSEchoRequest报文并向DUT5发送。其中,DUT2构造的DUT4对应的MPLSEchoRequest报文主要包括:
IP头部字段,在IP头部中,源IP地址为DUT2的IP地址,目的IP地址为DUT2分配的本地环回地址127.0.0.4;
SequenceNumber,其是DUT4分配的SequenceNumber,以1为例;
TargetFECStack字段,其包含DUT7的Loopback接口IP地址10.10.10.10;
DownstreamMappingTLV字段,其至少包含下游节点DUT4之前为该构造的MPLSEchoRequest报文所属的FEC分配的MPLS标签信息;
IPTTL字段,其设置为1;
MPLSTTL字段,其设置为1。
同理,DUT2构造的DUT5对应的MPLSEchoRequest报文类似,这里不再一一描述。
在DUT2向DUT4和DUT5分别发送对应的MPLSEchoRequest报文后,该DUT2就实时检测其启动的定时器,当检测到启动的任一定时器比如DUT4对应的定时器超时、且还未从DUT4收到MPLSEchoReply响应报文,则确定从本DUT2至DUT4故障,将该DUT4对应的映射表项中的源IP地址作为目的IP地址向该目的IP地址通知该故障以保证DUT1获知该故障,该通知携带了DUT4对应的映射表项中的上游序列号,并删除该DUT4对应的映射表项。同理,当检测到DUT5对应的定时器超时、且还未从DUT5收到MPLSEchoReply响应报文,则确定从本DUT2至DUT5故障,将该DUT5对应的映射表项中的源IP地址作为目的IP地址向该目的IP地址汇报该故障以保证DUT1获知该故障,该通知携带了DUT5对应的映射表项中的上游序列号,并删除该DUT5对应的映射表项。
相应地,当DUT2接收到通知时,查找到下游序列号为所述通知携带的序列号的映射表项,依次修改该通知的序列号、源IP地址、目的IP地址为该查找到的映射表项中的上游序列号、接口IP地址和源IP地址,并继续发送所述通知,删除该查找到的映射表项。
在DUT3,其接收到MPLSEchoRequest报文后,基于步骤205将该MPLSEchoRequest报文中的MPLSTTL减去1,发现该计算的结果为0,表示MPLSTTL超时的值,则基于步骤206,检查该MPLSEchoRequest报文中TargetFECStack字段携带的地址是否为本DUT3的Loopback接口地址,发现该TargetFECStack携带的地址不为本DUT3的Loopback接口地址,则意味着本DUT3为Transit节点,基于步骤207,DUT3在本地的路由表中查找从本DUT3至该TargetFECStack携带的地址的下一跳,查找到仅存在唯一一个下一跳,即为DUT6,则为DUT6分配一个序列号,以1为例,并为DUT6分配6属于127/8网段的本地环回地址,以为DUT6分配的本地环回地址为127.0.0.6为例,并启动DUT6对应的定时器。这里,该启动的定时器的超时时间为该接收的MPLSEchoRequest报文携带的定时器超时时间与设定时间比如100ms的差。
同时,DUT3还在本地为DUT6建立对应的映射表项。这里,以MPLSEchoRequest报文携带的SequenceNumber为1,源IP地址为11.0.0.1,定时器超时时间为3000ms,设定时间为100ms、接收到该MPLSEchoRequest报文的接口的IP地址为11.0.0.3、该MPLSEchoRequest报文携带的MPLS标签信息为3520为例,则DUT3在本地建立的DUT6对应的映射表项如表2所示:
表2:
并且,DUT3作为Ingress节点代理重新构造与DUT6对应的MPLSEchoRequest报文并向DUT6发送。其中,DUT3构造的DUT6对应的MPLSEchoRequest报文主要包括:
IP头部字段,在IP头部中,源IP地址为DUT3的IP地址,目的IP地址为DUT2分配的本地环回地址127.0.0.6;
SequenceNumber,其是DUT6分配的SequenceNumber,以1为例;
TargetFECStack字段,其包含DUT7的Loopback接口IP地址10.10.10.10;
DownstreamMappingTLV字段,其至少包含下游节点DUT6之前为该构造的MPLSEchoRequest报文所属的FEC分配的MPLS标签信息;
IPTTL字段,其设置为1,用于表示强制走MPLS路径;
MPLSTTL字段,其设置为1。
在DUT3向DUT6发送对应的MPLSEchoRequest报文后,该DUT3就实时检测其启动的DUT6对应的定时器,当检测到该定时器超时、且还未从DUT6收到MPLSEchoReply响应报文,则确定从本DUT3至DUT6故障,将该DUT6对应的映射表项中的源IP地址作为目的IP地址向该目的IP地址通知该故障以保证DUT1获知该故障,该通知携带了DUT6对应的映射表项中的上游序列号,并删除该DUT6对应的映射表项。
相应地,当DUT3接收到通知时,查找到下游序列号为所述通知携带的序列号的映射表项,依次修改该通知的序列号、源IP地址、目的IP地址为该查找到的映射表项中的上游序列号、接口IP地址和源IP地址,并继续发送所述通知,删除该查找到的映射表项。
在DUT4、DUT5、DUT6其接收到MPLSEchoRequest报文后,处理流程参见DUT2、DUT3。
在DUT7上,其接收到MPLSEchoRequest报文时,其检查该MPLSEchoRequest报文的TargetFECStack字段发现该TargetFECStack字段中的地址为本DUT7的Loopback接口IP地址,则回复MPLSEchoReply报文,该MPLSEchoReply报文的源IP地址为接收到MPLSEchoRequest报文的接口IP地址,目的IP地址为接收的MPLSEchoRequest报文的源地址。并且,此时,从该接收的MPLSEchoRequest报文中复制SequenceNumber至该MPLSEchoReply报文的SequenceNumber字段,以及把接收到MPLSEchoRequest报文的接口IP地址和该MPLSEchoRequest报文携带的MPLS标签信息填入MPLSEchoReply报文的DownstreamMappingTLVs中。
DUT4、DUT5和DUT6收到MPLSEchoReply报文后,根据收到的MPLSEchoReply报文里的SequenceNumber查找映射表项中下游序列号为该SequenceNumber的映射表项,修改该MPLSEchoReply报文的目的IP地址为查找出来的映射表项中的源IP地址,修改该MPLSEchoReply报文的源IP地址为查找出来的映射表项中的报文接口IP地址,修改该MPLSEchoReply报文的序列号为该查找出来的映射表项中的上游序列号,并将该查找出来的映射表项中的报文接口IP地址和MPLS标签信息携带在该MPLSEchoReply报文的DownstreamMappingTLVs发送出去,并把查找出来的映射表项删除。
DUT2、DUT3收到MPLSEchoReply报文后,处理同DUT4、DUT5和DUT6。
DUT1收到MPLSEchoReply报文后,由于自己是执行TraceRoute的LSP的Ingress节点,其会根据收到的MPLSEchoReply报文中DownstreamMappingTLVs的信息,显示出该LSP沿途所经过的各个路径上的信息,TraceRoute过程完成,这样,在Ingress节点就收集到了每条LSP沿途所经过的所有路径信息。
至此,完成本发明提供的方法描述,下面对本发明提供的路由设备进行描述:
参见图3,图3为本发明实施例提供的路由设备结构图。其中,该路由设备用于MPLS网络中LSP的头部节点,如图3所示,所述路由设备包括:
下一跳确定单元,用于确定从本节点至所述LSP的尾部节点的环回接口IP地址的下一跳;
分配单元,用于为所述下一跳确定单元确定出的不同下一跳分配不同的序列号及本地环回地址;
发送单元,用于针对所述下一跳确定单元确定出的每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点,下一跳对应的请求报文中源IP地址为本节点的IP地址,目的IP地址为该下一跳被分配的本地环回地址,且携带本节点保存的经由所述下游节点为所述请求报文所属的转发等价类FEC分配的MPLS标签信息、所述LSP的尾部节点的环回接口IP地址、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间TTL和IPTTL;
接收单元,用于接收到响应报文时,获取该响应报文携带的MPLS标签信息和接收到对应请求报文的接口IP地址,完成LSP的路径追踪。
优选地,本发明中,所述下一跳确定单元进一步针对确定出的每一下一跳启动对应的定时器,该定时器的超时时间预先设定;所述发送单元向下一跳发送的请求报文进一步包括:该下一跳对应的定时器的超时时间;
基于此,如图3所示,所述路由设备进一步包括:
检测单元,实时检测所述下一跳确定单元启动的定时器,当检测到所述下一跳确定单元启动的任一定时器超时、且还未从该定时器对应的下一跳收到响应报文,则确定本节点至该下一跳故障。
本发明中,所述接收单元进一步接收故障汇报,并显示该汇报的故障,以定位出该故障。
优选地,本发明中,还提供了图4所示的另一种路由设备的结构图。该路由设备用于MPLS网络中LSP的传输节点,如图4所示,所述路由设备包括:
请求接收单元,用于接收到请求报文时,将所述请求报文的MPLSTTL减去1,如果取值为0,则确定MPLSTTL超时,发送识别通知给识别单元;
识别单元,用于接收到所述识别通知后,识别请求报文携带的所述LSP的尾部节点的环回接口IP地址不为本节点的环回接口IP地址,则发送确定通知给下一跳确定单元;
下一跳确定单元,用于接收到所述确定通知后,确定从本节点至所述LSP的尾部节点的环回接口IP地址的各个下一跳;
分配单元,用于为所述下一跳确定单元确定出的各个下一跳分配不同序列号且及本地环回地址;
表项建立单元,用于针对所述下一跳确定单元确定出的每一下一跳建立对应的映射表项,下一跳对应的映射表项包含下游序列号、上游序列号、接收到请求报文的接口IP地址、请求报文的源IP地址和携带的MPLS标签信息,下游序列号为该下一跳分配的序列号、上游序列号为请求报文携带的序列号;
发送单元,用于针对所述下一跳确定单元确定出的每一下一跳构造对应的请求报文并发送给该下一跳对应的下游节点,下一跳对应的请求报文中源IP地址为本节点的IP地址,目的IP地址为该下一跳被分配的本地环回地址,且携带本节点保存的经由下游节点为所述请求报文所属的转发等价类FEC分配的MPLS标签信息、所述LSP的尾部节点的环回接口IP地址、所述下一跳被分配的序列号、以及取值均为1的MPLS生存时间TTL和IPTTL;
响应接收单元,用于在接收到响应报文时,找到下游序列号为响应报文携带的序列号的映射表项,将该映射表项中的MPLS标签信息及接收到对应请求报文的接口IP地址添加至该响应报文,并修改该响应报文的序列号、源IP地址、目的IP地址为该映射表项中的上游序列号、接收到对应请求报文的接口IP地址和源IP地址,向上游节点发送该响应报文,删除该映射表项。
优选地,本发明中,所述请求接收单元接收的请求报文携带了定时器的超时时间;
所述下一跳确定单元进一步针对确定的每一下一跳启动对应的定时器,该定时器的超时时间为接收到的请求报文所携带的定时器的超时时间与设定时间之差;
基于此,优选地,本发明中,如图4所示,所述路由设备进一步包括:
检测单元,用于实时检测所述下一跳确定单元启动的定时器,检测到所述下一跳确定单元启动的任一定时器超时、且所述响应接收单元还未从该定时器对应的下一跳收到响应报文,则确定本节点至该下一跳故障,将该下一跳对应的映射表项中的源IP地址作为目的IP地址向该目的IP地址通知该故障,该故障通知携带该映射表项中的上游序列号,并删除该下一跳对应的映射表项;
转发单元,用于接收到故障通知时,查找到下游序列号为该故障通知携带的序列号的映射表项,依次修改该故障通知的序列号、源IP地址、目的IP地址为该查找到的映射表项中的上游序列号、接口IP地址和源IP地址,并继续发送所述故障通知,删除该查找到的映射表项。
本发明中,还提供了图5所示的一种路由设备,该路由设备用于MPLS网络中LSP的尾部节点,包括:
识别单元,用于接收到请求报文时,识别出该请求报文携带的LSP的尾部节点的环回接口IP地址为本节点的环回接口IP地址,发送通知给回复单元;
回复单元,用于回复目的IP地址为所述请求报文的源IP地址的响应报文,所述响应报文中源IP地址为接收到所述请求报文的接口IP地址,且携带接收到所述请求报文的接口IP地址、所述请求报文携带的序列号和MPLS标签信息。
至此,完成本发明提供的路由设备的结构图。
由以上技术方案可以看出,本发明中,当MPLS网络中存在负载分担路径时,通过TraceRoute过程中Transit节点代理Ingress节点的技术手段,可以实现低负担,高准确率的覆盖检测到每条路径的连通性,可以查看从Ingress节点到Egress节点的LSP所经过的所有路径,以便对LSP的错误点进行定位。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。