DECnet forever! My SIMH OpenVMS VAXen - QCOCAL (1.550) VAX Server 3900 Series in Washington DC and CLOUDY (1.551) VAX 11/780 in Kitchener, Ontario, Canada talk to the HECnet primary router MIM (1.13) - a real PDP-11 in Uppsala, Sweden running RSX-11M-PLUS and, through it, to numerous VAXen and PDPs across the world.
My first SIMH VAX Server 3900 series has been up now for almost a year. I call it "QCOCAL", in memory of a real VAX I used during my stint with Digital Equipment Corporation. The new QCOCAL lives inside a Centos 7 virtual machine on my DELL PowerEdge 2950 in the basement of our house in the Washington, DC metro area. It is connected to HECnet - the global hobbyist DECnet, using the DECnet bridge program written by Johnny Billquist.
Having recently procured a couple of Virtual Private Servers, I installed a second SIMH VAX-11/780 on one of them, calling the VAX "CLOUDY" (because it lives inside a cloud VPS). The VPS is hosted in a data-center in Kitchener, Ontario, Canada.
A view of just internet connectivity of the servers and the simulated VAXen looks like Diagram 1. The NICs of the Linux host servers are bridged and then tun/tap taps are used to connect the SIMH Vaxen. This is because the SIMH simulator grabs the entire configured NIC and we cannot really let it have the host's NIC all for itself (more information see "CHAPTER 3: Creating a TUN/TAP Pseudo Network Device and Bridging to the Host Network Interface").
|
To facilitate DECnet protocol communication, the DECnet Bridge program grabs DECnet packets from the ethernet taps (i.e. tap0, tap1), encapsulates them in UDP packets and sends them over the internet connections to be converted back into DECnet packets on the other side. Conceptually, it looks like diagram 2.
Diagram 2: DECnet Bridge connecting VAX Servers over Internet to HECnet |
Here is the network configuration of the SIMH host sanyalnet-openvms-vax.freeddns.org which is also LAN accessible as dormarth.sanyalnet.lan (CentOS 6) for QCOCAL:
[root@dormarth ~]# hostname
dormarth.sanyalnet.lan
[root@dormarth ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 08:00:27:a1:81:b6 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fea1:81b6/64 scope link
valid_lft forever preferred_lft forever
3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 5e:e0:9a:25:cc:41 brd ff:ff:ff:ff:ff:ff
inet6 fe80::5ce0:9aff:fe25:cc41/64 scope link
valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 08:00:27:a1:81:b6 brd ff:ff:ff:ff:ff:ff
inet 10.42.2.2/24 brd 10.42.2.255 scope global br0
inet6 fe80::a00:27ff:fea1:81b6/64 scope link
valid_lft forever preferred_lft forever
[root@dormarth ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.42.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
0.0.0.0 10.42.2.1 0.0.0.0 UG 0 0 0 br0
and QCOCAL (OpenVMS 7.3) itself :
$ SHOW NETWORK /FULL
The following network services are available at this time:
Product: DECnet Manufacturer: Digital Equipment Corporation
Node: QCOCAL Address(es): 1.550
Network Type: DNA V Interface(s): net 0
Node 0
at 2016-11-19-23:45:48.385+00:00Iinf
Identifiers
Name = LOCAL:.QCOCAL
Address =
{
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV3 , number = 19 ] ,
[ DNA_OSItransportV1 , 'DEC0'H ] ,
[ DNA_OSInetwork , 49::00-01:AA-00-04-00-26-06:21 (LOCAL:.QCOCAL) ]
) ,
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV2 , number = 19 ] ,
[ DNA_OSItransportV1 , 'DEC0'H ] ,
[ DNA_IP , 0.0.0.0 ]
) ,
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV3 , number = 19 ] ,
[ DNA_NSP ] ,
[ DNA_OSInetwork , 49::00-01:AA-00-04-00-26-06:20 (LOCAL:.QCOCAL) ]
)
}
Status
UID = 06E08000-DF79-11D4-8001-AA0004000104
State = On
Functions Enabled =
{
Address Watcher ,
CMIP Listener
}
ID = AA-00-27-FD-99-EC
Characteristics
Version = T5.0.3
Implementation =
{
[
Name = OpenVMS VAX ,
Version = "V7.3 "
] ,
[
Name = Compaq DECnet-Plus for OpenVMS ,
Version = "V7.3 30-DEC-2000 00:04:42.43"
]
}
Script Location = <Default value>
Maximum Listeners = 0
Listener Template = <Default value>
Secondary Names =
{
}
Counters
Creation Time = 2016-05-14-17:20:11.690+00:00Iinf
Renames = 8
Changes of ID = 108
IDROM Check Failures = 0
Changes of Address = 0
Node 0 Session Control Port *
at 2016-11-19-23:45:49.115+00:00Iinf
command failed due to:
no such object instance
Node 0 Session Control
at 2016-11-19-23:45:50.025+00:00Iinf
Counters
Creation Time = 2016-11-19-09:42:57.390+00:00Iinf
Access Control Violations = 0
Backtranslation Deletions = 0
Deleted Maintained Objects = 0
Dangling Links = 0
Verification Failures = 0
Product: TCP/IP Manufacturer: Compaq Computer Corporation
Node: sanyalnet-vax.sanyalnet.lan Address(es): 10.42.2.5
Network Type: TCP/IP Interface(s):
Compaq TCP/IP Services for OpenVMS VAX Version V5.1
on a VAXserver 3900 Series running OpenVMS V7.3
Port Remote
Device_socket Type Local Remote Service Host
bg3 DGRAM 520 0 *
bg10 STREAM 21 0 FTP *
bg14 DGRAM 123 0 NTP *
bg15 DGRAM 123 0 NTP *
bg16 DGRAM 123 0 NTP *
bg25 STREAM 25 0 SMTP *
bg29 STREAM 23 0 TELNET *
bg54 DGRAM 750 0 *
bg55 DGRAM 88 0 *
bg57 STREAM 749 0 *
bg58 DGRAM 464 0 *
bg65 STREAM 3333 0 NOTES *
bg69 STREAM 80 0 *
bg2196 DGRAM 49883 0 *
bg2200 DGRAM 49885 0 *
bg4031 STREAM 23 53896 TELNET 10.100.0.1
bg5686 STREAM 23 46942 TELNET 123.120.100.141
Communication Parameters
Local host: sanyalnet-vax Domain: sanyalnet.lan
Maximum Current Peak
Proxies 20
Remote Terminal
Large buffers: 0
UCBs: 0
Virtual term: disabled
Similarly, here is the Linux network configuration of the CentOS 7 server that hosts CLOUDY:
[root@sanyalnet-cloud-vps2 openvms]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:50:56:a4:55:80 brd ff:ff:ff:ff:ff:ff
3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 500
link/ether 62:cb:23:2b:ad:77 brd ff:ff:ff:ff:ff:ff
4: tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 500
link/ether be:61:88:db:42:78 brd ff:ff:ff:ff:ff:ff
5: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN qlen 500
link/ether c2:4b:67:23:11:5d brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:a4:55:80 brd ff:ff:ff:ff:ff:ff
inet 64.137.228.122/24 brd 64.137.228.255 scope global br0
valid_lft forever preferred_lft forever
[root@sanyalnet-cloud-vps2 openvms]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 64.137.228.1 0.0.0.0 UG 0 0 0 br0
64.137.228.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
And the network configuration on CLOUDY itself:
$ SHOW NETWORK/FULL
The following network services are available at this time:
Product: DECnet Manufacturer: Digital Equipment Corporation
Node: CLOUDY Address(es): 1.551
Network Type: DNA V Interface(s): net 0
Node 0
at 2016-11-20-00:04:46.390+00:00Iinf
Identifiers
Name = LOCAL:.CLOUDY
Address =
{
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV3 , number = 19 ] ,
[ DNA_OSItransportV1 , 'DEC0'H ] ,
[ DNA_OSInetwork , 49::00-01:AA-00-04-00-27-06:21 (LOCAL:.CLOUDY) ]
) ,
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV2 , number = 19 ] ,
[ DNA_OSItransportV1 , 'DEC0'H ] ,
[ DNA_IP , 0.0.0.0 ]
) ,
(
[ DNA_CMIP-MICE ] ,
[ DNA_SessionControlV3 , number = 19 ] ,
[ DNA_NSP ] ,
[ DNA_OSInetwork , 49::00-01:AA-00-04-00-27-06:20 (LOCAL:.CLOUDY) ]
)
}
Status
UID = 06E08000-DF79-11D4-8001-AA0004002706
State = On
Functions Enabled =
{
Address Watcher ,
CMIP Listener
}
ID = 08-00-2B-80-15-C8
Characteristics
Version = T5.0.3
Implementation =
{
[
Name = OpenVMS VAX ,
Version = "V7.3 "
] ,
[
Name = Compaq DECnet-Plus for OpenVMS ,
Version = "V7.3 30-DEC-2000 00:04:42.43"
]
}
Script Location = <Default value>
Maximum Listeners = 0
Listener Template = <Default value>
Secondary Names =
{
}
Counters
Creation Time = 2016-11-17-05:26:45.540+00:00Iinf
Renames = 6
Changes of ID = 23
IDROM Check Failures = 0
Changes of Address = 0
Node 0 Session Control Port SCL$PORT$12010012
at 2016-11-20-00:04:47.870+00:00Iinf
Identifiers
Name = SCL$PORT$12010012
Status
Client = Session Control Application 42
Local End User Address = number = 42
Transport Port = NSP Port NSP$PORT_00010013
Direction = Incoming
Remote End User Address = UIC = [0,0]SANYAL
Node Name Sent = <Default value>
Version Sent = V2
Outgoing Network Priority = 0
Incoming Network Priority = 0
Process Identifier = "00000113"
Counters
Creation Time = 2016-11-20-00:04:07.930+00:00Iinf
Node 0 Session Control
at 2016-11-20-00:04:48.910+00:00Iinf
Counters
Creation Time = 2016-11-19-01:40:49.410+00:00Iinf
Access Control Violations = 0
Backtranslation Deletions = 0
Deleted Maintained Objects = 0
Dangling Links = 0
Verification Failures = 0
Product: TCP/IP Manufacturer: Compaq Computer Corporation
Node: sanyalnet-cloudy-vax.gama-digital.com Address(es): 64.137.228.85
Network Type: TCP/IP Interface(s):
Compaq TCP/IP Services for OpenVMS VAX Version V5.1
on a VAX-11/780 running OpenVMS V7.3
Port Remote
Device_socket Type Local Remote Service Host
bg7 STREAM 21 0 FTP *
bg11 DGRAM 123 0 NTP *
bg12 DGRAM 123 0 NTP *
bg13 DGRAM 123 0 NTP *
bg16 STREAM 25 0 SMTP *
bg18 STREAM 23 0 TELNET *
Communication Parameters
Local host: sanyalnet-cloudy-vax Domain: gama-digital.com
Maximum Current Peak
Proxies 20
Remote Terminal
Large buffers: 0
UCBs: 0
Virtual term: disabled
BRINGING IT ALL TOGETHER: DECnet BRIDGE SETUP
Diagram 3: HECnet multi-host bridge configuration: Connecting two OpenVMS Servers over DECnet and over a single bridge to HECnet |
DECnet end-node QCOCAL (1:550) is hosted on sanyalnet-openvms-vax.freeddns.org which runs the DECnet bridge process in multi-host configuration, listening on port 4711 and bridging in
- HECnet itself via psilo.update.uu.se on port 4711, and
- sanyalnet-cloud-vps2.freeddns.org on port 4712 which runs it's own bridge to DECnet end-node CLOUDY (1.551).
CLOUDY (1.551) is hosted on sanyalnet-cloud-vps2.freeddns.org which runs the DECnet bridge process listening on port 4712 and bridging to sanyalnet-openvms-vax.freeddns.org on port 4711 which in turn bridges in the HECnet network as well as QCOCAL. The DECnet bridge here is launched using the command line "bridge -p 4712" and the bridge.conf is simple:
DECnet forever!