Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

LSP 标签

MPLS 标签概述

沿 LSP 传输的数据包通过标签进行标识 — 20 位、未签名的整数,范围为 0 到 1,048,575。对于入口路由器上的推式标签,不限制此范围内的标签。对于传输静态 LSP 上的传入标签,标签值限制为1000000到1048575。

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

MPLS 标签分配

在此Junos OS中,每个路由器或交换机分配标签值 — 本说明的其余部分使用路由器来覆盖两者。显示输出仅显示标签(例如01024)。多址广播数据包的标签独立于单播数据包。目前,Junos OS 不支持多址广播标签。

标签由下游路由器分配,相对于数据包流。接收标记为数据包的路由器(下一跳路由器)负责分配传入标签。接收的数据包中包含无法识别(未分配)的标签。对于无法识别的标签,路由器不会尝试解包标签以分析网络层标头,也不会生成互联网控制消息协议(ICMP)目标不可达消息。

数据包可以携带许多标签,并作为后进先出堆栈进行组织。这称为标签堆栈。在特定路由器上,有关如何转发标记数据包的决策以独占方式基于堆栈顶部的标签。

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

图 1: 标签编码标签编码

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

图 2: 服务类位服务类位

MPLS 标签上的操作

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

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

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

  • 交换 - 将标签堆栈顶部的标签更换为新标签。S 和 CoS 位从上一个标签复制,TTL 值将被复制并减少(除非配置了no-decrement-ttl or no-propagate-ttl语句)。传输路由器支持任何深度的标签堆栈。

  • 多推送 — 基于现有数据包添加多个标签(最多三个)。此操作等同于多次推送。

  • 交换和推送 — 将标签堆栈的现有顶部更换为新标签,然后顶部推送另一个新标签。

了解 MPLS 标签操作

在传统的数据包转发模式中,随着数据包从一台交换机传输到下一个,每个跳跃都进行了独立转发决定。将分析 IP 网络标头,并根据此分析和路由表中的信息选择下一跳跃。在 MPLS 环境中,数据包标头的分析仅进行一次,而数据包进入 MPLS 通道(即用于 MPLS 流量的路径)。

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

本主题介绍:

MPLS 标签交换路径和 MPLS 标签

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

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

图 3: 标签编码标签编码

保留标签

标签范围为0到1048575。0到999999标签供内部使用。

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

  • 0,IPv4 显式空标签 - 该值仅在作为唯一标签条目时有效(无标签堆栈)。它指示必须在接收时弹出标签。转发将根据 IP 版本4(IPv4)数据包继续。

  • 1, 路由器警报标签 — 当收到数据包时,顶层标签值为 1 ,则发送到本地软件模块进行处理。

  • 3, 隐式空标签 - 此标签在信号协议 (RSVP) 中仅用于请求下游交换机弹出的标签。它永远不会真正出现在封装中。值为3的标签不得在数据包中用作实际标签。没有与此标签一起使用的有效负载类型(IPv4 或 IPv6)。

MPLS 标签操作

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

  • 开关

  • 弹出

  • 换位

注:

对于 QFX 和 EX4600 设备可以从标签堆栈中粘贴(推动操作)到标签堆栈或卸下(pop 操作)的标签数量,有一种限制。

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

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

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

Pop 操作从数据包的开头处删除标签。删除标签后,TTL 将从标签复制到 IP 数据包标头中,底层 IP 数据包将作为本机 IP 数据包转发

交换操作会从 IP 数据包中删除现有 MPLS 标签,并根据以下内容将其替换为新 MPLS 标签:

  • 传入接口

  • 标签

  • 标签转发表

图 4显示一个 IP 数据包,其中没有在入口 PE 交换机的客户边缘接口(ge/0/1)上到达的标签。入口 PE 交换机检查数据包,识别该数据包的目标作为出口 PE 交换机。入口 PE 交换机将标签100应用于数据包,并将 MPLS 数据包发送至其传出 MPLS 核心接口(ge-0/0/5)。MPLS 数据包通过提供商交换机在 MPLS 通道上传输,其在接口 ge-0/0/5 带有标签100的位置上到达。提供商交换机使用标签200交换标签100,并将 MPLS 数据包通过其核心接口(ge-0/0/7)转发至隧道上的下一跳跃,即出口 PE 交换机。出口 PE 交换机通过其核心接口(ge-0/0/7)接收 MPLS 数据包,删除 MPLS 标签,然后将 IP 数据包从其客户边缘接口(ge-0/0/1)发送至超过隧道的目的地。

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

