摘要

  • 1985 年 6 月的 RFC 948 提出两种在 IEEE 802.3 物理网络上传送 IP 的办法。一种保留以太网的协议类型字段用法,另一种改用 IEEE 802.2 逻辑链路头。线路可以混用两种格式,主机却会按帧头语法分成互不兼容的群体。
  • Ira Winston 主张先让所有新旧机器都有静态选择格式的能力,准备阶段统一用以太网式封装,等全网具备切换条件再一起改用 IEEE 方式。能说两种格式的网关可以兜底,但文档明确指出性能代价显著。

两字节的位置,两个世界

以太网 Version 2.0 与 IEEE 802.3 的物理层在实际使用中兼容,RFC 948 对这一点说得很清楚。冲突在上一层。两种帧的头部看起来相似,同一个字段在以太网里标识承载的协议,在 802.3 里却标识长度。接收机必须先决定该按哪套语法读它;“电流到了”没有回答这个问题。一根电缆能承载两群设备,却无法替它们约定解释方式。

Winston 给出的第一条路照顾已经使用以太网封装的 IP 安装。10 Mbps 的 802.3 长度字段上限是 1500;超过上限的值可作私人用途。文档所涉 IP、ARP 与尾部封装的协议类型值均高于 1500,因此可以在 802.3 兼容的物理接口上继续使用以太网式协议类型。这个数字空隙让旧设备继续说旧话。它不是两种链路层规则已经融合的证明。

第二条路才采用 IEEE 802.2/802.3 的链路头。IP 进入 LLC Type 1 无编号信息帧,DSAP 和 SSAP 都设为 96,也就是文档当时列出的 IP 服务接入点。802.3 为满足最小帧长加的零填充不属于 IP 数据报;地址映射可以用静态表,文档强烈建议动态 ARP 类发现。两条路各自能工作,问题在于同一对邻居若各选一边,IP 就无法只凭共同电缆穿过去。

迁移当天,谁负责最后一台机器

RFC 948 的结论没有绕弯:两种封装可以混在同一局域网物理媒介上,但结果会把它分为两个不兼容的子网。一台同时理解两种格式的主机可充当网关,文档说这会引入显著性能损失。原本局部交换的数据,现在因为帧外壳不同而必须越过额外设备。接线图依旧画一张网,业务路径已经变了。

Winston 倾向 IEEE 802.2/802.3 方案,因为 IEEE 规则获得国内外接受,并可用于其他 IEEE 802 物理网络。但偏好不能让存量设备瞬间升级。他提出静态选择:新实现要能选旧或新格式,老实现也要补上这个选择;过渡期所有主机仍使用以太网兼容封装,等所有机器都准备好,才一起切换到 IEEE 方式。这里真正昂贵的不是开关按钮,是知道谁还没装上开关。

1988 年的 RFC 1042 没有沿用 RFC 948 直接使用 SAP 96 的具体头,而用 LLC/SNAP:DSAP 与 SSAP 为 170,后接零组织码与 EtherType。它再次写出混用的后果:同一物理线路上的不同链路格式可以由双栈机器分别读取,但某一种格式发出的链路广播只到使用该格式的机器。若必须混用,文档建议按两个不同 IP 网络放置网关。这份后来的规范证实了问题的持久性,也显示具体封装选择曾继续变化;它并未记录 RFC 948 所提迁移在何处完成。

RFC 948 留下的教训很硬:网线、网卡、甚至帧里面的 IP 包都能看起来正确,邻居仍可能无法理解帧外壳。谁决定切换日期,谁就承担清点所有主机、验证广播与路由、以及为分裂局域网付网关账单的责任。

来源