Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
本页内容
 

分段路由

总结 瞻博网络云原生路由器支持分段路由(SR-MPLS 和 SRv6)。阅读本主题可了解支持的功能。

分段路由 (SR) 是源路由的一种现代变体,它通过从中间路由器中移除网络状态信息,而是将路径状态信息添加到转发平面的数据包标头中来简化网络。当数据包到达 SR 入口节点时,入口节点会使数据包服从策略。该策略将数据包与其目标的 SR 路径相关联。SR 路径是一个有序的分段列表,用于将 SR 入口节点连接到 SR 出口节点。此 SR 路径可以设计为满足任意数量的约束,例如链路带宽、最小路径延迟等。

分段路由可以在转发平面中利用 MPLS 或 IPv6。当分段路由使用 MPLS 转发平面时,该平面称为 SR-MPLS。SR-MPLS 支持 IPv4 和 IPv6 底层网络。当分段路由利用 IPv6 转发平面时,它称为 SRv6。 查看 SR-MPLS Day One 手册SRv6 Day One 手册 ,了解更多详细信息。

分段路由可作为一种传输隧道技术,用于为基于网络功能虚拟化 (NFV) 的新一代电信云、5G、云 WAN 和内容分配网络 (CDN) 实现数据中心互连。它可以在以下用例中提供多种优势:

  • 流量工程 — 分段路由可根据网络条件提供高效、动态的流量定向,以实现负载平衡、避免拥塞和更好地利用带宽。这将提高网络性能和用户体验。

  • 网络切片 — 分段路由通过使不同服务或租户能够在同一物理基础架构上共存来创建虚拟化网络切片。每个网络切片都可以拥有自己的转发策略和资源,从而为不同的应用提供增强的隔离和灵活性。

  • 服务功能链 — 分段路由支持灵活、动态的服务功能链,其中数据包遍历一系列网络服务,如防火墙、负载平衡等。它通过定义特定的数据包流路径,简化了服务部署,并实现了按需服务链。

  • 移动网络 — 分段路由通过实现高效的路径选择和更低的延迟,优化了移动网络的流量路由和切换过程。

SR-MPLS

JCNR 支持将 SR-MPLS 用于 IPv4 和 IPv6 底层网络。云原生路由器可以作为发送、接收或中转路由器加入 SR-MPLS 网络。它支持带或不带倒数第二个跃点 (PHP)、带或不带叠加 ECMP 以及显式/隐式 NULL 的 SR-MPLS 实现。从 JCNR 24.1 版开始支持分段路由 灵活算法 (Flex-Algo)。查看 分段路由 (IS-IS) 了解更多信息。

在 JCNR 上配置 SR-MPLS

请考虑以下拓扑:

我们希望在此网络中实现分段路由。PE1 是入口 JCNR 节点,P 是中转 JCNR 节点,而 PE2 是出口 JCNR 节点。我们将为所有节点配置一个通用分段路由全局块 (SRGB) 范围。系统会为所有节点分配一个用于 IPv4 和 IPv6 的分段 ID(节点 SID)。

注意:

使用 configlet 资源 来配置 cRPD pod。

JCNR 入口 (PE1) 配置

使用以下配置配置 JCNR 入口 (PE1) 路由器:

  1. 配置接口:

  2. 配置 IS-IS:

  3. 配置路由选项:

  4. 在接口上配置 MPLS 协议:

  5. 配置 BGP 邻接方:

  6. 配置 SRGB 的起始标签和索引范围:

  7. 配置 IPv4 和 IPv6 节点分段 ID:

  8. (可选)配置显式 null 标签:

JCNR 传输 (P) 配置

使用以下配置配置 JCNR 传输 (P) 路由器:

  1. 配置接口:

  2. 配置 IS-IS:

  3. 配置路由选项:

  4. 在接口上配置 MPLS 协议:

  5. 配置 SRGB 的起始标签和索引范围:

  6. 配置 IPv4 和 IPv6 节点分段 ID:

JCNR 出口 (PE2) 配置

