Difference between revisions of "Chaosnet"
(+Encapsulation) |
(Add transceiver image) |
||
(27 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | '''Chaosnet''' | + | [[Image:LMI Chaosnet Transceiver.png|200px|right|thumb|Chaosnet [[transceiver]] from [[LMI]]; AI Lab transceivers were almost identical, but were open. Note the [[CATV]] connector at the top corner, and the [[D Subminiature Connector]] to the [[network interface]] at the bottom.]] |
+ | |||
+ | '''Chaosnet''' is the name for both an [[internetworking]] [[protocol suite|protocol family]], and an early [[Local area network|LAN]] technology, both invented at the [[MIT AI Laboratory]]; the latter was the LAN on which the protocol first ran. (This article will use 'Chaosnet' for the latter, and 'Chaos' for the former, to reduce confusion.) | ||
The LAN was a [[Carrier-Sense Multiple Access with Collision Detection|CSMA-CD]] system modeled on the [[Xerox PARC]] 3 megabit/second Experimental [[Ethernet]], running over [[cable TV]] [[coaxial cable]] (using standard CATV connectors to connect the [[transceiver]]s; not vampire taps, as on the Experimental Ethernet). | The LAN was a [[Carrier-Sense Multiple Access with Collision Detection|CSMA-CD]] system modeled on the [[Xerox PARC]] 3 megabit/second Experimental [[Ethernet]], running over [[cable TV]] [[coaxial cable]] (using standard CATV connectors to connect the [[transceiver]]s; not vampire taps, as on the Experimental Ethernet). | ||
− | The protocol was later made to run over standard 10 megabit/second Ethernet, which largely supplanted the Chaosnet hardware. (On Ethernet, the [[Address Resolution Protocol]] is required to provide [[mapping]]s from 16-[[bit]] Chaos [[address]]es to the [[Media Access Control Address|48-bit addresses]] used by Ethernet.) | + | The protocol was later made to run over standard 10 megabit/second DIX Ethernet, which largely supplanted the Chaosnet hardware. (On Ethernet, the [[Address Resolution Protocol]] is required to provide [[mapping]]s from 16-[[bit]] Chaos [[address]]es to the [[Media Access Control Address|48-bit addresses]] used by Ethernet.) |
The protocol provided a [[reliable byte stream]] service, but also had a [[datagram]] mode. | The protocol provided a [[reliable byte stream]] service, but also had a [[datagram]] mode. | ||
== History == | == History == | ||
+ | |||
+ | Chaosnet was developed at MIT around 1973-1975, for [[LISP machine]]s (personal workstations developed to run LISP). It was a local network (about 1-2 km cable lengths), without central control (thus “chaos”). It was “cheap, efficient and fast”: circa 10 times the speed of the [[ARPANET]], or 30000 characters per second (or “double this in some favorable cases”). | ||
Chaosnet was initially called CAIOSnet. | Chaosnet was initially called CAIOSnet. | ||
+ | |||
+ | == Header format of Chaosnet hardware == | ||
+ | |||
+ | On the wire, a Chaosnet [[packet]] has a 48-bit header imposed by the hardware, followed by a maximum of 4032 payload bits. The header has three 16-bit words, which are handled by the interface hardware. The first word is a [[cyclic redundancy check|CRC]] checksum. The next words are the source and destination addresses, on the particular [[subnet]] the packet is currently traveling on. The interface hardware typically presents the packet data in reverse, so the three words appear last as viewed by software. | ||
+ | |||
+ | == Header format of Chaos on various hardware types == | ||
+ | |||
+ | Chaos packets on Chaosnet appear immediately after the hardware header (above), with no intervening header. (Some schemes for carrying non-Chaos packets on Chaosnet - e.g. [[Internet Protocol]] packets - used non-zero values in the 'pad' low-order byte of the first word in the Chaos header, below.) | ||
+ | |||
+ | === Chaos packet format on DIX Ethernet === | ||
+ | |||
+ | Chaos traffic on an DIX Ethernet uses EtherType 0x0804. | ||
+ | |||
+ | === Chaos packet format on synchronous serial links === | ||
+ | |||
+ | Chaos traffic was eventually carried on [[synchronous serial line]]s; e.g. inside Symbolics' network. The format has not yet been documented. | ||
+ | |||
+ | == Protocol header == | ||
+ | |||
+ | On top of the hardware wire format, there is a software defined protocol. The packet data starts with eight 16-bit words, followed by the payload. The header appears first as viewed by software, but is actually transmitted last on the wire on a Chaosnet. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Offset || Bits 15-12 || Bits 11-8 || Bits 7-4 || Bits 3-0 | ||
+ | |- | ||
+ | | 0 | ||
+ | | colspan="2" | Opcode | ||
+ | | colspan="2" | 0 | ||
+ | |- | ||
+ | | 1 || colspan="1" | Forwarding || colspan="3" | Payload length | ||
+ | |- | ||
+ | | 2 || colspan="4" | Source address | ||
+ | |- | ||
+ | | 3 || colspan="4" | Source index | ||
+ | |- | ||
+ | | 4 || colspan="4" | Destination address | ||
+ | |- | ||
+ | | 5 || colspan="4" | Destination index | ||
+ | |- | ||
+ | | 6 || colspan="4" | Packet number | ||
+ | |- | ||
+ | | 7 || colspan="4" | Acknowledgement | ||
+ | |} | ||
+ | |||
+ | The source and destination addresses are of course those of the original source and ultimate destination, which will, on intermediate links between the two, be unrelated to the source and destination addresses in the hardware LAN packet header on that link. | ||
+ | |||
+ | ===Packet opcodes=== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Code || Meaning | ||
+ | |- | ||
+ | | 1 || RFC, request for connection | ||
+ | |- | ||
+ | | 2 || OPN, connection opened | ||
+ | |- | ||
+ | | 3 || CLS, connection closed | ||
+ | |- | ||
+ | | 4 || FWD, connection forwarded | ||
+ | |- | ||
+ | | 5 || ANS, answer | ||
+ | |- | ||
+ | | 6 || SNS, sense status | ||
+ | |- | ||
+ | | 7 || STS, status | ||
+ | |- | ||
+ | | 10 || RUT, routing information | ||
+ | |- | ||
+ | | 11 || LOS, lossage | ||
+ | |- | ||
+ | | 12 || LSN, listen for connection | ||
+ | |- | ||
+ | | 13 || MNT, maintenance | ||
+ | |- | ||
+ | | 14 || EOF, end of file | ||
+ | |- | ||
+ | | 15 || UNC, uncontrolled packet | ||
+ | |- | ||
+ | | 16 || BRD, broadcast packet | ||
+ | |- | ||
+ | | 200 and up || DAT, connection data | ||
+ | |} | ||
== Encapsulation == | == Encapsulation == | ||
− | Historically, the protocol ran only directly on LANs, | + | Historically, the protocol ran only directly on LANs. On hardware Chaosnet, no encapsulation was used. On Ethernet, protocol 0x0804 was allocated for carriage of Chaos protocol traffic. |
+ | |||
+ | In addition to the Ethernet implementations described above, several encapsulations have been developed. The standard one is using protocol 16 (decimal) on the [[Internet Protocol]] - this was implemented e.g in TOPS-20 and in Cisco routers [https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/qos_nbar/prot_lib/config_library/pp5000/nbar-prot-pack5000/c.html#wp2475366549]. | ||
+ | |||
+ | Currently, Chaos is encapsulated also in: | ||
− | + | * Unix domain sockets (e.g. for the [[CADR]] emulator) | |
+ | * [[User Datagram Protocol|UDP]] (originally developed for [[KLH10]]) | ||
+ | * [[TLS]] over [[TCP/IP]] (the preferred encapsulation across the [[Internet]], see [https://github.com/bictorv/chaosnet-bridge/blob/master/TLS.md]) | ||
− | + | There is a [[bridge]]/[[router]] that understands all these, including Ethernet and IP, written by Bjorn Victor. It also has an API (a "Network Control Program") providing Chaos for modern computers. | |
− | |||
− | |||
− | + | == Protocol implementations == | |
− | + | This table lists both historical and current implementations, along with preservation status, whether code is publicly available, and whether it's currently possible to run it. | |
− | + | {| class="wikitable" | |
− | + | ! Implementation || Preserved || Public || Running | |
− | + | |- | |
− | + | | [[LISP machine]]s || Yes || Yes || Yes | |
− | + | |- | |
− | + | | [[Incompatible Timesharing System|ITS]] || Yes || Yes || Yes | |
− | + | |- | |
− | + | | [[TOPS-20]] || Yes || Partially || Work underway | |
− | + | |- | |
− | + | | [[FOONEX]] || Yes || Yes || No | |
− | + | |- | |
− | + | | [[VMS|VAX/VMS]] || Yes || Yes || Work underway | |
− | + | |- | |
+ | | [[BSD|BSD Unix]] || Yes || Yes || Yes | ||
+ | |- | ||
+ | | [[MINITS]] || Yes || Yes || Yes | ||
+ | |- | ||
+ | | [[NSWIT]] || Yes || No || No | ||
+ | |- | ||
+ | | PDP-11 [[Unix Seventh Edition|Unix V7]] || No || - || - | ||
+ | |- | ||
+ | | [[Unix Eighth Edition|Unix V8]] || Yes || Yes || No | ||
+ | |- | ||
+ | | [[Multics]] || ? || ? || ? | ||
+ | |- | ||
+ | | [[MagicSix]] || No || - || - | ||
+ | |- | ||
+ | | [[C Gateway]] - router only || Yes || Yes || No | ||
+ | |- | ||
+ | | [https://github.com/bictorv/chaosnet-bridge Chaosnet Bridge] || Yes || Yes || Yes | ||
+ | |- | ||
+ | | Oswalds's [http://josephoswald.nfshost.com/chaos-python/summary.html Python] and [http://josephoswald.nfshost.com/chaos-lisp/summary.html Lisp] implementations || Yes || Yes || Yes? | ||
+ | |- | ||
+ | | [[Linux]] || Yes || [https://chaosnet.sourceforge.net/ Yes] || No? | ||
+ | |} | ||
== Hardware, and simulations == | == Hardware, and simulations == | ||
− | * CH11, [[UNIBUS]] device | + | * [[Chaosnet interface|CH11]], [[UNIBUS]] device |
− | * [[QBCHNI]], [[QBUS]] device | + | * [[Chaosnet interface|QBCHNI]], [[QBUS]] device |
* CH10, [[PDP-10]] I/O bus device | * CH10, [[PDP-10]] I/O bus device | ||
Line 48: | Line 158: | ||
* [[SIMH]]'s [[KS10]], [[PDP-11]], and [[VAX]] simulate a CH11 | * [[SIMH]]'s [[KS10]], [[PDP-11]], and [[VAX]] simulate a CH11 | ||
* SIMH's [[KA10]] and [[KL10]] simulates a CH10 | * SIMH's [[KA10]] and [[KL10]] simulates a CH10 | ||
+ | * The [https://tumbleweed.nu/r/usim/ usim] CADR emulator has Chaosnet support | ||
+ | * The [https://github.com/dseagrav/ld LambdaDelta] emulator has Chaosnet support | ||
+ | |||
+ | == See also == | ||
+ | |||
+ | * [[List of Chaos application protocols]] | ||
+ | * [[Chaos RTAPE protocol]] | ||
+ | |||
+ | {{semi-stub}} | ||
== External links == | == External links == | ||
* [http://bitsavers.trailing-edge.com/pdf/mit/ai/AIM-628_chaosnet.pdf AI memo 628] - Includes chapters on ITS, TOPS-20, Lisp Machine, and Unix implementations. | * [http://bitsavers.trailing-edge.com/pdf/mit/ai/AIM-628_chaosnet.pdf AI memo 628] - Includes chapters on ITS, TOPS-20, Lisp Machine, and Unix implementations. | ||
+ | ** [https://chaosnet.net/amber.html Chaosnet] - HTML version of the memo. | ||
* [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/chaord.57 SYSDOC;CHAORD >] - Initial design | * [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/chaord.57 SYSDOC;CHAORD >] - Initial design | ||
− | * [https://github.com/PDP-10/its-vault/blob/master/files/moon/amber.66 MOON;AMBER >] - Another Moon document | + | * [https://github.com/PDP-10/its-vault/blob/master/files/moon/amber.66 MOON;AMBER >] - Another Moon document, early version of AI Memo 628. |
− | * [https://tumbleweed.nu/r/lm-3/uv/amber.html Chaosnet] - Detailed descriptions of both the hardware system, and the | + | * [https://tumbleweed.nu/r/lm-3/uv/amber.html Chaosnet] - Detailed descriptions of both the hardware system, and the protocol(s) |
* [https://github.com/PDP-10/its-vault/tree/master/files/chaos CHAOS;] - hardware interface designs, etc. | * [https://github.com/PDP-10/its-vault/tree/master/files/chaos CHAOS;] - hardware interface designs, etc. | ||
− | ** [https://github.com/PDP-10/its-vault/blob/master/files/chaos/chaos.plans CHAOS;CHAOS PLANS] - interesting details of the physical installation at MIT | + | ** [https://github.com/PDP-10/its/blob/master/doc/chaos/pdp10.caios PDP10 CHAOS] - notes on the PDP-10 I/O bus interface |
− | + | ** [https://github.com/PDP-10/its/blob/master/doc/sysdoc/chaos.file CHAOS FILE] - Chaosnet FILE protocol | |
− | + | ** [https://github.com/PDP-10/its-vault/blob/master/files/chaos/chaos.plans CHAOS;CHAOS PLANS] - interesting details of the physical installation at MIT, plans for building ore boards, etc | |
+ | * [https://chaosnet.net/ Chaosnet wiki] - central site for a global emulated Chaosnet, also with descriptions of packet formats and (application) protocol details. | ||
+ | * [https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/sys/chaos/ chaos] - [[Unix Eighth Edition]] implementation | ||
+ | * [https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/sys/chunix/ chunix] | ||
[[Category: Networking]] | [[Category: Networking]] | ||
+ | [[Category: Network Protocols]] | ||
+ | [[Category: Chaos]] | ||
+ | [[Category: Chaosnet Hardware]] |
Latest revision as of 02:23, 2 August 2024
Chaosnet is the name for both an internetworking protocol family, and an early LAN technology, both invented at the MIT AI Laboratory; the latter was the LAN on which the protocol first ran. (This article will use 'Chaosnet' for the latter, and 'Chaos' for the former, to reduce confusion.)
The LAN was a CSMA-CD system modeled on the Xerox PARC 3 megabit/second Experimental Ethernet, running over cable TV coaxial cable (using standard CATV connectors to connect the transceivers; not vampire taps, as on the Experimental Ethernet).
The protocol was later made to run over standard 10 megabit/second DIX Ethernet, which largely supplanted the Chaosnet hardware. (On Ethernet, the Address Resolution Protocol is required to provide mappings from 16-bit Chaos addresses to the 48-bit addresses used by Ethernet.)
The protocol provided a reliable byte stream service, but also had a datagram mode.
Contents
History
Chaosnet was developed at MIT around 1973-1975, for LISP machines (personal workstations developed to run LISP). It was a local network (about 1-2 km cable lengths), without central control (thus “chaos”). It was “cheap, efficient and fast”: circa 10 times the speed of the ARPANET, or 30000 characters per second (or “double this in some favorable cases”).
Chaosnet was initially called CAIOSnet.
Header format of Chaosnet hardware
On the wire, a Chaosnet packet has a 48-bit header imposed by the hardware, followed by a maximum of 4032 payload bits. The header has three 16-bit words, which are handled by the interface hardware. The first word is a CRC checksum. The next words are the source and destination addresses, on the particular subnet the packet is currently traveling on. The interface hardware typically presents the packet data in reverse, so the three words appear last as viewed by software.
Header format of Chaos on various hardware types
Chaos packets on Chaosnet appear immediately after the hardware header (above), with no intervening header. (Some schemes for carrying non-Chaos packets on Chaosnet - e.g. Internet Protocol packets - used non-zero values in the 'pad' low-order byte of the first word in the Chaos header, below.)
Chaos packet format on DIX Ethernet
Chaos traffic on an DIX Ethernet uses EtherType 0x0804.
Chaos packet format on synchronous serial links
Chaos traffic was eventually carried on synchronous serial lines; e.g. inside Symbolics' network. The format has not yet been documented.
Protocol header
On top of the hardware wire format, there is a software defined protocol. The packet data starts with eight 16-bit words, followed by the payload. The header appears first as viewed by software, but is actually transmitted last on the wire on a Chaosnet.
Offset | Bits 15-12 | Bits 11-8 | Bits 7-4 | Bits 3-0 |
---|---|---|---|---|
0 | Opcode | 0 | ||
1 | Forwarding | Payload length | ||
2 | Source address | |||
3 | Source index | |||
4 | Destination address | |||
5 | Destination index | |||
6 | Packet number | |||
7 | Acknowledgement |
The source and destination addresses are of course those of the original source and ultimate destination, which will, on intermediate links between the two, be unrelated to the source and destination addresses in the hardware LAN packet header on that link.
Packet opcodes
Code | Meaning |
---|---|
1 | RFC, request for connection |
2 | OPN, connection opened |
3 | CLS, connection closed |
4 | FWD, connection forwarded |
5 | ANS, answer |
6 | SNS, sense status |
7 | STS, status |
10 | RUT, routing information |
11 | LOS, lossage |
12 | LSN, listen for connection |
13 | MNT, maintenance |
14 | EOF, end of file |
15 | UNC, uncontrolled packet |
16 | BRD, broadcast packet |
200 and up | DAT, connection data |
Encapsulation
Historically, the protocol ran only directly on LANs. On hardware Chaosnet, no encapsulation was used. On Ethernet, protocol 0x0804 was allocated for carriage of Chaos protocol traffic.
In addition to the Ethernet implementations described above, several encapsulations have been developed. The standard one is using protocol 16 (decimal) on the Internet Protocol - this was implemented e.g in TOPS-20 and in Cisco routers [1].
Currently, Chaos is encapsulated also in:
- Unix domain sockets (e.g. for the CADR emulator)
- UDP (originally developed for KLH10)
- TLS over TCP/IP (the preferred encapsulation across the Internet, see [2])
There is a bridge/router that understands all these, including Ethernet and IP, written by Bjorn Victor. It also has an API (a "Network Control Program") providing Chaos for modern computers.
Protocol implementations
This table lists both historical and current implementations, along with preservation status, whether code is publicly available, and whether it's currently possible to run it.
Implementation | Preserved | Public | Running |
---|---|---|---|
LISP machines | Yes | Yes | Yes |
ITS | Yes | Yes | Yes |
TOPS-20 | Yes | Partially | Work underway |
FOONEX | Yes | Yes | No |
VAX/VMS | Yes | Yes | Work underway |
BSD Unix | Yes | Yes | Yes |
MINITS | Yes | Yes | Yes |
NSWIT | Yes | No | No |
PDP-11 Unix V7 | No | - | - |
Unix V8 | Yes | Yes | No |
Multics | ? | ? | ? |
MagicSix | No | - | - |
C Gateway - router only | Yes | Yes | No |
Chaosnet Bridge | Yes | Yes | Yes |
Oswalds's Python and Lisp implementations | Yes | Yes | Yes? |
Linux | Yes | Yes | No? |
Hardware, and simulations
- KLH10 simulates a CH11
- SIMH's KS10, PDP-11, and VAX simulate a CH11
- SIMH's KA10 and KL10 simulates a CH10
- The usim CADR emulator has Chaosnet support
- The LambdaDelta emulator has Chaosnet support
See also
External links
- AI memo 628 - Includes chapters on ITS, TOPS-20, Lisp Machine, and Unix implementations.
- Chaosnet - HTML version of the memo.
- SYSDOC;CHAORD > - Initial design
- MOON;AMBER > - Another Moon document, early version of AI Memo 628.
- Chaosnet - Detailed descriptions of both the hardware system, and the protocol(s)
- CHAOS; - hardware interface designs, etc.
- PDP10 CHAOS - notes on the PDP-10 I/O bus interface
- CHAOS FILE - Chaosnet FILE protocol
- CHAOS;CHAOS PLANS - interesting details of the physical installation at MIT, plans for building ore boards, etc
- Chaosnet wiki - central site for a global emulated Chaosnet, also with descriptions of packet formats and (application) protocol details.
- chaos - Unix Eighth Edition implementation
- chunix