MPLS流量工程通过建立基于一定约束条件的LSP隧道,并将流量引入这些隧道中进行转发,使网络流量按照指定的路径进行传输。
对于一条LSP,一旦在Ingress节点给报文打上标签,流量的转发就完全由标签决定了。流量对LSP的中间节点是透明的,从这个意义上来说,一条LSP可以看作是一条LSP隧道。
在MPLS TE中,经常会把多条LSP联合起来使用,并将这些LSP与一个虚拟隧道接口关联起来,这样的一组LSP称为MPLS TE隧道。

MPLS TE的链路属性用于标识一条物理链路上的带宽资源使用情况、路由成本及链路的可靠性
MPLS TE隧道所使用的LSP称为基于一定约束条件建立的LSP,通常简称为CR-LSP(Constraint-based Routed Label Switched Path),这些约束条件可以称为隧道属性。
CR-LSP的建立不仅依赖路由信息,而且还需要满足其他约束条件:
隧道的带宽值,需要根据隧道要承载的业务进行规划,隧道建立时,将根据这个值在隧道的沿途进行带宽预留,从而为业务提供带宽保证。
显式路径是指在CR-LSP建立时由用户手工指定其必须经过(或避开)指定的节点,可以分为如下两种:

LSRA作为LSP的入节点,LSRF作为出节点,从LSRA到LSRF用严格显式路径建立一条LSP。“LSRB Strict”表示该LSP必须经过LSRB,并且LSRB的前一跳是LSRA,“LSRC Strict”表示该LSP必须经过LSRC,并且LSRC的前一跳是LSRB,依此类推,就可以精确控制该条LSP所经过的路径。

“LSRD Loose”表示该LSP必须经过LSRD,但是LSRD与LSRA之间可以存在其他LSR,不必直接相连。
隧道使用建立优先级(Setup Priority)和保持优先级(Holding Priority)来决定是否可以进行抢占。优先级用来指示新建路径和当前已经建立路径之间的抢占关系,如果新建CR-LSP的建立优先级高于已经建立CR-LSP的保持优先级,则前者抢占后者的资源。
优先级的范围从0到7,7为最低优先权 同一条隧道的建立优先级不能高于保持优先级。
如果在建立隧道的过程中,无法找到满足所需带宽要求的路径,则拆除另外一条已经建立的路径,占用为它分配的带宽资源,这种处理方式称为抢占(Preemption)。
优先级和抢占属性共同决定隧道之间的资源抢占关系。

当一条CR-LSP建立完成后,网络拓扑变化或者改变某些隧道的属性时,可能导致这条CR-LSP根据实时网络状态重新建立。这里存在两个问题:
路径锁定可以用来解决上述两个问题。路径锁定是指在CR-LSP建立完成后强制其路径不随路由变化而变化,从而使得业务流量具有连续性,并能够提供一定的可靠性保证。
亲和属性(Affinity attribute)是描述TE隧道所需链路的32位向量值,在隧道的首节点来配置实施,需要和链路管理组联合使用。
为隧道配置亲和属性后,隧道在计算路径时,会将亲和属性和链路的管理组属性进行比较,决定选择还是避开某些属性的链路。MPLS TE隧道使用一个32位的掩码表示需要比较的位,通过把链路管理组和隧道的亲和属性与掩码分别相与,如果得到的结果相同,隧道选路时则选择该路径,不同则摒弃该路径。其比较规则如下:

序号 | 功能 | 功能描述 |
|---|---|---|
1 | 信息发布 | 除了网络的拓扑信息外,流量工程还需要知道网络的负载信息。为此,MPLS TE通过对现有的IGP进行扩展,来发布TE信息,包括最大链路带宽、最大可预留带宽、当前预留带宽、链路颜色等。每个节点收集本区域所有节点每条链路的TE相关信息,生成流量工程数据库TEDB(TE DataBase)。 |
2 | 路径计算 | 通过CSPF(Constrained Shortest Path First)算法,利用TEDB中的数据来计算满足指定约束的路径。CSPF算法由最短路径优先算法演变而来,它首先在当前拓扑结构中删除不满足隧道约束条件的节点和链路,然后再通过SPF(Shortest Path First)算法来计算。 |
3 | 路径建立 | 建立CR-LSP,CR-LSP包括以下两种:静态CR-LSP静态CR-LSP通过手工配置转发信息和资源信息,不涉及信令协议和路径计算。由于不需要交互MPLS相关控制报文,消耗资源比较小,但静态CR-LSP不能根据网络的变化动态调整,通常适用于拓扑简单、规模小的组网。动态CR-LSP设备采用RSVP(Resource Reservation Protocol)TE信令建立CR-LSP隧道。RSVP-TE信令能够携带隧道带宽、显式路径、亲和属性等约束条件。通过信令动态地建立LSP隧道可以避免逐跳配置的麻烦,适用于规模大的组网。为了增强路径建立的安全性和可靠性,可以通过RSVP认证机制实现。 |
4 | 流量转发 | 将流量引入到MPLS TE隧道,并进行MPLS转发。前面三个功能可以实现一条MPLS TE隧道建立,流量转发用于将进入设备的流量引入到MPLS-TE隧道中进行转发。 |
对于静态CR-LSP来说,由于其是用户手工建立,因此不涉及信息发布和路经计算。 对于动态CR-LSP来说,由于其是信令动态建立,因此上述四个功能都包括。
MPLS TE网络中的各个节点尤其是隧道的入节点将根据信息发布的结果决定隧道经过哪些节点。
Opaque LSA
Opaque LSA分为三类,分别为第9、10、11类LSA。第9类LSA只能在某一个接口上扩散;第10类LSA只能在某一个区域内扩散;而第11类LSA则与第5类LSA具有相同的扩散范围,可以在除了STUB、NSSA之外的整个自治系统内部扩散。

同一种Opaque LSA可以有255种不同的应用,而每一种应用可以在相应的扩散范围内同时拥有16777216个不同的LSA。
例如,应用于OSPF Graceful Restart的LSA属于第9类LSA,其应用类型为“3”;而应用于流量工程扩展的则属于第10类LSA,其应用类型为“1”。

TE LSA扩展

为了形成本区域内统一的流量工程数据库,OSPF TE和IS-IS TE需要对链路信息进行泛洪。
为抑制更新TEDB和洪泛的频率
当满足以上两种条件的任意一个时,IGP将对该链路信息进行泛洪,随之更新TEDB。
OSPF TE或IS-IS TE泛洪完成后,将形成本区域内统一的流量工程数据库TEDB。
在网络中部署MPLS TE,需要把相关资源信息进行通告。每台设备收集本区域内各链路的约束信息、带宽使用状况等信息,形成描述网络链路属性和拓扑属性的数据库。这种数据库称为流量工程数据库TEDB。
设备根据TEDB中的信息计算出节点到达区域内其它节点的最合适的路径。MPLS TE使用该路径建立CR-LSP。
TEDB与IGP路由协议的LSDB是两个完全独立的数据库。两者来源相同,都是IGP路由协议泛洪的产物。但内容和功能不同,TEDB除了具备LSDB中所有的内容外,还包含流量工程的信息。LSDB用于IGP最短路径的计算而TEDB则用于流量工程LSP最优路径的计算。
CSPF针对待建立LSP隧道的约束条件,先对TEDB中的链路进行裁剪,把不满足属性要求的链路剪掉,再采用SPF算法计算路径的权值,寻找一条到隧道目的地址的最短路径。
CSPF在计算路径的过程中,如果遇到多条权值相同的路径,将根据策略选择其中的一条。这个过程称为仲裁(tie-breaking)。
在已用带宽和最大可预留带宽的比值相同的情况下,此时不管配置的是Least-fill还是Most-fill,选择的是首先发现的链路。


CSPF是专门用于MPLS TE路径计算的算法,它与一般的SPF算法相差不大,但又有几点区别:

字段 | 长度 | 描述 |
|---|---|---|
版本号 | 4比特 | 表示RSVP协议版本号,目前值为1。 |
标识位 | 4比特 | 标识位,一般值为0。用来标识是否支持摘要刷新(Srefresh)。如果支持Srefresh,则Flags置为0x01。 |
消息类型 | 8比特 | 表示RSVP消息类型。例如,1表示Path消息,2表示Resv消息。 |
校验和 | 16比特 | 表示RSVP的校验和。如果值为0,表示消息传输过程中不进行检验和检查。 |
TTL值 | 8比特 | 消息的TTL值。当节点接收到RSVP消息时,通过比较Send_TTL和IP首部的TTL值可以计算出该报文在非RSVP域中经过的跳数。 |
保留 | 8比特 | 保留。 |
RSVP消息总长度 | 16比特 | 表示RSVP消息的总长度,以字节为单位。 |
消息对象 | 可变 | 消息对象,每个RSVP消息都包含多个对象。不同类型的消息,包含的对象不同。 |
对象总长度 | 16比特 | 表示对象的总长度,以字节为单位。Length必须是4的倍数,最小值为4。 |
对象类 | 8比特 | 对象类。每个对象类都有一个名称,如SESSION、SENDER_TEMPLATE、TIME_VALUE。 |
对象类型 | 8比特 | 对象类型,表示同一类对象中不同的类型。Class_Number与C-Type唯一标识了一个对象。 |
对象内容 | 可变 | 对象内容,可变长度。 |
消息对象 | 对象类 | 对象类型 | 对象内容 |
|---|---|---|---|
SESSION | 1 | 1 | RSVP会话相关信息,包括:Destination Address、Tunnel ID、Extend Tunnel ID。 |
RSVP_HOP | 3 | 1 | 发送Path消息的上一跳的出接口地址和接口索引。 |
TIME_VALUE | 5 | 1 | 包含消息的刷新时间值。 |
SENDER_TEMPLATE | 11 | 1 | 指定了发送节点的IP地址和LSP ID。 |
SENDER_TSPEC | 12 | 2 | 指明了数据流的流量特征。 |
LABEL_REQUEST | 19 | 1 | 标签请求对象,只在Path消息中携带。 |
ADSPEC | 13 | 2 | 用于收集路径上的实际QoS相关参数,例如,路径带宽估计、最小路径时延、Path MTU。 |
EXPLICIT_ROUTE | 20 | 1 | ERO,描述LSP经过的路径信息,可以是严格显式路径也可以是松散显式路径。Path消息沿ERO指定的路径转发,不受IGP最短路径约束。 |
RECORD_ROUTE | 21 | 1 | RRO,Path消息实际途经的LSR的列表。RRO可用于收集实际的路径信息,发现路由环路,还可以被复制到下一条Path消息中以实现路径锁定。 |
SESSION_ATTRIBUTE | 207 | 1:LSP_TUNNEL_RA7:LSP Tunnel | 指定了建立优先级、保持优先级、资源预留风格、亲和属性等属性。 |
消息对象 | 对象类 | 对象类型 | 对象内容 |
|---|---|---|---|
INTEGRITY | 4 | 1 | 包含RSVP消息的认证密钥。 |
SESSION | 1 | 1 | 包含了RSVP会话相关信息,如Destination Address、Tunnel ID、Extend Tunnel ID。 |
RSVP_HOP | 3 | 1 | 包含发送Resv消息出接口IP地址和接口索引。 |
TIME_VALUE | 5 | 1 | 包含消息的刷新时间值。默认值为30秒。 |
STYLE | 8 | 1 | 资源预留风格,由Ingress节点指定。 |
FLOW_SPEC | 9 | 1:Reserved (obsolete) flowspec object2:Inv-serv flowspec object | 指明了数据流的QoS特征。 |
FILTER_SPEC | 10 | 1 | 发送节点的IP地址和LSP ID。 |
RECORD_ROUTE | 21 | 1 | RRO,沿途收集的各节点的入接口IP地址、LSR-ID和出接口IP地址。 |
LABEL | 16 | 1 | 分配的标签。 |
RESV_CONFIRM | 15 | 1 | 预留确认请求,携带了请求预留确认的节点的IP地址。 |
抓包分析


动态CR-LSP的建立主要分为入节点向出节点发送Path消息和出节点向入节点发送Resv消息。Path消息用于创建RSVP会话和关联路径状态,发送时途经的节点上会建立路径状态块PSB(Path State Block)。Resv消息携带了资源预留信息,发送时途经的节点会建立资源预留状态块RSB(Reservation State Block)和分配标签。