图 4显示了数据包在从入口 PE 交换机到出口 PE 交换机的一个方向上传递时的路径。但是,MPLS 配置还允许信息流沿相反方向行进。因此,每个 PE 交换机都作为入口交换机和出口交换机运行。

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

默认情况下,交换机启用倒数第二跳弹出(PHP),通过 IP 覆盖 MPLS 配置。借助 PHP,倒数第二提供商交换机负责弹出 MPLS 标签并将信息流转发至出口 PE 交换机。然后,出口 PE 交换机执行 IP 路由查找并转发信息流。这将减少出口 PE 交换机上的处理负载,因为它不负责弹出 MPLS 标签。

  • 默认通告标签为标签3(隐式空标签)。如果已公布标签3,倒数第二跳转交换机将删除标签,并将数据包发送至出口 PE 交换机。

  • 如果启用终极跳弹出,则会通告标签0(IPv4 显式 Null 标签),并且 LSP 的出口 PE 交换机将删除该标签。

了解 MPLS 标签经理

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

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

以下功能已通过设备上配置enhanced-ip的命令进行了优化:

  • 允许您定义由分段路由全局块(SRGB)用于 IS-IS 路由协议的系统宽全局标签池。

  • 如果平台vrf-table-label能够支持规模,则将空间增加至至少16000。

  • 允许您指定将由静态 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 标签数据包,其 top 标签已被倒数第二路由器弹出。出口路由器无法接收使用标签0或2的标签堆叠数据包。它通常从倒数第二路由器请求标签3。

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

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

MPLS Lsp 的抽象跳跃概述

抽象跳跃是现有流量工程约束(如管理组、扩展管理组和共享风险链路组(SRLGs))的逻辑组合,它会产生一个用户定义的路由器组或集群,可序列化,用作设置 MPLS 标签交换路径(LSP)的约束。抽象跳跃克服了现有路径约束规范的局限性,为 MPLS 的信息流工程功能提供了多项优势。

了解抽象跳跃

可将设置 MPLS LSP 的路径约束指定为真实跳跃形式的单个路由器或作为一组路由器,方法是管理组或颜色规范。当路径约束使用实际跳跃(严格或松散)时,LSP 沿指定顺序路由器(例如 R1、R2、 ...Rn)。当路径约束使用管理组或颜色规范时,将使用满足指定标准的一组路由器来设置 LSP,而无需选择特定路由器,与实跳约束不同,这种方式之间不存在序列约束中使用的路由器。

实跳跃约束的缺点是在发生故障的情况下,如果有任何路由器跃点停机或连接接口的带宽利用率已饱和,则路径将关闭(或依赖于本地或端对端保护)。虽然其他备用路由器可能可用于恢复或设置 LSP,但 LSP 仍然停机,直到操作员将另一个路由器跳跃顺序配置为路径约束,以使该路径再次启动或脱离保护路径。

管理组或颜色规范约束克服了在一定程度上对实跳跃约束的限制。在此处,当组中的一个路由器停机或其链路容量饱和时,设置 LSP 不会受到影响。这是因为没有事先选取要在路径约束中使用的下一个跳跃路由器,而 LSP 则在具有相同管理组或颜色的其他路由器上设置,而无需运营商干预。但是,路由器组约束的缺点是不能在跳跃约束之间指定序列。

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

路径可将实和抽象跳跃组合用作约束。使用抽象跳跃时,无需指定一系列路由器(R1、R2、 ...Rn)与实际跳跃一样,您可以指定一组有序路由器组或抽象跃点(G1、G2、 ...Gn) 作为路径约束。例如,每个指定的路由器组 Gi 都由一组用户定义的路由器组成 — R1、R2、Rj、 ...Rn。当组中一个路由器关闭时,表示组 Gi中的路由器 Rj ,另一个路由器(即路由器 Rk),来自同一组G的路由器 I 通过路径计算来替换发生关闭的路由器(即路由器 Rj)。这是因为路径约束是有序列化的,必须经过一个抽象跳跃序列,而不是单个路由器序列。