使用以下配置配置 JCNR 出口 (PE2) 路由器:

  1. 配置接口:

  2. 配置 IS-IS:

  3. 配置路由选项:

  4. 在接口上配置 MPLS 协议:

  5. 配置 BGP 邻接方:

  6. 配置 SRGB 的起始标签和索引范围:

  7. 配置 IPv4 和 IPv6 节点分段 ID:

  8. (可选)配置显式 null 标签:

验证 JCNR 上的 SR-MPLS 配置

以下命令可用于验证 cRPD 上的 SRv6 配置:

验证 JCNR 转发平面上的配置

验证每个 PE 节点上通过 vRouter 的流量:

SRv6

SRv6 是一种分段路由范例,适用于具有新 IPv6 扩展报头(称为分段路由标头 (SRH))的 IPv6 底层网络。SRv6 利用现有的 IPv6 转发技术对网络编程指令(也称为分段标识符 (SID))进行编码。在 SRv6 中,SID 表示为 IPv6 地址,而 SR-MPLS 则将 SID 编码为 SR-MPLS 标签。SRv6 SID 为 128 位,由以下组件组成:

表 1:SID 组件

元件

描述

定位

标识 SRv6 节点地址的 SID 的第一部分。它是一个网络地址,提供到其父节点的路由,并通过 IS-IS 协议安装在 inet6.0 表中。IS-IS 将分段路由到其父节点,该节点执行在 SID 的第二部分中定义的功能。它的长度为 64 位。

功能

SID 的第二部分,用于定义节点(由定位符标识)执行的功能,例如:

End:前缀 SID 的 SRv6 实例化的端点函数 [RFC8402]

End.X:具有 L3 交叉连接功能的端点,用于相邻 SID 的 SRv6 实例化 [RFC8402]

End.DT4:具有解封装和特定 IPv4 表查找功能的端点,用于全局或 IPv4 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv4 服务)

End.DT6:具有解封装和特定 IPv6 表查找功能的端点,用于全局或 IPv6 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv6 服务)

End.DT46:具有解封装和特定 IP 表查找功能的端点,用于全局、IPv4 或 IPv6 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv4 和 IPv6 服务)。它在 IPv4 和 IPv6 前缀之间共享。

可以通过倒数第二个段弹出 (PSP)、终极段弹出 (USP) 和终极段解封装 (USD) 等类型指定结束 SID 行为。

Function 组件的长度为 16 位。

论点

一个可变长度字段,提供有关转发操作的其他信息。长度最大为 48 位。

SRH 携带 SID。当数据包在网络中传输时,每个节点都会检查 SRH 中的下一个 SID,以确定相应的下一跃点,然后转发该数据包,直到数据包到达目的地。如果需要通过 SRv6 路径中的多个分段来引导数据包,则需要使用 SRH 将 SRv6-SID 堆叠起来,最多可以有 6 个典型的 SRv6-SID。这会带来额外的带宽和处理开销。因此 微型 SID (uSID) 是指将多个 SRV6 地址压缩为一个 IPv6 地址。16 字节 uSID 被编码为微程序或容器指令,在数据包目标地址或 SRH 中携带。它具有由以下格式表示的特定结构:

BBBB:BBBB:<uSID1>:<uSID2>:<uSID3>:<uSID4>:<uSID5>:<uSID6>

其中 BBBB:BBBB/32 表示 SR 域内操作员分配的前缀或块。支持多种前缀长度,包括 /16, /32/48/64 块。块是最常用的 /32 。这些块可以是全局标识符块 (GIB) 或本地标识符块 (LIB)。GIB 表示从专门为 SRv6 部署指定的公共或保留地址空间分配的全局唯一 uSID 范围。LIB 由 SR 域内的特定网络节点分配,并且仅在节点的本地上下文中适用。表示 uSIDx 可以来自 GIB 或 LIB 的单个 16 位 uSID。uSID 实现以下功能:

  • uN:映射到最终目的地的微节点-SID(结束)。

  • uA:具有邻接特定行为的微邻接-SID (End.X)

  • uDT:微服务 SID,即域特定信息(End.DT4、End.DT6、End.DT46)

