摘要

  • RFC 1385 提出的 EIP 保留了 IPv4 形状的基础头部,并让旧节点把新增扩展当作一个未知的 IP 选项处理。
  • EIP 把 32 位宿主号和可变长度网络号分开,再以边界路由器、DNS 与临时转换为支点安排分阶段迁移。

RFC 1385 于 1992 年 11 月发布,并明确把自己定位为提出 EIP 方向的“idea”论文,而不是已经部署的架构或获得采用的互联网标准。

EIP 最值得注意的字段,恰恰是新主机不应信赖的字段。四位 Version 与 IPv4 保持一致,理由只是兼容;EIP 实现不会检查它。IHL 也为兼容而保留。真正决定新头部长度的,是独立的扩展长度字节,而不是 IPv4 的 IHL。

前 20 字节的形状没有变,但其中的含义被重新分配。原来的源地址和目的地址成为源宿主号与目的宿主号,仍各占 32 位,却只需在各自网络内唯一。网络号被移入可变扩展,那里还可以容纳其他寻址或路由信息。EIP 总头长等于扩展长度加 20 字节,最大可达 276 字节,不再受 IPv4 IHL 能表达的 60 字节上限约束。

提案为 EIP 固定了标识 0x8A。理解 EIP 的主机可以从固定位置识别新协议;旧 IPv4 主机或路由器看到的,则应只是一个新而未知的选项,并继续转发。同一网络内通信甚至可以完全省略扩展。过渡期间,未升级的子网路由器仍可把宿主号当作 IPv4 地址使用。

兼容性并非没有代价,只是代价被集中到了边界。边界路由器要把既有网络部分映射为新的 EIP 网络号,并为出站 IPv4 数据报添加扩展。RFC 1385 认为,EIP 数据报返回旧主机时无需反向转换,因为旧主机会忽略扩展。DNS 则需要增加一种保存网络号的新记录。

迁移次序反映了依赖关系。先确定寻址方案并分配网络号;再升级骨干与边界路由器、DNS 和转换机制;此后才轮到关键服务器与其他主机;子网路由器可以最后改变。这个桥梁有明确期限:只有当复用的 32 位宿主号仍在全球范围内唯一时,转换才成立;一旦这些宿主号不再全球唯一,转换便须结束。

RFC 1385 报告了一组覆盖 30 个国家、35 台主机的实验,并称在该设置下没有可见性能差异。这是有边界的测试,不是未知选项可以穿越所有路径的证明,也不是 EIP 已经部署的证据。1995 年,RFC 1752 建议以 128 位 SIPP 为 IPng 的基础。2012 年,RFC 6814 正式废弃 EIP 选项,称其已被 IPv6 取代,并把 RFC 1385 的状态改为 Historic。

EIP 留下的历史问题不是“为什么没有采用一个更大的地址”,而是另一种兼容性选择:怎样让升级后的系统读懂未来,同时让过去的系统觉得它足够平凡,可以放行。

来源