DECnet-VAX Phase V WAN connectivity with simh
Installing VMS and DECnet-Plus
HP's VMS Hobbyist program used to make the VMS 7.3 distribution CD available as an ISO image file. While there is no longer an official hobbyist program, I would imagine that the CD image is findable if you look hard enough.
Once in possession of an image of the VAXVMS073 CD, you can install it using your simh configuration of choice, which must have a Qbus or Unibus.
There are plenty of examples out there to help with VMS installation, but if starting from scratch, you boot from the CD; use standalone backup to expand saveset B onto your normal boot medium, then boot as normal and go through the installation dialogue. During the installation you should choose to install DECnet-Plus (aka Phase V).
Here's an example: https://raymii.org/s/blog/OpenVMS_7.3_install_log_with_simh_vax_on_Ubuntu_16.04.html
To make the system fully useful, you'll need a valid license loaded for at least VAX-VMS and DVNETEND (endnode) or DVNETRTG (router). Once again, HP no longer provide these, but you can either use an old license and set the system date in the past, or try googling for pakgen.c...
Once you have got the installation up and running, log in to the SYSTEM account, and use
$ @SYS$MANAGER:NET$CONFIGURE
to configure DECnet-Plus. An example dialog follows. This was done on an already-configured system, so it comes up with some useful defaults, but it should be reasonably clear what to do in a fresh installation. I found that the configuration failed if I booted the system without an Ethernet device, so you will probably end up with an Ethernet routing circuit configured. You'll need to turn this off, or just boot without an Ethernet device, when you want to try out the WAN device (unless you configure the system as a router).
$ @net$configure
Copyright Compaq Computer Corporation 2000. All rights reserved.
DECnet-Plus for OpenVMS network configuration procedure
This procedure will help you create or modify the management scripts
needed to operate DECnet on this machine. You may receive help about
most questions by answering with a question mark '?'.
Configuration last run by TREVOR on 29-MAR-2022 12:31:28.13
%NET$CONFIGURE-I-USECOMMON, using cluster common APPLICATION script
%NET$CONFIGURE-I-USECOMMON, using cluster common EVENT script
%NET$CONFIGURE-I-USECOMMON, using cluster common MOP_CLIENT script
The following NCL script files have been modified since being
created by this procedure:
SYS$SPECIFIC:[SYSMGR]NET$ROUTING_STARTUP.NCL;
SYS$SPECIFIC:[SYSMGR]NET$DDCMP_STARTUP.NCL;
SYS$SPECIFIC:[SYSMGR]NET$MODEM_STARTUP.NCL;
SYS$SPECIFIC:[SYSMGR]NET$MOP_CIRCUIT_STARTUP.NCL;
SYS$COMMON:[SYSMGR]NET$MOP_CLIENT_STARTUP.NCL;
This procedure may create a new version of these scripts or modify
information contained within them. In all cases, any previously
created NCL scripts are renamed to "file.NCL-OLD", so that you
may review any of your previous changes.
Configuration Options for Node TOGATH
[0] Exit this procedure
[1] Perform an entire configuration
[2] Change naming information
[3] Configure Devices on this machine
[4] Configure Transports
[5] Configure Timezone Differential Factor
[6] Configure Event Dispatcher
[7] Configure Application database
[8] Configure MOP Client database
[9] Configure Cluster Alias
[10] Replace MOP Client configuration
* Which configuration option to perform? [1] : 1
* Enter the directory services to use on the system [LOCAL] :
* Enter the full name for directory service LOCAL [local:.togath] :
* What is the synonym name for this node? [TOGATH] :
* What type of node (Endnode or Router)? [ENDNODE] :
* Enter PhaseIV Address [29.452] :
* Do you want to configure Wide Area devices? [YES] :
This is the Configuration Procedure for the
===========================================
VAX Wan Device Drivers for DECnet/OSI for VMS
=============================================
The Wide Area Network Datalinks and Drivers are a prerequisite
for DECnet/OSI. They also provide synchronous datalinks in
systems that do not use DECnet/OSI for networking.
Access to DECnet/OSI datalinks (created by NCL) is possible via
the QIO interface to the WAN pseudo-driver, WANDRIVER. Layered
products that use synchronous devices do not normally require
programming access to WANDRIVER. For further information, see
the "DECnet/OSI for VMS WANDD Programming" guide.
Do you wish to use WANDRIVER [N] ? y
Will you use DEC HDLC [Y] ?
Will you use LAPB/E (VAX P.S.I. requires LAPB/E) [Y] ?
The DSV11 (Q-bus), DIV32 (Q-bus), DSB32 (BI-bus), DSF32 (MI-bus) and
DSW devices are soft-loadable. The WANDD startup procedure will load
the microcode for these devices if required.
Do you have any soft-loadable microcode devices on this system [N] ?
Will you use the VAXft DSF32 device driver [N] ?
Are you satisfied with the answers you have given [Y] ?
If you have already started up the WAN Drivers and Datalinks
(that is, if you have already successfully run
SYS$STARTUP:WANDD$STARTUP.COM since your system was last
booted), then you will need to reboot your system for your new
configuration to take effect.
%NET$CONFIGURE-I-SCANCONFIG, scanning device configuration - please wait
Determining DTSS timezone rules from OpenVMS information...
Answer YES to the next question if you wish to
change the current NSP transport configuration:
Maximum number of logical links: 200
Maximum Transmit and Receive Window: 20
Maximum Receive Buffers: 4000
Flow Control Policy: Segment Flow Control
* Do you want to replace the existing NSP transport script? [NO] :
Answer YES to the next question if you wish to
change the current OSI transport configuration:
Maximum number of logical links: 200
Maximum Transmit and Receive Window: 20
Maximum Receive Buffers: 4000
OSI applications over TCP/IP: Enabled
DECnet applications over TCP/IP: Enabled
* Do you want to replace the existing OSI transport script? [NO] :
%NET$CONFIGURE-I-EVDFND, Event Dispatcher NCL script already exists
* Replace Event Dispatcher NCL script file? [NO] :
%NET$CONFIGURE-I-APPLICATIONFND, application NCL script already exists
* Replace application script file? [NO] :
Summary of Configuration
Node Information:
Node Type: ENDNODE
Directory Services Chosen: LOCAL
Primary Directory Service: LOCAL
Local Full name: local:.togath
Node Synonym: TOGATH
Phase IV Address: 29.452
Phase IV Prefix: 49::
Autoconfiguration of Network Addresses: Enabled
Session Control Address Update Interval: 10
Routing ESHello Timer: 600
Routing ES Cache Size: 512
Device Information:
Device: XEA0 (DEUNA/DELUA):
Data Link name: CSMACD-0
Routing Circuit Name: CSMACD-0
Transport Information:
NSP Transport: Configured
Maximum number of logical links: 200
Maximum Transmit and Receive Window: 20
Maximum Receive Buffers: 4000
Flow Control Policy: Segment Flow Control
OSI Transport: Configured
Maximum number of logical links: 200
Maximum Transmit and Receive Window: 20
Maximum Receive Buffers: 4000
OSI applications over TCP/IP: Enabled
DECnet applications over TCP/IP: Enabled
Congestion Avoidance Disabled
Event Dispatcher Configuration:
Sinks: local_sink
Outbound Streams: local_stream
Phase IV Relay: Enabled
* Do you want to generate NCL configuration scripts? [YES] :
%NET$CONFIGURE-I-MODCHECKSUM, checksumming NCL management scripts modified by NET$CONFIGURE
%NET$CONFIGURE-I-NOTREPLACED, SYS$COMMON:[SYSMGR]NET$APPLICATION_STARTUP.NCL; was not replaced
%NET$CONFIGURE-I-NOTREPLACED, SYS$COMMON:[SYSMGR]NET$EVENT_STARTUP.NCL; was not replaced
%NET$CONFIGURE-I-FLUSHCACHE, flushing selected cache entries
Node 0
at 2022-06-16-18:27:10.930+01:00Iinf
%NET$CONFIGURE-I-NODERENAMED, node successfully renamed to local:.togath
Node 0 Session Control
at 2022-06-16-18:27:13.130+01:00Iinf
Node 0 Session Control
at 2022-06-16-18:27:13.170+01:00Iinf
Node 0 Session Control
at 2022-06-16-18:27:13.260+01:00Iinf
Node 0 Session Control
at 2022-06-16-18:27:13.340+01:00Iinf
Node 0 Session Control
at 2022-06-16-18:27:14.370+01:00Iinf
Characteristics
Maintain Backward Soft Links = True
Directory Service: Local name file
Node name: LOCAL:.TOGATH
Phase IV synonym: TOGATH
Address tower protocol and selector values:
Session: DNA_SessionControlV2 (SC2)
00 13
Transport: DNA_OSItransportV1 (TP4)
DE C0
Routing: DNA_OSInetwork (CLNS)
49::00-1D:AA-00-04-00-C4-75:21 (29.452)
Session: DNA_SessionControlV2 (SC2)
00 13
Transport: DNA_NSP (NSP)
(no selector value)
Routing: DNA_OSInetwork (CLNS)
49::00-1D:AA-00-04-00-C4-75:20 (29.452)
Number of nodes reported on: 1
%NET$CONFIGURE-I-NODEISREG, node is already registered in the LOCAL directory service
Node 0
at 2022-06-16-18:27:16.180+01:00Iinf
%NET$CONFIGURE-I-NODERENAMED, node successfully renamed to local:.togath
%NET$CONFIGURE-I-CONFIGCOMPLETED, DECnet-Plus for OpenVMS configuration completed
%NET$CONFIGURE-I-USECOMMON, using cluster common APPLICATION script
%NET$CONFIGURE-I-USECOMMON, using cluster common EVENT script
%NET$CONFIGURE-I-USECOMMON, using cluster common MOP_CLIENT script
Configuration Options for Node TOGATH
[0] Exit this procedure
[1] Perform an entire configuration
[2] Change naming information
[3] Configure Devices on this machine
[4] Configure Transports
[5] Configure Timezone Differential Factor
[6] Configure Event Dispatcher
[7] Configure Application database
[8] Configure MOP Client database
[9] Configure Cluster Alias
[10] Replace MOP Client configuration
* Which configuration option to perform? [0] : 0
Configuring simh and VMS
Simh only supports two synchronous interfaces that are also supported by DECnet-Plus, which are the DUP11 and DPV11. Neither of these are auto-enabled in simh, and nor do they auto-configure in VMS. You will need lines such as the following in your simh configuration file, to enable one or other device, and tell simh to connect to a particular IP address with UDP, and a specific port on both ends. At the other end of the link you could have a PyDecnet router, or another simh node.
I prefer using UDP for these simulated connections as it's easier to use tcpdump to debug issues, and arguably UDP's non-guaranteed-delivery semantics are more analagous to a real WAN link than using TCP.
set dup ena attach dup connect=192.168.0.12:12346,12346,udp OR set dpv ena attach dpv connect=192.168.0.12:12348,12348,udp
sim> show dup
DUP address=2013E028-2013E02F*, vector=C0-C4*, BR5, lines=1
attached to Line=0,12346,Connect=192.168.0.12:12346, speed=0 (unrestricted), No Corruption
W3 Jumper Installed, W5 Jumper Removed, W6 Jumper Installed
$ mcr sysgen
SYSGEN> SHOW /UNIBUS
** UNIBUS map for nexus #3 on 16-JUN-2022 17:45:30.54 **
Address 760050 (83488E28) responds with value 0200 (hex)
Address 760052 (83488E2A) responds with value 0000 (hex)
Address 760054 (83488E2C) responds with value 0080 (hex)
Address 760056 (83488E2E) responds with value 0000 (hex)
Address 760354 (83488EEC) responds with value 0000 (hex)
Address 760356 (83488EEE) responds with value 0000 (hex)
Address 760500 (83488F40) responds with value 404F (hex)
...
$ mcr sysgen CONN SEA0 /ADA=3 /VEC=%XC0 /CSR=%O760050 /numvec=2
$ mcr ncl create modem connect line ddcmp-0 communication port sea0 set modem connect line ddcmp-0 modem control none create ddcmp link ddcmp-0 protocol point create ddcmp link ddcmp-0 logical station ddcmp-0 set ddcmp link ddcmp-0 phys line modem connect line ddcmp-0 enable ddcmp link ddcmp-0 enable ddcmp link ddcmp-0 logical station ddcmp-0 create routing circuit ddcmp-0 type ddcmp set routing circuit ddcmp-0 data link entity ddcmp link ddcmp-0 logical station ddcmp-0 enable routing circuit ddcmp-0 enable modem connect line ddcmp-0
NCL>show ddcmp link ddcmp-0 logi stat * all
Node 0 DDCMP Link ddcmp-0 Logical Station ddcmp-0
at 2022-06-17-11:21:04.890+01:00Iinf
Identifiers
Name = ddcmp-0
Status
UID = 20995E20-EE27-11EC-8005-AA000400C475
State = On
Protocol State = Running
Characteristics
Address = 1
Babble Timer = 6000
Maximum Transmit = 4
Holdback Timer = 0
Transmit Window = 1
Counters
Creation Time = 2022-06-17-11:20:35.970+01:00Iinf
NAKs Received Indicating Header Block Check Error = 0
NAKs Received Indicating Data Field Block Check Error = 0
NAKs Received Indicating REP Response = 0
PDUs Received with Header Block Check Errors = 0
PDUs Received With Data Field Block Check Error = 0
NAKs Sent With REP Response = 0
Local Reply Timeouts = 0
Remote Reply Timeouts = 0
Buffers Temporarily Unavailable = 0
Buffers Too Small = 0
NAKs Received Indicating Buffers Temporarily Unavailable = 0
NAKs Received Indicating Buffer Too Small = 0
No Replies To Select = 0
Incomplete Replies To Select = 0
SDUs Sent = 14
SDUs Received = 16
Selection Intervals = 0
SDU Octets Sent = 337
SDU Octets Received = 535
Send Error Thresholds Reached = 0
Receive Error Thresholds Reached = 0
Selection Error Thresholds Reached = 0
Locally Initiated State Changes = 0
Remotely Initiated State Changes = 0
STRTs Received While In Maintenance = 0
NCL>
NCL>show routing circuit * all
Node 0 Routing Circuit ddcmp-0
at 2022-06-17-11:22:11.890+01:00Iinf
Identifiers
Name = ddcmp-0
Status
UID = 20D66720-EE27-11EC-8005-AA000400C475
State = On
Data Link SDU Size = 576
Data Link Port = DDCMP Port $0
Characteristics
Type = DDCMP
Template = ""
Data Link Entity = DDCMP Link ddcmp-0 Logical Station ddcmp
-0
Manual Data Link SDU Size = 1492
Explicit Receive Verification = True
Recall Timer = 60
write only attribute: Transmit Verifier = <Default value>
write only attribute: Receive Verifier = <Default value>
Counters
Verification Rejects = 0
Data PDUs Received = 15
Data PDUs Fragmented = 0
Data PDUs Transmitted = 12
Segmentation Failure Discards = 0
Circuit Changes = 1
Changes in Adjacency State = 1
ID Reachability Changes = 0
Initialization Failures = 0
Rejected Adjacencies = 0
Control PDUs Sent = 2
Control PDUs Received = 2
Corrupted Hello PDUs Received = 0
Creation Time = 2022-06-17-11:20:36.370+01:00Iinf
NCL>
NCL>show routing circuit ddcmp-0 adjacency * all
Node 0 Routing Circuit ddcmp-0 Adjacency RTG$0001
at 2022-06-17-11:22:45.090+01:00Iinf
Identifiers
Name = RTG$0001
Status
Type = Autoconfigured
State = Up
Neighbor Node Type = Phase IV Router
Router NETs =
{
49::00-1D:AA-00-04-00-D5-75:00 (LOCAL:.TWPD)
}
$ trace start "modem_connect line *" $ ! do something to generate traffic $ trace stop $ trace analyze OR to look at it live: $ trace start/live "ddcmp link ddcmp-0"
DPV11 Postscript
$ patch sys$loadable_images:sedriver.exe /absolute repl/inst 3f25 'MOVB (R7),B^07(R0)' exit 'NOP' exit repl/inst 3f30 'MOVB (R10),B^06(R0)' exit 'MOVW (R10),B^06(R0)' exit repl/inst 3ec8 'MOVB (R10),B^06(R0)' exit 'NOP' exit repl/inst 3ed8 'MOVB (R7),B^07(R0)' exit 'MOVW (R10), B^06(R0)' exit repl/inst 3ef9 'MOVB (R10),B^06(R0)' exit 'NOP' exit repl/inst 3f0b 'MOVB (R7),B^07(R0)' exit 'MOVW (R10), B^06(R0)' exit update
Comments
Post a Comment