段路由(Segment Routing,SR)是 IETF 标准化的源路由技术,核心思想是:在报文入站节点预先指定完整转发路径,路径由一系列有序的「段(Segment)」拼接而成;中间转发节点无需维护隧道状态,仅需根据段标识执行简单转发。
根据底层承载的数据平面不同,SR 分为两大技术分支:
SR-MPLS(RFC 8660)在不改变现有 MPLS 数据平面的前提下,用 IGP 扩展替代独立的标签分发协议,实现了标签分发与路由拓扑的统一,是传统 MPLS 网络向 SR 演进的第一阶段。
SID 是段的唯一标识,在 SR-MPLS 中映射为 MPLS 标签,按作用范围分为两大类:
SRGB 是每个节点为全局 SID 预留的一段连续 MPLS 标签范围,作用是将 SID 索引值映射为实际的 MPLS 标签。
实际标签值 = SRGB起始值 + SID索引16000 ~ 23999,全网建议统一 SRGB,保证同一条 Prefix SID 在所有节点上的标签逻辑一致;一条完整的 SR 路径由多个 SID 按顺序组成标签栈,栈顶为当前待处理的段,栈底为最终目的段。源节点一次性压入完整标签栈,中间节点仅处理栈顶标签,无需感知完整路径。
SR-MPLS 彻底摒弃了独立的标签分发协议,控制平面高度简化:
SR-MPLS 的数据平面与传统 MPLS 完全兼容,转发逻辑基于标签栈操作,分为两类典型场景:
用于普通公网隧道承载,等价于 LDP 构建的最短路径 LSP:
用于满足带宽、时延、避障等约束的显式路径转发:
SRv6(RFC 8986)是段路由在 IPv6 网络上的原生实现,彻底抛弃了 MPLS 标签体系,用 128 位 IPv6 地址作为段标识,通过 IPv6 扩展头携带转发路径与业务指令,实现了路由、转发、业务编程的统一。
SRv6 SID 是标准的 128 位 IPv6 地址,逻辑上分为三部分:
| SID 类型 | 功能说明 | 对应传统网络角色 |
|---|---|---|
| End SID | 基础节点段:SL 减 1,更新目的地址为下一个 SID 并转发 | Node SID |
| End.X SID | 邻接段:强制从指定直连链路转发 | Adjacency SID |
| End.DT4 / End.DT6 | 三层终结段:剥离 SRH,将内层 IPv4/IPv6 报文送入指定 VRF 路由 | MPLS VPN 内层标签 |
| End.DX2 | 二层终结段:将报文终结到指定二层广播域 | EVPN L2VPN 标签 |
| End.DX4 / End.DX6 | 三层交叉连接段:点到点三层透传 | VPWS 专线 |
SRH 是 IPv6 的扩展头之一(Next Header=43),是 SRv6 路径的载体,核心字段包括:
SRv6 同样无需额外信令协议,控制平面高度简洁:
以三节点路径「入节点 A → 中转节点 B → 出节点 C」为例,完整转发逻辑如下:
[C的SID, B的SID],插入 SRH;初始 SL=1,IPv6 目的地址设为 B 的 SID;| 对比维度 | SR-MPLS | SRv6 |
|---|---|---|
| 数据平面 | 传统 MPLS 标签转发 | 原生 IPv6 + SRH 扩展头 |
| SID 格式 | 32 位 MPLS 标签(索引+SRGB 映射) | 128 位标准 IPv6 地址 |
| 底层承载 | IPv4/IPv6 双栈 MPLS 网络 | 纯 IPv6 网络 |
| 控制平面 | IGP(IS-IS/OSPF)扩展 | IGPv6 / BGP 扩展 |
| 协议栈复杂度 | 较低,替代 LDP/RSVP-TE | 极低,纯 IPv6 单协议栈 |
| 报文开销 | 小,每段 4 字节标签 | 大,每段 16 字节 SID(可通过 uSID 优化) |
| 标签/地址空间 | 有限,32 位标签 | 无限,128 位 IPv6 地址 |
| 跨域能力 | 仍需传统 MPLS 跨域方案,配置复杂 | 天然跨域,IPv6 可达即可端到端 |
| 业务可编程性 | 弱,仅转发路径控制 | 强,支持丰富的功能定义与业务编程 |
| 商用成熟度 | 极高,大规模商用部署 | 较高,处于规模商用初期 |
| 存量兼容性 | 完美兼容现有 MPLS 网络 | 兼容 IPv6 网络,与 MPLS 网络需网关互通 |
| 核心定位 | 存量 MPLS 网络平滑演进 | 下一代 IPv6+承载网核心技术 |
运营商承载网的技术演进遵循平滑过渡原则,而非断崖式替换:
1传统MPLS(LDP/RSVP-TE) → SR-MPLS → SRv6在 Containerlab 实验环境中,Nokia SR Linux、FRR 8.0+ 版本均已支持 SR-MPLS 与 SRv6,可用于原理验证与功能测试。