Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解 IS-IS 网络中的 SRv6 网络编程

SRv6 网络编程的优势

SRv6 网络编程在 IPv6 网络中提供以下优势:

  • 网络编程完全依靠 IPv6 标头和标头扩展来传输数据包,消除了 MPLS 等协议。这可确保在核心 IPv6 网络中实现无缝部署,而无需进行任何重大的硬件或软件升级。

  • 即使中转路由器不支持 SRv6,也可以通过 SRv6 入口节点传输数据包,因此无需在 IPv6 网络中的所有节点上部署分段路由。

  • Junos OS 支持在单个段标识符 (SID) 上执行多项功能,并且可以在插入模式和封装模式下进行互作。这允许单个设备同时执行提供商 (P) 路由器和提供商边缘 (PE) 路由器角色。

SRv6 网络编程概述

网络编程是指网络将网络程序编码为单个指令,然后插入到 IPv6 数据包标头中的能力。携带网络指令的 IPv6 数据包会明确告知网络可用于数据包处理的精确 SRv6 节点。网络指令是由 128 位 IPv6 地址表示的 SRv6 分段标识符 (SID)。IS-IS 协议对 IPv6 数据包标头中的网络指令进行编码并通过网络进行分发。除了寻址,网络指令还为 SRv6 网络中每个支持 SRv6 的节点定义特定任务或功能。

注意:

从 Junos OS 20.3R1 版开始,您可以在配备 MPC7E、MPC8E 和 MPC9E 线卡的 MX 系列设备上,在没有 MPLS 数据平面的情况下在核心 IPv6 网络中配置分段路由。

此功能对于网络主要采用 IPv6 且尚未部署 MPLS 的服务提供商很有用。此类网络仅依靠 IPv6 报头和报头扩展来传输数据。此功能还有利于需要通过尚不具备分段路由功能的中转路由器来部署分段路由流量的网络。在此类网络中,SRv6 网络编程功能可以灵活利用分段路由,而无需部署 MPLS。

SRv6 Network Programming Overview

什么是分段路由扩展报头 (SRH)?

分段标识符表示分段路由域中的特定分段。在 IPv6 网络中,使用的 SID 类型是一个 128 位 IPv6 地址,也称为 SRv6 分段或 SRv6 SID。SRv6 将这些 IPv6 地址(而不是 MPLS 标签)堆叠在分段路由扩展报头中。分段路由扩展报头 (SRH) 是一种 IPv6 路由扩展报头。通常,SRH 包含编码为 SRv6 SID 的分段列表。SRv6 SID 由以下部分组成:

  • Locator— 定位符是 SID 的第一部分,由表示特定 SRv6 节点地址的最高有效位组成。定位器与提供指向其父节点的路由的网络地址非常相似。IS-IS 协议在路由表中 inet6.0 安装定位器路由。IS-IS 将分段路由到其父节点,该节点随后执行在 SRv6 SID 的另一部分中定义的功能。您还可以指定与此定位器关联的算法。您可以根据网络要求定义灵活的算法。

  • Function- SID 的另一部分定义在定位器指定的节点上本地执行的功能。在互联网草案 draft-ietf-spring-srv6-network-programming-07draft, SRv6 网络编程中已经定义了几个功能。但是,Junos OS 上提供以下以 IS-IS 发出信号的功能。IS-IS 在路由表中 inet6.0 安装这些函数 SID。

    • End— 用于前缀 SID 的 SRv6 实例化的端点函数。它不允许对外部标头进行解封装以去除 SRH。因此,结束 SID 不能是 SID 列表的最后一个 SID,也不能是没有 SRH 的数据包的目标地址 (DA)(除非与 PSP、USP 或 USD 配置组合使用)。

    • End.X— 端点 X 函数是相邻 SID 的 SRv6 实例化。它是端点函数的变体,具有第 3 层交叉连接到第 3 层邻接数组。

    您可以指定结束 SID 行为,例如倒数第二个段弹出 (PSP)、终极分段弹出 (USP) 或终极分段解封装 (USD)。

    • PSP— 当最后一个 SID 写入目标地址时,具有 PSP 风格的 End 和 End.X 函数会弹出最上面的 SRH。后续堆叠的 SRH 可能存在,但未作为函数的一部分进行处理。

    • USP— 当下一个报头是 SRH 并且没有更多分段时,IS-IS 协议会弹出顶部的 SRH,查找更新的目标地址,并根据匹配表条目转发数据包。

    • USD— 当数据包中的下一个报头是 41 或 SRH 并且没有更多分段时,IS-IS 会弹出外部 IPv6 报头及其扩展报头,查找公开的内部 IP 目的地址并将数据包转发到匹配的表条目。