1.PE1触发CSPF计算从PE1到PE2的路径,这条路径是指定了沿途每一跳的IP地址。PE1将CSPF计算出来的IP地址列表作为对象ERO(Explicit Route Object)的内容,构造Path消息,并根据Path消息构造PSB,然后根据ERO将Path消息发送给P1。
2.P1收到PE1的Path消息,解析报文,根据Path消息构造PSB。然后P1更新Path消息,根据ERO将Path消息发送给P2。
3.P2收到P1的Path消息,与P1类似的处理,根据Path消息创建PSB,并更新Path消息,根据ERO将Path消息发送给PE2
4.PE2收到Path消息后,从Session对象的Destination内容获知自己为待建立的CR-LSP的Egress节点。此时,PE2分配标签和资源,根据本地PSB产生Resv消息。Resv消息被发送给P2,该消息携带了PE2分配给P2的标签。
PE2从收到的Path消息中提取RSVP_HOP字段的地址作为Resv消息的目的IP地址。此外,Resv消息沿着反向路径进行转发,因此Resv消息中并不携带ERO
5.当P2收到Resv消息时,记录相关信息到RSB中,并分配一个新标签,更新Resv消息发给P1
6.当P1收到P2的Resv消息时,同P2一样,记录相关信息到RSB中,并分配一个新标签,更新Resv消息发给PE1
PE1收到Resv消息,获得P1分配的标签,表明资源预留成功,此时CR-LSP建立成功。
MPLS TE建立的LSP隧道不能自动将流量引入到隧道中进行转发,需要采用一定的方式将流量引入到MPLS TE隧道中进行转发:
将流量引入TE隧道最简单的方法是使用静态路由,将TE隧道的Tunnel接口设置为静态路由的出接口。
策略路由PBR(Policy-Based Routing)是一种依据用户制定的策略进行路由选择的机制,可应用于安全、负载分担等场景。在MPLS网络中,可使符合过滤条件的IP报文通过指定的LSP转发。
TE的策略路由通过定义一系列匹配的规则和动作,将apply语句的出接口设置为TE隧道的接口。如果报文不匹配策略路由规则,将进行正常IP转发;如果报文匹配策略路由规则,则报文直接从指定隧道转发。
通常,VPN流量通过隧道进行转发时,默认采用LSP隧道而非MPLS TE隧道,此时需要在VPN应用隧道策略(Tunnel Policy)将VPN流量引入到MPLS TE隧道中。包括如下两种方式:
自动路由(Auto Route)是指将TE隧道看作逻辑链路参与IGP路由计算,使用隧道接口作为路由出接口。这里,隧道被看做点到点链路,并且可以设置其Metric值。自动路由方式有两种:
MPLS TE隧道重优化能够根据MPLS网络中的拓扑信息变化,自动进行隧道的路径优化,保证TE隧道一直采用最优路径。
根据触发方式的不同,重优化可以分为以下两种:
重优化技术采用了Make-Before-Break机制,以确保在进行优化时用户的业务流不中断。即新的CR-LSP必须先建立,业务在旧的CR-LSP被拆除前切换到新的CR-LSP上。

配置思路
1.配置各节点接口的IP地址,并使用OSPF协议实现各节点之间公网路由可达。
2.配置LSR ID并全局使能各节点以及接口的MPLS、MPLS TE功能。
3.在入节点创建隧道接口,指定使用静态CR-LSP建立MPLS TE隧道。
4.配置与隧道相关联的静态CR-LSP,在入节点上配置下一跳地址和出标签,在中间节点配置入接口、入标签、下一跳地址和出标签,在出节点上配置入标签和入接口。

配置OSPF TE1.执行命令system-view,进入系统视图。
2.执行命令ospf [ process-id ],进入OSPF视图。
3.执行命令opaque-capability enable,使能OSPF的Opaque能力。
4.执行命令area area-id,进入OSPF的区域视图。
5.执行命令mpls-te enable [ standard-complying ],在当前OSPF区域使能TE。发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100113.html原文链接: