Search This Blog

Saturday, November 19, 2016

DECNET: Connecting Two Digital DEC OpenVMS Servers on Different Internet Hosts to HECNET via a Single Bridge (Multi-Host DECNET Bridge Configuration for HECNET)


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").

Diagram 1 - internet connection schematic of two VAX servers to HECnet

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
  1. HECnet itself via psilo.update.uu.se on port 4711, and
  2. sanyalnet-cloud-vps2.freeddns.org on port 4712 which runs it's own bridge to DECnet end-node CLOUDY (1.551).
The bridge process is launched with the command line "bridge -p 4711" specifying the listening port, and here is the bridge.conf configuration file:


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!


No comments:

Post a Comment

Recommended Products from Amazon