1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00
PDP-10.its/doc/networking.md
Mike Kostersitz (Oilcan Productions) 600199e94b
Update networking.md
fixing PDP10-KA simh configuration file so that ; is not inline with the command.
2023-04-03 16:49:51 -07:00

187 lines
7.8 KiB
Markdown

# TCP/IP
Currently, networking is only supported under the KLH10 and SIMH KA10
and KL10 emulators. The SIMH KS10 does not have the necessary
support. As of this release, only the ITS monitor, host table tools,
and binary host table are installed.
Currently, basic TCP network support is in the build, in addition to
both a TELNET/SUPDUP server, and both TELNET and SUPDUP clients.
Additionally, both an FTP server and client are included.
SMTP mail inbound and outbound is included,
as well as local mail delivery.
## IP address
Unless you are running the current ITS on a current version of KLH10 (see [below](#KLH10)),
you need to [rebuild ITS](NITS.md) to change the machine's IP address.
### SIMH KA10 / KL10
To get the `pdp10-ka` online with reasonably low effort, use the included SIMH NAT interface via DHCP.
PDP10-KL instructions are in the making and while they should be the same as for KA they are not tested completely yet.
#### Using the host's TAP interface
This enables networking with Network Address Translation (NAT) where the SIMH network adapter gets an IP address from a on network DHCP server. If you are running multiple SIMH instances with diffrerent networking requirements make sure to look at **Configuring networking in KA/KL with static IP assignment**.
Depending on your host you will need to create a
- TAP network interface
- Network Bridge
- Add your Ethernet adapter and the TAP interface to the network bridge
To do this first install the dependencies if you do not have them
```
apt-get update && apt-get upgrade -y
apt-get install make
apt-get install libpcap-dev
apt-get install bridge-utils
apt-get install uml-utilities
apt-get install net-tools
apt-get install gawk
```
On Raspian/Debian based host systems this script will setup everything automatically.
Make sure you look at your primary ethernet adapter in this case `eth0`
Edit the first lines to reflect your host.
Run this command to get the values for the script
```
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1280
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::215:5dff:fe49:af43 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:49:9d:77 txqueuelen 1000 (Ethernet)
$ ip route
default via 192.168.1.1 dev eth0 proto kernel
```
The above are examples from an Ubuntu 20.x system.
> **Note**
> Edit the script below to match your system!
> Especially the adapter name for the ethernet adapter in my case it is `eth0`
If you are running multiple ITS systems on the same host you can create more TAP adapters and attach them to the same bridge.
```
#!/bin/sh
HOSTIP='<Your ETH0 Host IP Address>' # i.e. 192.168.1.10
HOSTNETMASK='<Your ETH0 Host IP Subnnet mask>' # i.e. 255.255.255.0
HOSTBCASTADDR='<Your ETH0 Broadcast address>' # i.e. 192.168.1.255
HOSTDEFAULTGATEWAY='<Your ETH0 default gateway>' # i.e. 192.168.1.1
ENETADAPTERNAME='eth0'
BRIDGENAME='br0'
TAPNAME='tap0'
#
/usr/bin/tunctl -t $TAPNAME
/sbin/ifconfig $TAPNAME up
#
# Now convert eth0 to a bridge and bridge it with the TAP interface
/usr/sbin/brctl addbr $BRIDGENAME
/usr/sbin/brctl addif $BRIDGENAME $ENETADAPTERNAME
/usr/sbin/brctl setfd $BRIDGENAME 0
/sbin/ifconfig $ENETADAPTERNAME 0.0.0.0
/sbin/ifconfig $BRIDGENAME $HOSTIP netmask $HOSTNETMASK broadcast $HOSTBCASTADDR up
# set the default route to the br0 interface
/sbin/route add -net 0.0.0.0/0 gw $HOSTDEFAULTGATEWAY
# bridge in the tap device
/usr/sbin/brctl addif $BRIDGENAME $TAPNAME
/sbin/ifconfig $TAPNAME 0.0.0.0
```
Verify you have the TAP0 and BR0 interfaces and check you have internet access.
Next configure SIMH
Under your root folder for the project i.e. `/home/<user>/its` edit the SIMH configuration file `out/pdp10-ka/run` or `out/pdp10-kl/run` and configure the `IMP` interface as follows:
```
; enable SIMH network emulation
set imp enabled
; if you are running multiple SIMH instances on the same host you might have to change the MAC address
set imp mac=e2:6c:84:1d:34:a3
; enable DHCP, this will allow SIMH to get an IP address from your home network
set imp DHCP
; configure the ITS host IP
set imp host=10.3.0.6
; Only on PDP10-KA! Set the network interface interrupt
set imp mpx=4
; map the host tap interface
at imp tap:tap0
```
Now start ITS as you normally would.
To find the IP address the SIMH adapter interrupt the simulation by hitting `CTRL+\` and at the `simh>` prompt type `sho imp` the output will give you the IP address of the simulated network card.
```
sim> sho imp
IMP MAC=E2:6C:84:1D:34:A3, MPX=4, IP=192.168.1.85/24
GW=192.168.1.1, HOST=10.3.0.6, DHCP Server IP=192.168.1.1, Lease Expires in 5906 seconds
attached to tap:tap0, DHCP, MIT
```
to return to ITS type `cont` at the `simh>` prompt.
### Configuring networking in KA/KL with static IP assignment
You do not need a TAP or Bridge interface for this type of configuration but it is a bit more involved on the configuration side.
#### Configure SIMH
Under your root folder for the project i.e. `/home/<user>/its` edit the SIMH configuration file `out/pdp10-ka/run` or `build/pdp10-kl/run` and configure the `IMP` interface as follows:
```
set imp enabled ; enable the SIMH IMP interface
; set the IP address for the emulated system. This needs to be configured correctly in ITS as well.
set imp host=10.0.2.4
; set the IP address of the IMP interface, this is the address the interface will be reachable through on your network.
; adapt this to your own network configuration.
; uses the CIDR notation IP/SUBNET MASK
set imp ip=172.16.0.4/24
; set the default gateway for your network
set imp gw=172.16.0.2
; set the nat configuration
; gateway is the same as the one above
; network is the IP network used in CIDR notation
; tcp= are port forwards. <Hostnetwork Port>:<imp IP>:<destination system port>
; in the example below the forwards are for both Telnet and FTP
; you would Telnet to the system using `telnet 172.16.0.4 2023` to get a session open to the system
at imp nat:gateway=172.16.0.2,network=172.16.0.0/24,tcp=2023:172.16.0.4:23,tcp=2021:172.16.0.4:21
; only for KA based emulation set the interrupt for the interface in ITS, normally 4.
set imp mpx=4
```
### SIMH KS10
Albeit untested the above IMP interface should also work with KS10 based emulation.
### KLH10
The KLH10 dskdmp.ini file has an IP address (192.168.1.100) and gateway IP
address (192.168.0.45) configured for the ITS system. The IP address
matches the address configured in SYSTEM; CONFIG > (as IMPUS3),
but this is not important since the address is now updated at runtime (see below).
Finally, the HOST table source (SYSHST; H3TEXT >) and binary (SYSBIN; HOSTS3 >)
define a host called DB-ITS.EXAMPLE.COM at the IP address 192.168.1.100.
In order to change the IP address of the host, you only need to change
the `ipaddr` parameter in the KLH10 `.ini` file, and ITS will get the
address and netmask from (the IMP of) KLH10 at runtime. You will still
want/need to update `SYSHST;H3TEXT >` and recompile it using `SYSHST;H3MAKE BIN`.
You can also set/change a Chaosnet address of the `ch11` device in the
`.ini` file. The address is read by ITS at runtime. Note that to use
Chaosnet, you must have enabled it by `DEFOPT CH11P==1` in `SYSTEM; CONFIG >`.
This is done automatically if you specified a chaos address in the `.../conf/network` file.
If you use Chaosnet, you may be interested in joining the Global
Chaosnet: read more about it at https://chaosnet.net.
## DNS
Check out this [external guide](https://its.victor.se/wiki/dqdev)
## Mail
Check out this [external guide](https://its.victor.se/wiki/mail-setup)
## telnet, supdup, ftp
They work out of the box
# Chaosnet
Chaosnet SUPDUP, TELNET and FTP (CHTN and CFTP), are available
but this requires support and configuration
in the emulator to actually use. For KLH10, see [above](#KLH10).
Read more about Chaosnet at https://chaosnet.net.
# Useful resources
- [The ITS Wiki](https://its.victor.se/wiki/start)