摘要

  • RFC 10038 为 SRv6 定位符定义 DHCPv6 身份关联,记录 IAID、定位符结构、首选与有效生命周期、T1/T2、服务器绑定,以及无可用定位符时的明确状态。
  • 客户端收到有效 Reply 后会配置定位符,但本地路由安装与协议通告是另外的动作;本地 SID 分配、多定位符用途和 SID 通告更被明确排除在文档范围之外。
  • Weiqiang Cheng 与 Changwang Lin 担任该 RFC 编辑,Ruibo Han、Daniel Voyer、Geng Zhang 共同署名,Yuanxiang Qiu 为贡献者。这是一份协作标准记录,不是个人发明、运营权或部署成功的证明。

一份定位符租约至少有四个时间问题。什么时候应该回到原服务器续租?什么时候可以寻找其他服务器?什么时候不再首选?什么时候彻底失效?RFC 10038 用 T1、T2、Preferred-lifetime 和 Valid-lifetime 给出答案。

但第五个问题不在这些时钟里:其他路由器什么时候能够到达这个定位符?

这不是规范遗漏,而是系统边界。2026年8月发布的 RFC 10038,把 SRv6 定位符分配纳入 DHCPv6 的事务与租约模型。它新增 IA_SRV6_LOCATOR 身份关联、IA Locator 选项,以及 NoSRv6LocatorAvail 状态码。服务器可以明确表示没有可分配的定位符,客户端也可以把续租、重绑定、释放与同一个 IAID 联系起来。

人物归属也必须保持同样精度。Weiqiang Cheng 与 Changwang Lin 是编辑,Ruibo Han、Daniel Voyer、Geng Zhang 是共同作者,Yuanxiang Qiu 是贡献者。2026年8月31日抓取的 IETF 官方人物页将 Cheng 介绍为中国移动研究院 IP 网络首席架构师、SRv6 Operations 工作组主席,并列出九份 RFC。这些公开资料足以说明他在协作标准工作中的位置,却不能证明中国移动或任何具名运营商已经部署 RFC 10038。

IAID 把租约从清单变成事务

如果只保存一个 IPv6 前缀,许多关键事实会消失。这个前缀属于哪个客户端?通过哪个 relay?由哪个服务器根据什么 pool 和策略分配?是初次 Reply、Renew 还是 Rebind 延长了它?剩余生命周期是多少?

IA_SRV6_LOCATOR 用独立 IAID 标识客户端的一组定位符关联。T1 提醒客户端联系原服务器延长生命周期;T2 之后可以联系其他可用服务器。封装其中的 IA Locator 还携带定位符块、节点、功能与参数部分的长度,以及 Algorithm 值。结构字段让客户端知道获得了什么,而不是从地址外观猜测含义。

同一客户端可以申请多个关联,但 RFC 禁止根据定位符在消息中的顺序推断业务逻辑。低时延与尽力而为等用途若需要不同定位符,含义必须来自双方一致的明确策略,不能来自“第一个”或“第二个”的位置。

生命周期也不是一个二元开关。定位符可以已经过了首选期但仍处于有效期;客户端可以在 T1 之后尝试原服务器,又在 T2 之后转向其他服务器。过期时服务器回收前缀并删除绑定。若监控系统只显示“已分配”,它既看不见逐步接近失效的风险,也看不见续租已经进入不同阶段。

收到有效 Reply 后,客户端必须处理并自动配置定位符。到这里,DHCPv6 的收据已经很强:它说明哪一个客户端在什么结构和时间条件下获得了哪个定位符。但它仍然没有声明本地 SID 如何生成、多个定位符如何使用,也没有声明这些 SID 如何向网络其余部分通告。RFC 将这些决定留给本地实现与运营策略。

路由需要第二次状态转换

RFC 10038 第5.5节说明后续可能发生的动作。DHCPv6 relay 或服务器可以安装一条对应的本地定位符路由,下一跳应指向请求客户端;随后还可以通过传统路由协议通告,让其他路由器学习。

