摘要

  • Sandy Fraser 的虚电路设计把通信许可与实际传输分开:控制信道先完成请求、接受和逐段映射,普通字节随后才能依赖这条路径。
  • 这项安排让转发标签更短,也让不同设备共享网络;代价则是必须证明呼叫是否完整、资源由谁占用、旧映射是否清除,以及控制面和数据面是否仍相信同一件事。

“接受”是一张临时凭证

美国专利 3,749,845 描绘的起点不是数据包,而是一则 connect 消息。发起设备在保留的控制信道上说明目标;被叫端可以 accept,也可以 reject。只有接受消息返回时,沿途交换单元才逐段分配虚信道。发起端收到接受后,通信才可以开始。

这套顺序把“已经连接”拆成了可追问的事实。目标身份是否解析正确?远端是否同意?每一跳是否写入了本地信道与下一段路径之间的对应关系?如果其中一项没有完成,短小的信道号就只是一串没有共同含义的数字。

Fraser 的构想也没有把虚电路变成长期独占的电话线。专利区分“虚拟分配”与“实际激活”:网络先保存所需路径的特征,等到数据突发到来时才投入传输资源。呼叫状态在空闲间隙仍然存在,物理容量却不必随之闲置。

结束同样是一项协议动作。任一端都可发出 end-of-call 消息,沿途再逐段释放虚信道。专利还明确指出,拆除时仍在途的数据可能丢失。因此,清理不是通信结束后的卫生工作;它决定网络从哪一刻起可以忘记旧承诺,也决定旧标签何时不得再被执行。

从 Spider 的试验到 Datakit 的日常

Fraser 的履历把虚电路交换的发明记在 1969 年,把窗口流量控制记在 1970 年,两者都在 Spider 研究网络中得到演示。Bell Labs 的历史年表也记录了他在 1970 年开始建设 Spider。到 1975 年,Fraser 设计了采用硬件虚电路交换的模块化网络 Datakit。

履历称,1990 年时 Datakit VCS 已服务整个 Bell Laboratories,并被 AT&T、贝尔运营公司和海外客户广泛采用。规模扩大以后,原来的一次呼叫就变成持续的运营义务:名称、路由、信道映射、缓存限制和释放条件,都要在多台设备之间保持一致。

Datakit 还要面对终端能力不一的现实。设备的数据速率、缓存和协议各不相同。可编程接口与交换单元负责调和这些差异,而不是要求端点先变成同一种机器。一个很短的本地信道号能够代表完整目的地,正是因为交换机替它保存了翻译关系。

这也是所有标签转发架构的基本交换。每个数据单元都携带全局目的信息,会重复支付寻址成本;事先装入一次映射,后续转发可以更轻,但证据从数据本身转移到控制系统。成本没有消失,只是换了保管人。

把设备方言留在边界

1992 年,Roy Campbell 与 Sean Dorward、Arun Iyengar 与 Charles Kalmanek、Gary Murakami 与 Ravi Sethi,以及 Ce Kuen Shieh 与 See-Mong Tan 共同总结了 Bell Labs 多个项目演化出的呼叫处理软件。每条逻辑线路由一个轻量级 line process 管理;它把设备特有的呼叫请求翻译为统一的内部协议。许多逻辑线路可以复用一条物理链路。

这里的模块化并不是声称所有设备都一样,而是给差异安排了明确的解释者。新设备可以保留自己的呼叫语法,交换控制部分只需要理解标准内部表示。翻译责任集中后,故障也更容易定位:究竟是端点表达错了,还是 line process 错译,抑或交换表没有执行已经接受的决定。

Plan 9 的网络论文从应用侧呈现了相似边界。Datakit 与 Internet 协议都通过外形一致的协议设备提供服务,connection server 可以为目标选择双方共有的网络与协议。程序只需表达 dial 或 listen 的意图,无须把每种网络地址规则写进自身。

抽象没有删掉复杂性。它把复杂性放进可命名的连接服务器、翻译进程和表项。真正可治理的系统不是“没有状态”,而是能够回答状态位于哪里、由谁解释、出了错找谁核对。

IP 把连续性放在别处

RFC 791 把 IP 定义为无连接、不可靠的数据报服务。IP 层本身不提供端到端可靠性、排序或流量控制。数据报不必先让所有中间节点安装一条共同呼叫,便可尝试向目的地前进。

这与 Datakit 的差异不是一场必须分出胜负的技术擂台。无连接层降低了中间网络对长期逐呼叫状态的一致性要求,端点和更高层则负责补回连续性。虚电路先支付建立与维护状态的成本,让后续流量接受已经决定的处理。

两者需要的事故证据也不同。数据报问题侧重可达性、当时的转发选择和端点恢复;呼叫问题还要证明建立是否真正完成、各跳持有哪个版本的映射、准入时承诺了什么服务,以及拆除是否抵达所有状态持有者。“绿灯亮了”不足以证明它们仍然一致。

XUNET 把状态账单摊开

Charles Kalmanek 与 Srinivasan Keshav、William Marshall,以及 Stephen Morgan 与 Robert Restrick 撰写的 XUNET 2 回顾,把这条路线带入更高速的广域试验。XUNET 1 用 Datakit Virtual Circuit Switches 连接大学研究团队;XUNET 2 转向 ATM 交换机、路由器和广域链路,研究流量管理、交换结构与控制。

建立虚电路时,用户可以请求服务类别。交换机按电路维护队列,调度器区别对待不同类别,缓存策略防止一个用户拖累另一个。连接建立还会修改头部翻译表和缓存上限。于是,呼叫不只说明“往哪里走”,还记录“允许怎样使用共享资源”。

精确也会变成负担。为每条虚电路静态预留往返窗口大小的缓存,会占用远多于活跃流量所需的内存;动态分配能够节省内存,却需要信令,还要协调高速硬件中的队列状态与处理器作出的分配决定。该团队因此把表项审计、故障检测和远程维护当成架构本身。

最隐蔽的风险是信念分叉:控制器认为映射存在,转发硬件已经丢失;重试建立了第二个呼叫,第一个却仍占缓存;故障恢复找回路由,却没找回原来的准入条件。此时字节甚至可能继续流动,但它依赖的是一份无人能完整证明的旧许可。

Fraser 留下的不是一句阵营口号

Fraser Research 的纪念文章串起了他从 Ferranti、Cambridge 到 Bell Labs、AT&T Labs,再到创办 Fraser Research 的经历。他获得的 ACM、IEEE 和美国国家工程院荣誉,都指向虚电路交换、流量控制和分组网络架构的贡献。

然而,今天仍可直接使用的遗产,是一套完整的状态生命周期。请求公开意图,接受记录同意,映射让决定能够执行,流量控制约束使用,结束消息授权网络遗忘。每一步都应该留下可以复核的事实。

Fraser 没有证明网络永远应该记住连接。他证明了另一件更严格的事:只要网络替用户记忆,就必须能说明自己记住了什么,这份记忆从何时生效,又在什么证据出现后彻底失效。

资料来源