DECnet-IV supports three routing modes which depend upon your license (naturally)
$sho exec char
Node Volatile Characteristics as of 17-MAY-2012 07:02:42
Executor node = 14.999 (KAWC99)
Identification = HP DECnet for OpenVMS Alpha
Management version = V4.0.0
Incoming timer = 45
Outgoing timer = 60
Incoming Proxy = Enabled
Outgoing Proxy = Enabled
NSP version = V4.1.0
Maximum links = 32
Delay factor = 80
Delay weight = 5
Inactivity timer = 60
Retransmit factor = 10
Routing version = V2.0.0
Type = nonrouting IV
Routing timer = 600
Broadcast routing timer = 180
Maximum address = 1023
Maximum circuits = 16
Maximum cost = 1022
Maximum hops = 30
Maximum visits = 63
Maximum area = 63
Max broadcast nonrouters = 64
Max broadcast routers = 32
Maximum path splits = 1
Area maximum cost = 1022
Area maximum hops = 30
Maximum buffers = 100
Buffer size = 576
Default access = incoming and outgoing
Pipeline quota = 4032
Alias maximum links = 32
Path split policy = Normal
Maximum Declared Objects = 31
NCP>
$ mcr ncp NCP>sho known lines Known Line Volatile Summary as of 16-MAY-2012 07:16:48 Line State EWA-0 on <<<--- 10 Mb/s Ethernet FPA-0 on <<<--- 100 Mb/s FDDI --------------------------------------------------------------------- NCP>sho known circ Known Circuit Volatile Summary as of 16-MAY-2012 07:16:56 Circuit State Loopback Adjacent Name Routing Node EWA-0 on FPA-0 on 14.950 <<<--- only one active circuit --------------------------------------------------------------------- NCP>sh known line char Known Line Volatile Characteristics as of 16-MAY-2012 07:25:17 Line = EWA-0 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-06-2B-01-60-A2 Device buffer size = 1498 Line = FPA-0 Receive buffers = 10 Controller = normal Protocol = FDDI Service timer = 4000 Hardware address = 00-00-F8-40-F4-98 Device buffer size = 1498 Requested TRT = 7987 Valid transmission time = 2600 Restricted token timeout = 1000 Ring purger enable = on NIF target = 00-00-00-00-00-00 SIF configuration target = 00-00-00-00-00-00 SIF operation target = 00-00-00-00-00-00 Echo target = 00-00-00-00-00-00 Echo data = 55 Echo length = 1 --------------------------------------------------------------------- NCP>sh known circ char Known Circuit Volatile Characteristics as of 16-MAY-2012 07:25:26 Circuit = EWA-0 State = on Service = disabled Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Circuit = FPA-0 State = on Service = disabled Designated router = 14.950 Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = FDDI Adjacent node = 14.950 Listen timer = 45
$ mcr ncp NCP>sho known lines Known Line Volatile Summary as of 17-MAY-2012 06:22:44 Line State DNIP-0-0 on <<<--- DECnet over IP Tunnel EWA-0 on <<<--- 10 Mb/s Ethernet EWA-1 off EWA-2 off EWA-3 off FPA-0 off <<<--- 100 Mb/s FDDI --------------------------------------------------------------------- NCP>sho known circ Known Circuit Volatile Summary as of 17-MAY-2012 06:22:50 Circuit State Loopback Adjacent Name Routing Node DNIP-0-0 on 14.828 EWA-0 on 14.950 EWA-1 on -synchronizing <<<--- since line is off, should turn off circ EWA-2 on -synchronizing <<<--- since line is off, should turn off circ EWA-3 on -synchronizing <<<--- since line is off, should turn off circ FPA-0 on -synchronizing <<<--- since line is off, should turn off circ --------------------------------------------------------------------- NCP>sho known line char Known Line Volatile Characteristics as of 17-MAY-2012 06:23:25 Line = DNIP-0-0 Device buffer size = 16383 Line = EWA-0 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-06-2B-01-61-2A Device buffer size = 1498 Line = EWA-1 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-00-00-00-00-00 Device buffer size = 1498 Line = EWA-2 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-00-00-00-00-00 Device buffer size = 1498 Line = EWA-3 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-00-00-00-00-00 Device buffer size = 1498 Line = FPA-0 Receive buffers = 10 Controller = normal Protocol = FDDI Service timer = 4000 Hardware address = 00-00-00-00-00-00 Device buffer size = 1498 NIF target = 00-00-00-00-00-00 SIF configuration target = 00-00-00-00-00-00 SIF operation target = 00-00-00-00-00-00 Echo target = 00-00-00-00-00-00 --------------------------------------------------------------------- NCP>sho known circ char Known Circuit Volatile Characteristics as of 17-MAY-2012 06:23:43 Circuit = DNIP-0-0 State = on Service = enabled Cost = 10 Hello timer = 8191 Verification = disabled Adjacent node = 14.828 Listen timer = 16382 Circuit = EWA-0 State = on Service = disabled Designated router = 14.998 (KAWC98) Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Adjacent node = 14.950 Listen timer = 45 Circuit = EWA-1 State = on Substate = -synchronizing Service = disabled Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Circuit = EWA-2 State = on Substate = -synchronizing Service = disabled Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Circuit = EWA-3 State = on Substate = -synchronizing Service = disabled Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Circuit = FPA-0 State = on Substate = -synchronizing Service = disabled Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = FDDI
$mcr ncp NCP>sho known lines Known Line Volatile Summary as of 16-MAY-2012 18:56:04 Line State DNIP-0-0 on EIA-0 on EIA-1 on FPA-0 on --------------------------------------------------------------------- NCP>sho known circ Known Circuit Volatile Summary as of 16-MAY-2012 18:56:09 Circuit State Loopback Adjacent Name Routing Node DNIP-0-0 on 25.777 <<<--- VAX/VMS EIA-0 on 14.1022 <<<--- Synoptics Router EIA-0 14.843 (KAWC02) <<<--- VAX/VMS EIA-0 14.842 (KAWC01) <<<--- VAX/VMS EIA-1 on <<<--- DECnet hostile network FPA-0 on 14.828 (KAWC09) <<<--- OpenVMS/Alpha --------------------------------------------------------------------- NCP>sho known lines char Known Line Volatile Characteristics as of 16-MAY-2012 18:56:15 Line = DNIP-0-0 Device buffer size = 16383 Line = EIA-0 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-02-A5-F3-B4-B4 Device buffer size = 1498 Line = EIA-1 Receive buffers = 10 Controller = normal Protocol = Ethernet Service timer = 4000 Hardware address = 00-02-A5-F3-B4-B5 Device buffer size = 1498 Line = FPA-0 Receive buffers = 10 Controller = normal Protocol = FDDI Service timer = 4000 Hardware address = 00-60-6D-93-84-C9 Device buffer size = 1498 Requested TRT = 7987 Valid transmission time = 2600 Restricted token timeout = 1000 Ring purger enable = on NIF target = 00-00-00-00-00-00 SIF configuration target = 00-00-00-00-00-00 SIF operation target = 00-00-00-00-00-00 Echo target = 00-00-00-00-00-00 Echo data = 55 Echo length = 1 --------------------------------------------------------------------- NCP>sho known circ char Known Circuit Volatile Characteristics as of 16-MAY-2012 18:56:21 Circuit = DNIP-0-0 State = on Service = enabled Cost = 10 Hello timer = 8191 Verification = disabled Adjacent node = 25.777 Listen timer = 16382 Circuit = EIA-0 State = on Service = disabled Designated router = 14.1022 Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Adjacent node = 14.1022 Listen timer = 45 Circuit = EIA-0 Adjacent node = 14.843 (KAWC02) Listen timer = 45 Circuit = EIA-0 Adjacent node = 14.842 (KAWC01) Listen timer = 45 Circuit = EIA-1 State = on Service = disabled Designated router = 14.950 (KAWC15) Cost = 4 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = Ethernet Circuit = FPA-0 State = on Service = disabled Designated router = 14.950 (KAWC15) Cost = 3 Maximum routers allowed = 33 Router priority = 64 Hello timer = 15 Type = FDDI Adjacent node = 14.828 (KAWC09) Listen timer = 45
Objective | DCL Command | Notes |
---|---|---|
Display a local text file on a local node | $ type file.txt | no DECnet involved |
Display a local text file on a remote node | $ type node::path:file.txt | near-end account must be proxied in far-end SYSUAF |
Display a local text file on a remote node | $ type node"user pass"::path:file.txt | user + pass are sent in the clear (can be seen with a packet sniffer) |
Execute a local script on a local node | $ @script.com | no DECnet involved |
Execute a remote script on a local node | $ @node::path:script.com | near-end account must be proxied in far-end SYSUAF |
Execute a remote script on a local node | $ @node"user pass"::path:script.com | user + pass are sent in the clear (can be seen with a packet sniffer) |
Execute a remote script on a remote node | $ type node"user pass"::"task=script" | 1) this is not a typo, you must use "TYPE" 2) including the file extension will not work 3) "script" must not be longer than 12 chars (although some docs say 16) 4) At the remote end, if you do not send data directly to sys$net then you will need to redefine sys$output to sys$net 5) debug messages will be logged in file netserver.log which will be found in the remote sys$login |
Open a local file from a local node (three unrelated examples) |
$ open/read buffer1 file.txt $ open/write buffer2 file.txt $ open/read/write buffer3 file.txt |
1) no DECnet involved 2) Here, buffer1, buffer2, and buffer3 are variable names I made up to identify internal data streams. |
Open a remote file from a local node | $ open/read buffer1 node::path:file.txt | near-end account must be proxied in far-end SYSUAF |
Open a remote file from a local node | $ open/read buffer1 node"user pass"::path:file.txt | user + pass are sent in the clear (can be seen with a packet sniffer) |
Execute a remote script from a remote node (and communicate with it) |
$ open/read/write server node"user pass"::"task=script" $ write server "hello 1 2 3" $ read/wait/time_out=5 server buffer $ write sys$output "-i-received: ", buffer |
1) open (caveat: user + pass are sent in the clear) 2) send one string to the other side 3) wait (up to 5 seconds) for a response 4) display the response string |
Connect to another node via DECnet | $ set host node | simple connect string |
VMS version | connect strings | legal? | alternative "connect string" |
---|---|---|---|
5.x | $ set host 14.123 | n | calc: 14 x 1024 + 123 = 14459 type: $ set host 14459 |
$ set host name | y | ||
6.x | $ set host 14.123 | ? | |
$ set host name | y | ||
7.x (and higher) | $ set host 14.123 | y | |
$ set host name | y |
DECnet task-to-task communications in DCL
DECnet task-to-task communications in BASIC
Every VMS professional should own a copy of the Writing Real Programs in DCL, Second Edition (HP Technologies) by Steve Hoffman and Paul Anagnostopoulos (with publishing dates of either 1998 or 1999; you only want the second edition). Chapter #23 is all about DECnet.
Caveat: Just as it is nearly impossible to acquire a copy of the Apple II Red Book (1978) by Steve Wozniak, you will not find available copies of Writing Real Programs in DCL unless you are willing to fork over $15000 to $50000 to the used book market. I personally do not own a copy but have been able to read it online at work since my employer has a paid-up subscription to Books 24x7 (just search the titles for "DCL")
If your company subscribes to 24x7 Books, this title was still listed in 2011 but you will not be able to download or print it. Nevertheless, you can still read it which will put you in a better position than laying out a couple hundred dollars.
Caveat: most
curious people will be able to develop a hands-on working knowledge of DECnet-IV without resorting to any formal
documentation. The VMS-level help, as well as help within NCP, and a willingness to do a little trial-and-error hacking are all
you need.
This is not true with DECnet-Plus where you will need to know how DECnet-IV is expected to work, then be able to
translate those thoughts into DECnet-Plus actions. You will need to read the official documentation.
$ r sys$update:DECNET_MIGRATE.EXE DECNET_MIGRATE> convert command "show known lines" ! *** Converting the following NCP command to NCL: ! SHOW KNOWN LINES ! Warning - Cannot determine device type, assuming CSMA-CD SHOW NODE 0 CSMA-CD STATION * ALL STATUS DECNET_MIGRATE> convert command "show known circuits" ! *** Converting the following NCP command to NCL: ! SHOW KNOWN CIRCUITS ! Warning - Cannot determine device type, assuming CSMA-CD SHOW NODE 0 ROUTING CIRCUIT * ALL STATUS SHOW NODE 0 CSMA-CD STATION * ALL STATUS DECNET_MIGRATE> convert command "show known nodes" ! *** Converting the following NCP command to NCL: ! SHOW KNOWN NODES SHOW NODE 0 ROUTING CIRCUIT {{{}}} ADJACENCY * ALL STATUS DECNET_MIGRATE>
**************************************************************************** $ mcr decnet_register **************************************************************************** DECNET_REGISTER - Manage node registrations in network directory services Use Return, CTRL/N, and CTRL/P to move between input fields Use "?" to obtain help, CTRL/Z to cancel 1 - Show information about registered node names 2 - Register or modify node names 3 - Update registered node towers using information from the nodes 4 - Rename a registered node name 5 - Repair the synonym and address links for registered node names 6 - Deregister node names 7 - Export node names to a data file 8 - Import node names from a data file 9 - Set preferences and network values 10 - Manage the directory service 11 - Spawn to DCL * Option (use CTRL/Z to exit): 1 <return> **************************************************************************** Show registered node information Use Return, CTRL/N, and CTRL/P to move between input fields Use "?" to obtain help, CTRL/Z to cancel Specify the directory service as LocalFile, DECdns, or PhaseIV. * Directory service: LocalFile <hit ctrl-N> Specify the node to show using an explicit or wildcard name, an NSAP, or a Phase IV synonym or address. * Node name or address: *.* <enter this then hit ctrl-n> Specify the information to display as either brief, full, or names. Specify the output file name (a blank line indicates the terminal). * Display format: Brief * Output file: Press Return to show the node values, CTRL/Z to cancel <return> **************************************************************************** Directory Service: Local name file Node name: LOCAL:.KAWC09 Phase IV synonym: KAWC09 Node address: 49::00-0E:AA-00-04-00-3C-3B:20 (14.828) Node name: LOCAL:.DNET89 Phase IV synonym: DNET89 Node address: 49::00-0E:AA-00-04-00-79-3B:20 (14.889) Node name: LOCAL:.KAWC90 Phase IV synonym: KAWC90 Node address: 49::00-0E:AA-00-04-00-B6-3B:20 (14.950) Node name: LOCAL:.KAWC0U Phase IV synonym: KAWC0U Node address: 49::00-0E:AA-00-04-00-DE-3B:20 (14.990) Node name: LOCAL:.KAWC99 Phase IV synonym: KAWC99 Node address: 49::00-0E:AA-00-04-00-E7-3B:20 (14.999) Number of nodes reported on: 5 * Press Return to continue<return> **************************************************************************** Show registered node information Use Return, CTRL/N, and CTRL/P to move between input fields Use "?" to obtain help, CTRL/Z to cancel Specify the directory service as LocalFile, DECdns, or PhaseIV. * Directory service: PhaseIV Specify the node to show using an explicit or wildcard name, an NSAP, or a Phase IV synonym or address. * Node name or address: *.* <type this> Specify the information to display as either brief, full, or names. Specify the output file name (a blank line indicates the terminal). * Display format: Brief * Output file: Press Return to show the node values, CTRL/Z to cancel <return> **************************************************************************** Directory Service: Phase IV database Node name: KAWC09 Node address: 49::00-0E:AA-00-04-00-3C-3B:20 (14.828) Node name: DNET89 Node address: 49::00-0E:AA-00-04-00-79-3B:20 (14.889) Node name: KAWC90 Node address: 49::00-0E:AA-00-04-00-B6-3B:20 (14.950) Node name: KAWC0U Node address: 49::00-0E:AA-00-04-00-DE-3B:20 (14.990) Node name: KAWC99 Node address: 49::00-0E:AA-00-04-00-E7-3B:20 (14.999) Number of nodes reported on: 5 * Press Return to continue <return> *****************************************************************************
Objective | DCL Command | Notes |
---|---|---|
Connect to another node via DECnet-IV or DECnet-Plus | set host 14.950 | simple connect string (14.950 must exist somewhere and be reachable |
Connect to another node via DECnet-IV or DECnet-Plus | set host 15286 | simple connect string (alternative to line just above) (15286 = 14 x 1024 + 950) |
Connect to another node via DECnet-IV or DECnet-Plus | $ set host nodename | simple connect string "nodename" must be defined somewhere |
Connect to another node via DECnet-Plus | $ set host local:.nodename | simple connect string using the local host file "nodename" must exist in the "local" namespace |
Connect to another node via DECnet-Plus | $ set host phaseiv:.nodename | simple connect string using the old phase-iv data file "nodename" must exist in the "DECnet-IV" namespace |
Connect to another node via DECnet-Plus | $ set host decdns:.nodename | simple connect string using DECdns (if DECdns exists) "nodename" must exist in the "DECdns" namespace |
Every technology seems to have its own fan boys (Ford vs GM; Apple vs Microsoft; PlayStation vs Xbox; etc.) and VMS is no different. Talk to any VMS fan boy about DECnet-Plus and you will usually get the same response: "that stack was the only truly OSI-compliant stack", "the stack was ahead of its time", etc.
So why is it that most sites using DECnet use DECnet-IV rather than DECnet-Plus? One of the most valuable books in my library is titled OpenVMS System Management Guide, Second Edition where chapter-19 is titled "OpenVMS Network Management". This book only documents DECnet-IV but not DECnet-Plus. Check out this excerpt from Google books:
"DECnet-Plus (called DECnet V and DECnet/OSI in the early 1990s) is the preferred product today. This chapter discusses its predecessor, DECnet IV, in detail. The reader is cautioned that some key concepts have changed between the two products. In particular, DECnet IV is managed by NCP, and DECnet V is managed by NCL. If you wish to migrate to DECnet-Plus, HP supplies tools that will handle most configurations. These are described in the DECnet-Plus documents."personal comment: anyone who has tried to convert from DECnet-IV to DECnet-Plus already knows that DEC/Compaq/HP documentation regarding DECnet-Plus is woefully lacking (or it is horribly complicated). Why hasn't any vendor (DEC - Compaq - HP) fixed this problem?