注意:

定位器和功能的大小灵活,您可以根据需要自定义大小。在定义函数之前,必须配置定位器。每个定位器可以播发多个终端 SID 和终端。与其关联的 X 个 SID。确保定位符和 SID 属于同一子网,以避免提交错误。

例如,可以有一个 SRv6 SID,其中 2001:::d b8:AC05:FF01:FF01: 是定位符,A000:B000:C000:A000 是函数:

表 1:128 位 SRv6 SID

定位

功能

2001::d b8:AC05:FF01:FF01

A000:B000:C000:A000

SRv6 数据平面的灵活算法

在配置了分段路由的核心 IPv6 域中,您可以定义灵活的算法,根据您的需求使用不同的参数和链路约束来计算路径。例如,您可以定义一种灵活的算法来计算路径以最小化 IGP 指标,并定义另一种灵活的算法来基于流量工程指标计算路径,从而将网络划分为单独的平面。您可以配置灵活的算法定位器,以沿着 SRv6 域中基于约束的路径引导数据包。

要为 SRv6 配置灵活的算法,请参阅 如何在 IS-IS 中配置用于分段路由流量工程的灵活算法

要播发映射到定位器的灵活算法,请在[edit protocols isis source-packet-routing srv6 locator]层次结构级别包含该algorithm选项。映射的灵活算法可应用于 SRv6 定位符下的 End SID 和 End-X-SID。

注意:

如果节点参与了特定的灵活算法,则该算法同时适用于 SR、MPLS 和 SRv6 节点。您无法专门为 SR、MPLS 或 SRv6 定义灵活的算法。

对于入口流量,Junos OS 默认使用封装模式。因此,目标需要具有支持 USD 的 SID。灵活算法路径中的其他 SRH 锚点可以是任何类型。

对于插入模式下的传输流量,灵活算法路径的最后一个锚点节点必须具有支持 PSP 的 SID。如果没有支持 PSP 的 SID,IS-IS 不会通过该锚点下载路径。在这种情况下,IS-IS 会使用适当样式的 SID 下载其他 ECMP 路径。

适用于 SRv6 的 TI-LFA

独立于拓扑的无环路备用 (TI-LFA) 可建立与收敛后路径对齐的快速重新路由 (FRR) 路径。支持 SRv6 的节点将单个分段插入 IPv6 标头,或将多个分段插入 SRH。多个 SRH 会显著增加封装开销,有时可能超过实际数据包的有效负载。因此,默认情况下,Junos OS 支持SRH更低的SRv6隧道封装。本地点修复 (PLR) 将 FRR 路径信息添加到包含 SRv6 SID 的 SRH。

TI-LFA 备份路径表示为 SRH 中的一组 SRv6 SID。在入口路由器上,IS-IS 将 SRH 封装在新的 IPv6 报头中。但是,在中转路由器上,IS-IS 会按以下方式将 SRH 插入到数据流量中:

  • Insert Mode— IS-IS在原始IPv6数据包头中插入SRH作为下一个报头,并根据SRH的值修改下一个报头。IPv6 目的地址将替换为分段列表中第一个 SID 的 IPv6 地址,并且原始 IPv6 目的地址作为列表中的最后一个分段包含在 SRH 标头中。要在传输路由器上启用插入模式,请在[edit protocols isis source-packet-routing srv6]层次结构级别包含transit-srh-insert语句。

  • Encap Mode— 在封装模式下,原始 IPv6 数据包被封装并作为 IPv6 in-IPv6 封装数据包的内部数据包进行传输。外部 IPv6 数据包携带带有分段列表的 SRH。原始 IPv6 数据包在网络中传输时未加修改。默认情况下,Junos OS 支持在简化的 SRH 中进行 SRv6 隧道封装。但是,您可以选择以下一种隧道封装方法:

    • Reduced SRH (default)— 使用简化的 SRH 模式,如果只有一个 SID,则不会添加 SRH,并将最后一个 SID 复制到 IPV6 目标地址中。您不能使用减少的 SRH 在 SRH 中保留整个 SID 列表。

    • Non-reduced SRH— 当您希望在 SRH 中保留整个 SID 列表时,您可以配置非简化 SRH 隧道封装模式。

      要配置非简化 SRH,请在[edit routing-options source-packet-routing srv6]层次结构级别包含no-reduced-srh语句。

