Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

LSP 标签

MPLS 标签概述

沿 LSP 传输的数据包由标签标识,标签是 0 到 1,048,575 范围内的 20 位无符号整数。对于入口路由器上的推送标签,此范围内的任何标签均不受限制。对于传输静态 LSP 上的传入标签,标签值限制为 1,000,000 到 1,048,575。

在 MX 系列、PTX 系列和 T 系列路由器上,熵和流标签的值限制为 16 到 1,048,575。

MPLS 标签分配

在 Junos OS 中,标签值是按路由器或交换机分配的 — 本说明的其余部分使用路由器来涵盖两者。显示输出仅显示标签(例如 )。01024 组播数据包的标签与单播数据包的标签无关。目前,Junos OS 不支持组播标签。

标签由下游路由器相对于数据包流分配。接收标记数据包的路由器(下一跃点路由器)负责分配传入标签。如果收到的数据包包含无法识别(未分配)的标签,则会被丢弃。对于无法识别的标签,路由器不会尝试解开标签包装以分析网络层标头,也不会生成互联网控制消息协议 (ICMP) 目标无法访问消息。

一个数据包可以携带许多标签,这些标签组织为后进先出的堆栈。这称为 标签堆栈。在特定路由器上,有关如何转发标记数据包的决定完全基于堆栈顶部的标签。

图 1 显示单个标签的编码。编码显示在数据链路层标头之后,但显示在任何网络层标头之前。

图 1: 标签编码标签编码

图 2 说明了服务等级位(也称为 EXP 或实验性位)的用途。位 20 和 21 指定队列号。位 22 是数据包丢失优先级 (PLP) 位,用于指定随机早期检测 (RED) 丢弃配置文件。有关服务等级和服务 等级 位的详细信息,请参阅 为 MPLS LSP 配置服务等级。为 MPLS LSP 配置服务等级

图 2: 服务等级位服务等级位

MPLS 标签上的操作

路由器支持以下标签操作:

  • 推送 — 在数据包顶部添加新标签。对于 IPv4 数据包,新标签是第一个标签。生存时间 (TTL) 和 s 位派生自 IP 数据包标头。MPLS 服务等级 (CoS) 派生自队列号。如果在现有 MPLS 数据包上执行推送操作,您将拥有一个包含两个或更多标签的数据包。这称为标签堆叠。顶部标签的 s 位必须设置为 0,并且可能从较低级别派生 CoS 和 TTL。标签堆栈中的新顶部标签始终将其 TTL 初始化为 255,而不考虑较低标签的 TTL 值。

  • 弹出 — 从数据包开头移除标签。删除标签后,TTL 将从标签复制到 IP 数据包标头,并将底层 IP 数据包作为本机 IP 数据包转发。如果数据包中有多个标签(标签堆叠),删除顶部标签将生成另一个 MPLS 数据包。新的顶部标签可能从以前的顶部标签派生 CoS 和 TTL。从上一个顶部标签弹出的 TTL 值不会写回新的顶部标签。

  • 交换 - 将标注堆栈顶部的标注替换为新标注。从前一个标签复制 S 和 CoS 位,并复制并递减 TTL 值(除非配置了 或 语句)。no-decrement-ttlno-propagate-ttl 中转路由器支持任意深度的标签堆栈。

  • 多次推送 — 在现有数据包之上添加多个标签(最多三个)。此操作相当于多次推送。

  • 交换并推送 - 将标注堆栈的现有顶部替换为新标签,然后将另一个新标签推送到顶部。

了解 MPLS 标签操作

在传统的数据包转发模式中,当数据包从一个交换机传输到下一个交换机时,会在每个跃点做出独立的转发决策。将分析 IP 网络报头,并根据此分析和路由表中的信息选择下一跃点。在 MPLS 环境中,当数据包进入 MPLS 隧道(即用于 MPLS 流量的路径)时,仅对数据包标头进行分析一次。

当 IP 数据包进入标签交换路径 (LSP) 时,入口提供商边缘 (PE) 交换机会检查数据包并根据其目的地为其分配标签,并将标签放在数据包的标头中。标签将数据包从基于其 IP 路由信息转发的数据包转换为基于与标签关联的信息转发的数据包。然后将数据包转发到 LSP 中的下一个提供商交换机。此交换机和 LSP 中的所有后续交换机不会检查标记数据包中的任何 IP 路由信息。相反,他们使用标签在标签转发表中查找信息。然后,它们将旧标签替换为新标签,并将数据包转发到路径中的下一个交换机。当数据包到达出口 PE 交换机时,标签将被移除,数据包再次成为本机 IP 数据包,并根据其 IP 路由信息进行转发。

本主题将介绍如下内容:

MPLS 标签交换路径和 MPLS 标签

当数据包进入 MPLS 网络时,会将其分配给 LSP。每个 LSP 都由标签标识,标签是 MPLS 标签(32 位)前面的短(20 位)固定长度值。标签用作标签转发表的查找索引。对于每个标签,此表存储转发信息。由于不会对封装的数据包执行额外的解析或查找,因此 MPLS 支持在数据包有效负载中传输任何其他协议。

图 3 显示单个标签的编码。编码显示在数据链路层标头之后,但显示在任何网络层标头之前。

图 3: 标签编码标签编码

保留标签

标签范围从 0 到 1,048,575。标签 0 到 999,999 供内部使用。

某些保留标签(在 0 到 15 范围内)具有明确定义的含义。QFX 系列和 EX4600 设备使用以下保留标签:

  • 0,IPv4 显式空标签 - 仅当此值是唯一标注条目(无标注堆叠)时才有效。它表示必须在收据上弹出标签。基于 IP 版本 4 (IPv4) 数据包继续转发。

  • 1,路由器警报标签 — 当收到最高标签值为 1 的数据包时,将其传送到本地软件模块进行处理。

  • 3,隐式空标签 — 此标签在信令协议 (RSVP) 中仅用于请求下游交换机弹出标签。它实际上从未出现在封装中。值为 3 的标签不得在数据包中作为真实标签使用。此标签不隐含任何有效负载类型(IPv4 或 IPv6)。

MPLS 标签操作

QFX 系列和 EX4600 设备支持以下 MPLS 标签操作:

  • 流行

  • 交换

注:

QFX 和 EX4600 设备可以粘贴(推送操作)到标签堆栈或从标签堆栈中删除(弹出操作)的标签数量存在限制。

  • 对于推送操作 - 最多支持三个标签。

  • 对于 Pop 操作 - 最多支持三个标签。

推送操作会将新标签粘贴到 IP 数据包的顶部。对于 IPv4 数据包,新标签是第一个标签。数据包头中的生存时间 (TTL) 字段值派生自 IP 数据包头。推送操作不能应用于已具有 MPLS 标签的数据包。

弹出操作会从数据包的开头删除标签。移除标签后,TTL 将从标签复制到 IP 数据包标头,并将底层 IP 数据包作为本机 IP 数据包转发

交换操作从 IP 数据包中删除现有 MPLS 标签,并将其替换为新的 MPLS 标签,具体取决于以下内容:

  • 传入接口

  • 标签

  • 标签转发表

图 4 显示了到达入口 PE 交换机的客户边缘接口 (ge-0/0/1) 的不带标签的 IP 数据包。入口 PE 交换机检查数据包,并将该数据包的目标标识为出口 PE 交换机。入口 PE 交换机将标签 100 应用于数据包,并将 MPLS 数据包发送到其传出 MPLS 核心接口 (ge-0/0/5)。MPLS 数据包通过提供商交换机在 MPLS 隧道上传输,到达标签为 100 的接口 ge-0/0/5。提供商交换机将标签 100 与标签 200 交换,并通过其核心接口 (ge-0/0/7) 将 MPLS 数据包转发到隧道上的下一跃点,即出口 PE 交换机。出口 PE 交换机通过其核心接口 (ge-0/0/7) 接收 MPLS 数据包,移除 MPLS 标签,然后将 IP 数据包从其客户边缘接口 (ge-0/0/1) 发送到隧道外的目标。

图 4: MPLS 标签交换MPLS 标签交换

图 4 显示数据包从一个方向从入口 PE 交换机传递到出口 PE 交换机时的路径。但是,MPLS 配置还允许流量沿相反方向传输。因此,每个 PE 交换机既是入口交换机又是出口交换机。

倒数第二跳弹出和终极跳弹出

默认情况下,这些交换机采用 IP over MPLS 配置,支持倒数第二跳弹出 (PHP)。使用 PHP,倒数第二个提供商交换机负责弹出 MPLS 标签并将流量转发到出口 PE 交换机。然后,出口 PE 交换机会执行 IP 路由查找并转发流量。这减少了出口 PE 交换机上的处理负载,因为它不负责弹出 MPLS 标签。

  • 默认播发的标签是标签 3(隐式空标签)。如果播发了标签 3,倒数第二个跃点交换机将移除标签并将数据包发送到出口 PE 交换机。

  • 如果启用了终极跃点弹出,则会播发标签 0(IPv4 显式空标签),并且 LSP 的出口 PE 交换机会移除该标签。

了解 MPLS 标签管理器

MPLS 标签管理器用于管理不同的标签类型,如 LSI、动态、块和静态,这些标签在使用配备 Junos Trio 芯片组的模块化端口集中器 (MPC) 的平台上受支持。在设备上配置命令时 ,这些线卡可提供更大的灵活性和可扩展性。enhanced-ip

命令的 现有行为将保留, 不建议这样做。label-space 为了提供附加功能(如每种标签类型的多个范围), 在层次结构下 引入了命令,该命令与 配置无关。label-range[edit protocols mpls label usage]label-space 如果每种类型的标签只需要一个范围,则可以选择任一样式。

使用设备上配置的命令优化 以下功能:enhanced-ip

  • 允许您通过 IS-IS 路由协议定义分段路由全局块 (SRGB) 要使用的系统范围全局标签池。

  • 如果平台可以支持缩放,则将空间增加到 至少 16,000。vrf-table-label

  • 允许您指定静态 VRF 表标签要使用的标签值。

  • 允许您指定支持的标签应用程序类型要使用的标签值范围。

  • 允许您动态更改 SRGB 和标签类型范围。

特殊 MPLS 标签

某些保留标签(在 0 到 15 范围内)具有明确定义的含义。有关更完整的详细信息,请参阅 RFC 3032,MPLS 标签堆栈编码

  • 0,IPv4 显式空标签 - 仅当此值是唯一标签条目(无标签堆叠)时才合法。它表示标签必须在收到时弹出。基于 IP 版本 4 (IPv4) 数据包继续转发。

  • 1,路由器警报标签 — 当收到最高标签值为 1 的数据包时,将其传送到本地软件模块进行处理。

  • 2, IPv6 显式空标签 - 仅当此值是唯一标签条目(无标签堆叠)时才合法。它表示必须在收据上弹出标签。根据 IP 版本 6 (IPv6) 数据包继续转发。

  • 3,隐式空标签 — 此标签在控制协议(LDP 或 RSVP)中仅用于请求下游路由器弹出标签。它实际上从未出现在封装中。值为 3 的标签不应作为实际标签在数据包中使用。此标签不隐含任何有效负载类型(IPv4 或 IPv6)。

  • 4 到 6 - 未分配。

  • 7,熵标签指示器 - 当熵标签在标签堆栈中且位于熵标签之前时,使用此标签。

  • 8 到 15 - 未分配。

LSP 的出口和倒数第二个路由器之间通常使用特殊标签。如果 LSP 配置为仅传输 IPv4 数据包,则出口路由器可能会向倒数第二个路由器发出信号,要求其使用 0 作为最终跃点标签。如果 LSP 配置为仅传输 IPv6 数据包,则出口路由器可能会向倒数第二个路由器发出信号,使其使用 2 作为最终跃点标签。

出口路由器可能只是向倒数第二个路由器发出信号,要求使用 3 作为最终标签,这是执行倒数第二个跃点标签弹出的请求。出口路由器不会处理标记的数据包;相反,它直接接收有效负载(IPv4、IPv6 或其他),从而减少了出口处的一次 MPLS 查找。

对于标签堆叠数据包,出口路由器会收到一个 MPLS 标签数据包,其顶部标签已被倒数第二个路由器弹出。出口路由器无法接收使用标签 0 或 2 的标签堆叠数据包。它通常从倒数第二个路由器请求标签 3。

混合模式下的熵标签支持概述