使用抽象跳跃的优势

抽象跳跃是用户定义的路由器组。与使用一系列单独路由器的实数跳跃约束类似,抽象跳跃序列可用于设置标签交换路径(LSP)。使用抽象跳跃可为顺序路径约束提供弹性。使用抽象跳跃的另一个好处包括:

指定约束组合序列

目前,可以指定可通过满足多个属性的链路的路径。此类路径约束称为复合约束组合;例如,包含绿色低延迟链路的约束(Ci),也不包括 SRLG 北部。

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

如果需要通过每个区域中具有不同链接相关性(特征)要求的地理区域序列建立路径,则会产生此类排序的复合约束组合。抽象跳跃通过允许计算节点将每个约束组合(例如 Ci)与用户定义的路由器组(即抽象跃点)映射来满足此要求。

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

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

作为一种解决方法,可以创建新的管理组来识别没有 SRLG west 的所有此类红色链路,并将所有相关链路与该管理组进行相应配置。这种方法的缺点是需要在整个网络中进行配置更改,以反映新的管理组成员关系。

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

组合集中式和分布式路径计算模式

MPLS 路径的信息流工程可以通过分布式计算实现,也可使用集中式控制器进行计算路径。计算类型的组合称为混合计算模式。混合计算方法的主要功能是集中化控制器(称为路径计算元素 (PCE))能够松散地指定按路径到入口路由器的路径计算指令(称为路径计算客户端 (PCC)以及入口路由器使用它作为路径计算输入的能力。

抽象跳跃序列可用作集中式控制器的准则。抽象跳跃为控制器提供了在路径约束和属性中编织的灵活性。这还允许控制器在约束中的顺序元素中构建。控制器无需指定路径需要采用的每个跳跃,从而为入口路由器留出空间,以便在准则或指令的限制范围内操作。

表 1列出了混合计算模式的主要功能,并可将此方法与当前路径计算方法进行比较。

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

功能

分布式受限最短路径优先

集中的受限最短路径优先

混合受限最短路径优先

响应大型网络的频繁变化

 

使用全局视图的复杂路径计算

 

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

 

弹性(无单点故障)

 

提高

 

响应实时(接近)时间内的网络负载

 

现场测试(与早期采用)

 

抽象跳跃 Junos OS 实施

Junos OS 版本17.1 中引入了顺序感知抽象跳跃功能。以下各节介绍 Junos OS 中的抽象跳跃的实施:

定义抽象跳跃

抽象跳跃是一组路由器,用户可将其定义为用于设置标签交换路径(LSP)。用户可以通过定义异类链路属性的逻辑组合或称为构成属性的约束,来控制要包括在组中的路由器。具有满足定义的构成属性的链路的路由器将使其成为代表抽象跳跃的路由器组。

具有抽象跳跃的构成属性映射对于计算节点或要设置的 LSP 的入口而言是本地的。因此,抽象跳跃没有关联的内部网关协议更新或信号协议扩展,并且在网络中实施抽象跳跃并不需要传输节点上的新配置。

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

  • include-any-list—如果链路中任何指定的构成属性都为 true,则 Link 将满足构成列表要求。

  • include-all-list—如果所有指定的构成属性对链路均正确,则 Link 满足构成列表要求。

  • exclude-all-list—如果指定的所有元素属性对链路均不为真,则 Link 满足此构成列表要求。

  • exclude-any-list—如果至少一个指定的元素属性对链路不是真,则 Link 满足构成列表要求。

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

  • OR— 抽象跳跃定义中至少一个构成列表参考的链路必须满足作为抽象跳跃一部分连接的节点。

  • AND—抽象跳跃定义中所有构成列表引用都必须通过作为抽象跳跃一部分的链接满足。

示例抽象跳定义

例如,抽象跳跃 hopA 的定义如下:

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

  • hopA—(管理组红色和 Srlg 南||(管理组绿色||Srlg north)的)位置:

    • 管理组红色Srlg south 属于包含所有构成列表(此示例中为 listA1)。

    • 管理组绿色Srlg north 属于包含所有构成列表(此示例中为 listA2)。

    • || 是 OR 运算符。

抽象跳跃 hopA 的配置如下:

  • hopA configuration

Verifying Abstract Hop Configuration

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

在此,output 字段Credibility指示与使用中的内部网关协议相关联的信誉。

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

抽象跳跃 hopA 用于低延迟和 SRLG west,而抽象跳跃 hopB 用于排除 SRLG 西。图 5显示这些抽象跳跃的入口视图。

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

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

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

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

或者,当 path 约束使用严格或松散抽象跳跃时,约束计算由每个 pass 处理约束列表中的后续抽象跳跃的过程组成。在这种情况下,一个以上的节点必须是 pass 的目的地。这组节点称为通过的可行路由器集。

抽象跳跃使用以下内容遍历成员节点:

  • 满足定义的要素属性逻辑组合的链接

  • 任何类型的链接

遍历成员节点的抽象跳跃方法由定义路径约束时使用抽象跳跃资格(严格、松散和松散链路)控制。例如,抽象跳跃 hopA 使用不同的限定符进行不同的处理:

  • Strict— 在约束列表中最后一个处理跳跃后,路径将仅遍历包含抽象跳跃跳跃A 成员资格的链路或节点,到达具有跳跃A 成员资格的节点,这是处理下一个抽象跳跃的可行起点。

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

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

    换句话说,只有当约束中的任何可行路由器通过关联的抽象跳跃成员链路到达时,才称类型为松链路的抽象跳处理。

抽象跳转规范示例

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

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

路径约束的用途

抽象跳限定符

配置

可行路由器集

相似性

遍历作为 hopA 成员的节点仅占用满足 hopA 的链接。

严格

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

抽象 hopA 的所有成员。也就是说,A1、A2...An.

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

遍历作为 hopA 成员但不一定能满足 hopA 的链路的节点

严格

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

抽象 hopA 的所有成员。也就是说,A1、A2...An.

无(任何类型的链接)。

通过至少获取一个满足 hopA 的链接来遍历作为 hopA 成员的节点。

松散链路

注:

松散链路限定符被视为松,后跟相同抽象跳跃的严格。换句话说,hopA 松链路与 hopA 松和 hopA 严格相同。

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

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

抽象 hopA 的所有成员。也就是说,A1、A2...An.

注:

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

在这种情况下,路径约束中有两个与 hopA 相关的计算传递。这两个刀路的相似性为:

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

  • 通过 2—hopA(仅选择满足抽象跳跃A 的链路)。

遍历作为 hopA 成员的节点,仅采用满足 hopA 的链接,随后是仅使用满足 hopB 的链接的节点。

严格

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

    注:

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

  • hopB — 抽象跳跃B 的所有成员。也就是说,B1、B2...Bn.

  • hopA—hopA(仅选择满足抽象跳跃A 的链路)。

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

遍历作为 hopA 成员的节点仅占用满足 hopA 的链接,随后是 hopB 采用任何种类的链路的节点。

严格且松散

[edit protocols mpls]
Path path_hopA_s_hopB_l {
    hopA abstract strict;
    hopB abstract loose;
}
  • hopA — 抽象跳跃A 的所有成员。也就是说,A1、A2...An.

  • hopB — 抽象跳跃B 的所有成员。也就是说,B1、B2...Bn.

  • hopA—hopA(仅选择满足抽象跳跃A 的链路)。

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

通过采用任何类型的链接来遍历作为 hopA 成员的节点,随后是 hopB 采用任何种类的链路的节点。

严格

[edit protocols mpls]
Path path_hopA_l_hopB_l {
    hopA abstract loose;
    hopB abstract loose;
}
  • hopA — 抽象跳跃A 的所有成员。也就是说,A1、A2...An.

  • hopB — 抽象跳跃B 的所有成员。也就是说,B1、B2...Bn.

无(选择任何链接)。

通过采用任何类型的链接来遍历作为 hopA 成员的节点,后跟作为 hopB 成员的节点,只需占用满足 hopB 的链路。

松散且严格

[edit protocols mpls]
Path path_hopA_l_hopB_s {
    hopA abstract loose;
    hopB abstract strict;
}
  • hopA — hopA 和 hopB 成员的十字路口。

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

  • hopB — 抽象跳跃B 的所有成员。也就是说,B1、B2...Bn.

  • hopA — 无(选择任何链路)。

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

图 6分别显示具有松散、严格、松散抽象跳跃限定符的抽象跳跃 hopA、hopB 和 hopC 的路径约束。

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

对于抽象跳跃,"受约束的最短路径优先" 如下:

  • 与 hopA 关联的 Pass 1

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

    • 亲和 - 无(因为跳跃A 松散)。

  • 与 hopB 关联的 Pass 2

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

    • 亲和 - 仅选择符合跳跃B 的链路(作为跳跃B 是严格抽象跳跃)。

  • 与 hopC 相关的 Pass 3

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

    • 亲和 - 无(作为跳跃C 是松散的抽象跳跃)。

路径计算和回溯

在每个受限制的最短路径首次传递时,如果使用满足通过关系发现的链接到达可行路由器集的最近的路由器,则称其与传递相关联的抽象跳跃被处理。因此,可行的路由器将用作下一步约束传递的起点。如果任何约束通过失败,并且不是将入口路由器用作启动路由器的限制,则刀路将 backtracked 至前一阶段并重复此过程。

回溯示例

当受限最短路径第一个通过 p(而非第一个)发生故障时,充当当前通道 p 开始之前的通过 (p – 1) 的退出路由器在上一个通过 (p – 1) 的可行路由器组内不工作。然后,将重新执行前一个通过 (p – 1),以从可用路由器集查找 pass p – 1 的下一个最佳出口路由器或目标。

因此,路由器确定为 pass p 的新启动路由器。只要出现故障,并且有可行的路由器未被探索,就会重复此过程。

show mpls lsp abstract-hop-computation name lsp-name命令提供每个 LSP 涉及的各种计算传递,以及每个处理的合格出口路由器。命令输出还为每个刀路提供相似性,并显示为 pass 选择的当前起始路由器。对于每个可行的路由器,将显示回溯的状态,其中可能是有效的或不合格的。

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

示例:为 MPLS Lsp 配置抽象跳跃

此示例说明如何为 MPLS 标签交换路径(Lsp)配置抽象跳跃。抽象跳跃组合现有流量工程约束的主要功能,使用户能够为 MPLS Lsp 指定顺序感知和弹性路径约束。

要求

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

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

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

开始之前:

  • 配置设备接口。

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

  • 在所有设备上配置 RSVP。

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

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

概述

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

抽象跳跃是现有流量工程约束(如管理组、扩展管理组和 SRLGs)的逻辑组合,以及真正跳跃的排序属性。因此,当在路径约束中使用一个抽象跳跃序列时,就会在满足称为 "构成属性" 的链路或节点属性逻辑组合的路由器组中获得排序。

要配置抽象跳跃:

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

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

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

在为 MPLS Lsp 配置抽象跳跃时,请遵循以下准则:

  • 只有设备的主路由实例才支持抽象跳转。

  • IPv6 目标在抽象跳约束中不受支持(仅 IPv4 目标有效)。

  • 抽象跳跃可为严格约束或松散限制。

  • Junos OS 版本17.1 中的抽象跳跃支持仅为区域内 MPLS Lsp 提供,不用于域间或区域间 Lsp。

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

  • 抽象跳跃不能计算 Lsp 的整体最短路径。

  • 在同一路径约束中,不能多次引用抽象跳。

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

  • 抽象跳转约束规范不影响整体网络性能。但是,受限最短路径首次计算所用的时间将增加抽象跳配置。抽象跳跃 LSP 的设置时间比设置不使用抽象跳跃配置的 LSP 所花的时间更多。

拓扑

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

设备 R0 和 R3 在同一自治系统(即 64496)AS配置。MPLS LSP 通过设备 R0 通过 Device nonstandby 配置,具有一个主路径和两个辅助路径(备用和辅助路径)。

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

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

配置

CLI 快速配置

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

设备 R0

设备 R1

设备 R2

设备 R3

设备 R 4

设备 R5

操作

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅Cli 用户指南中的使用配置模式中的 CLI 编辑器

要配置设备 R0:

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

  2. 配置设备 R0 上的接口,包括回传接口。

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

  4. 配置 SRLG 定义。

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

  6. 配置管理组定义。

  7. 在设备 R0 的所有接口上配置 MPLS,不包括管理接口。

  8. 将设备 R0 的接口分配给已配置的流量工程属性。

  9. 配置 LSP 连接设备 R0 与设备 R3,并为 LSP 分配主要和次要路径属性。

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

  11. 创建具有抽象跳定义的构成信息流工程属性的构成列表。

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

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

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

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

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

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

成果

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

针对

确认配置是否正常工作。

验证抽象跳配置

用途

发出show mpls abstract-hop-membership命令以验证设备 R0 上的抽象跳跃定义的成员,其中显示了抽象跳跃成员表。

行动

从操作模式运行show mpls abstract-hop-membership命令。

含义

show mpls abstract-hop-membership命令输出为流量工程数据库节点映射提供抽象跳。此Credibility字段显示与使用中的内部网关协议相关联的信誉值(OSPF)。

验证抽象跳路径计算

用途

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

行动

从操作模式运行show mpls lsp abstract-computation命令。

含义

show mpls lsp abstract-hop-computation命令输出提供每个 LSP 涉及的各种计算传递,以及每个处理的合格退出 devces。命令输出还为每个刀路提供相似性,并显示为 pass 选择的当前启动设备。对于每个可行的路由器(设备),都会显示回溯的状态,其中可能是有效的或不合格的。

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

配置最大 MPLS 标签数

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

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

从 Junos OS Release 19.1 R1 开始,可利用由出口数据包转发引擎(PFE)推送的最大标签数,其中可为 MPLS 下一跳跃推送的标签数量为设备能够推送的标签数。或在输出接口下配置的最大标签(以family mpls较小值为准)。这种支持在带有 MPC 和 MIC 接口的 MX 系列路由器上启用,并使用第三代 Fpc PTX 系列路由器。

增加的标签推送功能对于诸如分段路由流量工程 Lsp 和 RSVP 的弹出和转发 Lsp 等功能很有用。使用 MPLS 下一跃点的所有现有应用程序功能都将继续与增加的标签推送功能一起使用。其中包括:

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

  • 监控实用程序,例如 lspmon 和 LM DM,用于 MPLS Lsp。

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

例如:

注:

当一个接口的最大 MPLS 标签数量被修改时,MPLS 接口将被退回。该接口上的所有 LDP 和 RSVP 会话都将重新启动,从而使该接口上的所有 Lsp 都能摆动。

例如,假设您为提供 VPN 服务的客户配置两层运营商级 VPN 服务。运营商 VPN 是提供商载体(第1层 ISP)和客户运营商(第2层 ISP)之间的两层关系。在载波运营商 VPN 中,提供商为客户运营商提供 VPN 主干网。客户运营商反过来为其最终客户提供第3层 VPN 服务。客户载波将标记的信息流发送到提供商载波,以将其发送到提供商运营商网络另一侧的下一跳跃。这种情况需要三个标签的堆栈:一个用于提供商载波 VPN 的标签、一个用于客户运营商 VPN 的另一个标签,以及一个用于传输路由的第三个标签。

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

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

表 3汇总了标签要求。

表 3: 使用3、4或 5 MPLS 标签的示例情景

所需标签数量

一些

3

运营商 VPN 或带两个标签并快速重新路由的 VPN

4

电信运营商和快速重新路由的组合

5

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

要配置和监控最大标签数:

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

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

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

您可以控制在标签交换路径(LSP)的出口路由器上通告的标签值。默认通告标签为标签3(隐式空标签)。如果已公布标签3,倒数第二中继站路由器将删除该标签,并将数据包发送至出口路由器。通过启用终极跳弹出,标签0(IPv4 显式空标签)将公布。终极跳弹出可确保任何遍历 MPLS 网络的数据包都包含一个标签。

注:

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

要配置 MPLS 以弹出终极跳路由器上的标签,请包含以下explicit-null语句:

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

  • [edit protocols mpls]

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

向 BGP 对等方通告明确的空标签

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

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

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

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

要验证是否为连接的路由通告显式空标签,请使用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 都由一个标签来标识(一个短(20位)、固定长度值,位于 MPLS 标签(32位)的前面。标签用作标签转发表的查找索引。对于每个标签,此表存储转发信息。由于不会对封装的数据包进行额外的分析或查找,因此 MPLS 支持传输数据包有效负载内的任何其他协议。

注:

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

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

图 8: 标签编码标签编码

保留标签

标签范围为0到1048575。0到999999标签供内部使用。

部分保留标签(范围为0到15)具有明确定义的含义。以下保留标签由交换机使用:

  • 0,IPv4 显式空标签 - 该值仅在作为唯一标签条目时有效(无标签堆栈)。它指示必须在接收时弹出标签。转发将根据 IP 版本4(IPv4)数据包继续。

  • 1, 路由器警报标签 — 当收到数据包时,顶层标签值为 1 ,则发送到本地软件模块进行处理。

  • 2, IPv6 显式空标签 — 该值仅在作为唯一标签条目时才合法(无标签堆叠)。它指示必须在接收时弹出标签。

  • 3, 隐式空标签 - 此标签在信号协议 (RSVP) 中仅用于请求下游交换机弹出的标签。它永远不会真正出现在封装中。值为3的标签不得在数据包中用作实际标签。没有与此标签一起使用的有效负载类型(IPv4 或 IPv6)。

交换机上 MPLS 标签操作

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

  • 开关

  • 弹出

  • 换位

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

Pop 操作从数据包的开头处删除标签。删除标签后,TTL 将从标签复制到 IP 数据包标头中,底层 IP 数据包将作为本机 IP 数据包转发

交换操作会从 IP 数据包中删除现有 MPLS 标签,并根据以下内容将其替换为新 MPLS 标签:

  • 传入接口

  • 标签

  • 标签转发表

图 9 显示了未在入口 PE 交换机的客户边缘接口 ( ) 上到达的标签的 IP ge-0/0/1 数据包。入口 PE 交换机检查数据包,识别该数据包的目标作为出口 PE 交换机。入口 PE 交换机将标签 100 应用于数据包,并将MPLS数据包发送到其传出MPLS核心接口 ( ge-0/0/5 )。MPLS数据包通过提供商MPLS交换机在 MPLS通道上传输,到达带有标签 ge-0/0/5 100 的接口。提供商交换机将标签 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 交换机都作为入口交换机和出口交换机运行。

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

默认情况下,交换机启用倒数第二跳弹出(PHP),通过 IP 覆盖 MPLS 配置。借助 PHP,倒数第二提供商交换机负责弹出 MPLS 标签并将信息流转发至出口 PE 交换机。然后,出口 PE 交换机执行 IP 路由查找并转发信息流。这将减少出口 PE 交换机上的处理负载,因为它不负责弹出 MPLS 标签。

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

  • 默认通告标签为标签3(隐式空标签)。如果已公布标签3,倒数第二跳转交换机将删除标签,并将数据包发送至出口 PE 交换机。

  • 如果启用终极跳弹出,则会通告标签0(IPv4 显式 Null 标签),并且 LSP 的出口 PE 交换机将删除该标签。

发布历史记录表
版本
说明
19.1R1
从 Junos OS Release 19.1 R1 开始,可利用由出口数据包转发引擎(PFE)推送的最大标签数,其中可为 MPLS 下一跳跃推送的标签数量为设备能够推送的标签数。或在输出接口下配置的最大标签(以family mpls较小值为准)。这种支持在带有 MPC 和 MIC 接口的 MX 系列路由器上启用,并使用第三代 Fpc PTX 系列路由器。
14.2
从 Junos OS 版本14.2 开始,混合模式机箱中支持熵标签,其中无需增强 ip 配置即可配置熵标签。