OpenVMS Notes: DECnet

OpenVMS Notes: DECnet

  1. The information presented here is intended for educational use by qualified OpenVMS technologists.
  2. The information presented here is provided free of charge, as-is, with no warranty of any kind.

Overly simplistic introduction to DECnet

Introduction

  • Long before the merger of ARPAnet , ALOHAnet , NSFnet and CSnet (to only name a few) into what is now known as the Internet based upon TCP/IP protocol suite, DEC (Digital Equipment Corporation) operated their own worldwide computer network based upon DECnet.
  • During the mainframe and minicomputer days, DECnet was to DEC as SNA was to IBM
  • The name game:
    • when people are speaking informally about DECnet, they generally mean DECnet-phase-IV
      • note: from this point forward, I will only use the phrase: DECnet-IV
    • DECnet-phase-V goes by several names including DECnet/OSI, DECnet-OSI and DECnet-Plus
      • note: from this point forward, I will only use the phrase: DECnet-Plus
  • Up until OpenVMS-8.4 (released in 2010), DECnet was the only way to cluster VMS hosts. "OpenVMS-8.4 Clusters" support either DECnet or TCP/IP.
    Correction: Cluster communications is based upon SCS (Systems Communications Services).
    Link: http://www.hoffmanlabs.com
    Quote: OpenVMS V8.4 added an IP transport for clustering; a software implementation of the old hardware-based tunneling.

