Segment Routing Primer — SR-MPLS and SRv6
分段路由入门 — SR-MPLS 和 SRv6
没有每流状态的源路由:SR 如何替换 RSVP-TE、Node-SID 和 Adj-SID 的作用、SRv6 如何对 IPv6 地址中的指令进行编码,以及 SR-TE 在流量工程中的适用范围。
1. RSVP-TE 的问题
RSVP-TE(资源预留协议——流量工程,RFC 3209)在 MPLS 网络中启用显式路径控制,但引入了显着的操作复杂性:
- 每个流状态:每个 LSP 都需要路径上每个路由器的状态(RSVP PATH 和 RESV 消息)。在具有数千个 LSP 的网络中,中转路由器维护着必须不断刷新的巨大软状态表。
- 头端信令:入口(头端)路由器通过 RSVP 发出路径信号。任何拓扑变化都需要重新发信号,从而产生收敛开销。
- 可扩展性:对于全网状,LSP 的数量随着 O(N²) 的增长而增长,并且每个 LSP 消耗每个传输路由器上的 LFIB 条目。
- 快速重新路由复杂性:RSVP-FRR (RFC 4090) 通过预先计算的绕道或设施旁路隧道来保护 LSP——该功能可以工作,但增加了另一层状态。
分段路由(RFC 8402)完全消除了传输节点的每个流状态。源路由器将整个转发路径编码为有序列表段在数据包标头本身中。中转路由器只处理活动段,不需要LSP状态。
2.SR架构(RFC 8402)
A 部分是一条告诉路由器如何转发数据包的指令 - 它可能意味着“转到此节点”、“退出此特定邻接”或“应用此 VPN 查找”。段由段标识符 (SID) 标识。 SID 的有序列表是段列表(或 SID 列表)。活动段在每一跳进行处理;处理完成后,该段将被删除,下一个段将变为活动状态。
存在两个数据平面实例:
- SR-MPLS:SID 是 MPLS 标签。段列表是一个标签栈。向后兼容现有 MPLS 硬件。
- SRv6:SID 是 128 位 IPv6 地址。分段列表携带在分段路由头(SRH,IPv6扩展头)中。 IPv6 原生;无需 MPLS。
3. SR-MPLS:Node-SID、Adj-SID 和 SRGB
SR-MPLS(RFC 8660)定义了两种基本的 SID 类型,由 IS-IS 通告(RFC 8667)或 OSPF(RFC 8665) 作为 TLV 扩展:
| SID类型 | 范围 | 稳定 | 意义 |
|---|---|---|---|
| 节点SID | 全球 (SRGB) | 执着的 | “使用最短的 IGP 路径传送到该节点。”每个路由器的每个环回/路由器 ID 都有一个 Node-SID。 SR 域中的所有路由器都必须对该标签进行编程。 |
| 邻接SID(调整-SID) | 本地(SRLB 或动态) | 短暂的(每个会话) | “将此特定接口转发给此特定邻居。”用于强制数据包到达特定链路,无论最短路径如何。 |
| 任播SID | 全球的 | 执着的 | 由一组节点共享(例如,路由反射器或数据中心 PoP 的任播组)。数据包被递送到最近的成员。 |
这彩色RGB(Segment Routing Global Block)是为全局有效的SID保留的标签范围。常见的默认值是 16000–23999(Cisco、Juniper),但它是可配置的。 Node-SID 编码为指数值(例如,索引 100)并通过将索引添加到 SRGB 基数来解析为标签(例如,16000 + 100 = 标签 16100)。所有路由器必须使用相同的 SRGB 才能使全局 SID 保持一致 - 供应商或配置之间的 SGRB 不匹配会导致标签错误。
SR-MPLS标签栈示例— 通过 R3(显式路径点)从 R1 向 R5 发送流量,避免直接 R1→R5 路径:
Ingress R1 pushes: [Node-SID(R3)] [Node-SID(R5)] R1→R2: outer label = SID(R3), inner = SID(R5) R2→R3: pops SID(R3) (PHP or explicit-null) R3 sees top label = SID(R5); forwards on shortest path to R5 R5 pops SID(R5); delivers to local application
4. SRv6:SID 作为 IPv6 地址
SRv6(RFC 8986)将 SID 编码为 128 位 IPv6 地址,结构如下:
| Locator (e.g., /48) | Function (operator-defined, typically 16 bits) | Argument (remaining bits) |
- 定位器:分配给节点的可路由 IPv6 前缀。中转路由器通常会路由到此前缀。定位器在 IGP 中通告。
- 功能:标识要在 SID 端点执行的特定操作。示例:End(转发到下一个 SID)、End.X(转发出特定邻接)、End.DT4(decap 和 IPv4 表查找 — 用于 IPv4 VPN)、End.DX2(decap 和 L2 交叉连接)。
- 争论:函数的可选附加上下文(例如,熵的流 ID)。
段列表携带在性激素释放激素(分段路由头,RFC 8754) — IPv6 扩展标头,下一个标头 = 43(路由标头),路由类型 = 4。SRH 包含:
- 左段 (SL):指向活动 SID 的段列表索引
- 标签:流分类提示
- Segment List[0..n]:有序的 SID(最后一个 SID 是目的地)
在每个SR感知节点,如果IPv6目的地与本地SID匹配,则该节点执行SID的函数,递减Segment Left,并在转发之前将Segment List[Segment Left]复制到IPv6 DA中。
5. SR-TE 流量工程
SR-TE(RFC 9256— SR 策略架构)将 RSVP-TE LSP 替换为社会责任政策,每个定义为:
- 头端:实例化策略的入口节点
- 颜色:用于将流量(通过 BGP Color 扩展社区)与策略关联的 32 位标识符
- 端点: 目的节点
- 一个或多个候选路径,每个都有一个加权段列表
候选路径由头端计算(使用本地 CSPF/PCE)或由集中式 SR-PCE/PCEP 控制器分发(RFC 5440)或 BGP SR 策略(请参阅RFC 9256§8)。这完全消除了 RSVP 信令平面,同时保留了显式路径控制。
按需下一跳 (ODN)是一项 SR-TE 功能,当带有特定颜色社区的 BGP 路由到达时,头端会自动实例化 SR 策略,无需预先配置 — 为 VPN 和 CDN 前缀启用自动流量引导。
6. SR-MPLS 与 SRv6 与 RSVP-TE
| SR-MPLS | SRv6 | RSVP-TE | |
|---|---|---|---|
| 数据平面 | MPLS标签栈 | IPv6 + SRH 扩展标头 | MPLS标签栈 |
| 传输时的每个流状态 | 没有任何 | 没有任何 | 是(RSVP 软状态) |
| 信令协议 | IGP (IS-IS/OSPF) 扩展 | IGP 扩展 | RSVP-TE(路径/RESV) |
| 硬件兼容性 | 任何 MPLS 硬件 | 需要支持 SRv6 的 ASIC | 任何 MPLS 硬件 |
| 每个数据包的开销 | 每个标签 4 B | 8 + 16n B(具有 n 个 SID 的 SRH) | 0(MPLS标签已在堆栈中) |
| VPN支持 | 通过 MPLS VPN 标签 | 结束.DT4/DT6/DX2 SID功能 | 通过 MPLS VPN 标签 |
| 快速改道 | TI-LFA(拓扑无关,无需预配置) | TI-LFA | RSVP-FRR(预配置旁路) |
| 部署成熟度 | 广泛应用于 SP/DC | 生长; ASIC 支持仍在成熟 | 成熟但衰落 |