Tuesday, April 7, 2020

VAX/VMS 4.7 with DECnet link to HECnet and IBM Mainframe TCPNJE link to HNET using JNET

Supratim Sanyal's Blog: NJE Mainframe Network Links using TCPNJE and DNANJE (NJE over DECnet) on DEC VAX server running VAX/VMS operating system
NJE Mainframe Network Links using TCPNJE and DNANJE (NJE over DECnet) on DEC VAX server running VAX/VMS operating system

---
30-Oct-2023 Update: There is a VMS 4.7 Turnkey Distribution now available for a while from our Discord group. It includes everything and is available here.
---

The ancient JNET software for VAX/VMS from now-defunct Wingra Software allows Digital Equipment Corporation DEC VAX servers running VAX/VMS operating system to interact in TCPNJE protocol prevalent in the IBM Mainframe world over DECnet and TCP/IP links. This allows hobbyists running DEC VAX computers to participate on two world-wide hobbyist networks - HECnet the DECnet network and HNET the Mainframe network.

As a working example, JNET version 3.5 works on old VAX/VMS 4.7 operating system. The only trouble during installation is the installer gets confused while creating the POSTMASTER account. The workaround that I learned from Timothy Stark is to repeat the installation but specifying that the POSTMASTER account already exists when asked the second time.

Here is a terminal session from installing JNET 3.5 on VAX/VMS 4.7.

Once JNET is successfully installed (on DUA1: in this example), JNET is configured by invoking

@JAN_SYS:JANCONFIG

Here is the terminal session log from configuring JNET on node XLVII, with QCOCAL as the next node to HNET.

For JNET to automatically start at boot, add the following to the bottom of the system startup command file (SYS$MANAGER:SYCONFIG for VAX/VMS 4.7):

$ DEFINE/SYSTEM/EXEC JAN_DEVICE DUA1:
$ @JAN_DEVICE:[JANCOMMON.SYS]JANSTART

As far as configuring JNET is concerned, a few files in JAN_SYS: need to be edited:

1) JAN_SYS:JANLINKS.JCP

This defines the NJE links. In my case, I set up the local node XLVII and a NJE-over-DECnet (DNANJE) link to the next hop QCOCAL as follows.

create /nodes=114
define XLVII /host /daemon=DAE /timezone="GMT" /line=LOCAL
define JOB /link /daemon=JOB
define PRT /link /daemon=QUE
define QCOCAL /link /daemon=DNANJE /line=QCOCAL


Notes on /DEFAULT_ROUTE qualifier and .PAR files:

From JNET version 3.6 for later versions of OpenVMS, a "/DEFAULT_ROUTE" qualifier is available which causes JNET to use the link configured as default route for routing all nodes that are not explicitly defined in JAN_SYS:JANROUTE.JCP. The DEFAULT_ROUTE feature is absent in JNET 3.5.

Just for the sake of completeness of information in this post, if the link to QCOCAL were TCPNJE instead of DNANJE (as specified in JANLINKS.JCP with "define QCOCAL /link /daemon=TCPNJE /line=UCX"), I would have a JAN_SYS:QCOCAL.PAR file looking like this:

TCP.RMTNODE=10.42.2.5
TCP.RMTPORT=2252
TCP.LCLPORT=2254
OPRMSG=YES
BUFF=4096

and QCOCAL would have a .PAR file with IP address of XLVII and complementary listening and connecting port numbers (TCP.LCLPORT and TCP.RMTPORT respectively):

TCP.RMTNODE=10.42.2.31
TCP.RMTPORT=2254
TCP.LCLPORT=2252
OPRMSG=YES
BUFF=4096

While on the subject of .PAR files, here is my IRLEARN.PAR file from IMPVAX which runs OpenVMS VAX 7.3 and links to HNET via IRLEARN:

BUFF=3976
B2.VMNET_BUFF=8192
B2.TCP_BUFF=1024
TCP.LCLPORT=2253
TCP.RMTNODE=xx.xx.xx.xx
TCP.RMTPORT=175
STREAMS=1

And finally here is a JNET 3.6 PAR file template that I am thankful to Peter Coghlan for:

BUFF=3976
B2.VMNET_BUFF=8192
B2.TCP_BUFF=1024
TCP.LCLPORT=<local port to listen on>
TCP.RMTNODE=<remote ip address>
TCP.RMTPORT=<remote port to connect to>
STREAMS=1
TA=0
TP=THR=500

End of notes.


2) JAN_SYS:JANSTART.JCP

This lists the links that are to be started up at JNET startup. A .PAR is required for TCPNJE links. No .PAR is needed for DNANJE links.

start XLVII
start JOB
start PRT
start QCOCAL


3) JAN_SYS:JANROUTES.JCP

This is the routing table that tells JNET about the next hop to the target node (i.e. a directly linked node that knows how to reach the target node, either directly or via another hop). It consists of one line per route definition, like so:

DEFINE/ROUTE=QCOCAL CLOUDY
DEFINE/ROUTE=QCOCAL FEDACH
DEFINE/ROUTE=QCOCAL IMPVAX
DEFINE/ROUTE=QCOCAL MARIAH
DEFINE/ROUTE=QCOCAL NJEVX1
DEFINE/ROUTE=QCOCAL NJEVX2
DEFINE/ROUTE=QCOCAL TSTVAX
DEFINE/ROUTE=QCOCAL VAXSTN

Finally, once the other end of the TCPNJE link is configured, setup is complete. You can then issues commands and send files from the other node. For example, QCOCAL is the node on the other side for my experiment, and I can do this successfully from QCOCAL:

$ SEND/COMMAND XLVII "CPQ IND"
(XLVII) - VAX 8650 running VAX/VMS V4.7
(XLVII) - Up since  8-APR-2020 01:12
$
$ SEND/COMMAND XLVII "Q SYS"
$
(XLVII) - Link JOB      Connect  -- JOB      Line virtual  NOH NOD NOT
$
(XLVII) - Link PRT      Connect  -- QUE      Line virtual  NOH NOD NOT
$
(XLVII) - Link QCOCAL   Connect  -- DNANJE   Line QCOCAL   NOH NOD NOT
$


No comments:

Post a Comment

"SEO" link builders: move on, your spam link will not get posted.

Note: Only a member of this blog may post a comment.