Both sides previous revisionPrevious revisionNext revision | Previous revision |
chaosnet [2017-08-17 18:25] – [Chaosnet link implementations] victor | chaosnet [2017-08-29 12:42] (current) – [Conclusion] victor |
---|
This page is about Chaosnet, the network protocol developed at MIT about 1975 for Lisp Machines. It was also implemented for TOPS-20, VAX/VMS, Unix, and of course ITS. | This page is about Chaosnet, the network protocol developed at MIT about 1975 for Lisp Machines. It was also implemented for TOPS-20, VAX/VMS, Unix, and of course ITS. |
| |
Read the MIT AI Memo 628: [[https://dspace.mit.edu/handle/1721.1/6353|Chaosnet]] by David A. Moon for most of the gory details. | Read the MIT AI Memo 628: [[https://dspace.mit.edu/handle/1721.1/6353|Chaosnet]] by David A. Moon for most of the gory details. See also [[https://groups.google.com/d/topic/comp.protocols.tcp-ip/AeJA1K7uA-o/discussion|comp.protocols.tcp-ip]]. |
| |
| Have a look at [[chaos-dns|how to add Chaosnet info to your DNS]]. |
| |
| Feel free to add and correct stuff on this page! |
===== Chaosnet link implementations ===== | ===== Chaosnet link implementations ===== |
**A.** The original Chaosnet was developed in 1975 at MIT, running over a coaxial cable allowing 2 (or 4?) Mb/s [source needed]. It was implemented at least on CADR Lisp Machines [first-hand experience], TOPS-20 [first-hand experience], VAX/VMS, Unix, and ITS. | **A.** The original Chaosnet was developed in 1975 at MIT, running over a coaxial cable allowing 2 (or 4?) Mb/s [source needed]. It was implemented at least on CADR Lisp Machines [first-hand experience], TOPS-20 [first-hand experience], VAX/VMS, Unix, and ITS. |
The main sources would be the original MIT AIM 628, section 2. See also [[https://groups.google.com/d/topic/comp.protocols.tcp-ip/AeJA1K7uA-o/discussion|comp.protocols.tcp-ip]]. | The main sources would be the original MIT AIM 628, section 2. |
| |
**B.** Later, Chaosnet was running on standard Ethernet (at 10 Mb/s and more). It was implemented at least on later Lisp Machines [LMI Lambda, Symbolics 36xx, TI Explorer, first-hand experience]. | **B.** Later, Chaosnet was running on standard Ethernet (at 10 Mb/s and more). It was implemented at least on later Lisp Machines [LMI Lambda, Symbolics 36xx, TI Explorer, first-hand experience]. |
**E.** For the [[http://www.unlambda.com/cadr/|usim CADR emulator]] an implementation of Chaosnet over Unix named sockets was done, e.g. allowing the CADR emulator to contact Chaosnet servers on the unix host running the emulator. A server process ("chaosd") opens a socket which forwards between client sockets in a broadcast manner. The packets are prepended by a four-byte header (MSB of length, LSB of length, 1, 0). | **E.** For the [[http://www.unlambda.com/cadr/|usim CADR emulator]] an implementation of Chaosnet over Unix named sockets was done, e.g. allowing the CADR emulator to contact Chaosnet servers on the unix host running the emulator. A server process ("chaosd") opens a socket which forwards between client sockets in a broadcast manner. The packets are prepended by a four-byte header (MSB of length, LSB of length, 1, 0). |
| |
Programs to "bridge" between implementations of (B) and (D) and (D) and (E) were implemented [by BV] to interconnect a Symbolics 3640 (type B) with an ITS under klh10 (type D) and a usim CADR (type E). (That has now been refined into a single bridge program between (B), (D) and (E).) | Programs to "bridge" between implementations of (B) and (D) and (D) and (E) were implemented [by BV] to interconnect a Symbolics 3640 (type B) with an ITS under klh10 (type D) and a usim CADR (type E). That has now been refined into a single bridge program between (B), (D) and (E), see the end of this page. |
| |
See also Joseph Oswald's [[http://josephoswald.nfshost.com/chaos-python/summary.html|implementation of (E) and routing with (D) in Python]], and [[http://josephoswald.nfshost.com/chaos-lisp/summary.html|implementation of (D) in CommonLisp]]. | See also Joseph Oswald's [[http://josephoswald.nfshost.com/chaos-python/summary.html|implementation of (E) and routing with (D) in Python]], and [[http://josephoswald.nfshost.com/chaos-lisp/summary.html|implementation of (D) in CommonLisp]]. |
none of the standards seem widely implemented? | none of the standards seem widely implemented? |
| |
===== Conclusion ===== | |
To interconnect Chaosnets, the "cbridge" program was developed, building on "echaos" (bridge (B) and (D)) and "chudprt" (bridging (B) and (E)). See the source {{ :cbridge.tar.gz |here}}. | |
| |
One idea could be to rewrite klh10/ch11 to use real Chaosnet-over-ethernet, but klh10 often runs behind a tun interface (with only IP), so there is no direct Ethernet access. | One idea could be to rewrite klh10/ch11 to use real Chaosnet-over-ethernet, but klh10 often runs behind a tun interface (with only IP), so there is no direct Ethernet access. |
Another, more interesting, idea would be to hack Open Genera to use tap (so Chaos can be used). | Another, more interesting, idea would be to hack Open Genera to use tap (so Chaos can be used). |
| |
| ===== Conclusion ===== |
| To interconnect Chaosnets, the "cbridge" program was developed, building on "echaos" (bridge (B) and (D)) and "chudprt" (bridging (B) and (E)). See the source [[https://github.com/bictorv/chaosnet-bridge|here]]. |
| |
| You can configure the bridge to connect subnets and/or individual hosts. |
| Use cases could be |
| * connecting remote Chaosnet-over-Ethernets, e.g. to communicate with others using [[https://github.com/dseagrav/ld|LambdaDelta]] (use a Chaos-over-udp link between them). |
| * connecting remote Chaosnet-over-unix-sockets, e.g. to communicate with others using usim (use a Chaos-over-udp link between them). |
| * connecting ITSes running on klh10 - rather than configuring your klh10 to handle all other chudp hosts and iptables to forward chudp pkts over the tun interface, keep chudp routing in the bridge program. Adding new chudp hosts now doesn't require klh10 configuration. |
| * and interconnecting these three, of course! |
| |
| See also ''-READ-ME-.text'' in the source archive. |