摘要

  • RFC 9818 要求 IPv6 CE 路由器在 LAN 侧支持 IA_PD,并让每一份下游租约对应正确的下一跳与动态路由;租约释放或失效时,路由必须删除,前缀必须回到可用池。
  • 默认过滤规则要允许来自已委派前缀的外层 IPv6 源地址及同一流的返回报文;同时,子前缀的有效期不得超过父前缀在 WAN 侧的剩余有效期。
  • 本文提出本地化的“前缀保管凭据”,把父委派、子租约、路由、过滤、时钟、报文观察和退出保管逐项连接。它是 Daniel Kade 的编辑建议,不是 RFC 字段或 IETF 要求。

一张资源表可以准确写着“尚余 200 个 /64”,而网络仍然没有一个可以交给下游路由器使用的前缀。问题不一定出在计算,也不一定出在运营商。它可能出在资源穿过 CE 路由器这道边界时,只有地址空间到达了,委派服务、路由和过滤却没有一起到达。

RFC 9818 没有把“收到前缀”当作终点。它先区分运营商交给 CE 的父委派和 CE 交给 LAN 内另一台路由器的子委派,再要求后者进入路由表、影响过滤规则,并随父授权的时钟退出。这样看,IPv6 容量不是一个静态数字,而是一组在同一时刻彼此一致的状态。

只查看其中一项,往往能得到正确记录和错误结论。DHCPv6 Reply 可能真实,路由安装可能失败;路由可能存在,租约已经过期;租约与路由都在,过滤器仍按旧规则拒绝源地址。治理问题不是选出一个“权威数据库”,而是保存这些证据之间的连接。

父委派不会自动穿过 LAN 边界

很多服务提供商会给 CE 路由器一个比单个 LAN 所需更大的地址块。如果 CE 只会给本地终端提供配置,却不在 LAN 接口上支持 IA_PD,剩余地址就无法按 RFC 9818 描述的方式继续交给下游路由器。上游供应充足与下游无法使用可以同时为真。

LPD-1 因而明确要求 LAN 侧的 IA_PD。LPD-2 要求子前缀从已经委派的父前缀中分配;如果可用前缀不足,CE 必须记录系统管理错误。这个错误不是对父委派的否定,而是在另一条控制边界上说明容量已经不能满足请求。

规范描述的默认模式是扁平委派。CE 先给自己的 LAN 链路分配前缀,再把余量交给同一 LAN 上的其他路由器。管理员也可以选择分层委派,但如果多级路由器缺少拓扑发现,委派树可能失衡,让某一分支先耗尽。RFC 给出机制和基线,不替本地管理员断言哪一种结构永远正确。

LPD-3 规定,没有本地策略或拓扑变化时,分配给链路的前缀不得改变。这是一种有条件的稳定性,而不是永久承诺。一次重编号应当能指向具体策略或拓扑事件;一条长期未变的数据库记录也不能仅凭“稳定”证明租约仍然有效。

LPD-4 要求在完成 LAN 链路分配之后,剩余前缀继续可供其他路由器请求。库存系统能证明算术上的空余,却不能证明 DHCPv6 服务、路由表和过滤器已经把这份空余变成运行能力。

租约的含义包括下一跳

LPD-5 是整条证据链的关键。CE 必须维护一张随租约和相关下一跳动态更新的本地路由表。子前缀既是一份 DHCPv6 保管记录,也是一项目的路由义务:发往该前缀的报文应该交给取得它的路由器。

至少需要分开保存四个事实:IA_PD 交换被接受;租约记录了正确的客户端、IA 与前缀;精确路由指向正确下一跳;报文实际沿该路径传输。捕获到 Reply 只能覆盖第一部分。聚合路由的计数器上升,也不能证明特定子前缀和下一跳完成了转发。

退出同样由多个动作组成。子路由器释放前缀,或者 valid lifetime 到期且没有续租时,相关路由必须从 CE 路由表删除,前缀必须返回可用池。路由删除与资源回收不是同一个写操作。前者完成、后者失败会泄漏容量;后者先完成、旧路由仍在则可能造成新旧保管重叠。

过滤例外如果继续存在,还会产生第三种残留:地址已经不属于旧客户端,安全策略却仍把它当作合法来源。把这些差异用一次“最终一致”覆盖掉,会失去最需要问责的时间窗口。