JCNR 支持以下 SRv6 功能:

表 2:SRv6 支持的功能

功能

笔记

SRv6 带有 uSID 的 L3VPN

uSID 类型:全局 uSID、本地 uSID

目标地址中的 uSID 编码

块和 uSID 大小

支持 /16、/32、/48、/64 块

JCNR SRv6 节点类型和微指令

入口:目标地址中采用 SRv6 封装(不需要 SRH)

传输:如果入口节点为 JCNR,则为 IPv6 转发;如果入口节点为非 JCNR,则向前移动

出口:Decpasulate 并执行 SID 服务功能

SR 端点(函数)

End、End.X、End.DT4、End.DT6 和 End.DT46

uSID 行为

uN, uDT

故障恢复

控制平面启动的故障恢复(替代路径作为下一跃点)

JCNR 支持以下 SRv6 网络编程功能:
表 3:SRv6 支持的功能

特征

描述

通过 IS-IS 的 SRv6 uSID 底层隧道

IS-IS 为播发的定位器提供尽力而为隧道,并在 inet6.3 表中对它们进行编程。

通过 IS-IS 和 ECMP 路径的 SRv6 uSID 底层隧道

IS-IS 为播发的定位器提供尽力而为隧道,并在 inet6.3 表中对它们进行编程。隧道可以有 ECMP 转发路径。

使用 uN SID 播发的 BGP Internet 前缀的路由

使用 uN SID 播发的 BGP Internet 前缀将通过相应的定位符(SRv6 uSID 底层隧道)进行解析。底层路由可以具有单个网关或 ECMP。

使用 uN SID 播发的 BGP 互联网前缀的多路径路由

多个提供边缘 (PE) 路由器可以发起相同的互联网前缀(多宿主),从而在入口 PE 上导致 BGP 多路径。每条多路径路由都通过具有单个网关或 ECMP 的底层 SRv6 隧道进行解析。

使用 uN SID 播发的 L3VPN 前缀的路由

使用 uN SID 播发的 L3VPN 前缀将通过相应的定位符(SRV6 uSID 底层隧道)进行解析。这些底层路由可以有单个网关,也可以有 ECMP。

使用 uN SID 播发的 L3VPN 前缀的多路径路由

多个 PE 可以源自相同的 L3VPN 前缀(多宿主),这可能会导致入口 PE 处的 BGP 多路径。每条多路径路由都通过具有单个网关或 ECMP 的底层 SRv6 隧道进行解析。

通过 Flex 算法 IS-IS 隧道的 BGP 意图路由

Flex 算法 可以通过创建 SRv6 底层隧道的 IS-IS 播发 uSID。带有 uSID 的 BGP 互联网前缀和 L3VPN 前缀可以通过底层隧道进行解析。这些前缀可以是非意图的(没有附加任何颜色社区)。前缀通过安装在 inet6.3 表中的 SRV6 底层隧道进行解析。

具有回退机制的 Flex 算法 IS-IS 隧道上的 BGP 意图路由

Flex 算法 可以通过创建 SRv6 底层隧道的 IS-IS 播发 uSID。带有 uSID 的 BGP Internet 前缀和 L3VPN 前缀可以通过底层隧道解析。这些前缀可以是 intent(带有附加的颜色社区)。前缀通过安装在 junos-rti-tc-<color>.inet6.3 表中的 SRv6 底层隧道进行解析,其中颜色对应于使用前缀播发的颜色社区中的颜色。如果前缀解析未通过 junos-rti-tc-<color>.inet6.3 表进行解析,则可以通过安装在 inet6.3 表中的 flex 算法底层隧道进行解析,从而提供回退机制。

支持对 uN SID 进行编程并基于 uN SID 路由转发数据包