从 Junos OS 14.2 版开始,混合模式机箱支持熵标签,无需增强 ip 配置即可配置熵标签。熵标签可帮助传输路由器跨 ECMP 路径或链路聚合组对 MPLS 流量进行负载平衡。熵标签引入了一个负载均衡标签,供路由器用来对流量进行负载均衡,而不是依赖于深度数据包检测,从而降低了转发平面中的数据包处理要求,但代价是标签堆栈深度增加。Junos OS 仅支持带有 MPC 或 MIC 的 MX 系列路由器的熵标签,并且可使用增强型 IP 模式启用。但是,如果面向核心的接口在 MPC 或 MIC 上配置了熵标签,而此面向核心的连接的另一端具有 DPC 线卡,则会导致丢包。为了避免这种情况,现在在混合模式下支持熵标签,无需增强 ip 配置即可配置熵标签。这允许 MX 系列路由器 DPC 支持弹出熵标签。但是,这不支持流标签。

MPLS LSP 的抽象跃点概述

抽象跃点是现有流量工程约束(如管理组、扩展管理组和共享风险链路组 (SRLG))的逻辑组合,可生成用户定义的路由器组或群集,这些组或路由器群集可以排序并用作设置 MPLS 标签交换路径 (LSP) 的约束。抽象跃点克服了现有路径约束规范的限制,为 MPLS 的信息流工程功能提供了多项优势。

了解抽象跃点

用于设置 MPLS LSP 的路径约束可以指定为实跃点形式的单个路由器,也可以通过管理组或颜色规范指定为一组路由器。当路径约束使用实际跃点(严格或松散)时,将按照指定的路由器序列(例如,R1、R2、...R)。n 当路径约束使用管理组或颜色规范时,将使用一组满足指定条件的路由器来设置 LSP,而无需选择特定路由器,并且与实际跃点约束不同,约束中使用的不同路由器组之间没有顺序。

实跃点约束的缺点是,在故障情况下,如果任何路由器跃点中断或附加接口的带宽利用率饱和,路径将关闭(或依赖于本地或端到端保护)。尽管其他替代路由器可用于恢复或设置 LSP,但 LSP 将保持关闭状态,直到操作员将另一个路由器跃点序列配置为路径约束以再次启动路径或脱离保护路径。

管理组或颜色规范约束在一定程度上克服了实跃点约束的这种限制。在这里,当组中的某个路由器出现故障或其链路容量饱和时,LSP 的设置不会受到影响。这是因为不会事先选择要在路径约束中使用的下一跃点路由器,并且 LSP 是沿着具有相同管理组或颜色的其他路由器设置的,而无需操作员干预。但是,路由器组约束的缺点是无法在跃点约束中指定序列。

抽象跃点通过创建用户定义的路由器组来克服这些缺点,其中每个成员路由器都满足用户定义的约束。用户定义的约束是现有流量工程约束(如管理组、扩展管理组和共享风险链路组 (SRLG))的逻辑组合。通过指定路径约束中使用的抽象跃点序列,可以在路由器组之间实现排序。因此,抽象跃点结合了实际跃点约束规范的排序属性和其他流量工程约束附带的弹性。

路径可以使用实跃点和抽象跃点的组合作为约束。使用抽象跃点时,无需指定路由器序列(R1、R2、...R) 与实际跃点一样,您可以指定一组有序的路由器组或抽象跃点(G1、G2、...G) 作为路径约束。nn 每个指定的路由器组(例如 G )都由一组用户定义的路由器组成 — R1、R2、R、...R.ijn 当组中的一台路由器出现故障时,例如 G 组中的路由器 R,路径计算将拾取同一组 G 中的另一个路由器(例如路由器 R),以替换出现故障的路由器(即路由器 R)。jikij 这是因为路径约束是按顺序排列的,并且必须经过一系列抽象跃点,而不是单个路由器的序列。

使用抽象跃点的好处

抽象跃点是用户定义的路由器组。与使用单个路由器序列的实跃点约束类似,抽象跃点序列可用于设置标签交换路径 (LSP)。抽象跃点的使用为排序路径约束提供了复原能力。使用抽象跃点的其他好处包括:

指定约束组合的序列

目前,可以指定可以穿过满足多个属性的链接的路径。此类路径约束称为复合约束组合;例如,包含绿色低延迟链路的约束 (Ci),并且还排除了 SRLG 北。

但是,不支持指定具有一系列复合约束组合的路径。例如,排序约束(C1、C2、Ci、...Cn),包括低延迟绿色链接、无延迟蓝色链接和低延迟红色链接。

当需要通过每个区域中具有不同链接亲和力(属性)要求的地理区域序列建立路径时,就需要这种排序复合约束组合。抽象跃点允许计算节点将每个约束组合(例如 Ci)与用户定义的路由器组(即抽象跃点)映射,从而满足此要求。

避免在传输节点上进行新的网络配置

使用当前路径约束规范功能,可以在整个路径中包含或排除某些属性的链接;例如,从路径中排除以西的 SRLG。但是,不支持有条件地排除或包含属性,也不支持在路径的不同部分中应用不同的排除或包含属性;例如,仅在遍历红色链路时排除 SRLG 西。

作为一种解决方法,可以创建一个新的管理组来标识所有没有 SRLG 西部的此类红色链接,并使用该管理组适当地配置所有相关链接。此方法的缺点是需要在整个网络中更改配置以反映新的管理组成员身份。

相反,通过使用抽象跃点,配置更改只能包含在入口路由器上。在入口路由器上,约束组合映射到抽象跃点,从而满足上述要求,而无需在中转节点上进行任何新配置。

结合集中式和分布式路径计算范式

MPLS 路径的流量工程可以通过分布式计算或用于计算路径的集中控制器来实现。这两种计算类型的组合称为混合计算范式。混合计算方法的关键功能是集中式控制器(称为路径计算元素 (PCE))能够松散地指定每个路径到入口路由器(称为路径计算客户端 (PCC))的路径计算指令,以及入口路由器将其用作路径计算的输入的能力。

抽象跃点序列的作用是充当集中式控制器的指南。抽象跃点为控制器提供了融入路径约束和属性的灵活性。这也使控制器能够在约束中构建序列元素。控制器不必指定路径需要采用的每个跃点,从而为入口路由器留出空间,使其在准则或指令的限制内操作。

表 1 列出了混合计算范式的主要功能,并提供了此方法与当前路径计算方法的比较。

表 1: 抽象跃点的混合计算

功能

分布式约束最短路径优先

集中式受限最短路径优先

混合约束最短路径优先

对大型网络中的频繁变化做出反应

 

具有全局视图的复杂路径计算

 

在路径计算中合并业务逻辑

 

弹性(无单点故障)

 

可 预见性

 

实时(接近)对网络负载做出反应

 

经过现场测试(与早期采用相比)

 

Junos OS 抽象跃点的实现

顺序感知抽象跃点功能在 Junos OS 17.1 版中引入。以下部分介绍 Junos OS 中抽象跃点的实现:

定义抽象跃点

抽象跃点是一组路由器,用户可以定义这些路由器以用于设置标签交换路径 (LSP)。用户可以通过定义异构链路属性或约束(称为构成属性)的逻辑组合来控制要包含在组中的路由器。链路满足定义的构成属性的路由器会加入代表抽象跃点的路由器组。

构成属性与抽象跃点的映射是计算节点或正在设置的 LSP 入口的本地映射。因此,抽象跃点没有关联的内部网关协议更新或信令协议扩展,并且在网络中实现抽象跃点不需要在中转节点上进行新配置。

通过组成列表,可以定义一组由用户定义的名称标识的组成信息流工程属性。通过使用以下任一配置语句,在抽象跃点定义中使用构成列表:

  • include-any-list- 如果链接的任何指定构成属性为真,则链接满足组成列表。

  • include-all-list- 如果链接的所有指定构成属性都为真,则链接满足组成列表。

  • exclude-all-list- 如果链接的指定构成属性均不为真,则链接满足组成列表。

  • exclude-any-list- 如果至少有一个指定的构成属性对于链接不为真,则链接满足组成列表。

抽象跃点定义为可以属于上述任何类别的成分列表引用的逻辑组合。为了实现这一点,逻辑运算符 和 被包括在抽象跃点定义中,并应用于构成列表。ANDOR

  • OR- 抽象跃点定义中至少有一个组成列表引用必须通过链接来满足,附加的节点才能成为抽象跃点的一部分。

  • AND- 抽象跃点定义中的所有组成列表引用必须通过链接来满足,附加的节点才能成为抽象跃点的一部分。

抽象跃点定义示例

举例来说,抽象跃点 hopA 的定义如下:

抽象跃点 hopA 必须包括其发出链路分别满足以下链路属性逻辑组合的所有路由器:

  • hopA—((行政组 red && Srlg South) ||(行政组绿色 ||Srlg north)),其中:

    • 并且 属于包含所有构成列表(在本例中为 listA1)。administrative group redSrlg south

    • 并且 属于包含任何组成列表(在本例中为 listA2)。administrative group greenSrlg north

    • || 是 OR 运算符。

抽象跃点 hopA 的配置如下:

  • hopA configuration

Verifying Abstract Hop Configuration

该 命令用于查看抽象跃点的成员。show mpls abstract hop membership <abstract hop name> 命令输出提供到流量工程数据库节点的抽象跃点映射。

此处,输出字段 指示与正在使用的内部网关协议关联的可信度。Credibility

命令 的输出提供在信息流工程数据库中捕获的视图。show ted database extensive local 添加关键字 以指示输出将包含任何本地检测。local 命令输出将抽象跃点显示为满足链接属性的关联逻辑组合的链接的属性。

抽象跃点 A 用于低延迟和 SRLG 西部,抽象跃点 B 用于排除 SRLG 西部。 显示这些抽象跃点的入口视图。图 5

图 5: 抽象跃点的入口视图抽象跃点的入口视图

在路径约束中使用抽象跃点

用户将唯一标识符与每个抽象跃点定义相关联。此标识符用于引用路径约束中的抽象跃点。可以将抽象跃点序列指定为路径约束,类似于实际 IP 跃点的使用方式。路径约束也可以是由真实 IP 跃点交错的抽象跃点序列。

在路径约束中使用抽象跃点或实际跃点需要多次到达目标的受约束最短路径首次传递,通常每个跃点传递一次。当提供实际跃点作为路径约束时,约束计算涉及的传递次数与路径约束中的跃点数一样多,其中每个传递在到达约束列表中的跃点时结束。每个通道的起点是前一遍的目的地,第一遍使用入口路由器作为起点。

或者,当路径约束使用严格或松散的抽象跃点时,约束计算包括每次传递处理约束列表中的后续抽象跃点的传递。在这种情况下,多个节点有资格成为通行证的目的地。节点集称为通行证的可行路由器集。

抽象跃点使用以下各项遍历成员节点:

  • 满足已定义构成属性的逻辑组合的链接

  • 任何类型的链接

在定义路径约束时,通过使用抽象跃点限定符(严格、松散和松散链接)来控制遍历成员节点的抽象跃点的方法。举例来说,抽象跃点 hopA 使用不同的限定符以不同的方式处理:

  • Strict- 在约束列表中最后一个处理的跃点之后,路径仅遍历具有抽象跃点跃点 A 成员资格的链路或节点,然后到达具有 hopA 成员资格的节点,该节点是处理下一个抽象跃点的可行起点。

  • Loose—在约束列表中最后一个处理的跃点之后,路径可以遍历任何没有 hopA 抽象跃点成员资格的实际节点,然后再到达具有抽象跃点成员资格 hopA 的节点,这是处理下一个抽象跃点的可行起点。

  • Loose-link—在约束列表中最后一个处理的跃点之后,路径可以遍历任何没有 hopA 抽象跃点成员资格的实际节点,然后再到达具有抽象跃点成员资格 hopA 的节点,这是处理下一个抽象跃点的可行起点。但是该路径应该在同一过程中遍历至少一个抽象跃点 hopA 成员资格的链接。

    换句话说,仅当约束中的任何可行路由器可通过关联的抽象跃点成员资格的链接到达时,才称处理松散链接类型的抽象跃点。

抽象跃点规范示例

表 2 提供在路径约束中使用抽象跃点的示例用例。

表 2: 在路径约束中使用抽象跃点

路径约束的目的

抽象跃点限定符

配置

可行的路由器集

关联

遍历属于 hopA 成员的节点,仅获取满足 hopA 的链路。

严格

[edit protocols mpls]
Path path_hopA_s {
    hopA abstract strict;
}

抽象 hopA 的所有成员。即 A1、A2...一.n

hopA(仅选择满足抽象hopA的链接)。

遍历属于 hopA 成员但不一定满足 hopA 的链路的节点

松散

[edit protocols mpls]
Path path_hopA_l {
    hopA abstract loose;
}

抽象 hopA 的所有成员。即 A1、A2...一.n

无(任何类型的链接)。

通过获取至少一个满足 hopA 的链路来遍历属于 hopA 成员的节点。

松链

注:

对于相同的抽象跃点,松散链接限定符被视为松散,后跟严格。换句话说,hopA loose-link 与 hopA loose 和 hopA strict 相同。

[edit protocols mpls]
Path path_hopA_ll {
    hopA abstract loose-link;
}

在这种情况下,路径约束中有两个与 hopA 关联的计算传递。为这两个传递设置的可行路由器为:

抽象 hopA 的所有成员。即 A1、A2...一.n

注:

在路径计算期间,路由器仅遍历一次。

在这种情况下,路径约束中有两个与 hopA 关联的计算传递。这两个通道的关联性是:

  • 通过 1 - 无(任何类型的链接)。

  • 传递 2 - hopA(仅选择满足抽象 hopA 的链接)。

遍历属于跃点 A 成员的节点,仅获取满足跃点 A 的链路,然后是属于跃点 B 成员的节点,仅获取满足跃点 B 的链路。

严格

[edit protocols mpls]
Path path_hopA_hopB_s {
    hopA abstract strict;
    hopB abstract strict;
}
  • hopA - hopA 和 hopB 的成员集的交集。

    注:

    当抽象跃点后跟严格抽象跃点时,两个成员集的交集被视为可行的路由器集。

  • hopB - 抽象跃点 B 的所有成员。也就是说,B1,B2...二.n

  • hopA - hopA(仅选择满足抽象 hopA 的链接)。

  • hopB—hopB(仅选择满足抽象跳跃 B 的链接)。

遍历作为 hopA 成员的节点,仅采用满足跃点 A 的链路,然后遍历作为跃点 B 成员的节点,获取任何类型的链接。

严格而宽松

[edit protocols mpls]
Path path_hopA_s_hopB_l {
    hopA abstract strict;
    hopB abstract loose;
}
  • hopA - 抽象跳跃 A 的所有成员。即 A1、A2...一.n

  • hopB - 抽象跃点 B 的所有成员。也就是说,B1,B2...二.n

  • hopA - hopA(仅选择满足抽象 hopA 的链接)。

  • hopB - 无(选择任何链接)。

通过获取任何类型的链接遍历属于跃点 A 成员的节点,然后遍历属于跃点 B 成员的节点获取任何类型的链接。

松散

[edit protocols mpls]
Path path_hopA_l_hopB_l {
    hopA abstract loose;
    hopB abstract loose;
}
  • hopA - 抽象跳跃 A 的所有成员。即 A1、A2...一.n

  • hopB - 抽象跃点 B 的所有成员。也就是说,B1,B2...二.n

无(选择任何链接)。

遍历属于跃点 A 成员的节点,方法是获取任何类型的链接,然后是属于跃点 B 成员的节点,仅获取满足跃点 B 的链路。

宽松严格

[edit protocols mpls]
Path path_hopA_l_hopB_s {
    hopA abstract loose;
    hopB abstract strict;
}
  • hopA - hopA 和 hopB 成员的交集。

    当抽象跃点后跟严格抽象跃点时,两个成员集的交集被视为可行的路由器集。

  • hopB - 抽象跃点 B 的所有成员。也就是说,B1,B2...二.n

  • hopA - 无(选择任何链接)。

  • hopB—hopB(仅选择满足抽象跳跃 B 的链接)。

图 6 显示抽象跃点 A、跃点 B 和 hopC 的路径约束,分别具有松散、严格和松散抽象跃点限定符。

图 6: 抽象跃点的示例路径约束抽象跃点的示例路径约束

抽象跃点的“受约束最短路径优先”遍历如下所示:

  • 与 hopA 关联的通道 1

    • 可行路由器 — 路由器 R1 和 R2(跃点 A 和跃点 B 的交集,因为跃点 B 是严格的抽象跃点)。

    • 关联性 - 无(因为 hopA 是松散的)。

  • 与跃点 B 关联的通道 2

    • 可行的路由器 — 路由器 R1、R2、R3 和 R4

    • 关联性 — 仅选择符合 hopB 的链路(因为 hopB 是严格的抽象跃点)。

  • 与 hopC 关联的通道 3

    • 可行路由器 — 路由器 R5、R6、R7 和出口路由器。

    • 关联性 - 无(因为 hopC 是一个松散的抽象跃点)。

路径计算和回溯

在每次“受限最短路径优先传递”中,当使用满足该通道的关联性的链路到达距离可行路由器集最近的路由器时,称为处理与该传递关联的抽象跃点。这样到达的可行路由器将作为下一次约束传递的开始。如果任何约束传递失败,并且它不是将入口路由器作为起始路由器的约束传递,则该传递将回溯到上一个传递,并重复该过程。

示例回溯

当约束最短路径第一遍 p(第一个除外)失败时,作为当前传递 p 开始的前一通路 (p – 1) 的出口路由器在前一遍 (p – 1) 的可行路由器集中被取消资格。然后重新执行前一次传递 (p – 1),以从可行的路由器集中找到下一个最佳出口路由器或路径 p – 1 的目标。

这样确定的路由器用作通道 p 的新启动路由器。只要出现故障并且存在未探索的可行路由器,就会重复此过程。

该 命令提供每个 LSP 涉及的各种计算传递,以及每个传递的合格出口路由器。show mpls lsp abstract-hop-computation name lsp-name 命令输出还提供每次传递的关联性,并显示为传递选择的当前启动路由器。对于每个可行的路由器,将显示回溯状态,其中它可以是有效的,也可以是不合格的。

输出字段 指示与正在使用的内部网关协议关联的可信度。Credibility

示例:为 MPLS LSP 配置抽象跃点

