IS-IS 网络中的 SRv6 网络编程概述
SRv6 网络编程的优势
SRv6 网络编程在 IPv6 网络中具有以下优势:
-
无缝部署:网络编程完全依靠 IPv6 标头和标头扩展来传输数据包,无需 MPLS 等协议。这简化了部署,无需在核心 IPv6 网络中进行任何重大硬件或软件升级。
-
灵活部署:即使中转路由器不支持 SRv6,SRv6 入口节点也可以传输数据包。这样就无需在 IPv6 网络中的所有节点上部署分段路由。
-
单设备通用性:Junos OS 在单个分段标识符 (SID) 上支持多种功能,并且可以在插入模式和封装模式下互作。这允许单个设备同时执行提供商 (P) 路由器和提供商边缘 (PE) 路由器角色。
SRv6 网络编程概述
网络编程是网络将网络程序编码为单个网络指令,然后将这些指令插入 IPv6 数据包标头的能力。携带网络指令的 IPv6 数据包会明确告知网络可用于数据包处理的精确 SRv6 节点。网络指令是 SRv6 SID,由 128 位 IPv6 地址表示。SID 以 IPv6 数据包标头的形式通过网络分布。I 除了寻址之外,网络指令还为 SRv6 网络中的每个支持 SRv6 的节点定义特定的任务或功能。
在配备 MPC7E、MPC8E 和 MPC9E 线卡的 MX 系列设备上,您可以在没有 MPLS 数据平面的核心 IPv6 网络中配置分段路由。
此功能对于网络以 IPv6 为主且尚未部署 MPLS 的服务提供商很有用。此类网络仅依靠 IPv6 标头和报头扩展名来传输数据。此功能还有利于需要通过尚不具备分段路由功能的中转路由器部署分段路由流量的网络。在此类网络中,SRv6 网络编程功能可以提供利用分段路由的灵活性,而无需部署 MPLS。
什么是分段路由扩展报头?
分段标识符表示分段路由域中的特定分段。在 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 的另一部分定义在定位器指定的节点上本地执行的函数。RFC 8986 基于IPv6 的分段路由 (SRv6) 网络编程中已经定义了多个功能。但是,IS-IS 中发出的以下功能在 Junos OS 上可用。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:DB8:AC05:FF01:A000:: 其中 2001:DB8:AC05:FF01 表示 64 位定位符,A000 表示 16 位函数:
| 定位器 |
功能 |
| 2001:db8:AC05:FF01 |
A000 |
适用于 SRv6 数据平面的灵活算法
在配置了分段路由的核心 IPv6 域中,您可以定义灵活的算法,根据要求使用不同的参数和链路约束来计算路径。例如,您可以定义一种灵活的算法来计算路径以最小化 IGP 指标,并定义另一个灵活的算法来根据流量工程指标计算路径,从而将网络划分为不同的平面。您可以配置灵活的算法定位器,以沿 SRv6 域中基于约束的路径引导数据包。
要为 SRv6 配置灵活的算法,请参阅 IS-IS 中用于分段路由流量工程的 Fleible 算法
要播发映射到定位器的灵活算法,请在层次结构级别包含[edit protocols isis source-packet-routing srv6 locator]该algorithm选项。映射灵活算法适用于 SRv6 定位器下的端 SID 和端 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 报头中。要在中转路由器启用插入模式,请在层次结构级别包含
transit-srh-insert[edit protocols isis source-packet-routing srv6]该语句。 -
Encap Mode— 在封装模式下,原始 IPv6 数据包作为 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,请在层次结构级别包含
no-reduced-srh[edit routing-options source-packet-routing srv6]该语句。
-
如果在ACX7000平台上配置或删除 no-reduced-srh ,则会重新启动数据包转发引擎 (PFE)。
目前,仅支持 IPv6 的网络不支持命运共享。此外,SRv6 TI-LFA 在计算备份路径时不会考虑共享风险链路组 (SRLG)。有关 TI-LFA 的详细信息,请参阅 了解 IS-IS 使用分段路由的独立于拓扑的无环路备用网络。
SRv6 的 NSR 支持
我们支持 IS-IS 不间断活动路由 (NSR),用于动态经典邻接 End-x SID。切换后,Junos OS 会在活动路由引擎 (RE) 和备份路由引擎 (RE) 上分配相同的动态 SID,以确保主 RE 上动态分配的 SID 不会被重新利用。您还可以将 BGP NSR 用于动态 DT SID。请注意,Junos OS 当前不支持经典动态终端 SID 的 NSR。
IS-IS 中 SRv6 网络编程支持和不支持的功能
IS-IS 网络中的 SRv6 网络编程目前支持:
-
核心 IPv6 和双堆栈。双堆栈支持 IPv4 和 IPv6 传输。
-
IPv4 和 IPv6 有效负载。
| 平台 | 说明 | 支持的 SID 数 |
|---|---|---|
| ACX7000系列路由器 | SRH 支持的最大 SID 数 | 12 |
| 可弹出 (删除) 的最大 SID 数 | 7 | |
| 可插入的最大 SID 数 | 10 | |
| 封装支持的最大 SID 数 | 12 | |
| MX 系列 | SRH 支持的最大 SID 数 | 6 |
| 可弹出 (删除) 的最大 SID 数 | 7 | |
| 可插入的最大 SID 数 | 5 | |
| 封装支持的最大 SID 数 | 6 | |
| End.D(解封装)作支持的最大 SID 数 | 6 | |
| PTX10002-36QDD、PTX10008(Express 5 增强模式) | 可弹出 (删除) 的最大 SID 数 | 7 |
| 可插入的最大 SID 数 | 7 | |
| 封装支持的最大 SID 数 | 7 |
IS-IS 网络中的 SRv6 网络编程目前不支持:
-
定位器前缀的任播。
-
计算备份路径时的共享风险链路组 (SRLG)。
-
带有分段列表的静态 SRv6 隧道。
-
ICMP 和 ICMPv6 错误处理。
-
SRv6 隧道的 SR-流量工程策略配置。
-
灵活算法定位器的冲突解决。如果多个节点共享具有不同算法值的同一定位器前缀,则可能会导致意外的路由行为。
-
End-X-SID 的接口组。
-
为没有 MPLS 的 IPv6 网络配置普通或扩展管理组。这些功能只能在 [edit protocols mpls] 层级配置。