我们支持在 inet6.0 表中对 uN SID 路由进行编程。这有助于转发将 uN SID 作为其目标地址一部分的数据包。请注意,当前不支持具有分段路由标头 (SRH) 的数据包。

支持的 SID 功能

uN SID 移位和查找(类型类型 none

适用于 IPv4 的 uDT

适用于 IPv6 的 uDT

适用于 IPv4 和 IPv6 的 uDT

定位器汇总和泄漏

定位器汇总和泄漏是 SRv6 相对于 SR-MPLS 的一大优势。L1-L2 可以汇总来自其他级别的定位器,并将它们泄漏到另一个级别。即使没有汇总,也可能发生定位器泄漏。

在 JCNR 中配置 SRv6

请考虑以下拓扑:

图 1:拓扑图 Topology Diagram

我们希望通过 SRv6 隧道启用主机 10.1.1.1/32 和 10.2.2.2/32 之间的通信。PE1 是入口 JCNR 节点,P 是中转 JCNR 节点,而 PE2 是出口 JCNR 节点。PE1、P 和 PE2 通过 IS-IS 播发其 uSID(如图所示),并通过 BGP 相互叠加前缀。CE1 发起向入口节点 (PE1) 的数据包流。PE1 使用 SRv6 标头封装源数据包,同时将目标地址设置为出口节点 (PE2) 的 uSID。由于 JCNR 是此拓扑中的入口节点,因此中转节点 (P) 只会转发 IPv6 数据包。出口节点 (PE2) 配置了微服务 SID (uDT),用于解封装数据包并查找特定 IP 表以将数据包路由到 CE2。

JCNR 中 SRv6 的配置包括 IS-IS 中的微 SID 块 配置、 微型 SID 定位器 配置、 微节点 SID (uN) 配置BGP 中的微服务 SID (uDT) 配置

SRv6 配置 JCNR 控制平面。为简洁起见,我们将在此示例中介绍出口 JCNR 节点 (PE2) 的配置。其他节点的配置与此类似。

  1. 配置 micro-SID 块和本地静态 SID 的最大数量(默认值为 0,如果使用静态 uSID,则必须配置):

  2. 配置 micro-SID 定位符:

  3. 在 IS-IS 中配置 micro-node-SID (uN SID) 以通告定位符 TLV 和 micro-node-SID:

  4. 配置微服务 SID 的方法有两种。第一种是仅 BGP,它允许为每个 BGP 实例配置一组 dt4、dt6 和 dt46 uSID。uSID 可以是静态的,也可以是动态分配的。第二种方法是配置导出策略,以指定前缀或定位符使用的微服务 SID,以便从中派生微服务 SID。BGP 通过 non-default 关键字进行配置。下面提供了每种方法的示例。对于一组 dt4、dt6 和 dt46 uSID,只能使用其中一个。

    1. IPv4 服务的静态默认微服务 SID。请注意,静态 uSID 必须在步骤 1 中定义的 maximum-static-sids 范围内:

    2. 为 IPv4 服务设置自动分配的默认微服务 SID:

    3. 使用 BGP 导出策略设置非默认微服务 SID:

  5. 配置 BGP 以播发 SRv6 服务。下面提供了一个家庭 inet 示例:

验证 JCNR 上的 SRv6 配置

以下命令可用于验证 cRPD 上的 SRv6 配置:

验证通过 JCNR 转发平面的数据包流

验证每个 PE 节点上通过 vRouter 的流量:

  1. 入口 SRv6 节点 (PE1)

    请注意,发往 10.2.2.2/32 的流量的下一跃点是具有目标 IP:2001:db8:4600:e001:: (出口节点的 uSID)的 SRv6 隧道

  2. 传输 SRv6 节点 (P)

    请注意,P 仅转发 IPv6 数据包。

  3. 出口 SRv6 节点 (PE2)

    请注意,出口 PE 会在默认表中查找 uSID IPv6 地址。完全匹配的下一跃点配置为 Vrf_Translate。它在指定的 VRF 中查找 10.2.2.2/32 目标 IP 地址,并将数据包路由到 CE2。