一种实现多协议标签交换路径查询的方法和节点与流程

文档序号:12131986阅读:628来源:国知局
一种实现多协议标签交换路径查询的方法和节点与流程

本发明涉及通信技术领域,尤其涉及的是一种实现多协议标签交换路径查询的方法和节点。



背景技术:

目前在运营商网络中MPLS(Multi-Protocol Label Switching,多协议标签交换)技术得到了广泛应用,因为MPLS标签位于L2(数据链路层)的以太头和L3(网络层)的IP头之间,所以该技术被称为是2.5层的技术。

在应用中,MPLS路径建立后,需要有一种OAM(Operation Administration and Maintenance,操作管理维护)技术,可以查询这个网络拓扑中路径经过的节点和具体接口等信息,这样可以给客户一个一目了然的体验效果,也可以在故障定位中起到关键作用。但是,目前MPLS网络分为基于IP层的动态网络,IP MPLS技术和基于MAC(Media Access Contral,媒体访问控制)层的静态网络,MPLS-TP(Multi-Protocol Label Switching-Transport Profile,多协议标签交换传送应用)技术,不管哪种网络都缺少一种完善的OAM机制。

一方面,动态MPLS网络通过MPLS OAM技术,类似IP网络中traceroute方式间接进行路径定位,属于网络层的OAM技术,而使用L3层的技术来检测2.5层的网络质量本身就违背了OSI(Open System Interconnection,开放式系统互联)分层设计结构,间接方式检测的结果也不能完全与实际结果吻合,并且查询结果只能反应IP层的节点路径,无法反应物理层的信息。

另一方面,静态网络中通常使用MPLS-TP OAM技术,而这种技术本身依赖于MPLS路径的完整性,并且协议比较复杂,应用上比较困难。

总之,现有的技术都无法做到全面探测MPLS路径,将整个网络节点上的具体信息友好可靠的展示出来。



技术实现要素:

本发明所要解决的技术问题是提供一种实现多协议标签交换路径查询的方法和节点,能够基于链路层发现协议LLDP技术全面探测多协议标签交换(MPLS)路径,便于展示整个网络节点上的路径信息。

本发明实施例提供了一种实现多协议标签交换路径查询的方法,包括:

针对待查询标签交换路径,基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文;

待查询标签交换路径上的节点利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中;

从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

本发明实施例还提供了一种实现多协议标签交换路径查询的节点,应用于多协议标签交换网络,包括:

报文生成模块,用于针对待查询标签交换路径,基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文;

信息插入模块,用于将本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中;

回传模块,用于向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

与现有技术相比,本发明提供的一种实现多协议标签交换路径查询的方法和节点,在MPLS的源节点上发起查询,根据查询结果,能够一目了然地看到所需的LSP路径的具体信息。本发明实施例的技术方案使用完全独立于MPLS模块的LLDP技术来对MPLS的LSP路径做检测,可以支持MPLS-TP和IP MPLS机制,具有更广阔的应用空间。LLDP协议属于邻居发现协议,简单易用,且不受其他复杂协议的限制,以LLDP协议作为传输媒体,简化开发流程,可靠性更高。LLDP协议的TLV结构有很好的扩展性,查询过程中,逐跳叠加对应的节点信息,最后把回应报文再逐跳解析,根据TLV在报文中的先后顺序可以直接得出具体跳数的前后关联信息。当MPLS LSP路径创建错误时,传统的traceroute和MPLS-TP OAM等机制就会失效,而无法查询出具体结果,使用本文的方法,由于LLDP不依赖于MPLS表项,所以可以将具体查询信息反馈给用户,用户可以根据信息去精确定位故障原因。

附图说明

图1是本发明实施例的一种实现多协议标签交换路径查询的方法的流程图。

图2是本发明实施例的一种实现多协议标签交换路径查询的节点示意图。

图3是本发明优选实施例的一种实现多协议标签交换路径查询的方法的流程图。

图4是本发明示例1中要查询的LSP路径的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