此示例说明如何为 MPLS 标签交换路径 (LSP) 配置抽象跃点。抽象跃点结合了现有信息流工程约束的关键功能,使用户能够为 MPLS LSP 指定顺序感知且弹性路径约束。

要求

此示例使用以下硬件和软件组件:

  • 六种设备,可以是 M 系列多服务边缘路由器、MX 系列 5G 通用路由平台、T 系列核心路由器和 PTX 系列数据包传输路由器的组合。

  • 在所有设备上运行的 Junos OS 17.1 或更高版本。

准备工作:

  • 配置设备接口。

  • 配置设备路由器 ID 并分配自治系统 (AS) 编号。

  • 在所有设备上配置 RSVP。

  • 在所有设备上配置 OSPF 或任何其他内部网关协议。

  • 在所有设备上配置管理组、扩展管理组和共享风险链接组 (SRLG)。

概述

Junos OS 17.1 版引入了抽象跃点,即用户定义的路由器群集或组。与实跳约束序列(严格或松散)类似,抽象跃点序列可用于设置标签交换路径 (LSP)。路径可以使用实跃点和抽象跃点的组合作为约束。

抽象跃点是现有流量工程约束(如管理组、扩展管理组和 SRLG)与实际跃点的排序属性的逻辑组合。因此,当在路径约束中使用抽象跃点序列时,将在满足链路或节点属性(称为构成属性)的逻辑组合的路由器组之间实现排序。

要配置抽象跃点:

  • 通过在层次结构级别包含 语句 ,创建具有构成流量工程属性的组成列表。constituent-list list-name[edit protocols mpls]

  • 在层次结构级别的抽象跃点定义 中包含构成列表。[edit protocols mpls abstract-hop abstract-hop-name]

  • 定义在层次结构级别使用 抽象跃点的路径约束。[edit protocols mpls path path-name]

为 MPLS LSP 配置抽象跃点时,请考虑以下准则:

  • 抽象跃点仅在设备的主路由实例中受支持。

  • 抽象跃点约束不支持 IPv6 目标(只有 IPv4 目标有效)。

  • 抽象跃点可以是严格约束,也可以是松散约束。

  • Junos OS 17.1 版中的抽象跃点支持仅适用于区域内 MPLS LSP,不适用于域间或区域间 LSP。

  • 仅为常规点对点 LSP 启用抽象跳跃约束。抽象跃点配置不支持其他类型的 MPLS LSP,例如点对多点 LSP、外部控制的双向 LSP、动态容器 LSP、RSVP 自动网状 LSP 和区域间 LSP。

  • 抽象跃点无法计算 LSP 的总体最短路径。

  • 在同一路径约束中,不得多次引用抽象跃点。

  • 抽象跳跃约束规范不会影响对平滑路由引擎切换 (GRES)、统一不中断服务软件升级 (ISSU) 和不间断路由 (NSR) 的支持。

  • 抽象跳跃约束规范不会影响整体网络性能。但是,受约束的最短路径优先计算所需的时间会随着抽象跃点配置的增加而增加。抽象跃点 LSP 的设置时间大于在没有抽象跃点配置的情况下设置 LSP 所需的时间。

拓扑

图 7 演示了配置了抽象跃点的示例网络拓扑。设备 R0 和 R3 分别连接到主机(主机 1 和主机 2)。设备 R4 和 R5 分别连接到设备 R0、R1、R2 和 R3。设备 R1 和 R2 也直接相互连接。

设备 R0 和 R3 配置在同一自治系统 (AS 64496) 下。MPLS LSP 从设备 R0 到设备 R3 配置有一个主路径和两个辅助路径(备用和非备用辅助路径)。

四个组成列表(c1、c2、c3 和 c4)是使用三个 SRLG(g1、g2 和 g3)、三个管理组(绿色、蓝色和红色)和一个扩展管理组(金色)创建的。三个抽象跃点(ah1、ah2 和 ah3)是使用配置的组成列表定义的,并被指定为路径约束。抽象跃点 ah1 被指定为主路径的约束,而抽象跃点 ah2 和 ah3 分别被指定为主备用路径和辅助非备用路径的约束。

图 7: 配置抽象跃点路径约束配置抽象跃点路径约束

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到 [edit] 层级的 CLI 中,然后从配置模式进入 commit

设备 R0

设备 R1

设备 R2

设备 R3

设备 R4

设备 R5

程序

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置设备 R0:

  1. 在设备 R0 上启用增强型 IP 网络服务。

  2. 配置设备 R0 上的接口,包括环路接口。

  3. 为设备 R0 分配路由器 ID 和自治系统编号。

  4. 配置 SRLG 定义。

  5. 配置扩展管理组定义。

  6. 配置管理组定义。

  7. 在设备 R0 的所有接口上配置 MPLS,管理接口除外。

  8. 为设备 R0 的接口分配配置的信息流工程属性。

  9. 配置连接设备 R0 与设备 R3 的 LSP,并将主路径和辅助路径属性分配给 LSP。

  10. 定义 R0-R31 LSP 的主路径和辅助路径。

  11. 为抽象跃点定义创建具有构成流量工程属性的构成列表。

  12. 通过分配配置的组成列表和相应的运算符来定义抽象跃点。

  13. 通过包括抽象跃点定义来定义已配置路径的约束。

  14. 在设备 R0 上配置 RSVP。在设备 R0 的所有接口上启用 RSVP,不包括管理接口和连接到 Host1 的接口,并分配带宽值。

  15. 在设备 R0 的所有接口(不包括管理接口)上配置 OSPF,并分配流量工程功能。

  16. 在设备 R0 上配置策略,以基于每个数据包启用负载平衡。

  17. 将负载均衡策略导出到转发表。

成果

在配置模式下,输入 、 、 和命令来确认您的配置。show chassisshow interfacesshow routing-optionsshow protocolsshow policy-options 如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

验证

确认配置工作正常。

验证抽象跃点配置

目的

通过发出 显示抽象跃点成员表的命令,验证设备 R0 上抽象跃点定义的成员。show mpls abstract-hop-membership

操作

在操作模式下,运行 命令。show mpls abstract-hop-membership

意义

命令输出提供到流量工程数据库节点的抽象跃点映射。show mpls abstract-hop-membership 该 字段显示与正在使用的内部网关协议 (OSPF) 关联的可信度值。Credibility

验证抽象跳跃路径计算

目的