规范使用“可以”,意味着租约不会暗中替运营者完成路由策略。服务器绑定存在,本地 RIB 仍可能没有路由;RIB 有路由,FIB 可能编程失败;本地路由正确,出口策略可能阻止通告;通告已经发送,一部分路由器仍可能没有收敛。即使全网收敛,CPE 上所需 SID 与 SR policy 也可能没有就绪。所有控制面状态正确,仍要通过范围明确的报文观察验证实际送达。

Algorithm 字段进一步限制了通告方式。值为零的定位符可以作为普通 IP 前缀可达性通告;非零值必须使用 RFC 9352 或 RFC 9513 规定的 Locators TLV。把两者都降格为“一个 IPv6 前缀”,会丢失计算所需的算法关系。

因此,一条可审计链至少包含:服务器绑定、客户端配置、本地 RIB、本地 FIB、通告形式、下游收敛、本地 SID、SR policy、接口过滤与报文观测。它们可以使用同一个定位符与 IAID 做关联,却不能共享一个“成功”结论。

释放时才能看见依赖是否真正连接

分配容易制造乐观,释放更能检验设计。客户端发送 Release 后,相关设备必须释放定位符、删除本地路由,并撤回此前通告的路由。租约到期时,服务器也要回收资源并删除绑定。

这些动作常由不同系统负责。服务器掌握绑定;接入或 relay 设备掌握下一跳;路由团队掌握出口与收敛;CPE 平台掌握 SID 与策略;控制器可能保存缓存。要证明释放完成,必须回答:哪个 IAID 终止?哪条路由依赖它?哪一条通告被撤回?哪些缓存与策略已经失效?

聚合路由使问题更细。运营者可以为减少 RIB 压力而通告聚合,而不是逐个通告定位符。某个具体租约释放后,聚合可能继续存在。此时 delegating router 应对不再委派的具体前缀丢弃报文。聚合仍可达与个别定位符已失效可以同时成立。

如果仪表板只看聚合,它会把一个不再有效的定位符误认为仍被委派。反过来,看到聚合未撤回也不能立刻认定清理失败。正确证据需要同时展示聚合范围、当前有效租约集合以及到达边界后的具体处理结果。

信任域必须由运行控制维持

RFC 的示例假定所有相关组件位于一个受信 SR 域。CPE 由服务提供商或受信合作伙伴管理;即使设备位于客户场所,设备及端口也必须处于同一运营者的管理域。

这个假定没有给 DHCPv6 自动增加端到端加密。劫持、篡改与窃听风险仍然存在。若网络同时使用多种定位符分配机制,地址 pool 必须互不重叠,否则两个设备可能使用同一定位符。限制单个客户端的分配数量,也无法完全阻止恶意参与者伪装成许多客户端耗尽 pool。

位于边界的 DHCPv6 客户端必须在内部与外部接口实施适当过滤。“属于受信域”是一项需要持续成立的治理前提,不是一条可替代过滤的标签。设备管理权、端口控制、地址空间分离和流量规则都必须有当前证据。

把声明接到运行结果

Heng Lu 的 Running-Code Primacy 提供了一个直接检验:记录可以描述状态,不能凭自身创造运行结果。Minimum Initial Specification 则要求公共层只规定互操作、唯一性与安全真正需要的严格规则,把未来的本地选择留给运营者。

RFC 10038 很接近这种窄而严格的结构。它定义代码点、字段、时钟、客户端/服务器/relay 行为、释放与路由边界,却不替每个网络选择 SID 规划、聚合方式或服务策略。公共规范不越权,本地系统就更有责任生产自己的可重复证据。

完整收据应把客户端身份、IAID、服务器、relay、定位符结构、Algorithm、T1/T2、生命周期、绑定、客户端配置、路由、通告、收敛、SID、策略、过滤和受控报文测试按时间连接。每一步由能够复现它的团队负责。

于是结论不必夸张:“定位符已分配”是一项有效事实;“路由已安装并通告”是另一项;“网络已收敛且报文在明确条件下送达”更进一步。Cheng 与共同作者的贡献,在于让第一项事实足够精确,可以诚实地接向后面的事实,而不是取代它们。

来源