摘要

  • 1991 年,BARRNet 的 OSPF 系统记录了 1,816 条外部路由。早期部署发现部分 NSFNET 流量多走一跳,小型路由器也面临内存压力。
  • RFC 将这两项限制分别联系到 OSPFv2 的转发地址和 stub 区域;这是一个具体运维案例,并非协议全部演进的唯一原因。

1990 年 4 月,北加州研究网络 BARRNet 开始运行 OSPF 第一版;到同年 11 月,它已运行第二版。John Moy 在次年 7 月撰写的报告,不只是记录了一家早期用户。报告指出,一些路由会多经过一台路由器,而部分设备的内存不足以保存所有外部路由。这两项限制被明确联系到 OSPFv2 后来加入的两项功能。它的历史价值在于具体:运营人员能指出真实流量和真实设备,说明协议需要补上什么。 RFC 1246,第 6.0、6.2.1–6.2.2 节

BARRNet 并非一座校园里的局域网。1991 年的记录称,它服务约 80 个成员站点,范围从萨克拉门托延伸到蒙特雷,连接速度从 9.6 kbps 到完整 T1。成员包括大学、政府机构与商业组织。区域网在斯坦福接入 NSFNET,同时使用 T1 和 T3 链路;它也连接劳伦斯利弗莫尔的 ESnet、经 NASA Ames 联邦互联网交换点连接 DDN,以及加州大学和加州州立大学系统的网络。BARRNet 必须在本地站点之间转发流量,同时同数个更大的网络交换路由。 RFC 1246,第 6.2 节

网络核心有 14 台 Proteon 路由器,其中 6 台形成冗余环路,核心站点之间由完整 T1 电路相连。成员站点接在这些核心路由器之后,大多数以斯坦福为中心呈星形连接。拓扑的意义在于:外部网关与实际承载流量的路由器处于区域网的不同位置。RFC 记录当时 OSPF 系统含有 1,816 条外部路由,主要来自 NSFNET;其余来自 NSN、仍运行其他协议的 BARRNet 路由器,以及 ESnet。BARRNet 把 RIP 和 EGP 路由导入 OSPF,使用 Type 1 外部度量,并以路由标签控制哪些信息通过 EGP 再次通告。这不是一种协议整齐替代另一种协议的过程;OSPF 必须和既有路由交换共存。 RFC 1246,第 6.2.1–6.2.2 节

1990 年的一本网络目录也把 BARRNet 描述为由租用线路、微波链路和多种站点接入组成的区域网。Internet2 后来的回顾指出,成员大学对路由器设备的所有权和维护责任分散在各校。这些材料帮助区分共享的路由系统与具体设备由谁持有、维护;但它们没有证明这种组织方式导致了额外跳数或内存不足。RFC 1245 记录了 OSPF 互操作测试,RFC 1131 则给出了第一版规范:标准文本、实现和现场经验是在同一时期并行发展的。The User’s Directory of Computer Networks(1990);Internet2 回顾;RFC 1245;RFC 1131

第一个问题出现在网络边界。只有 BR5 和 BR6 与 RFC 所称的 NSS 交换 EGP 信息。如果 OSPF 外部链路状态通告里没有单独的转发地址,BR10、BR16 和 BR28 处理的 NSFNET 流量会先送到发布该路由的网关,即使实际外部下一跳可以直接到达。数据包因此多经过一台路由器。OSPFv2 增加的转发地址字段,可以在通告中标明该目的地实际应使用的下一台路由器,让内部路由器走直接路径。标准文档用抽象示例说明机制;Moy 的现场报告把相同问题对应到 BARRNet 的具体路由器。原始报告没有解释“NSS”全称,因此这里保留缩写。 RFC 1246,第 6.2.2 节;RFC 1247,第 2.2、12.4.4 节

第二个问题关乎内存。一些路由器无法保存全部外部路由。BARRNet 设置了四个 stub 区域,每个区域是一条没有内部 OSPF 路由器的局域网。stub 区域不接收外部路由通告,减少路由器需要保存的信息。现场报告说,这是为了让内存有限的路由器也能运行 OSPF,而不是保证任何小型设备都适用。RFC 没有给出这些设备的内存容量或改动前后的测量。这个设计以区域内无法完整看到外部路由为代价,降低本地需要保留的路由状态。 RFC 1246,第 6.2.1–6.2.2 节;RFC 1247,第 3.6 节

Moy 的报告把 BARRNet 放在多个早期部署案例之中。同一份报告还列出 NASA Science Internet 和 OARnet;OSPF 于 1990 年春季开始在互联网部署。第一批部署没有发现协议错误,却暴露出值得加入的功能。BARRNet 的意义比“第一个”之类的宣称更具体,也更有来源支撑:报告指出哪种路由绕行和内存限制促成了第二版的两项功能。RFC 1247 还说明第一版和第二版不能互通,因此版本升级本身也是运维边界。报告给出了 BARRNet 使用两个版本的日期,却没有逐台路由器迁移日志,不能证明所有设备在同一时刻完成变更。 RFC 1246,第 6.0、6.2.2 节;RFC 1247,附录 F

这样的证据边界让历史保持准确。协议规范可以描述路由器应当怎样工作;实际部署则展示了模型何时多出一段转发,或要求设备保存超过其内存承受范围的状态。现存记录并未证明 BARRNet 的拓扑或 OSPF 单独解决了互联网问题。它记录的是一个清楚的工程案例:让通告指出真正的下一跳,并允许资源有限的区域少保存一部分外部路由。

资料来源