通过发出 命令验证设备 R0 上 LSP 的抽象计算预处理。show mpls lsp abstract-computation

操作

在操作模式下,运行 命令。show mpls lsp abstract-computation

意义

命令输出提供每个 LSP 涉及的各种计算传递,以及每个传递的合格出口设计。show mpls lsp abstract-hop-computation 命令输出还提供每次传递的关联性,并显示为该传递选择的当前启动设备。对于每个可行的路由器(设备),将显示回溯状态,其中它可以是有效的,也可以是不合格的。

该 字段指示与正在使用的内部网关协议 (OSPF) 关联的可信度值。Credibility

配置 MPLS 标签的最大数量

对于为 MPLS 应用程序配置的接口,您可以设置 MPLS 可以运行的最大标签数。

默认情况下,最大标签数为三个。对于需要四个或五个标签的应用程序,可以将最大值更改为四个标签或五个标签。

从 Junos OS 19.1R1 版开始,可以利用出口数据包转发引擎 (PFE) 可以推送的最大标签数,其中可以为 MPLS 下一跃点推送的标签数是设备能够推送的标签数,或者是在传出接口下配置的最大标签数, 以较小者为准。maximum-labelsfamily mpls 具有 MPC 和 MIC 接口的 MX 系列路由器以及具有第三代 FPC 的 PTX 系列路由器都启用了此支持。

注:

在 PTX 系列路由器上,入口 PFE 可推送的最大标签数为 4,出口 PFE 为 8。

增强的标签推送功能对于分段路由流量工程 LSP 和 RSVP-TE 弹出转发 LSP 等功能非常有用。使用 MPLS 下一跃点的应用程序的所有现有功能将继续使用增强的标签推送功能。其中包括:

  • 所有 OAM 实用程序,例如用于 MPLS LSP 的 lsping、traceroute 和 BFD。

  • 监控实用程序,如 LSPMON 和用于 MPLS LSP 的 LM DM。

和命令输出得到增强,每个下一跃点组件最多可显示 16 个标签。show route tableshow route forwarding-table

例如:

注:

修改接口的最大 MPLS 标签数时,MPLS 接口将被退回。该接口上的所有 LDP 和 RSVP 会话都将重新启动,从而导致该接口上的所有 LSP 发生抖动。

例如,假设您为提供 VPN 服务的客户配置了双层运营商间 VPN 服务。运营商间 VPN 是提供商运营商(第 1 层 ISP)和客户运营商(第 2 层 ISP)之间的两层关系。在运营商间 VPN 中,提供商运营商为客户运营商提供 VPN 骨干网络。客户运营商反过来向其最终客户提供第 3 层 VPN 服务。客户运营商将标记的流量发送给提供商运营商,以将其传递到提供商运营商网络另一端的下一跃点。此方案需要一个三标签堆栈:一个标签用于提供商运营商 VPN,另一个标签用于客户运营商 VPN,第三个标签用于传输路由。

如果添加快速重新路由服务,则必须将提供商运营商网络中的 PE 路由器配置为支持第四个标签(重新路由标签)。如果客户运营商使用 LDP 作为其信令协议,而提供商运营商使用 RSVP,则提供商运营商必须支持 LDP over RSVP 隧道服务。此附加服务需要一个附加标签,总共五个标签。

对于客户运营商来说,它用于连接到提供商运营商的 VPN 的路由器是 PE 路由器。但是,提供商运营商将此设备视为客户边缘路由器。

表 3 总结了标签要求。

表 3: 使用 3、4 或 5 个 MPLS 标签的示例方案

所需标签数量

场景

3

载波至载波 VPN 或具有两个标签且快速重新路由的 VPN

4

载波至载波与快速改道的组合

5

具有快速重新路由的运营商和运行LDP的客户运营商,提供商运营商运行RSVP

要配置和监控最大标签数,请执行以下操作:

  1. 指定逻辑接口上的最大值。将此配置应用于运营商的 PE 路由器。
  2. 验证配置。

    命令输出包含 逻辑接口单元 0 下的字段。Maximum labels: 5

配置 MPLS 以弹出终极跃点路由器上的标签

您可以控制在标签交换路径 (LSP) 的出口路由器上播发的标签值。默认播发的标签是标签 3(隐式空标签)。如果播发了标签 3,倒数第二个跃点路由器将移除标签并将数据包发送到出口路由器。通过启用终极跃点弹出,将播发标签 0(IPv4 显式空标签)。终极跃点弹出可确保通过 MPLS 网络的所有数据包都包含标签。

注:

瞻博网络路由器根据传入标签对数据包进行排队。其他供应商的路由器可能会以不同的方式对数据包进行排队。在使用包含来自多个供应商的路由器的网络时,请记住这一点。

要将 MPLS 配置为在终极跃点路由器上弹出标签,请包含以下 语句:explicit-null

您可以在以下层次结构级别配置此语句:

  • [edit protocols mpls]

  • [edit logical-systems logical-system-name protocols mpls]

向 BGP 对等方播发显式空标签

仅对于 IPv4 () 系列,路由组中的 BGP 对等方可以为 inet 标记单播和 inet6 标记单播 NLRI 的一组连接的路由(直接路由和环回路由)发送显式 NULL 标签。inet 默认情况下,对等方播发标签 3(隐式 NULL)。如果启用了该 语句,则对等方播发标签 0(显式 NULL)。explicit-null 显式 NULL 标签可确保标签始终存在于通过 MPLS 网络的数据包上。如果使用隐式 NULL 标签。倒数第二个跃点路由器移除标签,并将数据包作为纯 IP 数据包发送到出口路由器。如果倒数第二个跃点是其他供应商的路由器,这可能会导致在倒数第二个跃点路由器上正确排队数据包时出现问题。其他一些供应商根据传出标签(而不是传入标签)中的 CoS 位对数据包进行排队。

要播发显式空标签,请在配置中包含以下语句:

有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。

通告显式空标签需要该 语句。connected-only

若要验证是否正在为连接的路由播发显式 NULL 标签,请使用 命令。show route advertising-protocol bgp neighbor-address

了解 EX 系列交换机上的 MPLS 标签操作

在传统的数据包转发模式中,当数据包从一个交换机传输到下一个交换机时,会在每个跃点做出独立的转发决策。将分析 IP 网络报头,并根据此分析和路由表中的信息选择下一跃点。在 MPLS 环境中,当数据包进入 MPLS 隧道(即用于 MPLS 流量的路径)时,仅对数据包标头进行分析一次。

当 IP 数据包进入标签交换路径 (LSP) 时,入口提供商边缘 (PE) 交换机会检查数据包并根据其目的地为其分配标签,并将标签放在数据包的标头中。标签将数据包从基于其 IP 路由信息转发的数据包转换为基于与标签关联的信息转发的数据包。然后将数据包转发到 LSP 中的下一个提供商交换机。此交换机和 LSP 中的所有后续交换机不会检查标记数据包中的任何 IP 路由信息。相反,他们使用标签在标签转发表中查找信息。然后,它们将旧标签替换为新标签,并将数据包转发到路径中的下一个交换机。当数据包到达出口 PE 交换机时,标签将被删除,数据包再次成为本机 IP 数据包,并根据其 IP 路由信息再次进行转发。

本主题将介绍如下内容:

MPLS 标签交换路径和交换机上的 MPLS 标签

当数据包进入 MPLS 网络时,会将其分配给 LSP。每个 LSP 都由标签标识,标签是 MPLS 标签(32 位)前面的短(20 位)固定长度值。标签用作标签转发表的查找索引。对于每个标签,此表存储转发信息。由于不会对封装的数据包执行额外的解析或查找,因此 MPLS 支持在数据包有效负载中传输任何其他协议。

注:

瞻博网络 EX3200 和 EX4200 以太网交换机上的 MPLS 实施仅支持单标签数据包。但是,瞻博网络 EX8200 以太网交换机上的 MPLS 支持最多带有三个标签的数据包。

图 8 显示单个标签的编码。编码显示在数据链路层标头之后,但显示在任何网络层标头之前。

图 8: 标签编码标签编码

保留标签

标签范围从 0 到 1,048,575。标签 0 到 999,999 供内部使用。

某些保留标签(在 0 到 15 范围内)具有明确定义的含义。交换机使用以下保留标签:

  • 0,IPv4 显式空标签 - 仅当此值是唯一标注条目(无标注堆叠)时才有效。它表示必须在收据上弹出标签。基于 IP 版本 4 (IPv4) 数据包继续转发。

  • 1,路由器警报标签 — 当收到最高标签值为 1 的数据包时,将其传送到本地软件模块进行处理。

  • 2, IPv6 显式空标签 - 仅当此值是唯一标签条目(无标签堆叠)时才合法。它表示必须在收据上弹出标签。

  • 3,隐式空标签 — 此标签在信令协议 (RSVP) 中仅用于请求下游交换机弹出标签。它实际上从未出现在封装中。值为 3 的标签不得在数据包中作为真实标签使用。此标签不隐含任何有效负载类型(IPv4 或 IPv6)。

交换机上的 MPLS 标签操作

EX 系列交换机支持以下标签操作:

  • 流行

  • 交换

推送操作会将新标签粘贴到 IP 数据包的顶部。对于 IPv4 数据包,新标签是第一个标签。数据包头中的生存时间 (TTL) 字段值派生自 IP 数据包头。推送操作不能应用于已具有 MPLS 标签的数据包。

弹出操作会从数据包的开头删除标签。移除标签后,TTL 将从标签复制到 IP 数据包标头,并将底层 IP 数据包作为本机 IP 数据包转发

交换操作从 IP 数据包中删除现有 MPLS 标签,并将其替换为新的 MPLS 标签,具体取决于以下内容:

  • 传入接口

  • 标签

  • 标签转发表

显示到达入口 PE 交换机的客户边缘接口 () 的不带标签的 IP 数据包。图 9ge-0/0/1 入口 PE 交换机检查数据包,并将该数据包的目标标识为出口 PE 交换机。入口 PE 交换机将标签 100 应用于数据包,并将 MPLS 数据包发送到其传出 MPLS 核心接口 ()。ge-0/0/5 MPLS 数据包通过提供商交换机在 MPLS 隧道上传输,到达标签为 100 的接口 。ge-0/0/5 提供商交换机将标签 100 交换为标签 200,并通过其核心接口 () 将 MPLS 数据包转发到隧道上的下一跃点,即出口 PE 交换机。ge-0/0/7 出口 PE 交换机通过其核心接口 () 接收 MPLS 数据包,移除 MPLS 标签,然后将 IP 数据包从其客户边缘接口 () 发送到隧道外的目标。ge-0/0/7ge-0/0/1

图 9: MPLS 标签交换MPLS 标签交换

图 9 显示数据包从一个方向从入口 PE 交换机传递到出口 PE 交换机时的路径。但是,MPLS 配置还允许流量沿相反方向传输。因此,每个 PE 交换机既是入口交换机又是出口交换机。

倒数第二跳弹出和终极跳弹出

默认情况下,这些交换机采用 IP over MPLS 配置,支持倒数第二跳弹出 (PHP)。使用 PHP,倒数第二个提供商交换机负责弹出 MPLS 标签并将流量转发到出口 PE 交换机。然后,出口 PE 交换机会执行 IP 路由查找并转发流量。这减少了出口 PE 交换机上的处理负载,因为它不负责弹出 MPLS 标签。

在 EX8200 交换机上,您可以选择使用默认 PHP 或配置终极跳跃弹出。

  • 默认播发的标签是标签 3(隐式空标签)。如果播发了标签 3,倒数第二个跃点交换机将移除标签并将数据包发送到出口 PE 交换机。

  • 如果启用了终极跃点弹出,则会播发标签 0(IPv4 显式空标签),并且 LSP 的出口 PE 交换机会移除该标签。

变更历史表

是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。

版本
说明
19.1R1
从 Junos OS 19.1R1 版开始,可以利用出口数据包转发引擎 (PFE) 可以推送的最大标签数,其中可以为 MPLS 下一跃点推送的标签数是设备能够推送的标签数,或者是在传出接口下配置的最大标签数, 以较小者为准。family mpls 具有 MPC 和 MIC 接口的 MX 系列路由器以及具有第三代 FPC 的 PTX 系列路由器都启用了此支持。
14.2
从 Junos OS 14.2 版开始,混合模式机箱支持熵标签,无需增强 ip 配置即可配置熵标签。