注意:

如果在ACX7000平台上配置或删除 no-reduced-srh ,则会重新启动数据包转发引擎 (PFE)。

注意:

仅 IPv6 网络目前不支持命运共享的配置。此外,SRv6 TI-LFA 在计算备份路径时不考虑共享风险链路组 (SRLG)。有关 TI-LFA 的更多信息,请参阅 了解与 IS-IS 的分段路由无关的拓扑无关无环路备用

SRv6 中的微型 SID 支持

从 Junos OS 23.4R1 版开始,您可以将多个 SRv6 地址压缩为一个 IPv6 地址(微型 SID)。如果数据包需要遍历多个节点,IS-IS 可以使用分段路由标头堆叠 SRv6 SID。这种 SID 堆叠会增加带宽开销和分段路由标头处理开销。使用微型 SID,可以将 SID 列表压缩为单个目标地址,并减少带宽开销。如果需要包含六个以上的 SRv6 SID,请启用 micro-SID 定位器,请注意,如果配置 micro-SID,则无法配置其他参数。从此定位器派生的所有微型 SID 的长度与默认微型 SID 长度 (16) 的长度相同。

要配置 micro SID,请在[edit routing-options source-packet-routing srv6 locator][edit routing-options source-packet-routing srv6] 层次结构级别包括 micro-sidblock 语句。

TI-LFA、微环避免、Flex Algo 和 IS-IS MT 中的 Micro SID 支持

从 Junos 23.4R1 版开始,我们扩展了在拓扑无关的无环路备用 (TI-LFA)、微环路避免和灵活算法 (flex algo) 路径计算中将 SRv6 地址压缩为单个 IPv6 地址 (micro-SID) 的支持。从此版本开始,您还可以为微段标识符 (micro-SID) 配置算法,以促进新的扩展功能。我们还支持 TI-LFA 中的 IPv6 单播拓扑(IS-IS MT 的一部分)、微环避免和 Flex 算法计算。

要使 Flex 算法能够在传输类路由信息库 (RIB) 中安装入口路由,请在[edit routing-options flex-algorithm id]层次结构级别配置语use-transport-class句。

SRv6 IS-IS 的 NSR 支持

从 Junos OS 24.4 R1 版开始,我们支持用于动态微邻接 SID 和动态经典邻接 End-x SID 的 IS-IS 不间断活动路由 (NSR)。切换后,Junos OS 会在活动 RE 和备份 RE 上分配相同的动态 SID,以确保在切换后不会将主 RE 上动态分配的 SID 用于其他目的。

IS-IS 中 SRv6 网络编程支持和不支持的功能

IS-IS 网络中的 SRv6 网络编程目前支持:

  • 核心 IPv6 和双堆栈。双堆栈支持 IPv4 和 IPv6 传输。

  • IPv4 和 IPv6 有效负载。

  • 在入口路由器的简化模式下最多有 6 个 SID。

  • 传输路由器中最多有 7 个 SID。

IS-IS 网络中的 SRv6 网络编程当前不支持:

  • 定位器前缀的任播。

  • 计算备份路径时的共享风险链路组 (SRLG)。

  • 带有分段列表的静态 SRv6 隧道。

  • ICMP 和 ICMPv6 错误处理。

  • SRv6 隧道的 SR-TE 策略配置。

  • 灵活算法定位器的冲突解决方案。多个节点共享同一定位器前缀和不同的算法值可能会导致意外的路由行为。

  • End-X-SID 的接口组。

  • 为没有 MPLS 的 IPv6 网络配置普通或扩展管理组。这些功能只能在 [编辑协议 mpls] 层次结构级别进行配置。