过滤许可来自当前委派

LPD-6 更新了 CE 的默认过滤要求。外层 IPv6 源地址属于已委派前缀的报文,以及同一流的返回报文,应当被允许转发;既不属于 LAN 分配、也不属于当前委派的地址仍然必须丢弃。

这不是笼统的“内网放行”。许可集合随委派生命周期变化。同一个比特范围可以先处于空闲状态,随后交给一个子路由器,再因释放或过期回到池中。静态 allow-list 即使语法完全正确,也可能只忠实保存了昨天的权力关系。

有效租约配上旧的 deny,会制造“有资源、无服务”;旧的 allow 配上已经消失的租约,则会制造“有许可、无保管”。路由和过滤各自通过健康检查,也可能引用不同版本的委派状态。

一次双向探测可以验证某一时刻的运行结果,但不能解释该源地址为何获准、返回流是否使用预期路径、或者父前缀还有多少时间。运行代码是证据链的最后一环,不是删除前面各环的理由。

子时钟不能走到父时钟之后

LPD-10 给出了明确的不变量:CE 在 LAN 上委派的寿命,不得超过相应 WAN 前缀的剩余寿命。子路由器不能获得比父保管者仍持有的权力更长的承诺。

“剩余”二字要求系统保存观察时间。父租约最初的 valid lifetime 不是永恒上限;它随时间递减,也可能通过续租延长。子租约可能由另一个进程写入,重启、rebind、持久化延迟和时钟偏差都可能让两个看似合理的数字描述不兼容的截止时刻。

正确比较的是同一保管链上的绝对到期时刻。父委派续租成功之后,子租约可以通过自己的有效交换延长;父委派缩短或续租失败时,CE 不能继续维持一个比自身权力更长的子授权。只显示“租约有效”而不显示父到期点,会把局部事实提升为系统结论。

LPD-7 默认向 LAN 侧委派 /64,以符合当前 SLAAC 使用方式;管理员可以配置其他长度,分层委派可以使用短于 /64 的前缀。前缀长度因此是会改变后续权力结构的政策输入。LPD-8 要求即使 CE 生成 ULA,也继续提供可用 GUA;LPD-9 建议两者同时委派时把 GUA 放在前面。本地可寻址并不能替代全球可达。

建立最小化的前缀保管凭据

本文提出的前缀保管凭据先记录父边界:WAN 接口、精确父前缀、必要的服务器与客户端身份、IA、preferred 与 valid 到期时刻、续租结果和观察时钟。随后记录被本地链路占用的范围,以及真正可供子委派的余量。

每个子项连接请求、Reply、客户端、IA_PD、前缀、长度、LAN 接口、下一跳和到期点。路由安装另有自己的事务结果、路由域、版本和删除条件。过滤记录只保存证明有效许可所需的规则或派生状态,不把完整流量历史带进凭据。

结果层可以是一项有边界的双向探测,保存时间、方向与结果,不把一次成功写成永久可达。退出层记录 release、expiry、父寿命收缩、拓扑变化或策略动作,并分别确认路由撤销、过滤撤销、前缀回池,以及没有在旧保管结束前重新发放。

这份凭据应留在本地,并严格控制访问。DHCP 标识、家庭或企业拓扑和流量观察都可能敏感。它不是中央登记库、新协议或远程控制接口;它只是阻止某一组件把自己的成功冒充端到端交付。

基线规范没有接管全部网络政策

RFC 9818 是 Informational 文档,但使用规范性词汇建立行业共同基线。它明确把多前缀、多供应商网络放在范围之外,因为那类环境还需要额外的路由、配置与政策。范围之外不等于禁止,也不等于机制自动适用。

运营商掌握父委派;CE 软件协调 DHCPv6、路由和过滤;本地管理员选择长度与层级;下游路由器运行子网络;IETF 定义可互操作的共同动作。任何一方都不能仅凭自己的成功指标宣布整条链已经完成。

Heng Lu 的“运行代码优先”准则在这里要求四层分开:RFC 描述义务,软件执行连接,观测确认特定系统的结果,本地权力主体决定如何修复。地址空间只有在保管、转发许可和时间相互同意的期间才是容量。

来源