一种基于LSP隧道的报文传输方法和设备
技术领域
本发明涉及通信技术领域,尤其是涉及了一种基于LSP(Label SwitchedPaths,标签交换路径)隧道的报文传输方法和设备。
背景技术
网络拥塞是影响骨干网络性能的主要问题,其原因是网络资源不足或网络资源负载不均衡导致的拥塞;TE(Traffic Engineering,流量工程)用于解决网络资源负载不均衡导致的拥塞。MPLS(Multi-Protocol Label Switching,多协议标签交换)TE结合MPLS技术与TE技术,通过建立到达指定路径的LSP隧道进行资源预留,使网络流量绕开拥塞设备,达到平衡网络流量的目的。
MPLS TE主要用于实现两类功能:(1)静态CR-LSP(Constraint-basedRouted Label Switched Paths,基于约束路由的LSP)的处理:其包括创建和删除静态CR-LSP。(2)动态CR-LSP的处理:其包括对三种不同类型CR-LSP(基本CR-LSP、备份CR-LSP和快速重路由CR-LSP)的处理。
进一步的,对于动态CR-LSP的处理,MPLS TE在实现上包括四个部分。
(1)发布包含TE属性的信息。其中,MPLS TE需要了解每条链路的动态TE属性,该过程通过扩展后的OSPF(Open Shortest Path First,开放式最短路径优先)或ISIS(Intermediate System to Intermediate System Routing Protocol,中间系统到中间系统的路由选择)协议实现,扩展后的OSPF或ISIS协议在链路连接状态中增加链路带宽、着色等TE属性;每台设备收集本区域所有设备每条链路的TE属性,生成TEDB(TE Data Base,流量工程数据库)。
(2)计算路径。MPLS TE使用CSPF(Constraint-based Shortest Path First,基于约束的最短路径优先)算法计算出到达某设备的满足TE属性要求的最短路径;CSPF算法是从SPF(Shortest Path First,最短路径优先)算法衍生来的,且CSPF有两个输入条件:待建立LSP隧道的带宽、着色、建立/保持优先级、显式路径等约束条件,这些约束条件都需要在LSP隧道的入口处配置;流量工程数据库。进一步的,CSPF的计算过程就是针对LSP隧道要求,先对TEDB中的链路进行剪切,将不满足TE属性要求的链路剪掉;再采用SPF算法,寻找一条到LSP egress(出)节点的满足TE属性要求的最短路径(即LSP隧道)。
(3)建立路径。支持建立LSP隧道的信令包括CR-LDP(Constraint-RoutingLabel Distribution Protocol,基于路由受限标签分发协议)和RSVP(ResourceReservation Protocol,资源预留协议)-TE,其都能够携带LSP隧道的带宽、部分显式路由、着色等约束参数,两者完成的功能是一样的;从内部实现看,CR-LDP通过TCP建立LSP隧道,RSVP-TE通过Raw IP(原始IP)建立LSP隧道。
(4)转发报文。各设备通过使用建立的LSP隧道发送报文。
现有技术中,在发送报文的过程中,各设备需要基于LSP隧道的MTU值(Maximum Transmission Unit,最大传输单元)对报文进行转发;在报文长度大于MTU值时,如果设备支持分片处理,则可以对报文进行分片处理,并对分片处理后的报文进行转发,如果设备不支持分片处理,则会丢弃报文。
因此,当设备不支持分片处理时,会导致报文被丢弃;当设备支持分片处理时,分片处理会消耗CPU(Central Processing Unit,中央处理器)资源。
发明内容
本发明实施例提供一种基于LSP隧道的报文传输方法和设备,以在对报文进行转发的过程中,尽量避免对报文进行分片处理。
为了达到上述目的,本发明实施例提供一种基于标签交换路径LSP隧道的报文传输方法,应用于包括入隧道设备和出隧道设备的网络中,所述方法包括以下步骤:
所述入隧道设备在需要向所述出隧道设备发送报文时,判断所述报文长度是否大于当前LSP隧道的最大传输单元MTU值;
如果否,所述入隧道设备通过当前LSP隧道向所述出隧道设备发送报文;
如果是,所述入隧道设备利用所述报文长度重新建立本设备与出隧道设备之间的LSP隧道,并通过重新建立的LSP隧道向所述出隧道设备发送报文。
所述入隧道设备判断所述报文长度是否大于当前LSP隧道的MTU值的过程,具体包括:
所述入隧道设备在接收到所述报文时,检测所述报文长度是否大于当前LSP隧道的MTU值;或者,
所述入隧道设备向所述出隧道设备发送报文后,如果本设备与出隧道设备之间的中间设备检测到报文长度大于当前LSP隧道的MTU值,则所述入隧道设备接收来自所述中间设备的报文长度大于当前LSP隧道的MTU值的通知,并确定所述报文长度大于当前LSP隧道的MTU值。
所述入隧道设备利用所述报文长度重新建立本设备与出隧道设备之间的LSP隧道,包括:
所述入隧道设备利用所述报文长度以及本设备与出隧道设备之间各路径的MTU值进行基于约束的最短路径优先CSPF计算,得到所述各路径中MTU值大于所述报文长度的路径,并利用最短路径优先SPF算法从得到的路径中选择一条最短路径为本设备与出隧道设备之间的LSP隧道。
所述入隧道设备与所述出隧道设备之间各路径的MTU值的确定过程,具体包括:
所述网络中的各设备将本设备接口上配置的MTU值通知给邻居设备,且所述网络中的各设备在收到来自邻居设备的MTU值之后,将来自所述邻居设备的MTU值存储到流量工程数据库中;
所述入隧道设备通过查询所述流量工程数据库中存储的各MTU值,获得本设备与出隧道设备之间各路径的MTU值。
所述网络中的各设备将本设备接口上配置的MTU值通知给邻居设备,具体包括:
所述网络中的各设备将本设备接口上配置的MTU值存储到流量工程数据库中,并通过开放式最短路径优先OSPF协议或中间系统到中间系统的路由选择ISIS协议发布的路由消息将所述流量工程数据库中存储的MTU值通知给邻居设备;其中,所述路由消息中设置有指定类型长度值TLV字段,所述指定TLV字段的Type字段的值为MTU,Length字段的值为Value字段的长度,Value字段的值为MTU值。
本发明实施例提供一种基于标签交换路径LSP隧道的报文传输设备,作为入隧道设备应用于包括所述入隧道设备和出隧道设备的网络中,包括:
判断模块,用于在需要向所述出隧道设备发送报文时,判断所述报文长度是否大于当前LSP隧道的最大传输单元MTU值;
建立模块,用于当判断结果为是时,利用所述报文长度重新建立本设备与所述出隧道设备之间的LSP隧道;
发送模块,用于当判断结果为是时,通过重新建立的LSP隧道向所述出隧道设备发送报文;当判断结果为否时,通过当前LSP隧道向所述出隧道设备发送报文。
所述判断模块,具体用于在接收到所述报文时,检测所述报文长度是否大于当前LSP隧道的MTU值;或者,在向所述出隧道设备发送报文后,如果本设备与出隧道设备之间的中间设备检测到报文长度大于当前LSP隧道的MTU值,则接收来自所述中间设备的报文长度大于当前LSP隧道的MTU值的通知,并确定所述报文长度大于当前LSP隧道的MTU值。
所述建立模块,具体用于利用所述报文长度以及本设备与出隧道设备之间各路径的MTU值进行基于约束的最短路径优先CSPF计算,得到所述各路径中MTU值大于所述报文长度的路径,利用最短路径优先SPF算法从得到的路径中选择一条最短路径为本设备与出隧道设备之间的LSP隧道。
所述建立模块,进一步用于将本设备接口上配置的MTU值通知给邻居设备,且在收到来自邻居设备的MTU值之后,将来自所述邻居设备的MTU值存储到流量工程数据库中;通过查询所述流量工程数据库中存储的各MTU值,获得本设备与出隧道设备之间各路径的MTU值。
所述建立模块,进一步用于将本设备接口上配置的MTU值存储到流量工程数据库中,并通过开放式最短路径优先OSPF协议或中间系统到中间系统的路由选择ISIS协议发布的路由消息将所述流量工程数据库中存储的MTU值通知给邻居设备;其中,所述路由消息中设置有指定类型长度值TLV字段,所述指定TLV字段的Type字段的值为MTU,Length字段的值为Value字段的长度,Value字段的值为MTU值。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,当报文长度大于当前LSP隧道的MTU值时,通过重新建立LSP隧道,并通过重新建立的LSP隧道发送报文,从而避免对报文进行分片处理;在设备不支持分片处理时,上述方式不会导致报文被丢弃;在设备支持分片处理时,上述方式不会存在分片处理所导致的CPU资源消耗。
附图说明
图1是本发明实施例的应用场景示意图;
图2是本发明实施例提出的基于LSP隧道的报文传输方法流程示意图;
图3是本发明实施例提出的基于LSP隧道的报文传输设备结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种基于LSP隧道的报文传输方法,该方法应用于包括入隧道设备和出隧道设备的网络(如MPLS网络)中,且入隧道设备与出隧道设备之间存在多条传输路径;以图1为本发明实施例的应用场景示意图,假设设备A为入隧道设备,设备B为出隧道设备,且设备A与设备B之间存在3条传输路径,各传输路径分别为:设备A-设备C-设备B、设备A-设备D-设备E-设备B、设备A-设备F-设备G-设备H-设备B。
本发明实施例中,网络中的各设备需要将本设备接口上配置的MTU值通知给邻居设备,且网络中的各设备在收到来自邻居设备的MTU值之后,需要将来自邻居设备的MTU值存储到流量工程数据库(TEDB)中;基于此流量工程数据库,网络中的各设备可以获知全网带有MTU值的链路拓扑。
在图1所示应用场景下,流量工程数据库中存储有设备A接口上配置的MTU值,设备B接口上配置的MTU值,设备C接口上配置的MTU值,设备D接口上配置的MTU值,设备E接口上配置的MTU值,设备F接口上配置的MTU值,设备G接口上配置的MTU值,设备H接口上配置的MTU值。
本发明实施例中,网络中的各设备将本设备接口上配置的MTU值通知给邻居设备具体包括:网络中的各设备将本设备接口上配置的MTU值存储到流量工程数据库中,并通过OSPF协议或ISIS协议发布的路由消息将流量工程数据库中存储的MTU值(其包含有本设备接口上配置的MTU值)通知给邻居设备;其中,在OSPF协议或ISIS协议发布的路由消息中设置有指定TLV(Type Length Value,类型长度值)字段(如sub-TLV),该指定TLV字段的Type字段的值为MTU(如MPLS MTU),Length字段的值为Value字段的长度,Value字段的值为MTU值(即流量工程数据库中存储的MTU值)。
在OSPF协议中,上述指定TLV字段可以携带在LSA(Link StateAdvertisement,链路状态广播)中;进一步的,LSA由LSA Header(头)和LSApayload(有效载荷)组成,且LSApayload由一个或者多个TLV组成,因此本发明实施例提出的指定TLV字段可以携带在LSA payload中。在ISIS协议中,上述指定TLV字段可以携带在LSP中;进一步的,LSP在需要携带TE相关属性信息时,该LSP中会携带extended IS reachability TLV,因此本发明实施例提出的指定TLV字段可以携带在extended IS reachability TLV中。
本发明实施例中,在建立对应有MTU值的LSP隧道之后,如图2所示,该基于LSP隧道的报文传输方法包括以下步骤:
步骤201,入隧道设备在需要向出隧道设备发送报文时,判断报文长度(指除去链路层和MPLS标签头的部分)是否大于当前LSP隧道的MTU值;如果否,则执行步骤202;如果是,则执行步骤203。
本发明实施例中,入隧道设备判断报文长度是否大于当前LSP隧道的MTU值的过程,具体包括但不限于如下方式:
方式一、入隧道设备在接收到报文时,直接检测报文长度是否大于当前LSP隧道的MTU值;在检测到报文长度大于当前LSP隧道的MTU值时,需要执行后续步骤203,在检测到报文长度不大于当前LSP隧道的MTU值时,需要执行后续步骤202。
方式二、入隧道设备向出隧道设备发送报文之后,如果入隧道设备与出隧道设备之间的中间设备检测到报文长度大于当前LSP隧道的MTU值,则中间设备需要通过RSVP消息将报文长度大于当前LSP隧道的MTU值的信息通知给入隧道设备,由入隧道设备接收来自中间设备的报文长度大于当前LSP隧道的MTU值的通知(即RSVP消息),并确定报文长度大于当前LSP隧道的MTU值,需要执行后续步骤203。
步骤202,入隧道设备通过当前LSP隧道向出隧道设备发送报文,本流程结束。
步骤203,入隧道设备利用报文长度重新建立本设备与出隧道设备之间的LSP隧道,并通过重新建立的LSP隧道向出隧道设备发送报文,本流程结束。
本发明实施例中,入隧道设备利用报文长度重新建立本设备与出隧道设备之间的LSP隧道具体包括:入隧道设备利用报文长度以及本设备与出隧道设备之间各路径的MTU值进行CSPF计算,得到各路径中MTU值大于报文长度的路径(即通过在CSPF算法中将报文长度作为约束条件进行计算,将不满足TE属性(其包括现有的TE属性以及本发明实施例所提出的MTU属性)要求的链路剪掉);之后入隧道设备利用SPF算法从得到的路径中选择一条最短路径为本设备与出隧道设备之间的LSP隧道。
进一步的,入隧道设备与出隧道设备之间各路径的MTU值的确定过程具体包括:基于维护的流量工程数据库,入隧道设备通过查询流量工程数据库中存储的MTU值,获得本设备与出隧道设备之间各路径的MTU值。
例如,由于流量工程数据库中存储有设备A接口上配置的MTU值,设备B接口上配置的MTU值,设备C接口上配置的MTU值,设备D接口上配置的MTU值,设备E接口上配置的MTU值,设备F接口上配置的MTU值,设备G接口上配置的MTU值,设备H接口上配置的MTU值;因此,对于路径设备A-设备C-设备B、设备A-设备D-设备E-设备B、设备A-设备F-设备G-设备H-设备B,设备A(即入隧道设备)能够获得本设备与设备B(即出隧道设备)之间各路径的MTU值。
本发明实施例中,在利用报文长度以及入隧道设备与出隧道设备之间各路径的MTU值进行CSPF计算时,如果没有MTU值大于报文长度的路径,则说明无法重新建立入隧道设备与出隧道设备之间的LSP隧道,此时仍然需要通过当前LSP隧道向出隧道设备发送报文(即步骤202)。
本发明实施例中,为了防止报文长度不断变化所导致的LSP隧道的不断创建过程,还可以设定一个周期(该周期可以根据业务情况进行配置,如将周期设定为10S),在这个周期内第一次需要执行步骤203时,则触发建立新的LSP隧道;否则不再触发建立新的LSP隧道。
综上所述,本发明实施例中,当报文长度大于当前LSP隧道的MTU值时,通过重新建立LSP隧道,并通过重新建立的LSP隧道发送报文,从而避免对报文进行分片处理;在设备不支持分片处理时,上述方式不会导致报文被丢弃;在设备支持分片处理时,上述方式不会存在分片处理所导致的CPU资源消耗。该技术方案可以根据用户业务动态调整TE隧道的PATH MTU,从而解决TE隧道固定的最大PATH MTU导致的报文分片或丢失的问题。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种基于标签交换路径LSP隧道的报文传输设备,作为入隧道设备应用于包括所述入隧道设备和出隧道设备的网络中,如图3所示,该入隧道设备包括:
判断模块11,用于在需要向所述出隧道设备发送报文时,判断所述报文长度是否大于当前LSP隧道的最大传输单元MTU值;
建立模块12,用于当判断结果为是时,利用所述报文长度重新建立本设备与所述出隧道设备之间的LSP隧道;
发送模块13,用于当判断结果为是时,通过重新建立的LSP隧道向所述出隧道设备发送报文;当判断结果为否时,通过当前LSP隧道向所述出隧道设备发送报文。
所述判断模块11具体用于在接收到所述报文时,检测所述报文长度是否大于当前LSP隧道的MTU值;或者,在向所述出隧道设备发送报文后,如果本设备与出隧道设备之间的中间设备检测到报文长度大于当前LSP隧道的MTU值,则接收来自所述中间设备的报文长度大于当前LSP隧道的MTU值的通知,并确定所述报文长度大于当前LSP隧道的MTU值。
所述建立模块12具体用于利用所述报文长度以及本设备与出隧道设备之间各路径的MTU值进行基于约束的最短路径优先CSPF计算,得到所述各路径中MTU值大于所述报文长度的路径,利用最短路径优先SPF算法从得到的路径中选择一条最短路径为本设备与出隧道设备之间的LSP隧道。
所述建立模块12,进一步用于将本设备接口上配置的MTU值通知给邻居设备,且在收到来自邻居设备的MTU值之后,将来自所述邻居设备的MTU值存储到流量工程数据库中;通过查询所述流量工程数据库中存储的各MTU值,获得本设备与出隧道设备之间各路径的MTU值。
所述建立模块12,进一步用于将本设备接口上配置的MTU值存储到流量工程数据库中,并通过开放式最短路径优先OSPF协议或中间系统到中间系统的路由选择ISIS协议发布的路由消息将所述流量工程数据库中存储的MTU值通知给邻居设备;其中,所述路由消息中设置有指定类型长度值TLV字段,所述指定TLV字段的Type字段的值为MTU,Length字段的值为Value字段的长度,Value字段的值为MTU值。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。