大规模企业级骨干网络与全球分布式 Anycast VPN 架构对流量敏捷调度和毫秒级故障自愈有着极高要求。在过去二十年中,多协议标签交换(MPLS)一直是流量工程(Traffic Engineering)与三层虚拟专用网(L3VPN)的技术基石。
然而,传统 MPLS 体系带来了极其繁重的运维复杂度。网络中需要同时运行标签分发协议(LDP)、基于流量工程的资源预留协议(RSVP-TE)以及目标 BGP 会话,迫使沿途所有中继路由器在硬件内存中维持成千上万个软状态。
为消除这一架构冗余,IETF 制定发布了 RFC 8402、RFC 8754 与 RFC 8986,正式确立了基于 IPv6 的分段路由标准(SRv6)。通过将控制平面与转发平面完全统一在原生 IPv6 报文内部,SRv6 实现了无状态源路由、可编程流量编排,并依托 TI-LFA(拓扑无关无环路备份)提供了确定性的 50 毫秒内链路倒换保护。
MPLS 复杂度危机:统一 IPv6 数据平面的演进需求
传统 MPLS 网络将标签转发与底层 IP 路由人为割裂。在现代云网融合与多云互联环境中,这种架构导致了显著的维护瓶颈:
- 协议栈膨胀: 运维团队必须同时维护内部网关协议(OSPF/IS-IS)、用于标签绑定的 LDP、用于路径保护的 RSVP-TE,以及传递用户路由的 MP-BGP。
- 中继节点状态过载: 在 RSVP-TE 机制下,隧道经过的每个中间节点都需要维持专属状态。当全连接网状隧道扩展到上万条规模时,硬件转发表迅速耗尽,拓扑收敛极易出现震荡。
- 封装碎片化: MPLS 报文无法直接穿越公网 IP 传输网,通常需借助额外的 GRE 或 UDP 隧道进行跨域封装,割裂了全链路端到端遥测能力。
SRv6 用标准 IPv6 协议彻底取代了多层嵌套架构。数据包将其转发指令直接编码在精简的扩展报头中,骨干路由器只需按照标准 IPv6 最长前缀匹配(LPM)规则即可线速转发中继流量。
SRv6 网络编程架构:RFC 8986 核心规范
RFC 8986 奠定了网络编程的理论基础:网络转发路径与业务处理可以被抽象为一段有序的指令集合,并直接编码在标准 128 位的 IPv6 地址中。
路由器不再需要针对每条业务建立专有隧道表项,而是由入口网关将整条传输链路与节点行为编码为一组 128 位分段标识符(Segment Identifiers - SID)。当报文流经网络时,具备 SRv6 能力的节点依次读取当前活跃的 SID,执行对应指令,并推进到下一个分段。
128 位 SID 解构:Locator、Function 与 Arguments 组成分析
SRv6 中的 SID 在物理结构上与标准的 128 位 IPv6 单播地址完全相同,其内部逻辑划分为三个核心功能段:
$$ ext{SRv6 SID (128 bits)} = ext{Locator} ,|, ext{Function} ,|, ext{Arguments}$$
- Locator($L$ 位): 分配给特定网络节点的前缀。中间中转路由器即便未开启 SRv6 特性,也能通过常规 IGP(IS-IS 或 OSPFv3)最短路径转发直接将数据包送达该节点。
- Function($F$ 位): 操作码(opcode),定义该节点应当执行的具体指令(如转发至指定物理接口、解封装送入指定 VRF,或交付安全过滤网元)。
- Arguments($A$ 位): 指令执行所需的补充参数,如会话流标识或服务质量等级标记。
例如,在分配了 /64 定位符的前缀下,2001:db8:acad:1:: 用于寻址边缘网关节点,而 2001:db8:acad:1:0042:: 则指示网关执行操作码 0x0042(例如将载荷解封装并注入指定的 VPN 路由表)。
分段路由报头(SRH):RFC 8754 报文交互流程
当一条策略包含多个跳转分段时,RFC 8754 定义了专用的 IPv6 分段路由扩展报头(SRH,Routing Type 4):
+-------------------------------------------------------------------+
| Next Header (8) | Hdr Ext Len (8) | Routing Type (4) | Segments Left (8) |
+-------------------------------------------------------------------+
| Last Entry (8) | Flags (8) | Tag (16) |
+-------------------------------------------------------------------+
| Segment List[0] (128 位 - 最终目的节点 SID) |
+-------------------------------------------------------------------+
| Segment List[1] (128 位 - 中继动作节点 SID) |
+-------------------------------------------------------------------+
| Segment List[2] (128 位 - 初始首跳节点 SID) |
+-------------------------------------------------------------------+
报头中的核心状态字段包括:
- Segments Left(SL): 指向当前活跃分段在列表中的数字索引。
- Segment List: 包含 128 位 IPv6 地址的逆序数组(位于
Last Entry的初始分段最先被处理,位于索引0的最终目的分段最后被执行)。
在传输过程中,外层 IPv6 报头的目的地址始终承载当前活跃的 SID。数据包抵达该节点后,路由器将 Segments Left 减 1,把下一条分段 Segment List[SL] 复制到外层目的 IP,再继续向下游转发。
源路由模式:消除中继网络传输状态
SRv6 将所有的策略控制能力完全下沉到了网络边缘。网络入口节点根据遥测数据、时延指标或服务等级协议(SLA),直接在入口生成并压入对应的 SID 指令列表。
这种源路由模式带来了显著的技术优势:
- 核心骨干完全无状态: 中继路由器仅保留基本的 IPv6 定位符路由,无需维护海量的会话状态、带宽预约信息或 MPLS 标签表。
- 灵活的策略调度: 入口网关通过追加特定节点与链路的 SID,可精确指定报文经过低时延光纤链路或特定清洗中心。
- 天然的向后兼容: 未部署 SRv6 的传统 IPv6 路由器只需依据标准目的 IP 前缀进行转发,支持跨公网和多云网络的渐进式平滑演进。
TI-LFA 快速重路由:无需 RSVP-TE 的 50 毫秒内确定性倒换
骨干物理链路发生闪断时,传统 IP 网络需要数百毫秒进行故障探测、扩散链路状态通告并重新计算拓扑路由。
拓扑无关无环路备份(TI-LFA)技术为任意拓扑结构提供了 50 毫秒以内的确定性硬件级快速重路由:
- 预先离线计算: 路由器基于 Dijkstra 算法,预先针对每个物理出口计算出故障发生后的收敛预期路径。
- 彻底消除微环路: 传统 LFA(RFC 5286)在复杂拓扑中受限于可能发生环路而无法实现 100% 覆盖。TI-LFA 则计算出故障后真正的安全收敛点($Q$ 节点)。
- 分段定向引流: 当主链路中断时,芯片直接向报文附加 SRv6 修复分段,强制流量绕开故障点抵达 $Q$ 节点,再由其平滑送达目的地。
整个故障切换过程由硬件线卡在 50 毫秒以内瞬间完成,消除了瞬态微环路与网络抖动。
SRv6 业务映射:承载 L3VPN 与 Anycast 叠加网络
RFC 9252 规范了 MP-BGP 如何在 SRv6 承载网上传递租户 VPN 业务。BGP 路由更新不再分配传统的 32 位 MPLS 标签,而是直接携带业务 SID:
- End.DT4 / End.DT6: 出口节点剥离外层 IPv6 报头,将内部 IPv4 或 IPv6 报文投递给对应的虚拟路由转发(VRF)实例。
- End.DX4 / End.DX6: 解封装后直接送入指定的点对点客户直连接口。
- Anycast SID: 多个分布式数据中心对外宣告相同的定位符,网络将流量自动导向拓扑距离最近的正常节点。
这一映射机制彻底免除了 LDP 信令开销,实现了不同租户流量的严格硬件级逻辑隔离。
MTU 开销与微段(uSID):规避 IPv6 扩展头膨胀
在 SRH 报头中,每个完整的 128 位 SID 会产生 16 字节的报头开销。若一条复杂路由包含 4 个分段,将增加 72 字节的额外开销。
为防止网络传输中因 MTU 限制产生报文分片,业内普遍采用两项工程优化措施:
- 采用微段技术(uSID): 依托 IETF 报头压缩规范,将多个 16 位或 32 位的分段短指令打包进一个标准的 128 位 IPv6 地址载体中。单个报头可容纳多达 6 条连续转发指令,削减了超过 75% 的扩展头开销。
- 自动化 TCP MSS 钳制: 网关在建立 TCP 连接时动态改写 SYN 协商中的最大段大小,保证终端流量始终处于安全 MTU 阈值之内。
安全考量:在网络入口严格限制 SRv6 可信域
由于 SRv6 将转发控制指令直接编码于目的 IP 中,若外部未授权报文携带内部私有 SID 进入网络,可能引发非法节点越权访问或流量劫持风险。
RFC 8754 与 RFC 8986 严格定义了 SRv6 可信域(SRv6 Trusted Domain):即由单一机构管理、受严格策略保护的私有骨干网络边界。
HMAC 签名验证与 SRH 篡改防范
RFC 8754 第 2.1 节支持在 SRH 报头中嵌入可选的 HMAC TLV 字段。边缘网关通过预共享密钥生成密码学签名:
- 入口节点计算覆盖整个 SID 序列及 IPv6 关键报头的 HMAC 校验值。
- 出口节点或关键安全网关在执行敏感操作前执行密码学校验。
- 任何篡改 SID 或签名缺失的非法数据包均在线速转发层面直接被硬件丢弃。
基于 BCP 38 的边界过滤以阻断外部 SID 注入
网络边界路由器与安全防火墙必须实施严格的访问控制策略:
- 入口阻断: 凡是来自外部对等方或公网、且包含 SRH 或目标为内部定位符前缀的报文,一律予以丢弃。
- 出口剥离: 在报文离开可信域前,必须完全剥离内部 SRH 扩展头,杜绝内网拓扑结构外泄。
- 源地址防伪: 严格遵循 BCP 38 / RFC 2827 实施源地址合法性检查,杜绝伪造内网网关 IP 的欺骗攻击。
RiceGuard Anycast 骨干网:确定性 SRv6 矩阵工程
VPNRice 全球分布式架构依托 RiceGuard 第三层网格,实现各 Anycast 节点跨 Tier-1 运营商的高可用互联。在超大并发的分布式边缘调度中,网络中断可能造成连接断开与延迟剧烈波动。
RiceGuard 深度整合原生 SRv6 体系以保障服务的高可用性与低延迟:
- TI-LFA 亚 50 毫秒保护: 核心节点部署全自动 TI-LFA 机制,在物理链路异常时 35 毫秒内平滑切换至备份光缆路径。
- 无状态流量工程: 动态向 Anycast 数据流中注入微段 uSID,在无需核心路由器保存状态的前提下引导流量绕开拥塞骨干段。
- 平滑优雅迁移动作: 系统在节点维护期间,通过宣告低优先级排空 SID,使用户流量无缝漂移至邻近节点。
- 动态链路状态自检: 遥测系统实时监控全链路 MTU 与路由健康状况。用户可通过 /what-is-my-ip 实时检验自身网络参数。
需要高可靠、低延迟网络连接的用户可在 /download 获取多端客户端。有关多路径 ECMP 哈希极化现象的分析可参考 /news/gre-in-udp-rfc-8086-geneve-ecmp-hash-polarization-vpn,关于 BGP 重启时的路由保护机制请参阅 /news/bgp-graceful-restart-rfc-4724-llgr-anycast-resilience。
实践配置:在 Linux 中配置 SRv6 节点与封装
Linux 内核在 iproute2 工具集中原生集成了 SRv6 网络编程与分段封装能力。管理员可以使用常规网络指令部署 SRv6 路径。
启用 IPv6 转发与分段路由子系统:
在网关 A 上开启 IPv6 报文转发与 seg6 支持:
# 开启系统 IPv6 转发及接口级 seg6 支持
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.seg6_enabled=1
sysctl -w net.ipv6.conf.eth0.seg6_enabled=1
配置入口节点 SRv6 策略封装:
将去往特定目标网段的流量封装进带有 SRH 分段列表的外层 IPv6 报文中:
# 将发往 10.100.0.0/16 的数据包封装进入 SRv6 路径
ip -6 route add 10.100.0.0/16 encap seg6 mode encap segs 2001:db8:beef:2::,2001:db8:acad:1:: dev eth0
该指令指示系统将外出数据包封装在外层 IPv6 头中,第一跳转节点为 2001:db8:acad:1::,最终解封装目的节点为 2001:db8:beef:2::。
在出口节点配置 End.DT4 解封装:
在网关 B 上将定位符绑定到 End.DT4 指令,将解封装后的内部 IPv4 载荷交付给指定 VRF:
# 配置 End.DT4 动作以将载荷投递至对应 VRF
ip -6 route add 2001:db8:acad:1::/64 encap seg6local action End.DT4 vrftable 100 dev eth0
通过遥测验证 SRv6 链路状态:
检查系统中已配置的 SRv6 路由:
ip -6 route show encap seg6
10.100.0.0/16 encap seg6 mode encap segs 2 [ 2001:db8:beef:2:: 2001:db8:acad:1:: ] dev eth0 metric 1024
在物理网卡上使用 tcpdump 捕获携带 Routing Type 4 的 SRv6 报文:
tcpdump -ni eth0 'ip6[6] == 43' -vv
07:18:22.410928 IP6 2001:db8:feed:1:: > 2001:db8:acad:1::: HBH, routing (type 4, segleft 1, [2] 2001:db8:beef:2::, [1] 2001:db8:acad:1::)
遥测输出清晰展示了包含活跃分段索引与 SID 列表的 SRH 结构,证实了确定性源路由机制已在物理网络中稳定运转。



