一种流量工程隧道的检测方法、装置及系统
技术领域
本发明涉及网络通信技术领域,尤其涉及一种流量工程隧道的检测方法、装置及系统。
背景技术
TE(Traffic Engineering,流量工程)可实现链路流量均衡,解决网络资源分配不合理导致的拥塞,提升资源利用率,降低运营成本。MPLS(Multi-Protocol LabelSwitching,多协议标签交换)TE用于解决MPLS网络中的拥塞问题,MPLS网络中建立的TE隧道为MPLS TE tunnel(MPLS TE隧道),MPLS TE tunnel中的数据传输发生在标签交换路径(LSP,lable switched path)上,LSP是每一个沿着从源端到终端的路径上的节点的标签序列,MPLS TE tunnel是由隧道的首端发起建立,是一条head-end的LSP隧道,MPLS TEtunnel为单向隧道。
TE ping和TE tracert可对MPLS TE的联通进行检测和诊断,TE ping可检测MPLSTE隧道转发层面的联通性,如果隧道的联通性出现问题,可通过TE tracert逐跳故障定位和通道追踪。现有技术中,TE ping中,首节点向尾节点发送请求报文,回应报文由尾节点通过路由转发回到首节点,首节点接收到回应报文后完成整条隧道的联通性检测;TEtracert中,首节点向中间节点发送请求报文,回应报文由中间节点通过路由转发回到首节点,如果该中间节点不是尾节点,首节点接收到回应报文后继续向下一个中间节点发送请求报文,如此循环,直到首节点接收到尾节点发送的回应报文,TE tracert结束。
在对MPLS TE的联通进行检测和诊断过程中,路由不通会导致TE ping和TEtracert失效,例如,当MPLS TE tunnel跨路由域建立时,路由相互隔离以致尾节点没有到首节点的路由,则回应报文找不到到达首节点的路由,导致TE ping和TE tracert失效;若MPLS TE tunnel使用ISIS(intermediate system to intermediate system)协议分发路径信息,在节点启动成功后的时间内,ISIS发布的LSP中的OLbit(Over-load bit)会置位,OLbit置位表示设备已超载,路由计算时会跳过该节点,则到下游节点的路由不通,虽不影响经过该节点的MPLS TE tunnel的正常建立和转发,但经过该节点的MPLS TE tunnel的ping和tracert失败。MPLS TE tunnel中的路由不通,以致TE ping和TE tracert失效,回应报文无法返回到首节点,导致对MPLS TE的联通检测和诊断失败。
发明内容
本发明实施例所要解决的技术问题在于,提供一种流量工程隧道的检测方法、装置及系统,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
为了解决上述技术问题,本发明实施例第一方面提供了一种流量工程隧道的检测方法,所述方法包括:
中间节点接收首节点发送的MPLS请求报文;
所述中间节点获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息;
所述中间节点根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
在第一方面的第一种可能的实现方式中,所述MPLS请求报文包括:
源路由TLV字段,所述源路由TLV字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
所述中间节点获取所述中间节点到所述首节点的逆向路径信息包括:
根据所述MPLS请求报文中的源路由TLV字段记录的MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息确定所述中间节点到所述首节点的逆向路径信息。
在第一方面的第二种可能的实现方式中,所述中间节点接收首节点发送的MPLS请求报文之前,包括:
所述中间节点接收所述首节点发送的MPLS流量工程隧道建立请求,所述MPLS流量工程隧道建立请求携带从所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
所述中间节点从所述MPLS流量工程隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述MPLS流量工程隧道建立请求包括:
对象记录字段,所述对象记录字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。
结合第一方面的第三可能的实现方式,在第一方面的第四种可能的实现方式中,所述中间节点从所述MPLS流量工程隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中之后,包括:
所述中间节点将所述包括对象记录字段的MPLS流量工程隧道建立请求发送到所述尾节点,所述尾节点与所述首节点之间包括至少一个中间节点,以使所述尾节点根据所述MPLS流量工程隧道建立请求向所述中间节点发送包括所述对象记录字段的MPLS流量工程隧道建立响应;
所述中间节点根据所述MPLS流量工程隧道建立响应中的对象记录字段记录并保存MPLS流量工程隧道中所述尾节点到所述中间节点之间的路径中的每个节点的地址信息;
所述中间节点向所述首节点发送所述包括所述对象记录字段的MPLS流量工程隧道建立响应,以使所述首节点根据所述对象记录字段记录并保存MPLS流量工程隧道中所述尾节点到所述首节点之间的路径中的每个节点的地址信息。
相应地,本发明实施例第二方面提供了一种流量工程隧道的检测装置,包括:
第一接收模块,用于接收首节点发送的MPLS请求报文;
获取模块,用于获取所述中间节点到首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息;
第一发送模块,用于根据所述获取模块获取到的逆向路径信息将所述第一接收模块接收到的MPLS请求报文对应的MPLS回应报文发送到首节点。
在第二方面的第一种可能的实现方式中,所述MPLS请求报文包括:
源路由TLV字段,所述源路由TLV字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
所述获取模块获取所述中间节点到首节点的逆向路径信息具体用于:
根据所述MPLS请求报文中的源路由TLV字段记录的MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息确定所述中间节点到首节点的逆向路径信息。
在第二方面的第二种可能的实现方式中,所述装置还包括:
第二接收模块,用于接收所述首节点发送的MPLS流量工程隧道建立请求,所述MPLS流量工程隧道建立请求携带从所述首节点到所述中间节点之间的路径中的每个节点信息;
地址信息处理模块,用于从所述第二接收模块接收到的MPLS流量工程隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述MPLS流量工程隧道建立请求包括:
对象记录字段,所述对象记录字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述装置还包括:
第二发送模块,用于将所述包括对象记录字段的MPLS流量工程隧道建立请求发送到尾节点,所述尾节点与所述首节点之间包括至少一个中间节点,以使所述尾节点根据所述MPLS流量工程隧道建立请求向所述中间节点返回包括所述对象记录字段的MPLS流量工程隧道建立响应;
记录模块,用于根据所述MPLS流量工程隧道建立响应中的对象记录字段记录MPLS流量工程隧道中所述尾节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中;
第三发送模块,用于向所述首节点发送所述包括所述对象记录字段的MPLS流量工程隧道建立响应,以使所述首节点根据所述对象记录字段记录并保存MPLS流量工程隧道中所述尾节点到所述首节点之间的路径中的每个节点的地址信息。
相应地,本发明实施例第二方面提供了一种流量工程隧道的检测系统,包括首节点、中间节点和尾节点,其中,所述中间节点包括上述的装置。
实施本发明实施例,中间节点可根据逆向路径信息向首节点发送MPLS回应报文,逆向路径信息可以包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流量工程隧道的检测方法的流程图;
图2为本发明实施例提供的流量工程隧道的检测方法的TE ping的示意图;
图3为本发明实施例提供的流量工程隧道的检测方法的TE tracert的示意图;
图4为本发明实施例提供的流量工程隧道的建立过程的流程图;
图5为本发明实施例提供的流量工程隧道的建立过程的示意图;
图6为本发明实施例提供的流量工程隧道的检测方法的BFD检测的示意图;
图7为本发明实施例提供的一种流量工程隧道的检测装置的结构示意图;
图8是本发明实施例提供的一种节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种流量工程隧道的检测方法、装置及系统,包括:中间节点接收首节点发送的MPLS请求报文;获取中间节点到首节点的逆向路径信息,逆向路径信息包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息;根据逆向路径信息将MPLS请求报文对应的MPLS回应报文发送到首节点。
本发明实施例中,流量工程隧道可以为MPLS TE隧道。流量工程隧道的检测系统包括首节点、中间节点和尾节点,首节点和尾节点之间至少包括一个中间节点。
以首节点与尾节点之间包括N个中间节点为例,在TE ping中,TTL设为255,TTL为报文的生存时间。首节点向尾节点发送MPLS请求报文,尾节点根据逆向路径信息向首节点返回MPLS回应报文。
在TE tracert中,TTL设为1,首节点向第一中间节点发送第一MPLS请求报文。TTL超时时,第一中间节点根据逆向路径信息向首节点返回第一MPLS回应报文。首节点接收到第一MPLS回应报文,第一MPLS回应报文携带下游映射信息,包括下游映射TLV、接口、标签栈等,首节点接收到该第一MPLS回应报文,读出下游映射信息,如果下游映射TLV非空,则说明该第一MPLS回应报文不是尾节点发送的,则首节点向第二中间节点发送第二MPLS请求报文,TTL设为2。TTL超时时,第二中间节点根据逆向路径信息向首节点返回第二MPLS回应报文。首节点接收到第二MPLS回应报文,如果首节点检测到该第二MPLS回应报文不是尾节点发送的(下游映射为非空),则首节点向第三中间节点发送第三MPLS请求报文,TTL设为3。TTL超时时,第三中间节点根据逆向路径信息向首节点返回第三MPLS回应报文,......,首节点向尾节点发送第(N+1)MPLS请求报文,尾节点根据逆向路径信息向首节点返回第(N+1)MPLS回应报文,首节点检测到该第(N+1)MPLS回应报文的下游映射TLV为空,则TE tracert结束。
其中,逆向路径信息为:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。
中间节点根据逆向路径信息向首节点发送MPLS回应报文,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。下面通过具体实施例进行说明。
图1是本发明实施例中一种流量工程隧道的检测方法的流程图,图1所示的流量工程隧道的检测方法是以中间节点作为执行主体进行描述的,如图所示本实施例中的流程包括步骤S101~S103。
S101,中间节点接收首节点发送的MPLS请求报文。
作为一种可选的实施方式,中间节点接收首节点发送的MPLS请求报文。MPLS请求报文可以为IP UDP报文,UDP端口可设为3503,封装TE隧道标签,沿着TE隧道传输,MPLS请求报文的源IP地址为首节点的本地接口地址,目的IP地址为127/128网段的环回地址。MPLSTTL设为1、2或255等。
S102,中间节点获取中间节点到首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,中间节点获取中间节点到首节点的逆向路径信息,若逆向路径信息为:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息,则MPLS请求报文中可以包括:源路由TLV字段。其中,源路由TLV字段用于记录MPLS流量工程TE隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息。源路由TLV字段包括Type、length、Value。
作为一种可选的实施方式,源路由TLV字段的开头为Type类型,Type的定义可以如下:
Type# Value Field
------ ------------------
32769 Hop and address
其中,Type(类型)可以设置为32769,即1000000000000001。
源路由TLV字段的格式例如:
Value(内容)由首节点填写,填写TE隧道从首节点到尾节点的每一跳的IP地址(每一个节点的IP地址),即Hop1address、Hop2address、Hop3address等,Value字段的长度为5个字节的整数倍,length(长度)为Value字段的总长度。其中,Value字段每一跳的格式具体定义可以如下:
其中,Value字段每一跳的格式的长度为5个byte的整数倍,Hop长度为1个字节,填写到首节点的跳数,IPv4prefix填写对应该跳的地址信息。
进一步可选的,源路由TLV字段的Type类型大于等于32769的TLV为可选TLV,本发明实施例TE隧道中的首节点、尾节点以及中间节点可识别到该Type类型的源路由TLV字段。对于不能识别到该Type类型的源路由TLV字段的节点,则不能从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,中间节点获取中间节点到首节点的逆向路径信息,若逆向路径信息为:从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。隧道建立过程如下:
MPLS TE Tunnel由隧道的首端发起建立,是一条head-end的LSP隧道,RSVP-TE按照显式路径或CSPF计算得到的路径,通过Path消息和Resv消息请求建立LSP Tunnel,MPLSTE tunnel是单向隧道。
CSPF(Constraint Shortest Path First,约束最短路径优先)是一种改进的最短路径优先算法,是一种在计算通过网络的最短路径时,考虑特定的约束如带宽需求,最大跳转数,和管理策略需求等的算法。CSPF计算输出一个外在路由,该外在路由包含了一组通过网络的最短路径并满足约束的LSR地址。该外在路由随即传递给信令部分,信令部分在LSP中的LSR建立转发状态。RSVP-TE(Resource Reservation Protocol-TrafficEngineering,针对流量工程扩展的资源预留协议)在已有的RSVP协议基础上加入至少一个新的消息对象,用于在MPLS网络中发起标签请求和分发标签绑定以建立和维护LSP,并提供重路由LSP和增加已建立的LSP的带宽。
其中,MPLS TE隧道建立请求可以为Path消息,MPLS TE隧道建立请求可以包括:对象记录字段,对象记录字段用于记录MPLS TE隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。
作为一种可选的实施方式,对象记录字段可以为RRO(record-route object),RRO中封装IPv4prefix的子对象,封装的IP地址为本节点出接口的IP地址,下一节点接收到该Path消息后,会将该IP地址记录下来,发送给下游的Path消息会将本节点隧道出接口的地址添加到IPv4prefix子对象的最前面,发送出去。则每一跳的节点都将本节点的地址加入到RRO的IPv4prefix子对象中,则每个设备都能从RRO中获得隧道首节点到本节点的路径。隧道尾节点接收到的Path消息包含RRO,在向隧道首节点发送的Resv消息中,也将封装RRO,节点对Resv消息中的RRO的IPv4prefix子对象处理过程与Path消息相同,则路径上的每个节点可以从Path消息中取得从首节点到本节点的路径,从Resv消息中获取从本节点到隧道尾节点的路径,因此隧道上每个节点都可以记录整个隧道路径从首节点到尾节点每一跳的地址。每个节点保存整个隧道路径中从首节点到尾节点之间的节点的地址信息。
S103,中间节点根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,中间节点根据逆向路径信息封装MPLS回应报文,并将MPLS请求报文对应的MPLS回应报文发送到首节点,逆向路径信息中包括:中间节点到首节点之间的路径中的每个节点的地址信息,则根据该逆向路径信息可将MPLS回应报文发送到首节点,无需在每个节点通过路由查找与转发将MPLS回应报文发送到首节点。作为一种可选的实施方式,若首节点将MPLS请求报文发送到尾节点,尾节点根据逆向路径信息将MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,本发明实施例提供的一种流量工程隧道的检测方法具体可以包括:
中间节点接收首节点发送的MPLS请求报文,所述MPLS请求报文携带所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
中间节点从MPLS请求报文中获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息为:所述中间节点到所述首节点之间的路径中的每个节点的地址信息;
中间节点根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,如图2所示,为本发明实施例提供的流量工程隧道的检测方法的TE ping的示意图,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点,首节点R1向尾节点R4发送MPLS请求报文(MPLS echorequest),MPLS TTL=255,尾节点R4接收到该MPLS请求报文时,从MPLS请求报文中携带的源路由TLV字段中记录从R1到R4的每一跳的IP Prefix信息,即R4的地址信息、R3的地址信息、R2的地址信息和R1的地址信息,进而尾节点R4可获取到尾节点R4到首节点R1的之间的路径中的每个节点的地址信息,即R1的IP地址信息、R2的IP地址信息和R3的IP地址信息,尾节点R4根据MPLS请求报文构造携带源路由TLV字段的MPLS回应报文,目的IP地址为反向路径信息中的下一跳IP地址,将获取到的反向路径信息中的尾节点R4到首节点R1的之间的路径中的每个节点的地址信息封装到MPLS回应报文中,R4向R1发送MPLS回应报文,MPLS回应报文的源路由选项指针指向R3,则将MPLS回应报文转发到R3,R3接收到MPLS回应报文,从MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即MPLS回应报文的源路由选项指针指向R2,R2接收到MPLS回应报文,从MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即MPLS回应报文的源路由选项指针指向R1,R1收到MPLS回应报文,则MPLS回应报文根据反向路径信息由尾节点发送到首节点,TE ping检测过程结束。
作为一种可选的实施方式,如图3所示,为本发明实施例提供的流量工程隧道的检测方法的TE tracert的示意图,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点。首节点R1向中间节点R2发送第一MPLS请求报文(MPLS echo request),MPLS TTL=1,第一MPLS请求报文携带的源路由TLV字段记录了R1到R2的每一跳的IP Prefix信息,则中间节点R2根据MPLS请求报文构造携带源路由TLV字段的第一MPLS回应报文,第一MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R2到R1的之间的路径中的每个节点的地址信息封装到第一MPLS回应报文中,又R2不是隧道的尾节点,则第一MPLS回应报文携带下游映射TLV。中间节点R2向R1发送第一MPLS回应报文,第一MPLS回应报文的源路由选项指针指向R1。
R1接收到第一MPLS回应报文,读取第一MPLS回应报文,读取到第一MPLS回应报文携带的下游映射TLV为非空,该第一MPLS回应报文不是尾节点发送的回应报文,则R1构造第二MPLS请求报文。R1向R3发送第二MPLS请求报文,MPLS TTL=2,第二MPLS请求报文携带的源路由TLV字段记录了R1到R3的每一跳的IP Prefix信息,则中间节点R3根据MPLS请求报文构造携带源路由TLV字段的第二MPLS回应报文,第二MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R3到R1的之间的路径中的每个节点的地址信息封装到第二MPLS回应报文中,又R3不是隧道的尾节点,则第二MPLS回应报文携带下游映射TLV。中间节点R3向R1发送第二MPLS回应报文,第二MPLS回应报文的源路由选项指针指向R2,R3将第二MPLS回应报文发送到R2,R2接收到第二MPLS回应报文,从第二MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第二MPLS回应报文的源路由选项指针指向R1,R1收到MPLS回应报文,则第二MPLS回应报文根据反向路径信息由R3发送到R1。
R1接收到第二MPLS回应报文,读取第二MPLS回应报文,读取到第二MPLS回应报文携带的下游映射TLV为非空,该第二MPLS回应报文不是尾节点发送的回应报文,则R1构造第三MPLS请求报文。R1向R4发送第三MPLS请求报文,MPLS TTL=3,第三MPLS请求报文携带的源路由TLV字段记录了R1到R4的每一跳的IP Prefix信息,则尾节点R4根据MPLS请求报文构造携带源路由TLV字段的第三MPLS回应报文,第三MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R4到R1的之间的路径中的每个节点的地址信息封装到第三MPLS回应报文中,又R4是隧道的尾节点,则第三MPLS回应报文不携带下游映射TLV。R4向R1发送第三MPLS回应报文,第三MPLS回应报文的源路由选项指针指向R3,R4将第三MPLS回应报文发送到R3,R3接收到第三MPLS回应报文,从第三MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第三MPLS回应报文的源路由选项指针指向R2,R2收到第三MPLS回应报文,从第三MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第三MPLS回应报文的源路由选项指针指向R1,则第三MPLS回应报文根据反向路径信息由R4发送到R1。R1收到第三MPLS回应报文,读取第三MPLS回应报文,读取到第三MPLS回应报文携带的下游映射TLV为空,该第三MPLS回应报文是尾节点发送的回应报文,TE tracert检测结束。
作为一种可选的实施方式,发明实施例提供的一种流量工程隧道的检测方法具体还可以包括:
中间节点接收首节点发送的多协议标签交换MPLS请求报文;
中间节点获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息包括:从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息;
中间节点根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,请参见图4,为本发明实施例提供的隧道建立过程的具体流程图。本发明实施例中,MPLS TE Tunnel由隧道的首端发起建立,是一条head-end的LSP隧道,RSVP-TE按照显式路径或CSPF计算得到的路径,通过MPLS TE隧道建立请求和MPLSTE隧道建立响应建立隧道,MPLS TE隧道建立请求可以为:Path消息,MPLS TE隧道建立响应可以为:Resv消息,即可通过Path消息和Resv消息请求建立LSP Tunnel。
作为一种可选的实施方式,Path消息中主要包括的对象有:session object,LABEL_REQUEST object,SENDER_TEMPLATE object,explicit-route,record_route,session-attribute等。
作为一种可选的实施方式,Path消息作用是标签请求,为指定的Isp tunnel绑定标签,为MPLS TE tunnel指定显示标签,指定隧道上节点是否需要记录路由和标签,且提供隧道建立协商参数。
作为一种可选的实施方式,Path消息中的session object和SENDER_TEMPLATEobject中指定隧道的起点、终点、tunnel ID以及隧道类型,隧道类型如Isp-tunnel-IPv4等。Path消息中的LABEL_REQUEST object,表示首节点向隧道终端发起Path消息,申请标签绑定,表明申请标签绑定的方向是隧道终点,从首节点到隧道终点的所有Path消息经过的中间节点都需要提供标签绑定,隧道终点接收到该LABEL_REQUEST object的消息后,向隧道首节点方向回应Label object的Resv消息响应,建立隧道,其中,Label object消息中携带为该隧道分配的标签,接收到带label object的Resv消息的节点如果不是隧道的首节点,则将接收到的Resv消息中的label作为该隧道的出标签,同时再分配一个新的标签作为隧道的入标签,然后该节点向上游发送一个Resv消息,Label object携带的标签为新分配的这个标签,然后每一个节点都作相同的处理,直到到达隧道的首节点,则从首节点到隧道终点的一条标签交换路径就形成了,隧道建立成功。
作为一种可选的实施方式,本发明实施例中的MPLS TE隧道建立请求可以包括:对象记录字段,对象记录字段用于记录MPLS TE隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。具体的,对象记录字段可以为RRO,RRO中封装IPv4prefix的子对象,封装的IP地址为本节点出接口的IP地址,下一节点接收到该Path消息后,会将该IP地址记录下来,发送给下游的Path消息会将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,发送出去。则每一跳的节点都将本节点的地址加入到RRO的IPv4prefix子对象中,则每个设备都能从RRO中获得隧道首节点到本节点的路径。隧道尾节点接收到的Path消息包含RRO,在向隧道首节点发送的Resv消息中,也将封装RRO,节点对Resv消息中的RRO的IPv4prefix子对象处理过程同Path消息相同,则路径上的每个节点可以从Path消息中取得从首节点到本节点的路径,从Resv消息中获取从本节点到隧道尾节点的路径,因此隧道上每个节点都可以记录整个隧道路径从首节点到尾节点每一跳的地址。每个节点保存整个隧道路径中从首节点到尾节点之间的节点的地址信息。
如图4所示,本发明实施例的隧道建立过程可包括以下步骤:S401~S407。图4中的步骤S401~S407为在图1中S101之前执行。
S401,中间节点接收首节点发送的包括对象记录字段MPLS TE隧道建立请求,所述对象记录字段用于记录MPLS TE隧道中的首节点到中间节点的路径中的每个节点的地址信息。
作为一种可选的实施方式,对象记录字段用于记录MPLS TE隧道中的首节点到中间节点的路径中的每个节点的地址信息,对象记录字段可以为RRO,RRO中可以封装IPv4prefix的子对象,RRO记录首节点的地址信息,具体可以为封装首节点出接口的IP地址。
S402,中间节点从MPLS TE隧道建立请求中获取首节点到中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
作为一种可选的实施方式,中间节点从对象记录字段RRO中获取到首节点的地址信息,并将首节点的地址信息和该中间节点的地址信息存储到本地路径存储区中。如果包括多个中间节点,则每个中间节点都从MPLS TE隧道建立请求中获取首节点到中间节点之间的节点地址信息,并存储到本地路径存储区中。
S403,中间节点将所述包括对象记录字段的MPLS TE隧道建立请求发送到尾节点,尾节点与首节点之间包括至少一个中间节点。
作为一种可选的实施方式,对象记录字段记录中间节点的地址信息,中间节点向尾节点发送的MPLS TE隧道建立请求中携带该对象记录字段RRO,对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,对象记录字段RRO中的IPv4prefix子对象的格式例如:
S404,尾节点根据所述MPLS TE隧道建立请求向中间节点发送包括对象记录字段的MPLS TE隧道建立响应。
作为一种可选的实施方式,尾节点根据MPLS TE隧道建立请求向首节点返回MPLSTE隧道建立响应,即向中间节点MPLS TE隧道建立响应,其中,MPLS TE隧道建立响应中包括对象记录字段RRO,对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面。
S405,中间节点根据MPLS TE隧道建立响应中的对象记录字段记录并保存MPLS TE隧道中尾节点到中间节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,中间节点根据MPLS TE隧道建立响应的对象记录字段记录并保存MPLS TE隧道中尾节点到中间节点之间的路径中的每个节点的地址信息。
S406,中间节点向首节点发送包括对象记录字段的MPLS TE隧道建立响应。
作为一种可选的实施方式,中间节点接收到上一节点发送的MPLS TE隧道建立响应后,将该MPLS TE隧道建立响应发送给首节点。
S407,首节点根据对象记录字段记录并保存MPLS TE隧道中尾节点到首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,如图5所示,为本发明实施例提供的流量工程隧道的建立过程的示意图,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点。R2从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1的地址信息,即R1的IP地址,R2将R1的地址信息和R2的地址信息存储到本地路径存储区中。R3从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1的地址信息和中间节点R2的地址信息,即R1的IP地址、R2的IP地址,R3将R1的地址信息、R2的地址信息和R3的地址信息存储到本地路径存储区中。
中间节点R3向尾节点R4发送的MPLS TE隧道建立请求中携带的对象记录字段RRO中包括:首节点R1、中间节点R2和中间节点R3的地址信息,则尾节点R4接收到MPLS TE隧道建立请求后,从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1、中间节点R2以及中间节点R3的地址信息,即R1的IP地址、R2的IP地址和R3的IP地址,R4将R1的地址信息、R2的地址信息、R3的地址信息和R4的地址信息存储到本地路径存储区中。
尾节点R4向中间节点R3发送MPLS TE隧道建立响应,MPLS TE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R4的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R3接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO记录的首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息,获取到尾节点R4的地址信息,并存储到本地路径存储区中。
R3不是首节点,则R3将包括对象记录字段的MPLS TE隧道建立响应发送到R2,MPLSTE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R3的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R2接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO获取R4的地址信息和R3的地址信息,并存储到本地路径存储区中。
R2将包括对象记录字段的MPLS TE隧道建立响应发送到R1,MPLS TE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R2的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R1接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO获取R4的地址信息、R3的地址信息和R2的地址信息,并存储到本地路径存储区中。
上述为隧道建立过程的具体流程,通过MPLS TE隧道建立请求和MPLS TE隧道建立响应建立隧道,MPLS TE隧道建立请求包括的对象记录字段用于记录MPLS TE隧道中的首节点到中间节点的路径中的每个节点的地址信息,MPLS TE隧道建立响应中包括的对象记录字段用于记录MPLS TE隧道中的尾节点到中间节点的路径中的每个节点的地址信息,可在隧道使能记录每个节点的地址信息,隧道中的每个节点保存了整个隧道的路径信息,解除了与路由的耦合关系,当TE ping和TE tracert时无需通过路由表进行查找和转发,提高了对流量工程隧道的联通检测和诊断的成功率。
作为一种可选的实施方式,本发明实施例还可以应用于动态bfd for TE LSP或者动态bfd for TE tunnel中,动态bfd for TE LSP用于检测TE隧道某一条LSP的连通性,动态bfd for TE tunnel用于检测整个TE隧道的连通性。
现有技术中,BFD检测依赖动态路由协议,在动态bfd for TE lsp或者动态bfdfor TE tunnel检测过程中,bfd检测报文沿着隧道传输,反向的bfd检测报文通过路由返回,当反向的bfd检测报文的转发路由与隧道的转发路径不共路时,导致bfd回程检测报文经过的链路(不在TE隧道的转发路径上)断开,以致bfd会话的检测失败。
如图6所示,为本发明实施例提供的流量工程隧道的检测方法的BFD检测的示意图,TE隧道包括节点R1、R2、R3和R4,在R1设备上创建TE tunnel1,tunnel的路径为R1-R2-R4,在R1上配置动态bfd for TE LSP,在R4设备上会动态生成反向的bfd for IP会话,R1发出的bfd检测报文(mpls echo request)沿着隧道路径R1-R2-R4转发,从R4返回的bfd检测报文会沿着R4-R3-R1的路径返回到R1设备上。若R3设备掉电,或者R1和R3之间的链路中断,或者R4和R3之间的链路中断,都会导致R1的bfd for TE lsp会话检测失败,而实际上R1上的TE tunnel1的转发是不受述故障点的影响,bfd会话检测失败是非预期结果。
采用本发明实施例,在通过mpls echo request协商bfd for TE lsp或者bfd forTE tunnel会话时,在mpls echo request里封装源路由TLV字段,mpls echo request可以为UDP报文,端口号设为3784,尾节点进行bfd协商,协商成功后自动创建反向的bfd for IP会话,bfd for IP会话为通过mpls echo request协商的会话,通过源路由TLV字段可携带首节点与尾节点的之间的路径的每个节点的地址信息。TE隧道尾节点bfd会话协商成功后保存对应隧道的反向路径,且和反向的bfd for IP会话关联。隧道的尾节点发送的反向bfdfor IP检测报文封装源路由TLV字段,保证两个方向的bfd检测报文共路,解决两个方向的bfd会话因为不共路导致某些故障点场景,bfd检测结果不能如实的反应被检测对象的实际转发状态的问题。
如图6所示,在R1设备上创建TE tunnel1,tunnel的路径为R1-R2-R4,R1向R4发送MPLS请求报文(mpls echo request),MPLS请求报文里封装源路由TLV字段,源路由TLV字段可携带首节点与尾节点之间的路径的每个节点地址信息,即R1的地址信息、R2的地址信息以及R4的地址信息。TE隧道尾节点bfd会话协商成功后保存对应隧道的反向路径,且和反向的bfd for IP会话关联,即R4保存反向路径信息(R4-R2-R1),隧道的尾节点发送的反向bfdfor IP检测报文封装源路由TLV字段,反向bfd for IP检测报文(mpls echo reply)沿着反向路径:R4-R2-R1回到R1,不再依赖动态路由协议,保证两个方向的bfd检测报文共路。
本发明实施例提供一种流量工程隧道的检测方法,中间节点可根据逆向路径信息向首节点发送MPLS回应报文,逆向路径信息可以包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区中获取到的中间节点到首节点之间的路径中的每个节点的地址信息,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
下面将结合附图7,对本发明实施例提供的一种流量工程隧道的检测装置进行详细介绍。需要说明的是,附图7所示的流量工程隧道的检测装置,用于执行本发明图1所示实施例的方法,为基于图1所述的流量工程隧道的检测方法的执行主体。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1所示的实施例。
如图7所示,是本发明实施例提供的一种流量工程隧道的检测装置的结构示意图,本发明实施例中的流量工程隧道的检测装置可以包括:第一接收模块701、获取模块702和第一发送模块703。
第一接收模块701,用于接收首节点发送的MPLS请求报文。
作为一种可选的实施方式,第一接收模块701接收首节点发送的MPLS请求报文。MPLS请求报文可以为IP UDP报文,UDP端口可设为3503,封装TE隧道标签,沿着TE隧道传输,MPLS请求报文的源IP地址为首节点的本地接口地址,目的IP地址为127/128网段的环回地址。MPLS TTL设为1、2或255等。
获取模块702,用于获取所述中间节点到首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,获取模块702获取中间节点到首节点的逆向路径信息,若逆向路径信息为:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息,则MPLS请求报文可以包括:源路由TLV字段,其中,源路由TLV字段用于记录MPLS流量工程TE隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息。源路由TLV字段包括Type、length、Value。源路由TLV字段的格式例如:
作为一种可选的实施方式,源路由TLV字段的开头为Type类型,Type(类型)可以设置为32769,即1000000000000001。Value(内容)由首节点填写,填写TE隧道从首节点到尾节点的每一跳的IP地址(每一个节点的IP地址),即Hop1address、Hop2address、Hop3address等,Value字段的长度为5个字节的整数倍,length(长度)为Value字段的总长度。其中,Value字段每一跳的格式具体定义可以如下:
其中,Value字段每一跳的格式的长度为5个byte的整数倍,Hop长度为1个字节,填写到首节点的跳数,IPV4prefix填写对应该跳的地址信息。
进一步可选的,源路由TLV字段的Type类型大于等于32769的TLV为可选TLV,本发明实施例TE隧道中的首节点、尾节点以及中间节点可识别到该Type类型的源路由TLV字段。对于不能识别到该Type类型的源路由TLV字段的节点,则不能从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,获取模块702获取中间节点到首节点的逆向路径信息,若逆向路径信息为:从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息。隧道建立过程如下:
MPLS TE Tunnel由隧道的首端发起建立,是一条head-end的LSP隧道,RSVP-TE按照显式路径或CSPF计算得到的路径,通过Path消息和Resv消息请求建立LSP Tunnel,MPLSTE tunnel是单向隧道。
CSPF是一种改进的最短路径优先算法,是一种在计算通过网络的最短路径时,考虑特定的约束如带宽需求,最大跳转数,和管理策略需求等的算法。CSPF计算输出一个外在路由,该外在路由包含了一组通过网络的最短路径并满足约束的LSR地址。该外在路由随即传递给信令部分,信令部分在LSP中的LSR建立转发状态。RSVP-TE在已有的RSVP协议基础上加入至少一个新的消息对象,用于在MPLS网络中发起标签请求和分发标签绑定以建立和维护LSP,并提供重路由LSP和增加已建立的LSP的带宽。
其中,MPLS TE隧道建立请求可以为Path消息,MPLS TE隧道建立请求可以包括:对象记录字段,对象记录字段用于记录MPLS TE隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。
作为一种可选的实施方式,对象记录字段可以为RRO,RRO中封装IPv4prefix的子对象,封装的IP地址为本节点出接口的IP地址,下一节点接收到该Path消息后,会将该IP地址记录下来,发送给下游的Path消息会将本节点隧道出接口的地址添加到IPv4prefix子对象的最前面,发送出去。则每一跳的节点都将本节点的地址加入到RRO的IPv4prefix子对象中,则每个设备都能从RRO中获得隧道首节点到本节点的路径。隧道尾节点接收到的Path消息包含RRO,在向隧道首节点发送的Resv消息中,也将封装RRO,节点对Resv消息中的RRO的IPv4prefix子对象处理过程与Path消息相同,则路径上的每个节点可以从Path消息中取得从首节点到本节点的路径,从Resv消息中获取从本节点到隧道尾节点的路径,因此隧道上每个节点都可以记录整个隧道路径从首节点到尾节点每一跳的地址。每个节点保存整个隧道路径中从首节点到尾节点之间的节点的地址信息。
第一发送模块703,用于根据所述获取模块702获取到的逆向路径信息将所述第一接收模块701接收到的MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,第一发送模块703根据逆向路径信息封装MPLS回应报文,并将MPLS请求报文对应的MPLS回应报文发送到首节点,逆向路径信息中包括:中间节点到首节点之间的路径中的每个节点的地址信息,则根据该逆向路径信息可将MPLS回应报文发送到首节点,无需在每个节点通过路由查找与转发将MPLS回应报文发送到首节点。作为一种可选的实施方式,若首节点将MPLS请求报文发送到尾节点,尾节点根据逆向路径信息将MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,第一接收模块701接收首节点发送的MPLS请求报文,所述MPLS请求报文携带所述首节点到所述中间节点之间的路径中的每个节点的地址信息。获取模块702从MPLS请求报文中获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息为:所述中间节点到所述首节点之间的路径中的每个节点的地址信息。第一发送模块703根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,如图2所示,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点,首节点R1向尾节点R4发送MPLS请求报文(MPLS echo request),MPLS TTL=255,尾节点R4接收到该MPLS请求报文时,从MPLS请求报文中携带的源路由TLV字段中记录从R1到R4的每一跳的IP Prefix信息,即R4的地址信息、R3的地址信息、R2的地址信息和R1的地址信息,进而尾节点R4可获取到尾节点R4到首节点R1的之间的路径中的每个节点的地址信息,即R1的IP地址信息、R2的IP地址信息和R3的IP地址信息,尾节点R4根据MPLS请求报文构造携带源路由TLV字段的MPLS回应报文,目的IP地址为反向路径信息中的下一跳IP地址,将获取到的反向路径信息中的尾节点R4到首节点R1的之间的路径中的每个节点的地址信息封装到MPLS回应报文中,R4向R1发送MPLS回应报文,MPLS回应报文的源路由选项指针指向R3,则将MPLS回应报文转发到R3,R3接收到MPLS回应报文,从MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即MPLS回应报文的源路由选项指针指向R2,R2接收到MPLS回应报文,从MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即MPLS回应报文的源路由选项指针指向R1,R1收到MPLS回应报文,则MPLS回应报文根据反向路径信息由尾节点发送到首节点,TE ping检测过程结束。
作为一种可选的实施方式,如图3所示,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点。首节点R1向中间节点R2发送第一MPLS请求报文(MPLS echo request),MPLS TTL=1,第一MPLS请求报文携带的源路由TLV字段记录了R1到R2的每一跳的IP Prefix信息,则中间节点R2根据MPLS请求报文构造携带源路由TLV字段的第一MPLS回应报文,第一MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R2到R1的之间的路径中的每个节点的地址信息封装到第一MPLS回应报文中,又R2不是隧道的尾节点,则第一MPLS回应报文携带下游映射TLV。中间节点R2向R1发送第一MPLS回应报文,第一MPLS回应报文的源路由选项指针指向R1。
R1接收到第一MPLS回应报文,读取第一MPLS回应报文,读取到第一MPLS回应报文携带的下游映射TLV为非空,该第一MPLS回应报文不是尾节点发送的回应报文,则R1构造第二MPLS请求报文。R1向R3发送第二MPLS请求报文,MPLS TTL=2,第二MPLS请求报文携带的源路由TLV字段记录了R1到R3的每一跳的IP Prefix信息,则中间节点R3根据MPLS请求报文构造携带源路由TLV字段的第二MPLS回应报文,第二MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R3到R1的之间的路径中的每个节点的地址信息封装到第二MPLS回应报文中,又R3不是隧道的尾节点,则第二MPLS回应报文携带下游映射TLV。中间节点R3向R1发送第二MPLS回应报文,第二MPLS回应报文的源路由选项指针指向R2,R3将第二MPLS回应报文发送到R2,R2接收到第二MPLS回应报文,从第二MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第二MPLS回应报文的源路由选项指针指向R1,R1收到MPLS回应报文,则第二MPLS回应报文根据反向路径信息由R3发送到R1。
R1接收到第二MPLS回应报文,读取第二MPLS回应报文,读取到第二MPLS回应报文携带的下游映射TLV为非空,该第二MPLS回应报文不是尾节点发送的回应报文,则R1构造第三MPLS请求报文。R1向R4发送第三MPLS请求报文,MPLS TTL=3,第三MPLS请求报文携带的源路由TLV字段记录了R1到R4的每一跳的IP Prefix信息,则尾节点R4根据MPLS请求报文构造携带源路由TLV字段的第三MPLS回应报文,第三MPLS回应报文可以为IP UDP报文,目的IP地址为反向路径信息中的下一跳IP地址,目的端口号为R1发送MPLS请求报文的源端口号,将获取到的反向路径信息中的R4到R1的之间的路径中的每个节点的地址信息封装到第三MPLS回应报文中,又R4是隧道的尾节点,则第三MPLS回应报文不携带下游映射TLV。R4向R1发送第三MPLS回应报文,第三MPLS回应报文的源路由选项指针指向R3,R4将第三MPLS回应报文发送到R3,R3接收到第三MPLS回应报文,从第三MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第三MPLS回应报文的源路由选项指针指向R2,R2收到第三MPLS回应报文,从第三MPLS回应报文中的源路由选项TLV字段中读取下一跳的IP地址作为报文转发的目的IP地址,即第三MPLS回应报文的源路由选项指针指向R1,则第三MPLS回应报文根据反向路径信息由R4发送到R1。R1收到第三MPLS回应报文,读取第三MPLS回应报文,读取到第三MPLS回应报文携带的下游映射TLV为空,该第三MPLS回应报文是尾节点发送的回应报文,TE tracert检测结束。
作为一种可选的实施方式,第一接收模块701接收首节点发送的MPLS请求报文;获取模块702获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息包括:从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息;第一发送模块703根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
进一步可选的,本发明实施例提供的流量工程隧道的检测装置还可以包括:第二接收模块704和地址信息处理模块705。
本发明实施例中,MPLS TE Tunnel由隧道的首端发起建立,是一条head-end的LSP隧道,RSVP-TE按照显式路径或CSPF计算得到的路径,通过MPLS TE隧道建立请求和MPLS TE隧道建立响应建立隧道,MPLS TE隧道建立请求可以为:Path消息,MPLS TE隧道建立响应可以为:Resv消息,即可通过Path消息和Resv消息请求建立LSP Tunnel。
作为一种可选的实施方式,Path消息中主要包括的对象有:session object,LABEL_REQUEST object,SENDER_TEMPLATE object,explicit-route,record_route,session-attribute等。
作为一种可选的实施方式,Path消息作用是标签请求,为指定的Isp tunnel绑定标签,为MPLS TE tunnel指定显示标签,指定隧道上节点是否需要记录路由和标签,且提供隧道建立协商参数。
作为一种可选的实施方式,Path消息中的session object和SENDER_TEMPLATEobject中指定隧道的起点、终点、tunnel ID以及隧道类型,隧道类型如Isp-tunnel-IPv4等。Path消息中的LABEL_REQUEST object,表示首节点向隧道终端发起Path消息,申请标签绑定,表明申请标签绑定的方向是隧道终点,从首节点到隧道终点的所有Path消息经过的中间节点都需要提供标签绑定,隧道终点接收到该LABEL_REQUEST object的消息后,向隧道首节点方向回应Label object的Resv消息响应,建立隧道,其中,Label object消息中携带为该隧道分配的标签,接收到带label object的Resv消息的节点如果不是隧道的首节点,则将接收到的Resv消息中的label作为该隧道的出标签,同时再分配一个新的标签作为隧道的入标签,然后该节点向上游发送一个Resv消息,Label object携带的标签为新分配的这个标签,然后每一个节点都作相同的处理,直到到达隧道的首节点,则从首节点到隧道终点的一条标签交换路径就形成了,隧道建立成功。
作为一种可选的实施方式,本发明实施例中的MPLS TE隧道建立请求可以包括:对象记录字段,对象记录字段用于记录MPLS TE隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。具体的,对象记录字段可以为RRO,RRO中封装IPv4prefix的子对象,封装的IP地址为本节点出接口的IP地址,下一节点接收到该Path消息后,会将该IP地址记录下来,发送给下游的Path消息会将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,发送出去。则每一跳的节点都将本节点的地址加入到RRO的IPv4prefix子对象中,则每个设备都能从RRO中获得隧道首节点到本节点的路径。隧道尾节点接收到的Path消息包含RRO,在向隧道首节点发送的Resv消息中,也将封装RRO,节点对Resv消息中的RRO的IPv4prefix子对象处理过程同Path消息相同,则路径上的每个节点可以从Path消息中取得从首节点到本节点的路径,从Resv消息中获取从本节点到隧道尾节点的路径,因此隧道上每个节点都可以记录整个隧道路径从首节点到尾节点每一跳的地址。每个节点保存整个隧道路径中从首节点到尾节点之间的节点的地址信息。
第二接收模块704,用于接收所述首节点发送的MPLS TE隧道建立请求,所述MPLSTE隧道建立请求携带从所述首节点到所述中间节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,对象记录字段用于记录MPLS TE隧道中的首节点到中间节点的路径中的每个节点的地址信息,对象记录字段可以为RRO,RRO中可以封装IPv4prefix的子对象,RRO记录首节点的地址信息,具体可以为封装首节点出接口的IP地址。
地址信息处理模块705,用于从所述第二接收模块704接收到的MPLS TE隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
作为一种可选的实施方式,地址信息处理模块705从对象记录字段RRO中获取到首节点的地址信息,并将首节点的地址信息和该中间节点的地址信息存储到本地路径存储区中。如果包括多个中间节点,则每个中间节点都从MPLS TE隧道建立请求中获取首节点到中间节点之间的节点地址信息,并存储到本地路径存储区中。
进一步可选的,本发明实施例提供的流量工程隧道的检测装置还可以包括:第二发送模块706、记录模块707和第三发送模块708。
第二发送模块706,用于将所述包括对象记录字段的MPLS TE隧道建立请求发送到所述尾节点,所述尾节点与所述首节点之间包括至少一个中间节点,以使所述尾节点根据所述MPLS TE隧道建立请求向所述中间节点返回包括所述对象记录字段的MPLS TE隧道建立响应。
作为一种可选的实施方式,对象记录字段记录中间节点的地址信息,第二发送模块706向尾节点发送的MPLS TE隧道建立请求中携带该对象记录字段RRO,对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,对象记录字段RRO中的IPv4prefix子对象的格式例如:
尾节点根据MPLS TE隧道建立请求向首节点返回MPLS TE隧道建立响应,即向中间节点MPLS TE隧道建立响应,其中,MPLS TE隧道建立响应中包括对象记录字段RRO,对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面。
记录模块707,用于根据所述MPLS TE隧道建立响应中的对象记录字段记录MPLSTE隧道中所述尾节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
作为一种可选的实施方式,记录模块707根据MPLS TE隧道建立响应的对象记录字段记录并保存MPLS TE隧道中尾节点到中间节点之间的路径中的每个节点的地址信息。
第三发送模块708,用于向所述首节点发送所述包括所述对象记录字段的MPLS TE隧道建立响应,以使所述首节点根据所述对象记录字段记录并保存MPLS TE隧道中所述尾节点到所述首节点之间的路径中的每个节点的地址信息。
作为一种可选的实施方式,如图5所示,为本发明实施例提供的流量工程隧道的建立过程的示意图,该流量工程隧道包括四个节点,分别为R1、R2、R3和R4,R1为首节点,R2、R3为中间节点,R4为尾节点。R2从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1的地址信息,即R1的IP地址,R2将R1的地址信息和R2的地址信息存储到本地路径存储区中。R3从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1的地址信息和中间节点R2的地址信息,即R1的IP地址、R2的IP地址,R3将R1的地址信息、R2的地址信息和R3的地址信息存储到本地路径存储区中。
中间节点R3向尾节点R4发送的MPLS TE隧道建立请求中携带的对象记录字段RRO中包括:首节点R1、中间节点R2和中间节点R3的地址信息,则尾节点R4接收到MPLS TE隧道建立请求后,从MPLS TE隧道建立请求中的对象记录字段RRO中获取到的首节点R1、中间节点R2以及中间节点R3的地址信息,即R1的IP地址、R2的IP地址和R3的IP地址,R4将R1的地址信息、R2的地址信息、R3的地址信息和R4的地址信息存储到本地路径存储区中。
尾节点R4向中间节点R3发送MPLS TE隧道建立响应,MPLS TE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R4的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R3接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO记录的首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息,获取到尾节点R4的地址信息,并存储到本地路径存储区中。
R3不是首节点,则R3将包括对象记录字段的MPLS TE隧道建立响应发送到R2,MPLSTE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R3的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R2接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO获取R4的地址信息和R3的地址信息,并存储到本地路径存储区中。
R2将包括对象记录字段的MPLS TE隧道建立响应发送到R1,MPLS TE隧道建立响应的对象记录字段RRO将本节点隧道出接口的地址添加到IPV4prefix子对象的最前面,即R2的IP地址,则MPLS TE隧道建立响应的对象记录字段RRO中包括:首节点R1的地址信息、中间节点R2的地址信息、中间节点R3的地址信息和尾节点R4的地址信息。R1接收到MPLS TE隧道建立响应,从MPLS TE隧道建立响应中的对象记录字段RRO获取R4的地址信息、R3的地址信息和R2的地址信息,并存储到本地路径存储区中。
作为一种可选的实施方式,本发明实施例还可以应用于动态bfd for TE LSP或者动态bfd for TE tunnel中,动态bfd for TE LSP用于检测TE隧道某一条LSP的连通性,动态bfd for TE tunnel用于检测整个TE隧道的连通性。
现有技术中,BFD检测依赖动态路由协议,在动态bfd for TE lsp或者动态bfdfor TE tunnel检测过程中,bfd检测报文沿着隧道传输,反向的bfd检测报文通过路由返回,当反向的bfd检测报文的转发路由与隧道的转发路径不共路时,导致bfd回程检测报文经过的链路(不在TE隧道的转发路径上)断开,以致bfd会话的检测失败。
如图6所示,为本发明实施例提供的流量工程隧道的检测方法的BFD检测的示意图,TE隧道包括节点R1、R2、R3和R4,在R1设备上创建TE tunnel1,tunnel的路径为R1-R2-R4,在R1上配置动态bfd for TE LSP,在R4设备上会动态生成反向的bfd for IP会话,R1发出的bfd检测报文(mpls echo request)沿着隧道路径R1-R2-R4转发,从R4返回的bfd检测报文会沿着R4-R3-R1的路径返回到R1设备上。若R3设备掉电,或者R1和R3之间的链路中断,或者R4和R3之间的链路中断,都会导致R1的bfd for TE lsp会话检测失败,而实际上R1上的TE tunnel1的转发是不受述故障点的影响,bfd会话检测失败是非预期结果。
采用本发明实施例,在通过mpls echo request协商bfd for TE lsp或者bfd forTE tunnel会话时,在mpls echo request里封装源路由TLV字段,mpls echo request可以为UDP报文,端口号设为3784,尾节点进行bfd协商,协商成功后自动创建反向的bfd for IP会话,bfd for IP会话为通过mpls echo request协商的会话,通过源路由TLV字段可携带首节点与尾节点的之间的路径的每个节点的地址信息。TE隧道尾节点bfd会话协商成功后保存对应隧道的反向路径,且和反向的bfd for IP会话关联。隧道的尾节点发送的反向bfdfor IP检测报文封装源路由TLV字段,保证两个方向的bfd检测报文共路,解决两个方向的bfd会话因为不共路导致某些故障点场景,bfd检测结果不能如实的反应被检测对象的实际转发状态的问题。
如图6所示,在R1设备上创建TE tunnel1,tunnel的路径为R1-R2-R4,R1向R4发送MPLS请求报文(mpls echo request),MPLS请求报文里封装源路由TLV字段,源路由TLV字段可携带首节点与尾节点之间的路径的每个节点地址信息,即R1的地址信息、R2的地址信息以及R4的地址信息。TE隧道尾节点bfd会话协商成功后保存对应隧道的反向路径,且和反向的bfd for IP会话关联,即R4保存反向路径信息(R4-R2-R1),隧道的尾节点发送的反向bfdfor IP检测报文封装源路由TLV字段,反向bfd for IP检测报文(mpls echo reply)沿着反向路径:R4-R2-R1回到R1,不再依赖动态路由协议,保证两个方向的bfd检测报文共路。
本发明实施例提供一种流量工程隧道的检测装置,可根据逆向路径信息向首节点发送MPLS回应报文,逆向路径信息可以包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
本发明实施例还提供的一种流量工程隧道的检测系统,本实施例提供的流量工程隧道的检测系统包括:首节点、中间节点以及尾节点,中间节点如图7所示的装置。其中,中间节点的结构和功能可参见图7所示实施例的相关描述,在此不赘述。需要说明的是,本实施例提供的中间节点与图1所示的流量工程隧道的检测方法相对应,为基于图1所示的流量工程隧道的检测方法的执行主体。
图8为本发明实施例提供的一种节点的结构示意图,其中,本实施例提供的节点与图1所示的流量工程隧道的检测方法相对应,为基于图1所示的流量工程隧道检测方法的执行主体。具体的实现形式如图8所示,包括:处理器801、存储器802、发送器803和接收器804,存储器802用于存储程序代码。处理器801用于执行存储器802中存储的程序代码。本发明实施例中,存储器802存储有第一程序代码,处理器801用于执行该第一程序代码。
接收器804,用于接收首节点发送的MPLS请求报文;
处理器801,还用于获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息;
发送器803,用于根据所述逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。
作为一种可选的实施方式,MPLS请求报文包括:源路由TLV字段,所述源路由TLV字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
处理器801获取所述中间节点到所述首节点的逆向路径信息具体用于:
根据所述MPLS请求报文中的源路由TLV字段记录的MPLS流量工程隧道中的所述首节点到所述中间节点之间的路径中的每个节点的地址信息确定所述中间节点到所述首节点的逆向路径信息。
作为一种可选的实施方式,接收器804接收首节点发送的MPLS请求报文之前,接收器804还用于接收所述首节点发送的MPLS流量工程隧道建立请求,所述MPLS流量工程隧道建立请求携带从所述首节点到所述中间节点之间的路径中的每个节点的地址信息;
处理器801还用于从所述MPLS流量工程隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中。
作为一种可选的实施方式,所述MPLS流量工程隧道建立请求包括:对象记录字段,所述对象记录字段用于记录MPLS流量工程隧道中的所述首节点到所述中间节点的路径中的每个节点的地址信息。
作为一种可选的实施方式,处理器801从所述MPLS流量工程隧道建立请求中获取所述首节点到所述中间节点之间的路径中的每个节点的地址信息,并存储到本地路径存储区中之后,发送器803还用于:
将所述包括对象记录字段的MPLS流量工程隧道建立请求发送到尾节点,所述尾节点与所述首节点之间包括至少一个中间节点,以使所述尾节点根据所述MPLS流量工程隧道建立请求向所述中间节点发送包括所述对象记录字段的MPLS流量工程隧道建立响应;
处理器801,还用于根据所述MPLS流量工程隧道建立响应中的对象记录字段记录并保存MPLS流量工程隧道中所述尾节点到所述中间节点之间的路径中的每个节点的地址信息;
发送器803,还用于向所述首节点发送所述包括所述对象记录字段的MPLS流量工程隧道建立响应,以使所述首节点根据所述对象记录字段记录并保存MPLS流量工程隧道中所述尾节点到所述首节点之间的路径中的每个节点的地址信息。
其中,处理器801可以是中央处理器(central processing unit,CPU)、专用集成电路(application-specific integrated circuit,ASIC)等。其中,本实施例中的节点可以包括总线805。处理器801、存储器802、发送器803和接收器804之间可通过总线805连接并通信。其中,存储器802可以包括:随机存取存储器(random access memory,RAM),只读存储器(read-only memory,ROM),磁盘等具有存储功能的实体。
本发明实施例的节点,包括:处理器、存储器、发送器和接收器,接收器接收首节点发送的MPLS请求报文,处理器获取所述中间节点到所述首节点的逆向路径信息,所述逆向路径信息包括:从MPLS请求报文中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的所述中间节点到所述首节点之间的路径中的每个节点的地址信息,发送器根据逆向路径信息将MPLS请求报文对应的MPLS回应报文发送到首节点,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
综上表述,本实施实例提供的流量工程隧道的检测方法、装置及系统。接收首节点发送的MPLS请求报文;所述中间节点获取中间节点到首节点的逆向路径信息,逆向路径信息包括:从MPLS请求报文中获取到的中间节点到首节点之间的路径中的每个节点的地址信息或从隧道建立时保存在本地路径存储区的地址信息中获取到的中间节点到首节点之间的路径中的每个节点的地址信息;中间节点根据逆向路径信息将所述MPLS请求报文对应的MPLS回应报文发送到首节点。采用本发明,中间节点向首节点发送MPLS回应报文,解除了与路由的耦合关系,避免了路由不通时导致TE ping和TE tracert失效的情况,提高了对流量工程隧道的联通检测和诊断的成功率。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置、模块或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
作为分离部件说明的模块或单元可以是或者也可以不是物理上分开的,作为模块或单元显示的部件可以是或者也可以不是物理模块或单元,即可以位于一个地方,或者也可以分布到多个网络模块或单元上。可以根据实际的需要选择其中的部分或者全部模块或单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或单元可以集成在一个处理模块或单元中,也可以是各个模块或单元单独物理存在,也可以是两个或两个以上模块或单元集成在一个模块或单元中。上述集成的模块或单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块或单元如果以软件功能模块或单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。