Table of Contents
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 127.0.0.1. Make sure the addresses match between the different config files, e.g. using 127.0.0.1 consistently (rather than the local “external” IP address such as 10.0.0.42), 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)
[chaos] 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
Advantages:
- 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
[chaos] 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:
link chudp $ITSHOST:$ITSPORT host $ITS_CHAOS myaddr $CBRIDGE_CHAOS link chudp $CADRHOST:$CADRPORT host $CADR_CHAOS myaddr $CBRIDGE_CHAOS
3. Complete examples
These examples assume
- the klh10 emulator is running on the host with IP address 192.168.0.100,
- the usim emulator is running on 192.168.0.101,
- the cbridge is running on 192.168.0.99,
- 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=192.168.1.100 tunaddr=192.168.1.45 ; Define CH11 devdef chaos ub3 ch11 addr=764140 br=6 vec=270 myaddr=177001 chudpport=42043 chip=177042/192.168.1.101:42044 ; 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 go
3.2 usim
The file sys/site/hosts.text
, assuming the ITS system name is DB:
NET CHAOS, 7 HOST CADR-1, CHAOS 177042,USER,LISPM,LISPM,[CADR-1,CADR1,LM1] HOST DB, CHAOS 177001,SERVER,ITS,PDP10,[DB] HOST MIT-OZ, CHAOS 177060,SERVER,UNIX,VAX,[OZ]
The usim init file (e.g. usim.init
):
[chaos] hosts = sys/site/hosts.text myname = CADR-1 servername = MIT-OZ backend = udp bridgeip = 192.168.0.100 bridgeport = 42043 bridgeport_local = 42044 bridgechaos = 177001 udp_local_hybrid = true [disk] disk0_filename = disk-sys-100-0.img [usim] sys_directory = sys state_filename = usim-100-0.state kbd = cadet monitor = other grab_keyboard = false [ucode] prommcr_filename = sys/ubin/promh.mcr promsym_filename = sys/ubin/promh.sym mcrsym_filename = sys/ubin/ucadr.sym [ucode] 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 192.160.0.100:42043 host 177001 myaddr 177040 ; Link to the CADR link chudp 192.160.0.101:42044 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/192.168.0.101:42044
withchip=177040/192.168.0.99
- for usim:
- replace
bridgeip = 192.168.0.100
withbridgeip = 192.168.0.99
and - replace
bridgeport = 42043
withbridgeport = 42042
(or remove it, since it is the default).