MPLS(Multi-Protocol Label Switching,多协议标签交换)网络中LSP(Label Switching Path,标签交换路径)的标签转发表是本地的概念,像路由一样无法全局查询一个LSP路径究竟是通过了哪些网络节点,像查看路由表一样只能一跳一跳的查询,比如节点A——节点B——节点C,从节点A到节点C的LSP路径,在节点A上查找时,只能看到去往目的节点C的LSP的出标签和出接口,但是节点B上是否有到节点C的LSP路径,或者中间究竟跨越了哪些节点,哪些接口和标签等具体信息在节点A是无法一目了然的,需要一个节点一个节点地去查看才能找到,非常耗费时间。

LLDP(Link Layer Discovery Protocol,链路层发现协议)提供了一种标准的链路层发现方式,可以将本节点的主要能力、管理地址、节点标识、接口标签等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。同时,LLDP报文本身可以包括多个TLV结构,其中包括可选的保留TLV,并且预留了type类型,由此具有很好的可扩展性。本发明实施例的技术方案,利用LLDP报文的保留TLV,携带相关信息,逐跳查询,然后把相关信息返回给发起查询的源节点,在源节点上呈现出具体的路径信息。由于LLDP的优势在于不依赖于三层网络路径,而是基于数据链路层,因此更安全可靠,可以同时适用于IP MPLS和MPLS-TP网络。

为了更好地进行说明,先将在本发明实施例中所涉及的报文结构说明如下:

1、LLDP报文结构,如下所示:

其中,DA是目的MAC地址,为多播地址(LLDP_Multicast Address);SA是源MAC地址,为LLDP报文发送端的MAC地址(MAC address);LLDP Ethertype是标明该报文为以太网类型;Data+pad是LLDP数据单元(LLDPDU);Frame Check Sequence(FCS)是帧校验序列,典型的可以为8位字节。

2、LLDPDU是LLDP的有效载荷,用于承载要发送的消息,LLDPDU的格式如下所示:

其中Chassis ID TLV,Port ID TLV,Time To Live TLV以及End Of LLDPDU TLV是强制的,必须包含的部分,本领域技术人员深知其使用,在此并不赘述,而除此之外在Time To Live TLV和End Of LLDPDU TLV之间可以包含0个到多个可选的保留TLV。

3、TLV是组成LLDPDU的单元,每个TLV代表一个信息,TLV域的基本定义及分配如下:

其中,TLV类型域中,type0-8属于基本的TLV集合,它是必须包含在LLDP中的,在此并不赘述,本申请在type9-126的预留资源中选择两个type值来作为扩展TLV完成,示例性地,选取type=100的TLV作为表征要进行MPLS LSP查询的TLV,选取type=101的TLV作为表征节点路径转发信息的TLV:

4、MPLS LSP查询TLV格式(type=100)如下所示:

此时,TLV type取值为100;

TLV information string length:TLV信息串长度;

S FEC:需要查询的LSP路径的源FEC(Forwarding Equivalence Class,转发等价类),在本实施例中选择为发起查询的节点的源LSR(Label Switching Router,标签交换路由器)-ID;

D FEC:需要查询的LSP路径的目的FEC,在本实施例中选择为目的节点的目的LSR-ID;

Flag:标志位,可以选择表征报文不同状态的三个状态值,例如,0表示请求状态,1表示正确响应状态,2表示错误响应状态(中止),可以占用1个字节;当然也可以采用其它赋值,只需要互不相同且对于三个状态有区别标识即可。

5、MPLS LSP查询信息保存TLV格式(type=101),如下所示:

此时,TLV type取值为101;

TLV information string length:TLV信息串长度;

local FEC:本地转发等价类,在本实施例中选择为节点的LSR-ID;

标签:根据标准规定,标签范围为0~1048575,可以预留3个字节;

S FEC:源FEC,在本实施例中选择为本地节点的LSR-ID;

接口:与转发标签对应的接口名称。

以下将借助于图1详细说明本发明实施例所提供的一种实现多协议标签交换路径查询的方法,所述方法包括:

S110,针对待查询标签交换路径,基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文;

S120,待查询标签交换路径上的节点利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中;

S130,从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

可选地,从源节点到目的节点的请求状态的路径查询报文包括:插入LLDP报文中的第一类保留TLV,所述第一类保留TLV包括:第一类型值,待查询标签交换路径上的源节点信息和目的节点信息,以及路径查询请求状态;

所述基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:

节点根据接收到的报文中包括第一类保留TLV且其中包含路径查询请求状态判断接收到的报文为请求状态的路径查询报文。

可选地,利用本节点的路径转发信息构建保留TLV包括:

构建第二类保留TLV,且所述第二类保留TLV包括:第二类型值,本节点在转发路径上的标签信息以及对应的接口信息,所述的第一类型值和所述第二类型值不同。

可选地,基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:

当节点判断接收到的请求状态的路径查询报文中目的节点信息为本地信息时,确定本节点为待查询标签交换路径的目的节点;以及

当节点判断接收到的请求状态的路径查询报文中源节点信息和目的节点信息均非本地信息时,确定本节点为待查询标签交换路径的中间节点。

可选地,所述待查询标签交换路径上的节点利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中,包括:中间节点在接收到上一跳节点发送的请求状态的路径查询报文后,判断所查询的标签交换路径的目的地址在本地存在转发表项时,将分别对应入接口和出接口的两个第二类保留TLV插入当前请求状态的路径查询报文中;

所述基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:中间节点在接收到上一跳节点发送的请求状态的路径查询报文后,如果判断所查询的标签交换路径的目的地址在本地存在转发表项,则将插入本节点路径转发信息后的请求状态的路径查询报文发送给下一跳节点;或者

所述待查询标签交换路径上的节点利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中,包括:中间节点在接收到上一跳节点发送的请求状态的路径查询报文后,判断所查询的标签交换路径的目的地址在本地不存在转发表项时,将对应入接口的第二类保留TLV插入当前路径查询报文;

所述从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:中间节点在接收到上一跳节点发送的请求状态的路径查询报文后,如果判断所查询的标签交换路径的目的地址在本地不存在转发表项,则向所述源节点返回查询错误响应状态的路径查询报文。

可选地,分别对应入接口和出接口的两个第二类保留TLV具体为:

包括转发路径上的入标签以及对应的入接口信息的一个第二类保留TLV,以及

包括转发路径上的出标签以及对应的出接口信息的另一个第二类保留TLV。

可选地,向所述源节点返回查询错误响应状态的路径查询报文,包括:

将当前请求状态的路径查询报文中第一保留TLV中的路径查询请求状态修改为查询错误响应状态,并且将其中的源节点信息和目的节点信息互换后作为查询错误响应状态的路径查询报文。

可选地,从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:

目的节点将含有所有节点路径转发信息的请求状态的路径查询报文中第一保留TLV中的路径查询请求状态修改为查询正确响应状态,并且将其中的源节点信息和目的节点信息进行互换后作为查询正确响应状态的路径查询报文,将所述查询正确响应状态的路径查询报文回传给上一跳节点。

可选地,所述方法还包括:所述中间节点或者目的节点在接收到请求状态的路径查询报文后,构建链路层发现协议LLDP返回转发表,所述LLDP返回转发表包括以下参数:要查询的标签交换路径的源地址,要查询的标签交换路径的目的地址,接收到上一跳节点发送的请求状态的路径查询报文的入接口;

所述从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:从目的节点按照各节点的LLDP返回转发表向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

可选地,所述方法还包括:

当源节点发出请求状态的路径查询报文后设定时间内未接收到响应状态的路径查询报文时,判断此次路径查询失败。

可选地,所述方法还包括:

各节点设置长度阈值;

当所述节点接收到请求状态的路径查询报文后,在当前报文长度超过长度阈值时,向所述源节点返回查询错误状态的路径查询报文。

可选地,所述长度阈值为1422字节。

如图2所示,本发明实施例提供了一种实现多协议标签交换路径查询的节点,应用于多协议标签交换网络,包括:

报文生成模块201,用于针对待查询标签交换路径,基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文;

信息插入模块202,用于将本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中;

回传模块203,用于向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

可选地,从源节点到目的节点的请求状态的路径查询报文包括:插入LLDP报文中的第一类保留TLV,所述第一类保留TLV包括:第一类型值,待查询标签交换路径上的源节点信息和目的节点信息,以及路径查询请求状态;

所述基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:

节点根据接收到的报文中包括第一类保留TLV且其中包含路径查询请求状态判断接收到的报文为请求状态的路径查询报文。

可选地,信息插入模块202,用于利用本节点的路径转发信息构建保留TLV包括:

构建第二类保留TLV,且所述第二类保留TLV包括:第二类型值,本节点在转发路径上的标签信息以及对应的接口信息,所述的第一类型值和所述第二类型值不同。

可选地,报文生成模块201,用于基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:

当判断接收到的请求状态的路径查询报文中目的节点信息为本地信息时,确定本节点为待查询标签交换路径的目的节点;以及

当判断接收到的请求状态的路径查询报文中源节点信息和目的节点信息均非本地信息时,确定本节点为待查询标签交换路径的中间节点。

可选地,信息插入模块202,用于利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中,包括:在本节点是中间节点时,在接收到上一跳节点发送的请求状态的路径查询报文后,判断所查询的标签交换路径的目的地址在本地存在转发表项时,将分别对应入接口和出接口的两个第二类保留TLV插入当前请求状态的路径查询报文中;

报文生成模块201,用于基于链路层发现协议LLDP建立从源节点到目的节点的请求状态的路径查询报文,包括:在本节点是中间节点时,在接收到上一跳节点发送的请求状态的路径查询报文后,如果判断所查询的标签交换路径的目的地址在本地存在转发表项,则将插入本节点路径转发信息后的请求状态的路径查询报文发送给下一跳节点;或者

信息插入模块202,用于利用本节点的路径转发信息构建保留TLV后按照从源节点到目的节点的顺序依次插入到请求状态的路径查询报文中,包括:在本节点是中间节点时,在接收到上一跳节点发送的请求状态的路径查询报文后,判断所查询的标签交换路径的目的地址在本地不存在转发表项时,将对应入接口的第二类保留TLV插入当前路径查询报文;

回传模块203,用于从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:在本节点是中间节点时,在接收到上一跳节点发送的请求状态的路径查询报文后,如果判断所查询的标签交换路径的目的地址在本地不存在转发表项,则向所述源节点返回查询错误响应状态的路径查询报文。

可选地,分别对应入接口和出接口的两个第二类保留TLV具体为:

包括转发路径上的入标签以及对应的入接口信息的一个第二类保留TLV,以及

包括转发路径上的出标签以及对应的出接口信息的另一个第二类保留TLV。

可选地,回传模块203,用于向所述源节点返回查询错误响应状态的路径查询报文,包括:

将当前请求状态的路径查询报文中第一保留TLV中的路径查询请求状态修改为查询错误响应状态,并且将其中的源节点信息和目的节点信息互换后作为查询错误响应状态的路径查询报文。

可选地,回传模块203,用于从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:

在本节点是目的节点时,将含有所有节点路径转发信息的请求状态的路径查询报文中第一保留TLV中的路径查询请求状态修改为查询正确响应状态,并且将其中的源节点信息和目的节点信息进行互换后作为查询正确响应状态的路径查询报文,将所述查询正确响应状态的路径查询报文回传给上一跳节点。

可选地,所述节点还包括:

LLDP返回转发表建立模块204,用于在本节点是中间节点或目的节点时,在接收到请求状态的路径查询报文后,构建链路层发现协议LLDP返回转发表,所述LLDP返回转发表包括以下参数:要查询的标签交换路径的源地址,要查询的标签交换路径的目的地址,接收到上一跳节点发送的请求状态的路径查询报文的入接口;

回传模块203,用于从目的节点向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文,包括:从目的节点按照各节点的LLDP返回转发表向源节点回传携带所有节点路径转发信息的响应状态的路径查询报文。

可选地,所述节点还包括:

定时模块205,用于当源节点发出请求状态的路径查询报文后设定时间内未接收到响应状态的路径查询报文时,判断此次路径查询失败。

可选地,回传模块203,用于接收到请求状态的路径查询报文后,在当前报文长度超过长度阈值时,向所述源节点返回查询错误状态的路径查询报文。

可选地,所述长度阈值为1422字节。

如图3所示,本发明实施例提供了一种实现多协议标签交换路径查询的方法,包括:

S301,要查询标签交换路径的源节点构造路径查询报文,沿着所述标签交换路径发送给下一跳节点,所述路径查询报文中携带所述标签交换路径的源地址和目的地址信息,以及路径查询请求状态;源节点在所述请求状态的路径查询报文中插入本节点上的路径转发信息;

在本步骤中,所述路径查询报文是基于链路层发现协议LLDP协议的报文,其中携带以下两种类型TLV:

第一类TLV至少包括以下参数:TLV的第一类型值,S FEC为要查询的标签交换路径的源转发等价类信息(典型的为:源LSR-ID),D FEC为要查询的标签交换路径的目的转发等价类信息(典型的为:目的LSR-ID),标志位;

其中,所述标志位的取值可以包括:用于表示查询请求状态的请求状态值(例如,数值0),用于表示正确响应状态的成功状态值(例如,数值1),用于表示错误响应状态的错误状态值(例如,数值2);但此处由于是作为源节点发起路径查询请求,因此状态取值为0;说明一点:请求状态值、成功状态值以及错误状态值均为预先设定值,只要互相都不相同而可作为不同状态标识即可;该类型TLV实质上是利用其中所携带的TLV的第一类型值来表征该LLDP报文是发起查询请求的报文;

第二类TLV至少包括以下参数:TLV的第二类型值,local FEC为源节点LSR-ID,标签为该源节点与下一跳节点之间标签交换路径的出标签,以及接口为对应的该标签交换路径出标签的出接口名称(即,该源节点与下一跳节点之间的出接口名称);该类型TLV实质上是利用其中所携带的TLV的第二类型值来表征TLV携带本节点的路径转发信息;

其中,TLV的第一类型值和第二类型值不相同,并且均从LLDP协议报文的保留TLV值中选取;示例性的,所述第一类型值为100,所述第二类型值为101;第一类型TLV标识该LLDP报文为路径查询报文且表明该报文当前查询状态;第二类型TLV标识查询到的节点路径转发信息。

基于以上所定义的第一类型TLV和第二类型TLV,源节点构造路径查询报文,包括:

在LLDP报文中插入第一类TLV和第二类TLV,较优地可将第二类TLV插入在第一类TLV之后,以方便后续的报文解析;

S302,接收到路径查询报文的节点,判断所述路径查询报文的状态,如果是请求状态,执行步骤S303,如果是响应状态,执行步骤S308;

在本步骤中,由于路径查询报文是基于链路层发现协议LLDP协议的报文,如果判断接收到的报文中存在第一类TLV且其中的标志位为请求状态值,则表明该报文为请求状态的路径查询报文;

S303,判断路径查询报文中所携带的所述标签交换路径的目的地址是否为本节点的地址,是则确定本节点是所述标签交换路径的目的节点,执行步骤S307;否则确定本节点是所述标签交换路径的中间节点,执行步骤S304;

在本步骤中,判断路径查询报文中的第一类TLV中所携带的D FEC是否为本地LSR-ID,如果是,则判断本节点为此次路径查询的目的节点,否则,判断该节点为中间节点;

S304,所述标签交换路径的中间节点在接收到上一跳节点发送的请求状态的路径查询报文后,判断是否能够查询到所述标签交换路径的目的地址对应的转发条目,是则执行步骤S305,否则执行步骤S306;

S305,在所述路径查询报文中添加本节点上的路径转发信息后发送给下一跳节点,返回步骤S302;

在本步骤中,在所述路径查询报文中添加本节点上的路径转发信息后发送给下一跳节点可以包括:

在接收到的路径查询报文中继续插入两个新构建的第二类TLV作为本节点上的路径转发信息,新构建两个第二类TLV是由于对于每个中间节点而言,在其转发路径上分别具有入标签和对应的入接口、以及出标签和对应的出接口,每个标签及对应的接口信息都需要以一个第二类TLV来携带,其中:

一个第二类TLV的参数设置情况是:将TLV类型设置为第二类型值,将local FEC设置为本节点的LSR-ID,将标签设置为本节点与上一跳节点之间的入标签,以及将接口设置为对应该标签交换路径的入标签的入接口名称,即:本节点与上一跳节点之间的入接口名称;

另一个第二类TLV的参数设置情况是:将TLV类型设置为第二类型值,将local FEC设置为本节点的LSR-ID,将标签设置为本节点与下一跳节点之间的出标签,以及将接口设置为对应该标签交换路径的出标签的出接口名称,即:本节点与下一跳节点之间的出接口名称;

