摘要
- 在 classful 路由里,看到一个 Class A 子网可能被解释成看到了整个父网,父网中其他地址于是不会再走默认路由。
- 因而,开放地址池不是注册机构的单点动作,而是对提供者、客户域、同伴连接、聚合边界与空洞丢弃策略的一次联动迁移。
- RFC 2036 记录的是条件、推演和建议,不是事故统计;后来的 Historic 状态也不能补出当年真实部署的发生率。
默认路由还在,包却不再找它
RFC 2036 讨论的建议很具体:由 IANA 经委托注册机构,把当时未分配的 Class A 空间拆成无类前缀投入使用。此前的保守做法,是把许多 Class C 网络拼成与旧类别仍相容的 superblock。CIDR 已经出现在地址政策中,但底层设备和域内协议仍可沿用 classful 假设。
这种兼容层让一类提供者暂时避开了彻底迁移。他们不携带全网路由,只导入一条默认路由;连续的 classful 地址块,则由同伴提供者做 proxy aggregation。只要新分配仍尊重类别边界,这个安排虽然不理想,却未必立即出错。
从 Class A 父网切下一块之后,语义变了。路由器同时看到默认路由和父网中的一个子网时,classful 结构可能把这条子网路由提升为整个 Class A 网络的可达性。发往同一父网其他部分的流量,不一定继续匹配默认路由。问题并不是“有没有默认”,而是默认在选路之前已经被一个错误扩大的网络认知遮住。
所以 RFC 2036 的硬结论落在提供者身上:即使只靠默认路由,也必须使用 classless 路由。过去由上游或同伴代做聚合的办法不够了。一个注册分配决定,改变了转发正确性的最低软件能力。
子网默认需要掉头
非传输客户域面临的配置方向甚至与过去相反。对于按类别对齐或由完整 classful 网络组成的 superblock,显式 subnet default 不应指向提供者,否则边界可能成环。可若客户拿到的是从 Class A 父网切出的无类前缀,同时内部仍运行 classful IGP,RFC 2036 要求 Class A 的 subnet default 沿普通默认路由指向提供者。
这是一条例外通道,不是永久安全证明。客户的显式子网可达信息可能泄漏给提供者,迫使提供者替它生成正确聚合。若提供者按注册分配的整块做 proxy aggregation,再把未部署组成部分的流量送回客户,包会在客户与提供者之间循环。若提供者只显式路由已部署部分,发往空洞的流量又会沿默认路径穿过互联网,直到遇到没有默认路由的节点才被丢弃。
因此文档要求客户为分配块内所有未部署部分设置 sink subnet route,并建议提供者按注册分配边界保守聚合。聚合与 sink 不是同一份回执:聚合说明向外发布了覆盖范围,sink 才限制覆盖范围内的空洞不会继续寻找出口。配置文件里出现两者,也不等于运行 FIB 和实际包路径已经执行。
多宿主把局部兼容变成传递条件
完全断开的域可以继续使用 classful IGP,不把错误传播到外部。只有一个外联、且严格遵守默认方向的客户,也有一个受限例外。但一旦多宿主,不同提供者可能分别发布同一 Class A 父网的不同组成部分,客户内部就必须保存真实前缀长度。
同伴连接进一步把要求传给邻居。RFC 2036 给出一个结构性例子:两个 classless 的 stub X、Y 通过一个 classful 域 Z 相连。X 把父网的一块告诉 Z;Z 把它理解成完整 Class A 网络,再告诉 Y。Y 原来从自己的提供者学到的默认路由被覆盖,所有属于这个父网的流量都被送往 Z,再转去 X;X 作为非传输 stub,只能丢弃非本地流量。
这说明“本域已升级”并不构成闭环证据。只要外部同伴抹掉前缀长度,兼容性失败仍会反向改变本域的选路。新增一条备线或对等连接,也可能让昨天安全的单宿主例外今天失效。
地址池成为部署杠杆
RFC 2036 建议首批分配优先给已经运行 classless 域内协议的网络,或无外联、以及单宿主到 classless 提供者且愿意正确指向 subnet default 的 classful 网络。厂商产品需要明确区分 classless/classful 模式,并让 subnet default 可选择跟随普通默认或落入 sink。主机配置也应逐步从“类别、子网、主机”三段式,转向明确的本地网络前缀与主机地址。
一个月后发布的 RFC 2050 在分配侧说得更直接:地址使用以 VLSM 和 classless 技术为前提,基于 classful 使用方式提出的申请不予考虑。这能证明当时的行政指导开始与技术前提对齐,却不能证明每个收到地址的网络已经完成迁移。
压力背景来自已于 1995 年结束的 ALE 工作组。其正式章程覆盖 IPv4 剩余寿命预测、利用率、分配政策、路由数量、回收与重编号。RFC 2036 转述 ALE 对 Class C 未分配池消耗的担忧,并指出 Class A 上半部仍占当时 IPv4 地址的约四分之一。它没有附上 ALE 的原始时间序列,更没有把预测写成已发生结果。
Historic 是后来判断,不是遗失的部署数据库
RFC 2036 发布时是 Informational,如今为 Historic,RFC Editor 当前没有列出勘误。RFC 4632 在 2006 年将它历史化,理由是 CIDR 已全面部署,而且从历史 Class A 空间作无类分配已有六年多经验。这份后继文档支持一个有限结论:标准共同体当时已把这项转型视为完成的历史问题。
但它没有列出具体提供者、产品版本、故障次数、成功率或清障过程,也没有证明 RFC 2036 本身促成了结果。RFC 4632 另保留一项长期架构规则:生成聚合路由的域,必须把“匹配聚合、却不匹配任何更具体路由”的包送往 null,以免空洞造成环路。这是 RFC 2036 所担心的 sink 问题进入通用 CIDR 架构后的表达。
今天的 IANA IPv4 地址空间表已不再呈现 1996 年那片未分配上半区;2009 年的最后 /8 选择机制和 2012 年的耗尽后政策记录封闭了库存背景。它们不是 RFC 2036 部署成败的替代数据。
要还原一次真正的启用,至少应分开六份回执:注册分配的精确前缀;提供者收到的默认、具体路由与策略;客户 IGP、subnet default 与边界交换;聚合触发条件及每个空洞的 sink;每个同伴保存的前缀长度;部署与未部署目的地址的真实 next hop 或丢弃点。
Heng Lu 的 running-code primacy 在这里不是否定注册记录,而是限定记录的证明力。分配记录在协调层是真实的;路由选择和包路径在执行层是真实的。只有前缀含义逐跳不丢,地址库存才真正变成可达资源。
来源
- https://www.rfc-editor.org/info/rfc2036/
- https://www.rfc-editor.org/rfc/rfc2036.html
- https://www.rfc-editor.org/errata_search.php?rfc_number=2036
- https://datatracker.ietf.org/wg/ale/charter/
- https://www.rfc-editor.org/rfc/rfc1519.html
- https://www.rfc-editor.org/rfc/rfc1879.html
- https://www.rfc-editor.org/rfc/rfc2050.html
- https://www.rfc-editor.org/rfc/rfc4632.html
- https://www.iana.org/assignments/ipv4-address-space/
- https://www.iana.org/news/2009/selection-mechanism-for-the-remaining-ipv4-address-space
- https://www.iana.org/news/2012/global-policy-for-post-exhaustion-ipv4-allocation-mechanisms
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
