传统 MPLS 用标签栈转发,隧道靠 LDP/RSVP-TE 逐条协商,运维复杂、状态繁多。SRv6 把路径信息直接编码进 IPv6 报文头,用一串「段」(Segment)描述整条路径——源节点一次写入,中间节点无需维护隧道状态。这背后是「源路由」(Source Routing)思想的回归:转发路径由入口决定,网络只是忠实的执行者。
一、Segment Routing 起源
1.1 从标签交换到源路由
MPLS 时代,每条 LSP(标签交换路径)都要在网络中建立状态,控制面复杂:
MPLS 典型状态清单:
LDP 邻居表、RSVP-TE 会话、每隧道的标记状态、每条 LSP 的预留带宽
→ 节点上「状态」越多,运维与故障面越大
Segment Routing 的简化:
路径 = 一个有序的 Segment 列表(标签/SID)
中间节点只看栈顶,无需认识整条路径
状态集中在入口节点,网络其他部分无状态
一句话:Segment Routing 把「全网的路径状态」收敛到「入口的一个列表」,这是它对网络运维最大的解放。
1.2 SR-MPLS 与 SRv6
Segment Routing 有两个载体:
| 载体 | 承载方式 | SID 形态 | 数据面 |
|---|---|---|---|
| SR-MPLS | MPLS 标签栈 | 32bit Label | 复用 MPLS 转发面 |
| SRv6 | IPv6 扩展头 | 128bit IPv6 地址 | 原生 IPv6 数据面 |
| SR-MPLS over IPv6 | 隧道化 | Label 封装在 IPv6 内 | 混合过渡 |
SR-MPLS 报文:
[IP头][MPLS Label 1][MPLS Label 2][Payload]
SRv6 报文:
[IPv6头][SRH(Segment Routing Header)][Payload]
SRH 里携带 SID List:SID1 → SID2 → SID3
二、SRv6 报文头与 SID
2.1 Segment Routing Header(SRH)
SRH 是 IPv6 路由扩展头(Routing Type 4),核心字段如下:
SRH 结构(RFC 8754):
┌────────────────────────────────┐
│ Next Header | Hdr Ext Len │
│ Routing Type=4 | Segments Left │
│ Last Entry | Flags | Tag │
│ Segment List[0](目的 SID) │
│ Segment List[1] │
│ ...(最多 64 个 SID) │
│ TLVs(可选,如 SRH 扩展) │
└────────────────────────────────┘
| 字段 | 作用 |
|---|---|
| Segments Left | 还剩多少段,中间节点据此递减 |
| Last Entry | 段列表中最后一个有效项的索引 |
| Segment List | 完整路径的 SID 序列(倒序存放) |
| Tag | 可选,用于分组/染色 |
SID List 的查找逻辑:
IPv6 目的地址 = Segment List[0](第一个要到达的段)
到达后若 Segments Left > 0:
弹出当前段 → 目的地址更新为下一段 → 继续转发
2.2 SID 的结构与类型
SID 是 128bit 的 IPv6 地址,通常由 Locator + Function 组成:
SID = Locator(64bit) + Function(其余位)
Locator:在 SRv6 域内唯一,标识节点与聚合前缀
Function:标识节点上的具体行为(End / End.X / End.DX6 / End.DT6 ...)
示例:2001:db8:1::1:1
Locator = 2001:db8:1::/64(节点前缀)
Function = 1:1(节点上的行为编码)
| SID 类型 | 行为 | 用途 |
|---|---|---|
| End | 查找下一跳继续转发 | 节点级别联 |
| End.X | 指定出接口转发 | 精确的邻接段 |
| End.DX6 | 剥离 SRH 交给 IPv6 处理 | IPv6 业务解封装 |
| End.DT6 | 查 IPv6 路由表(VRF 内) | VPN 业务(类 MPLS VPN) |
| End.DX4 | 剥离 SRH 交给 IPv4 处理 | IPv4 业务解封装 |
| End.B6 | 进入另一条 SRv6 Policy | 策略拼接/分层 |
2.3 SID 的广告与分配
SID 与 Locator 通过 IGP 扩展通告(IS-IS/OSPF SRv6 Extensions):
IS-IS SRv6 能力通告:
SRv6-Capability Sub-TLV:节点支持 SRv6
SRv6 Locator TLV:通告 Locator 前缀与 SID 空间
SRv6 End SID Sub-TLV:通告 End 行为 SID
SRv6 End.X SID Sub-TLV:通告邻接段 SID
SRv6 Domain 的规划原则:
Locator 全局唯一、可聚合(便于 BGP 只通告一条聚合前缀)
Function 域内唯一,建议用统一编码表管理
SID 分配自动化:NETCONF/Ansible + YANG 模型下发
三、SR-MPLS 与 SRv6 的对比
3.1 数据面差异
SR-MPLS:
转发依赖 MPLS 标签,中间设备需支持 MPLS
IPv4/IPv6 双栈网络里要额外起 MPLS 平面
SRv6:
只用 IPv6 转发,天然支持逐跳 ECMP(按 IPv6 流哈希)
无需 MPLS 标签分发协议,控制面大幅简化
报文开销更大(SRH 128bit×N),MTU 需规划
| 维度 | SR-MPLS | SRv6 |
|---|---|---|
| 数据面 | MPLS 标签 | IPv6 + SRH |
| 控制面 | 需要 IGP SR 扩展 | 需要 IGP SRv6 扩展 |
| 三层 VPN | BGP L3VPN(label) | End.DT6(IPv6) |
| 新协议支持 | 要引入 MPLS 平面 | 复用现有 IPv6 |
| 生态成熟度 | 高(多年部署) | 高(现网加速) |
| 报文开销 | 小 | 大(需调 MTU) |
3.2 为什么还要 SRv6
既然 SR-MPLS 成熟,SRv6 的价值在于:
SRv6 的三个「原生」优势:
1. IPv6 原生:无需部署 MPLS 平面,跟 IPv6 战略一起走
2. 网络可编程:SID 携带业务语义(VPN/TE/业务链合一)
3. 云网协同:Controller 直接下发 SID 列表,路径按需编排
一句话:SR-MPLS 是「优化版的 MPLS」,SRv6 是「IPv6 原生的新数据面」——前者图省事,后者图可编程与长期演进。
四、流量工程与 TE
4.1 SRv6 Policy 与按需路径
SRv6 TE 用 SRv6 Policy 表达显式路径:
SRv6 Policy 组成:
Headend(入口节点)+ Color(业务意图,如 低延迟)
+ Candidate Path(候选路径列表)
+ Binding SID(对外暴露的段标识)
Headend 按 Color 把业务引流到对应候选路径:
Color=100 → 路径 A(走海底光缆,低时延)
Color=200 → 路径 B(走卫星回传,低成本)
# 用 SR Policy 下发一条 TE 路径(FRRouting 示例片段)
$ cat /etc/frr/staticd.conf
srte policy 1 color 100
name low-latency
endpoint 2001:db8:100::1
segment-list primary
exit
srte segment-list primary
index 10 sid 2001:db8:1::1
index 20 sid 2001:db8:2::10
exit
4.2 自动 TE:Segment Routing 的控制器编排
基于 Telemetry(BGP-LS 上报拓扑 + 链路指标)的集中式 TE:
Controller(如 Cisco WAE / 自研 PCE)
├─ 收集 IGP/BGP-LS 拓扑与链路利用率
├─ 计算满足约束的最优路径(带宽/时延/SLA)
├─ 生成 SID List 并下发 Headend
└─ 持续监测,SLA 违约时动态重优化
关键机制:
- Color + 优先级实现业务分级引流
- 带宽预留:用 Segment 的 TE 属性表达
- 弹性:链路故障时快速切换到备份 SID 列表
4.3 与 RSVP-TE 对比
| 能力 | RSVP-TE | SRv6 TE |
|---|---|---|
| 路径状态 | 每跳都要维护 | 只在入口维护 |
| 信令 | 逐跳预留(RSVP 消息) | 无信令,SID 列表携带 |
| 快速重路由 | FRR 旁路 | TI-LFA(拓扑无关) |
| 可扩展性 | 隧道数受限 | 几乎无限制 |
五、SRv6 VPN 与业务链
5.1 EVPN/SRv6 VPN 一体化
SRv6 把 L2VPN/L3VPN 与 EVPN 统一到同一数据面:
CE1 ──PE1(End.DT6 SID)──SRv6 域──PE2(End.DT6)──CE2
PE 用 BGP EVPN 通告 SID + 路由:
- L3VPN:Type-5 路由携带 End.DT6 SID
- L2VPN:Type-2 MAC 路由携带 End.DT2 SID
数据面:PE2 收到带 SRH 的包 → 查 End.DT6 → 转给对应 CE/VRF
一句话:SRv6 让「承载网 + VPN + TE + 业务链」共用一套头,云化网络得以把控制面收敛到 BGP + IGP 两张表。
5.2 Service Function Chaining
业务链(SFC)把流量按顺序穿过安全/优化设备:
传统实现:逐设备改路由 → 状态多、难维护
SRv6 实现:SID List 显式列出每个服务节点
[Edge-SID][FW-SID][WAF-SID][App-SID]
流量按 SID 顺序穿过防火墙 → WAF → 应用入口
六、SRv6 在云网络的应用
6.1 云数据中心 Underlay
云数据中心 CLOS 架构下,SRv6 可作为 underlay 叠加 SDN 控制面:
Leaf/Spine 用 SRv6 承载 VXLAN 或直接 SID 转发:
- 每 Pod 一段 Locator,聚合后全网只需通告少量前缀
- BGP EVPN 通告 VM/VPC 路由 + SID
- 控制器编排 SID List 实现跨可用区、跨云专线引流
优势:
- 去状态化:Spine 不需要识别每个 VPC,只按 SID 转发
- 弹性:新增 Pod 只需分配新 Locator,无需逐跳配置
6.2 多云互联与按需带宽
企业分支 ──专线/云间──► 云网关(SRv6 Headend)
│
Color=实时 → 走低时延路径(云端计算的 TE 结果)
Color=批量 → 走低成本路径
云间互联场景:
云 A 与云 B 之间用 SRv6 Policy 建立多路径
控制器按带宽需求动态调整各路径的流量比例
# 云网关把 VPC 路由与 SID 通告给对端(BGP EVPN 示意)
router bgp 65001
neighbor 198.51.100.1 remote-as 65002
address-family l2vpn evpn
advertise-all-vni
neighbor 198.51.100.1 activate
exit-address-family
七、SRv6 在 5G 承载网的应用
7.1 5G 切片与 Flex-Algo
5G 网络切片需要在同一物理网络里区分不同业务(uRLLC/ eMBB / mMTC)。SRv6 结合 Flexible Algorithm(灵活算法) 实现按约束的最短路径:
Flex-Algo 定义路径计算约束:
Flex-Algo 128:最小 IGP 度量(普通业务)
Flex-Algo 129:最小时延(uRLLC 切片)
Flex-Algo 130:最大可用带宽(视频切片)
SID + Flex-Algo 结合:一个节点可发布多个算法的 End SID
流量按 Color/切片映射到对应算法的 SID List
7.2 5G 回传与切片隔离
5G 回传组网(接入环 → 汇聚 → 核心):
gNodeB ──SRv6 Policy──► UPF(用户面功能)
每个切片分配独立 Color:
uRLLC 切片:Color=低时延,Flex-Algo 129,独立带宽预留
普通上网:Color=默认,走传统最短路径
故障保护:TI-LFA 秒级切换,满足 5G 承载 50ms 收敛要求
八、总结
| 主题 | 核心知识点 | 落地建议 |
|---|---|---|
| 数据面 | SRH 携带 SID List | 规划好 Locator 聚合与 MTU |
| SID | Locator + Function | 用统一编码表管理 Function |
| TE | SRv6 Policy + Color | 控制器编排,避免手工逐跳 |
| VPN | End.DT6/DT4 + EVPN | 与 BGP EVPN 一体化部署 |
| 云网 | 按需 SID List 引流 | 云网关做 Headend 编排 |
| 5G | Flex-Algo + 切片 | 按切片分配 Color 与算法 |
SRv6 是网络可编程从「口号」走向「工程」的关键一步:它把路径、业务与策略都编码进 IPv6 报文,让网络节点回归「无状态转发」的简单本质,把复杂留给入口与控制器。对后端与网络工程师而言,SRv6 意味着云网一体化的控制面底座——无论是多云互联、按需带宽还是 5G 切片,最终都归结为「下发一条 SID List」。理解它的头结构、SID 语义与 TE 机制,就能在这个新数据面上驾驭流量、构建弹性网络。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。