A few more details

  • For reasons we'll never know, DEC blocked development of TCP/IP on 16-bit PDP and 32-bit VAX while preferentially promoting DECnet.
    • This never made any sense to me since TCP/IP development began as a DARPA-funded project. How can any company survive snubbing their largest potential customer (the US Federal Government)?
    • While it is true that DECnet allows you to do really neat things like "open an ISAM file across a DECnet connection" -or- "copy an ISAM file from node-to-node while maintaining index structure", DECnet-IV could not support more than 64,449 addresses (63 areas x 1023 nodes).
    • DECnet-Plus (which, at the time of its introduction in 1987, was considered a work in progress) could support many more nodes. And because it was fully OSI compatible, it was able to insert DECnet packets inside TCP/IP packets (called DECnet tunneling)
    • Meanwhile in the TCP/IP world, 32-bit addressing found in IPv4 supported 4.2 billion addresses while 128-bit addressing found in IPv6 supports 3.4 ^ 1038 addresses (that's "340 billion billion billion billion").
    • If you wanted TCP/IP on PDP or VAX then you needed to purchase it from a third-party provider like Process Software Corp (PSC)
    • Beginning with AlphaServer, DEC began selling their own TCP/IP stack called UCX (Ultrix Communications eXtensions) although today the name Ultrix is forgotten so many people assume the "U" means Unix
  • Your DECnet license doesn't care if you install DECnet-IV or DECnet-Plus so you might wish to upgrade your DECnet stack. But be aware of the fact that DECnet-Plus employs a completely different command-line interface ($mcr NCL) than the one used with DECnet-IV ($mcr NCP).
    • Starting with OpenVMS-6.x installing any DECnet implementation means you will get both command line interfaces
      • On a machine running DECnet-IV you will still be able to invoke NCL but it will not tell you much
      • On a machine running DECnet Plus you will still be able to invoke NCP but it will not tell you much
  • We now live in an I/P world so some DECnet terms, like routing, do not mean what you think
    • So first a little history:
      • back in the 1980s, the majority of your devices sat on the same Ethernet or Token Ring.
        • A network device wishing to communicate with another network device would first broadcast an alert (ARP or Address Resolution Protocol) to determine the MAC address. The packet works like this: "who knows the MAC address of the device supporting network address "whatever"?
        • The desired network device would respond with: Here I am and here is my MAC address (even today, all network communications are performed at the MAC layer)
      • since only two devices were able to communicate with each other at one time, these networks quickly became saturated. So, network engineers broke the networks up into segments which were linked by bridges.
      • Bridge devices listened for, and remembered (via a cache), network addresses, equivalent MAC addresses, and segment
        • When a bridge heard an address that it did not know about, it would pass the broadcast to the foreign segment.
        • When a bridge device heard the ARP response, it built a map (in cache) of MAC addresses and their segment locations
        • When a bridge heard an address that it knew about (via the cache), and if the two devices were on different segments, the bridge device would respond with its own MAC address (the bridge would relay the packet from one segment to the next)
        • But you can't build a larger (world-wide) network from something like this because it would quickly fill with ARP packets crying out in the dark. So network engineers separated everything into network addresses. Now ARP packets would stay within a certain network (or organization) unless a new smarter device, called a router, would pass ARP and data packets directly to a foreign location.
      • before the mid-1980s, routers were (almost always) computers which usually only supported one networking protocol but connected two, or more, networks
      • since the mid 1980's (after the creation of CISCO), routers became stand-alone special-purpose RISC appliances which could support multiple networking protocols. But computers (still mostly CISC at that time) could perform routing functions if desired.
        • since Y2K, CISCO has been dropping support for less popular protocols like DECnet so you may need to resort to tunneling if you want to get your DECnet packets over to non-bridged segments
    • DECnet addresses are specified in AREA.HOST notation like so: 63.1022
      • for example, one of my nodes has a DECnet address of 14.950 which means I can connect to it from other DECnet nodes like so:
        • set host 14.950
        • set host KAWC96
          • a name to address translation must exist somewhere; from NCP you do this with SET NODE commands; don't forget to follow these up with DEFINE NODE commands
        • set host  15286
          • because 14 x 1024 + 950 = 15286
          • note: this number is also defined in systemid as defined in SYSGEN
      • what DEC called "DECnet routing" is really "DECnet bridging" (read on)
      • what DEC called "DECnet area" is true routing between dissimilar DECnet areas (read on)

DECnet-IV stuff

DECnet-IV routing modes (restricted by your license)

DECnet-IV supports three routing modes which depend upon your license (naturally)

  • non-routing IV (your computer is just a network device supporting the DECnet networking protocol)
  • Routing (this is a misnomer because the license allows the machine to act as a DECnet bridge)
  • Area (this is true DECnet routing and can forward packets to different DECnet areas)
What mode is your DECnet-IV stack currently running?
$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>

DECnet-IV routing mode details

  1. NON-ROUTING IV
    • required license: DVNETEND (Since we now live in an a relaxed I/P world I am not sure why HP still charges for this on VAX or Alpha)
    •  a host attempting to make a connection does the DECnet equivalent of an ARP (address resolution protocol), then expects the destination node to answer back with a MAC address. So, in a typical DECnet network (composed of only NON-ROUTING hosts) all the hosts would need to be on the same subnet. Since a DECnet area can support 1024 host addresses this could make for a busy subnet. Back in 1990 if you had a busy Ethernet subnet you would split it into one, or more, segments which would be connected with an Ethernet bridge. Something similar was done to split a DECnet.
    • this type of machine can have many lines but only one active circuit (which results in only one line being used)
    • In this following example, line FPA-0 (FDDI) is faster than Line EWA-0 (10 Mb/s Ethernet) so the system is only using circuit FPA-0:
      $ 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
  2. ROUTING (level-1 routing)
    • required license: DVNETRTG
    • a host running DECnet is joining two, or more, logical DECnets "with the same AREA"
      • In the Ethernet world we would refer to this as an Ethernet bridge (which only works at the MAC layer).
      • Since this is done at the network layer but only allows similar DECnet AREAS, in my mind it is more like a DECnet bridge
    • this type of machine can have many lines and many circuits
    • Example:
      $ 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 
  3. AREA (level-2 routing)
    • required license: DVNETRTG
    • a host running DECnet is joining two, or more, logical DECnet(s) with any AREA
      • by my way of thinking, this is more like I/P Routing
    • Example:
      $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

 DCL One-Liners (implemented in DECnet-IV but works with DECnet-Plus)

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

Node
string notes
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  

Demo DCL Scripting

DECnet task-to-task communications in DCL

DECnet task-to-task communications in BASIC

 Buy This Book (if you can)

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.

DECnet-Plus

  • During 2019-10-xx I was asked to help a friend deal with some DECnet problems on an orphaned system (this system had been humming along without any VMS technical support for more than a decade (how cool is that)
  • Within a few minutes I realized that everything we were trying with NCP was broken because this VAXcluster (still running VMS-7.2) was running DECnet-Plus
  • Realizing that we both needed to develop some DECnet-Plus skills, I modified one of two Itanium servers in my OpenVMS Sandbox to use DECnet-Plus
  • Sandbox-2 was already running DECnet-IV so, I followed these steps:
    • use the $product command to remove DECnet-IV (don't try this unless you have the optical media available to reinstall it).
    • use the $product command to install DECnet-Plus (a reboot is now required because DECnet-Plus is part of the kernel while DECnet-IV ran like a privileged application).
    • execute @sys$manager:net$config which will notice the DECnet-IV data files then offer to transcribe them into DECnet-Plus files. Before you know it, DECnet-Plus is up and running.
    • However, doing simple DECnet-IV things like "SET NODE" and "DEFINE NODE" in NCP (the DECnet-IV tool) are impossible in NCL (the DECnet-Plus primary tool).
    • To make matters worse, the simple syntax required to enable/disable lines and circuits in DECnet-IV is now horribly complicated -AND- the help facility within NCL or VMS is of little use

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.

(recommended) DECnet-Plus Documentation

  • Documentation CD-ROMs (laying around almost every office)
    • Compaq OpenVMS version 7.2 Documentation CD-ROM
      • blue disk inside a green cardboard envelope (mostly HTML-based)
      • volume label: OVMSDOC0721 (dated: July 1999)
      • titles:
        • DECnet-Plus for OpenVMS Applications Installation and Advanced Configuration Manual
        • DECnet-Plus for OpenVMS Installation and Basic Configuration
        • DECnet-Plus for OpenVMS Introduction and User's Guide
        • DECnet-Plus for OpenVMS Network Management
        • DECnet-Plus Network Control Language Reference ( NCL lives here )
        • DECnet-Plus Planning Guide
        • DECnet-Plus Problem Solving
    • HP OpenVMS V8.3 and V8.3-1H1 (Online Documentation Library for HP OpenVMS and Integrity/Alpha Servers and Microsoft Windows Platforms)
      • white disk with a blue stripe (mostly PDF-based)
      • can still be downloaded (see 5-lines below)
      • titles:
        • HP DECnet-Plus for OpenVMS Installation and Configuration
        • HP DECnet-Plus for OpenVMS Release Notes
        • DECnet-Plus for OpenVMS Introduction and User's Guide
        • HP DECnet-Plus for OpenVMS Network Management
        • HP DECnet-Plus Network Control Language Reference
        • DECnet-Plus Planning Guide
        • DECnet-Plus for OpenVMS Programming
        • DECnet-Plus FTAM and VT Use and Management
        • DECnet-Plus FTAM Programming
        • DECnet-Plus OSAK Programming Reference
        • DECnet-Plus OSAK Programming
        • DECnet-Plus OSAK SPI Programming Reference
        • HP DECnet-Plus DECdts Management
        • DECnet-Plus DECdts Programming Reference
        • HP DECnet-Plus DECdns Management
        • DECnet-Plus Problem Solving
        • DECnet/OSI for VMS CTF Use
  • Online Documentation (still available as of: 2019-10-31)
    1. https://support.hpe.com/hpsc/doc/public/display?docId=a00058693en_us
    2. http://h30266.www3.hpe.com/ODLIndex.asp
      • do not pick any packages older than 2007-11-xx (*NOV07*.zip = NOV-2007) because DECnet-IV and DECnet-Plus documentation is missing (perhaps moved to an archive)
      • no VAX packages available here document any DECnet products

A Rosetta stone of sorts

Checkout this interactive translation tool. You input the NCP command and it provides the NCL equivalent
$ 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> 

What about named nodes?

  • so over the years I have always thought that "SET NODE" and "DEFINE NODE" in NCP were overly complicated since something similar is done in the UNIX world by just using an editor to modify file "/etc/hosts"
    (at least this would be true for a simple DECnet installation not running some sort of DECnet nameserver)
  • a new paradigm exists with DECnet-Plus because you cannot enter the equivalent of "SET NODE" from NCL
  • So, checkout this script:
    ****************************************************************************
    $ 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>
    *****************************************************************************

DCL One-liners (DECnet-Plus Only)

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

A comment about VMS Fan Boys

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?

 Links


Back to Home
Neil Rieck
Waterloo, Ontario, Canada.