在本步骤中所构建的两个TLV可以插入在接收到的路径查询报文中所携带的第二类TLV之后,而新构建的两个TLV之间顺序可以不做限定,但较优地,携带入标签和入接口信息的TLV位于携带出标签和出接口信息的TLV之前。

S306,在所述路径查询报文中添加本节点上的路径转发信息,将路径查询报文的状态修改为表示错误响应的状态值,将所述错误响应状态的路径查询报文回传给上一跳节点,返回步骤S302;

在本步骤中,所述中间节点将所述路径查询报文中第一类TLV中的标志位的取值修改为表示错误响应的错误响应状态值,将对应入接口的第二类保留TLV插入当前路径查询报文,构建查询错误响应状态的路径查询报文,然后将所述查询错误响应状态的路径查询报文回传给上一跳节点;

在其他的实施方式中,所述中间节点在构建查询错误响应状态的路径查询报文时,还可以将第一类TLV中的源地址和目的地址进行交换;

S307,所述标签交换路径的目的节点接收到请求状态的路径查询报文后,在所述路径查询报文中添加本节点上的路径转发信息,将路径查询报文的状态由请求状态修改为表示正确响应的状态值,将所述正确响应状态的路径查询报文回传给上一跳节点,返回步骤S302;

在其他的实施方式中,所述目的节点在构建查询正确响应状态的路径查询报文时,还可以将第一类TLV中的源地址和目的地址进行交换;

在本步骤中,在所述路径查询报文中添加本节点上的路径转发信息,可以包括:

在接收到的路径查询报文中插入新构建的第二类TLV作为本节点上的路径转发信息,新构建的第二类TLV对于目的节点而言,在其转发路径上只需要具有入标签和对应的入接口,因此,该第二类TLV的参数设置情况是:将TLV类型设置为第二类型值,将local FEC设置为本节点的LSR-ID,将标签设置为本节点与上一跳节点之间的入标签,以及将接口设置为对应该标签交换路径的入标签的入接口名称,即:本节点与上一跳节点之间的入接口名称;

将路径查询报文中的第一类型TLV的标志位Flag修改为成功状态值(例如,数值1),由此表明该路径查询已经被成功响应;

在本步骤中所构建的第二类TLV可以插入在接收到的路径查询报文中所携带的第二类TLV之后。

S308,接收到响应状态的路径查询报文的节点判断其中所携带的所述标签交换路径的源地址是否为本节点的地址,是则确定本节点是发起本次所述标签交换路径查询的源节点,执行步骤S310;否则确定本节点是所述标签交换路径的中间节点,执行步骤S309;

在本步骤中,响应状态的路径查询报文可以是查询正确响应状态的路径查询报文,也可以是查询错误响应状态的路径查询报文;

在本步骤中,如果判断接收到的报文中存在第一类TLV且其中的标志位为成功状态值或错误状态值,则表明该报文为响应状态的路径查询报文,判断该第一类TLV中所携带的S FEC是否为本地LSR-ID,如果是,则判断本节点为发起本次标签交换路径查询的源节点,否则,判断该节点为中间节点;

在其他实施方式中,如果响应状态的路径查询报文是将请求状态的路径查询报文的第一类TLV中的源地址和目的地址进行了交换,则接收到响应状态的路径查询报文的节点判断其中所携带的所述标签交换路径的目的地址是否为本节点的地址,是则确定本节点是发起本次所述标签交换路径查询的源节点,执行步骤S310;否则确定本节点是所述标签交换路径的中间节点,执行步骤S309;

S309,所述标签交换路径的中间节点接收到响应状态的路径查询报文后,将所述响应状态的路径查询报文回传给上一跳节点,返回步骤S402;

S310,发起本次标签交换路径查询的源节点在接收到响应状态的路径查询报文后,获取所述响应状态的路径查询报文中的各个节点上的路径转发信息,生成要查询的标签交换路径的查询结果。

在本步骤中,获取所述响应状态的路径查询报文中的各个节点上的路径转发信息具体为:通过获取所述响应状态的路径查询报文中的全部第二类TLV所携带的路径转发信息;这是由于从源节点传递到目的节点的路径查询报文中,第二类TLV可以按照节点顺序先后插入,那么根据第二类TLV的前后关系即可确定出每一个节点在标签交换路径上对应的跳数以及路径转发信息。

