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 不匹配会导致标签错误。

Adj-SID 是本地的,并且在重新启动或链路波动后不稳定。切勿在静态 SR 策略中使用 Adj-SID 或将其保留在操作脚本中。将 Node-SID 用于稳定路径,仅在控制器跟踪当前值的动态计算的 SR-TE 路径中使用 Adj-SID。

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-MPLSSRv6RSVP-TE
数据平面MPLS标签栈IPv6 + SRH 扩展标头MPLS标签栈
传输时的每个流状态没有任何没有任何是(RSVP 软状态)
信令协议IGP (IS-IS/OSPF) 扩展IGP 扩展RSVP-TE(路径/RESV)
硬件兼容性任何 MPLS 硬件需要支持 SRv6 的 ASIC任何 MPLS 硬件
每个数据包的开销每个标签 4 B8 + 16n B(具有 n 个 SID 的 SRH)0(MPLS标签已在堆栈中)
VPN支持通过 MPLS VPN 标签结束.DT4/DT6/DX2 SID功能通过 MPLS VPN 标签
快速改道TI-LFA(拓扑无关,无需预配置)TI-LFARSVP-FRR(预配置旁路)
部署成熟度广泛应用于 SP/DC生长; ASIC 支持仍在成熟成熟但衰落

参考

  • RFC 8402— 分段路由架构
  • RFC 8660— 使用 MPLS 数据平面进行分段路由
  • RFC 8665— OSPF 分段路由扩展
  • RFC 8667— 用于分段路由的 IS-IS 扩展
  • RFC 8669— BGP 的分段路由前缀 SID 扩展
  • RFC 8754— IPv6 分段路由标头 (SRH)
  • RFC 8986— IPv6 分段路由 (SRv6) 网络编程
  • RFC 9252— 基于 IPv6 分段路由 (SRv6) 的 BGP 覆盖服务
  • RFC 9256— 分段路由策略架构
  • IETF 春季工作组- NetworkingG 中的源数据包路由(有效的 SR 草案)