摘要

  • RFC 1219 让子网编号从地址高位向右增长,让主机编号从低位向左增长,中间留下一段尚未归属的增长位。两个方向都能扩张,而既有主机地址无需重编。
  • 这项设计保存的是地址位串,不是完整运行状态。增长仍可能改变掩码,并要求域内路由同时处理不同掩码;两级地址分配权威在争用最后一个增长位时也必须协调。
  • 旧掩码过长,会把本地主机误判成远端并绕经网关;旧掩码过短,会把远端主机误判成本地并发出无人应答的 ARP。地址清单可以毫无变化,实际可达性却已经分裂。

从两端分配,中间保留选择

RFC 1219 的题目是 On the Assignment of Subnet Numbers,作者 P. F. Tsuchiya,发表于 1991 年 4 月。RFC Editor 条目将其列为 Informational。原文明确说这是一种完全本地、可自行选择的做法,不是互联网标准;IETF Datatracker 条目证明文件身份,也不证明有人部署过它。

它所面对的基础问题来自 RFC 950 的子网掩码方案。RFC 950 建议把连续的子网位放在本地地址部分的最高有效端。实际规划者却很难提前知道,未来短缺的会是子网数量,还是单个子网可容纳的主机数量。

如果两个编号都按常规方向增长,它们会争夺同一侧的剩余空间。RFC 1219 没有预测谁会先增长,而是把两类编号放到相反的端点。主机编号沿日常二进制计数方式,从最低有效位向左占用 h 位;子网编号采用镜像计数,从最高有效位向右占用 s 位。两者之间的零位称为 g 位,是尚未分配给任何一方的储备。

子网需要更多主机时,从主机一侧取走一个 g 位。网络需要更多子网时,从子网一侧取走一个 g 位。已经存在的主机位串不用搬家,因此地址可以不变。

然而,地址保持不变只说明门牌仍是原来的门牌。主机如何判断“这扇门是否就在本地链路上”,取决于掩码划出的边界。

省下改号,不等于省下改配置

新增子网时,一个增长位会变成子网位,已有子网可能需要把掩码加长。一个子网要容纳更多主机时,增长位会变成主机位,该子网内所有主机可能都要把掩码缩短。RFC 1219 避免的是地址重编,不是掩码更新。

这也解释了它为什么要求路由系统支持多种掩码。RFC 1009 允许一个已经划分子网的网络中存在不同掩码,并要求每个网关接口都能分别配置掩码。RFC 1219 进一步把“域内路由协议能够处理多个掩码”列为前提。

功能存在不代表状态正确。路由器可以支持多掩码,却没有收到新值;地址分配表可以完成修改,接口配置仍停留在旧版;通告可以发出,邻居未必安装。算法、已提交配置、路由收敛、报文可达和应用结果必须分别取证。

最后一个增长位是一项共同决策

RFC 1219 还把地址空间的控制权分成两层。RootAA 负责分配子网;每个子网内部的地址权威负责分配主机。只要中间还有多个 g 位,两边通常可以从各自方向独立扩张。

独立性在最后一个 g 位消失。RootAA 把它分给新子网,本地权威就不能再用它扩充主机;本地权威先把它纳入主机字段,RootAA 就失去再建一个子网的空间。文档因此要求双方协调。

一个比特很小,但它封存的是未来选择权。根权威看到全网对子网的需求,本地权威看到某个链路的主机压力。若两份账本的版本或生效时间不一致,双方都可能完成一项在自己视角中正确、合在一起却冲突的分配。

还应限制历史叙述的范围。RootAA 与子网权威是算法角色,不是某个机构确已设岗、开会并完成变更的证据。真实协调需要审批记录、版本、配置下发和运行观测。

掩码错在两个方向,故障也朝两个方向

RFC 1219 对过渡期的描述揭示了“地址没变”最危险的盲点。

主机若保留了过多的掩码 1 位,会把真正位于本地子网的目的地址判断成远端,于是把报文交给网关。网关可能再把报文送回同一链路,也可能发出 ICMP Redirect。连接或许还能工作,但走了弯路。文档说“可能重定向”,不等于证明重定向已发出、已被接受或真正纠正了后续转发。

主机若保留了过少的 1 位,情况相反。它把真正的远端地址纳入本地范围,不去找网关,而是在本地链路上发送 ARP。远端主机收不到这次本地广播,也就没有应答。掩码不一致还可能破坏广播行为。

于是,两台主机都保留原 IP,一台只是经由网关绕行,另一台则完全不可达。若迁移面板只统计改了多少地址,答案是零;若观察转发,至少已有本地直达、网关绕行和 ARP 无应答三种状态。

RFC 中的例子说明算法状态会造成什么后果,并不是实际部署抓包。它们不能证明某张网络完成了更新,也不能证明应用在过渡期间保持可用。

地址是证据链的起点,不是终点

RFC 1219 在发表时称这项技术并不广为人知,实际实现得更少。这句话只界定 1991 年当时的自述,并非后来采用率的统计。本证据包没有软件版本、运营商报告或流量数据,不能把方案自动升级为部署史。

安全边界同样清楚:文档明说不讨论安全问题。因此不能从中推导分配命令经过认证、最后一位的使用获得授权、掩码分发具备完整性,或回滚一定安全。

这篇 RFC 留下的真正方法,是把同一个号码周围的不同事实拆开。资产清单记录地址;主机配置记录掩码;控制面记录路由;报文观测记录可达性;应用与用户记录结果。第一项稳定,从来不能替后四项作证。

来源