示例1

为了实现整个链路上全局查找操作,MPLS LSP路径上的所有节点信息都需要准确的显示出来,所以每经过一跳,都需要读取该节点(接口)的信息,存放在对应的一个TLV中,依次叠加。

如图4所示,假设要查询的LSP路径经过三个节点:源节点(A)、中间节点(B)和目的节点(C),接口和对应的LSP转发标签值如下:源节点A上,出标签是100,出接口是Ge1/1/1;中间节点B上,入标签是100,入接口是Ge1/1/2,出标签是101,出接口是Te1/1/1;目的节点C上,入标签是101,入接口是Te1/2/1;

以节点A作为查询源节点发起查询操作,需要查找到达作为目的节点的节点C的LSP路径,整个查询过程进行如下的说明:

第一步:节点A发起查询流程说明:

当节点A需要进行查询时,构建基于LLDP协议的路径查询报文,具体的,在本地MPLS标签转发表中查询自己作为入节点(ingress)时,是否存在目的节点是节点C的转发条目,发现存在这样一个条目:出接口为Ge1/1/1,标签是100(如果不存在,直接返回不存在该路径),构建第一类型值type=100的第一类TLV,将本节点的LSR-ID(A)填充在type=100的TLV的S FEC中,将对应的需要查询的目的节点C的LSR-ID(C)填充到该type=100的TLV的D FEC中,将flag置为0,表示请求查询节点A到节点C的路径;同时将查找到的本地LSR-ID(A),标签100和出接口Ge1/1/1信息填充到新构建的第二类型值type=101的第二类TLV中,分别对应local FEC,标签和出接口,该type=101的TLV位于type=100的TLV之后,然后将新构建的type=100的TLV和type=101的TLV插入到路径查询报文中,从对应出接口Ge1/1/1的物理口发送该报文。

节点A构建的第一类TLV和第二类TLV的结构如下所示:

第二步:节点B收到路径查询报文后处理流程说明:

根据接收到的LLDP报文中存在type=100的TLV确定所接收到的LLDP报文为路径查询报文,且根据该TLV对应的标志位flag的值是0,确定接收到的路径查询报文为请求状态;即请求查询到某一节点的路径。

判断该type=100的TLV中S FEC和D FEC都不是本地的LSR ID(B),则确定本节点B是要查询的LSP路径的中间节点(trasit节点)。

根据type=100的TLV中的D FEC为LSR-ID(C),查询自己作为trasit节点时,是否存在目的节点是节点C的转发条目:

(1)如果发现存在此路径,入标签是100,入接口是Ge1/1/2,出标签是101,出接口是Te1/1/1,则在接收的LLDP报文结构中插入新构建的两个type=101的第二类TLV,分别对应入接口和入标签,出接口和出标签,而local FEC均为本地LSR-ID(B),然后再将重新构建的整个LLDP报文沿着Te1/1/1出接口转发出去;同时创建LLDP返回转发表,为返回路径查询报文创造回传路径。所述LLDP返回转发表中,D FEC是LSR-ID(C),S FEC是LSR-ID(A),出接口是Ge1/1/2;

节点B插入新构建的两个第二类TLV后,路径查询报文中所包括的第一类TLV和第二类TLV的结构如下所示:

(2)如果发现不存在此路径,可以新增type=101的第二类TLV,对应入接口和入标签,而local FEC为本地LSR-ID(B),然后将type=100的第一类TLV中的flag修改为2,构建回应报文,创建LLDP返回转发表,为返回查询报文创造回传路径。所述LLDP返回转发表中,D FEC是LSR ID(C),S FEC是LSR ID(A),出接口是Ge1/1/2;沿着LLDP返回转发表路径进行回传转发。

节点B构建的基于LLDP协议的错误响应报文中所包含的第一类TLV和第二类TLV结构如下所示:

在其他的实施方式中,节点B构建错误响应报文时,第一类TLV中的D FEC和S FEC可以进行交换,交换后的D FEC是LSR-ID(A),交换后的S FEC是LSR-ID(C);

第三步:节点C收到路径查询报文后处理流程说明:

根据接收到的LLDP报文中存在type=100的TLV确定所接收到的LLDP报文为路径查询报文,且根据该TLV对应的flag位的值是0,确定接收到的是路径查询报文为请求状态;即请求查询到某一节点的路径。

判断该type=100的TLV中的S FEC为LSR ID(A),不是本地的LSR ID(C),而D FEC是本地的LSR ID(C),则确定本节点C是要查询的LSP路径的目的节点(egress节点)。

节点C在接收的LLDP报文结构中插入新构建的type=101的第二类TLV,其中:local FEC为本地LSR-ID(C)),标签为101,接口为Te1/2/1,然后将type=100的第一类TLV中的flag修改为1,表明可以成功生成回应报文,同时创建LLDP返回转发表,为返回查询报文创造回传路径。所述LLDP返回转发表中,D FEC是LSR-ID(C),S FEC是LSR-ID(A),出接口是Te1/2/1;沿着LLDP返回转发表路径进行回传转发回应报文。

节点C构建的基于LLDP协议的成功响应报文中所包含的第一类TLV和第二类TLV结构如下所示:

第四步:节点B收到回应报文后处理流程说明:

节点B收到LLDP回应报文后,解析flag字段内容,根据flag字段内容进行处理:

如果发现flag为1,则判定接收到成功响应报文,再解析S FEC(节点A),发现不是本机的LSR ID(B),进一步根据D FEC(节点C)和S FEC(节点A)查询LLDP返回转发表,发现D FEC为LSR-ID(C)、S FEC为LSR-ID(A)的回传路径存在,直接将原报文从Ge1/1/2口转发出去。

如果发现flag为2,则判定接收到错误响应报文,再解析SFEC(节点A),发现不是本机的LSR ID(B),进一步根据D FEC(节点C)和S FEC(节点A)查询LLDP返回转发表,发现D FEC为LSR-ID(C)、S FEC为LSR-ID(A)的回传路径存在,直接将原报文从Ge1/1/2口转发出去。

第五步:A节点收到回应报文后处理流程说明:

A节点收到LLDP回应报文后,根据flag字段内容进行处理:

如果发现flag为1,则判定接收到成功响应报文,再解析SFEC(节点A),发现是本机的LSR ID(A),所以直接解析所有type为101的TLV,逐个读取相关的接口、local FEC和标签信息,然后返回给管理层,提示查询成功,并显示结果,根据TLV的压入顺序,就可以清楚的得出LSP路径。

如果发现flag为2,则判定接收到错误响应报文,再解析SFEC(节点A),发现是本机的LSR ID(A),所以直接解析所有type为101的TLV,逐个读取相关的接口、local FEC和标签信息,然后返回给管理层,提示查询失败,并显示出一个友好结果,根据TLV的压入顺序,可以清楚的得出LSP路径,并且能够清楚的知道在哪个节点报文路径发生了错误。

本发明实施例提供的一种实现多协议标签交换路径查询的方法和节点,在MPLS的源节点上发起查询,根据查询结果,能够一目了然地看到所需的LSP路径的具体信息。本发明实施例的技术方案可以全局查询MPLS LSP转发路径节点信息,且返回的信息是节点、标签和接口。另外,本发明实施例的技术方案基于数据链路层的技术,属于L2层的技术,与现有的Ip MPLS的traceroute功能相比,不依赖于IP层转发表项,与MPLS-TP的OAM相比,也不依赖于具体的LSP路径的完整性,使用一个完全独立于MPLS模块的技术来对MPLS的LSP路径做检测,可以支持MPLS-TP和IP MPLS机制,具有更广阔的应用空间。LLDP协议属于邻居发现协议,简单易用,且不受其他复杂协议的限制,以LLDP协议作为传输媒体,简化开发流程,可靠性更高。LLDP协议的TLV结构有很好的扩展性,查询过程中,逐跳叠加对应的节点信息,最后把回应报文再逐跳解析,根据TLV在报文中的先后顺序可以直接得出具体跳数的前后关联信息。当MPLS LSP路径创建错误时,传统的traceroute和MPLS-TP OAM等机制就会失效,而无法查询出具体结果,使用本文的方法,由于LLDP不依赖于MPLS表项,所以可以将具体查询信息反馈给用户,用户可以根据信息去精确定位故障原因。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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