Chaosnet wiki

The global Chaosnet site

User Tools

Site Tools


Setting up a local private Chaosnet

If you want to play around with Chaosnet, connecting two or more of your emulated systems, without connecting to the Global Chaosnet, the following is intended to be helpful. See also example configs for cbridge.

1. Background

Chaosnet address are 16 bits long. The most significant 8 bits are the subnet, and the 8 least significant bits are the host address on that subnet. Chaosnet addresses are traditionally (and always) written in octal. There is no dot separating the subnet from the host address, they are written as the combined octal value.

For the Global Chaosnet, subnets are allocated per “site”. Not everyone might want to connect to the Global Chaosnet, or you might want an isolated subnet for experiments or playing around.

In order to minimise address collisions and routing problems, one subnet has been reserved as a private, non-routed subnet. No routing information about that subnet should be sent outside that subnet, no packets from that subnet should be sent to other subnets, and any packets received from that subnet on another subnet should be dropped. This is similar to the IP Private networks such as 10.x.y.z or 192.168.x.y.

That subnet is 376 (octal, = 254 decimal) which gives addresses 177001-177377 octal.

2. Configuration

Here the general principles are explained. There are complete configuration examples below.

Below, the Chaosnet addresses of the ITS, CADR, and cbridge hosts should be in the range of subnet 376, for example

  • ITS_CHAOS=177001
  • CADR_CHAOS=177042
  • CBRIDGE_CHAOS=177040

The IP addresses of the hosts running the PDP10 emulator (for ITS), the CADR emulator (usim), and the Chaosnet bridge (cbridge) are represented by ITSHOST, CADRHOST, and CBRHOST. These are typically local IP address such as 192.168.0.x or 10.0.0.y, but if they are all running on the same host they can all be Make sure the addresses match between the different config files, e.g. using consistently (rather than the local “external” IP address such as, if you use it.

The UDP port for encapulated Chaosnet packets is by default 42042, but if the hosts are on the same machine the ports for each must be different, e.g. 42043, 42044 etc. Below they are represented by ITSPORT, CADRPORT, and CBRPORT. If such a port is the default, 42042, you can omit specifying it, but it doesn't hurt to write it out.

Note: where the syntax $FOO is used below, you need to write the specific address or port number.

2.1 Connecting two machines

With only two machines involved, e.g. one ITS and one CADR, or two ITS or two CADR, you can let them communicate directly over UDP.

klh10 side: definition of the CH11 device (snippet)

devdef chaos ub3 ch11 addr=764140 br=6 vec=270 myaddr=$ITS_CHAOS chudpport=$ITSPORT chip=$CADR_CHAOS/$CADRHOST:$CADRPORT

CADR side: usim init file (snippet)

hosts = sys/site/hosts.text
myname = CADR-1
backend = udp
bridgeip = $ITSHOST
bridgeport = $ITSPORT
bridgechaos = $ITS_CHAOS

Make sure the file sys/site/hosts.text has an entry for CADR-1 with the address $CADR_CHAOS.

2.1.1 But how can I still use the built-in FILE server for usim?

Please add

servername = MIT-OZ
udp_local_hybrid = true

where MIT-OZ should be in your sys/site/hosts.text (which it originally is). The address should match that which is defined in the LISPM system, and should be on the same subnet as the CADR, i.e. have an address in the range 177001-177377. 1)

This makes all packets to/from the MIT-OZ address (such as the FILE server, TIME server etc) be handled by the “local” backend, and all other packets by the “udp” backend.

2.2 Connecting your machines to cbridge


  • you can connect more than two machines
  • you can use the Chaosnet "API" from your unix-like host
  • you can at a later stage connect to the Global Chaosnet
  • you can connect to a local Ethernet-based Chaosnet (e.g. for LambdaDelta)
  • you can connect to Chaosnet-over-IP (e.g. for TOPS-20)

Here, each of the other systems connect to cbridge over individual UDP links

For the klh10 configuration example above, replace CADR with CBRIDGE, thus

devdef chaos ub3 ch11 addr=764140 br=6 vec=270 myaddr=$ITS_CHAOS chudpport=$ITSPORT chip=$CADR_CHAOS/$CADRHOST:$CADRPORT

For the CADR configuration example above, replace ITS with CBRIDGE, thus

hosts = sys/site/hosts.text
myname = CADR-1
backend = udp
bridgeip = $CBRIDGE_IP
bridgeport = $CBRIDGEPORT
bridgechaos = $CBRIDGE_CHAOS

Make sure the file sys/site/hosts.text has an entry for CADR-1 with the address $CADR_CHAOS.

And in cbridge.conf, define the links to ITS and CADR thus:


3. Complete examples

These examples assume

  • the klh10 emulator is running on the host with IP address,
  • the usim emulator is running on,
  • the cbridge is running on,
  • and the Chaosnet addresses are as in the example above.

3.1 klh10

The klh10 init file (e.g. klh10.ini):

; Define basic KS10 device config - two RH11s each on its own Unibus

devdef rh0  ub1   rh11   addr=776700 br=6 vec=254
devdef rh1  ub3   rh11   addr=772440 br=6 vec=224

; Provide one disk, one tape in config ITS expects

devdef dsk0 rh0.0 rp     type=rp06 format=dbd9 path=rp0.dsk iodly=0
devdef mta0 rh1.0 tm02   fmtr=tm03 type=tu45

; ITS wants a 60Hz clock, allow it.  Need this until defaults OK.
set clk_ithzfix=60

; Define IMP
devdef imp  ub3   lhdh   addr=767600 br=6 vec=250 ipaddr= tunaddr=
; Define CH11
devdef chaos ub3  ch11   addr=764140 br=6 vec=270 myaddr=177001 chudpport=42043 chip=177042/

; Dummy definitions.  Only one DZ is still (apparently) needed.
devdef dz0  ub3   dz11   addr=760010 br=5 vec=340

; Define new HOST device hackery
devdef idler ub3 host addr=777000

load @.itsbin-u

3.2 usim

The file sys/site/hosts.text, assuming the ITS system name is DB:


The usim init file (e.g. usim.init):

hosts = sys/site/hosts.text
myname = CADR-1
servername = MIT-OZ
backend = udp
bridgeip =
bridgeport = 42043
bridgeport_local = 42044
bridgechaos = 177001
udp_local_hybrid = true

disk0_filename = disk-sys-100-0.img

sys_directory = sys
state_filename = usim-100-0.state
kbd = cadet
monitor = other
grab_keyboard = false

prommcr_filename = sys/ubin/promh.mcr
promsym_filename = sys/ubin/promh.sym
mcrsym_filename = sys/ubin/ucadr.sym

track_mouse = false

3.3 Chaosnet bridge

Here we let cbridge use the default port 42042 for Chaosnet-over-UDP. The cbridge init file (e.g. cbridge.conf):

; My Chaosnet address
chaddr 177040
; Link to the ITS system
link chudp host 177001 myaddr 177040
; Link to the CADR
link chudp host 177042 myaddr 177040

Remember that when you introduce the cbridge, you need to update the klh10 and usim init files above:

  • for klh10: replace chip=177042/ with chip=177040/
  • for usim:
    • replace bridgeip = with bridgeip = and
    • replace bridgeport = 42043 with bridgeport = 42042 (or remove it, since it is the default).
If the CADR doesn't think the server is on a reachable subnet, it will not even try sending packets there!
local.txt · Last modified: 2024-05-16 21:02 by victor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki