Chaosnet(1981年)

Hacker News Top 新闻

摘要

Chaosnet 是麻省理工学院人工智能实验室于 1975 年开发的一种本地网络,用于 Lisp Machine 系统,旨在无需中央控制的情况下,在小范围内实现高速、可靠的通信。

https://bitsavers.trailing-edge.com/pdf/mit/ai/AIM-628_chaosnet.pdf
查看原文
查看缓存全文

缓存时间: 2026/06/15 00:56

# Chaosnet 来源:https://tumbleweed.nu/r/lm-3/uv/amber.html ## 1 引言¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#Introduction) Chaosnet 是一种*局域网*,即用于在相距一到两公里内的多台计算机之间进行通信的系统。Chaosnet 这个名称指的是该网络没有任何集中控制元素。Chaosnet 最初于 1975 年由麻省理工学院人工智能实验室开发,作为 Lisp Machine 系统的内部通信媒介 \[CHINUAL (https://tumbleweed.nu/r/lm-3/uv/amber.html#CHINUAL), AIM444 (https://tumbleweed.nu/r/lm-3/uv/amber.html#AIM444)\]。此后,它被用于链接该研究所内的各种机器。一些其他大学和研究实验室也部署了 Chaosnet。Lisp Machine 系统是一个多处理器系统,其中每个活跃用户被分配一台“个人”计算机,包括一个中等规模的处理器、适量的内存和一个交换磁盘。文件存储在一个通过 Chaosnet 访问的中央文件系统中。这个共享文件系统保留了分时系统的传统优势,即用户间通信、共享程序以及集中备份和维护。同时,通过为每个活跃用户提供自己的处理器,Lisp Machine 系统在高效执行数百万字的大型 Lisp 程序以及提供快速交互响应方面,远胜于分时系统。 由于 Chaosnet 取代了传统系统中的文件磁盘,它必须快速(既在响应时间上,也在吞吐量上)、可靠(这是没有集中控制的原因),并且能够连接数十台机器。然而,它不需要在长距离上运行。除了文件系统外,Chaosnet 还用于访问其他共享资源,包括打印机、磁带驱动器以及专用处理器和 I/O 设备。 Chaosnet 的系统目标主要是简单性和高性能。高性能是通过采用非常高速的传输介质,并以简单、低开销的方式运行来实现的,而不是通过使用异常巧妙的算法。当然,必须小心避免那些过于简单以至于无法工作或浪费大量传输介质而影响性能的算法。简单性不仅对提高性能很重要,还因为 Chaosnet 连接了多种不同的机器,因此必须拥有多个实现,而这些实现的维护工作与其复杂性成正比。设计简单性也有助于网络本身的维护和管理,事实证明,在一个涉及多种机器并被多个团体使用的网络中(即使仅在麻省理工学院内部),这并非易事。能够尽快将整个网络的明显故障隔离到电缆或特定主机的硬件或软件,这一点至关重要。 Chaosnet 的设计通过忽略与局域网无关的问题而大大简化。它没有为低速链路、高噪声(极高误码率)链路、多路径以及具有显著传输延迟的长距离链路提供特殊处理。这意味着 Chaosnet 不适合跨洲或卫星应用。Chaosnet 也没有尝试提供不必要的功能,例如多级服务或安全通信(端到端加密除外)。 Chaosnet 在很大程度上受到施乐 PARC 在局域网方面的开创性工作 \[ETHERNET (https://tumbleweed.nu/r/lm-3/uv/amber.html#ETHERNET)\] 的启发。Chaosnet 由两部分组成——硬件和软件——两者虽然在逻辑上可分离,但却是彼此设计的。硬件提供了一种与 PARC 以太网非常相似的载波侦听多路访问结构。网络节点争用对电缆(即以太网介质)的访问权限,以便向其他网络节点发送数据包。软件则基于数据包定义了更高级别的协议。这些协议可以(并且已经被)用于 Chaosnet 电缆以外的介质,以及多个互连的电缆。软件包含从以太网 \[ETHERNET (https://tumbleweed.nu/r/lm-3/uv/amber.html#ETHERNET)\]、TCP \[TCP (https://tumbleweed.nu/r/lm-3/uv/amber.html#TCP)\] 和 Arpanet 借鉴的思想,并加入了一些原创思路和修改。 ## 2 硬件协议¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#Hardware-Protocol) - 以太网络 (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Ether) - 数据包 (https://tumbleweed.nu/r/lm-3/uv/amber.html#Packets) - 收发器 (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Transceiver) - 接口 (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Interface) - 硬件协议 (https://tumbleweed.nu/r/lm-3/uv/amber.html#Hardware-Protocols) - 以太网竞争 (https://tumbleweed.nu/r/lm-3/uv/amber.html#Ether-Contention) ### 2.1 以太网络¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Ether) Chaosnet 的传输介质称为*以太网络*。物理上,它是一根同轴电缆,采用用于有线电视的半刚性 1/2 英寸低损耗类型,两端带有 75 欧姆终端。在每个网络节点处,一个*电缆收发器*连接到电缆。一根 10 米扁平电缆将收发器连接到*接口*,该接口连接到计算机的 I/O 总线。一个网络节点由这个收发器、接口和一台计算机构成,该计算机运行一个称为网络控制程序(NCP)的软件,该软件管理并控制 Chaosnet,同时运行其存在所依赖的应用程序软件。一次只有一个网络节点可以抢占以太网介质并传输一个数据包,该数据包会到达所有其他节点;每个节点在硬件层面决定是忽略该数据包还是接收它。单个以太网介质必须是线性电缆;不能有分支或短截线,末端不能连接成环。以太网电缆的最大长度约为 1 公里。这由色散和直流衰减决定。单个以太网上的最大节点数大概在几十个左右。这取决于用于连接收发器的连接器对电缆电气性能的劣化。以太网的最大长度可以通过使用中继器(连接两段电缆的双向数字放大器)来增加。但在实践中并不这样做。相反,协议提供了多个以太网,由称为*桥接器*的节点连接在一起,这些节点将数据包从一个以太网中继到另一个。桥接器通常是一台 PDP-11 计算机,带有两个或多个网络接口。桥接节点通常还执行其他任务,例如连接终端。桥接器还连接其他网络介质以及以太网;一些计算机通过其制造商的高速计算机间接口连接到附近的桥接器,而不是直接连接到以太网。异步线路也被用作 Chaosnet 介质。以下章节描述了以太网上信息的形式、收发器和接口硬件,以及控制谁可以抢占以太网介质的协议。 ### 2.2 数据包¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#Packets) 基本传输单元称为数据包。它是最多 4032 个数据位加上 48 位*头部*信息的序列,头部信息供硬件使用。数据包的位通常被分组为 16 位字。将传输的比特流划分为数据包提供了方便大小的资源分配和错误控制单元。硬件的工作是将数据包从一个节点传送到另一个节点。软件协议定义了数据包中数据位的含义,管理硬件,弥补硬件的不完善之处,并提供比简单地将数据包从一台计算机传输到另一台计算机更有用的服务。 硬件头部由三个 16 位字组成,称为*目的地*、*源*和*校验*。源标识了将此数据包传输到当前以太网上的节点。这不一定是消息的原始来源,因为它可能起源于不同的以太网。目的地标识了要从当前以太网接收此数据包的节点。这不一定是消息的最终目的地;它可能是一个桥接器,应将数据包中继到另一个以太网,然后从那里最终到达其最终目的地。校验字是一个循环冗余校验和,由硬件生成和检查,用于检测通过以太网传输时的错误、由电缆噪声产生的完全虚假数据包,以及发送和接收数据包缓冲区中的内存错误。 软件协议也基于数据包,将 128 个数据位用作软件头部。这在数据包 (https://tumbleweed.nu/r/lm-3/uv/amber.html#packets_002dsection) 中描述。 ### 2.3 收发器¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Transceiver) 每个连接到以太网的人通过一个收发器进行连接,收发器是一个小盒子,通过 UHF 连接器和 T 型接头直接安装在电缆上。所有节点使用相同的收发器(接口根据其设计要连接的计算机类型而不同)。收发器包含接口逻辑的模拟部分,提供以太网电缆与计算机之间的接地隔离,并包含一些保护电路,旨在防止故障程序或接口连续阻塞以太网。(如果重新设计,它应该包含更多的保护电路,因为某些可能的接口故障可能会绕过保护并使以太网不可用。) 收发器从计算机接口接收差分数字信号,并通过一个非常快的 VMOS 功率 FET 将其以约 8 伏(表示 1)或 0 伏(开路,表示 0)的电平施加到电缆上。当电缆空闲时,它被终端保持在 0 伏。这种简单的单极方案足以满足我们使用的中等电缆长度和传输速度。收发器通过将电缆上的电压与参考电压比较来监视电缆,并向接口返回差分信号。此外,它还检测干扰(另一个收发器与此收发器同时传输)并通知接口。收发器包含指示灯(发光二极管),用于指示电源正常、传输数据、接收数据以及接口试图阻塞以太网。一个测试按钮模拟从接口输入的连续 1,如果收发器工作正常,应(暗淡地)点亮所有灯。这些指示灯和测试按钮对于快速定位网络问题非常有用。收发器需要附近安装的独立电源;如果三个收发器相邻,一个电源可以服务三个。电缆与计算机之间的高压隔离由收发器内的光隔离器提供。 ### 2.4 接口¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#The-Interface) 接口通常是一个包含约 120 个 TTL 逻辑芯片的绕线板,插入计算机的 I/O 总线,并通过(收发器)将其连接到以太网。接口实现下一节描述的硬件协议,缓冲传入和传出的数据包,生成并检查校验和,并在要读取接收数据包缓冲区或存储到发送数据包缓冲区中的数据包时中断主机计算机。这些数据包缓冲区将主机计算机与电缆上的高速数据传输隔离开来。主机不需要高速产生位,而是可以以较低速率产生位,将它们收集到一个数据包中,然后告诉接口在单次高速突发传输中传输该数据包。目前存在用于 Lisp 机器、DEC LSI-11 微型计算机以及 DEC Unibus \[UNIBUS (https://tumbleweed.nu/r/lm-3/uv/amber.html#UNIBUS)\] 的接口,这使得 Chaosnet 可以连接到 PDP-11、VAX 以及大多数 PDP-10 的外围处理器。关于这个兼容接口系列的编程文档将在本文后面出现。未来可能会出现用于其他计算机的接口。现有的接口设计对其主机计算机没有提出任何异常的特殊要求,并且应该易于适应其他架构。 ### 2.5 硬件协议¶ (https://tumbleweed.nu/r/lm-3/uv/amber.html#Hardware-Protocols) 这些协议的目的是将数据包完好无损地从同一以太网上的一个节点传送到另一个节点,具有相当高的成功概率,并保证如果数据包未完好无损地传送,则给出错误指示或完全丢失该数据包。另一个目的是提供高性能,并且在重负载下不会陷入困境。 比特在以太网上使用一种称为 Upright Biphase NRZI 的技术表示。每个大约 250 纳秒长的比特单元以状态转换开始,从高到低或从低到高。这个转换标记比特单元的开始并提供自定时。在比特单元的四分之三处,电缆的状态被采样;高电平表示 1,低电平表示 0。如果要表示的比特与前一个比特相同,则在比特单元的开始处有一个转换,在比特单元的中间有第二个转换。如果要表示的比特与前一个比特相反,则比特单元中间没有转换,因为时钟转换已将电缆设置到所需状态。电缆上信号的交流频率在比特率的一半到全比特率之间变化。信息比特率为每秒 4 百万比特。自定时特性允许传输速度和电缆传播速度的轻微变化。然而,由于四分之三比特单元的延迟是固定的,因此只能容忍适度的速度变化。接口中使用晶体时钟作为发送定时的源。 由于每个比特单元至少有一个状态转换,因此电缆保持高电平或低电平相当长时间的状态可用于非数据用途。如果电缆保持低电平超过大约两个比特单元,则被认为是“不忙”。此条件标记一个数据包的结束,并允许其他节点传输。请注意,如果没有收发器是活动的,终端将保持电缆为低电平。如果电缆保持高电平大约两个比特单元,这是一个“中止信号”。中止信号有两个用途。如果收发器检测到冲突(两个节点同时尝试传输),每个发送接口停止传输并发送一个中止信号(四个比特单元长),告诉所有接收器忽略中止的数据包,并确保另一个发送器也中止。因此,当发生冲突时,以太网尽快被清空,以帮助防止在重负载条件下长时间占线。中止信号的另一个用途用于硬件流控制。当接收接口确定传入数据包是发往它的,但其接收缓冲区已经包含一个数据包时,它发送一个中止信号,使发送器停止。这具有双重目的:立即通知发送器其消息未送达,并防止在传输长数据包时以太网被占用。

相似文章

Lobstah Net,一个用于 P2P 推理的网格插件

Reddit r/openclaw

Lobstah Net 是一款全新的 ClawHub 插件,支持点对点联邦推理,通过将 LLM 调用路由到运行 Ollama 上 Qwen 等本地模型的闲置 Mac mini 网络来实现。它为 OpenClaw 代理提供 OpenAI 兼容接口,并使用 Nostr 进行安全的收据传播。