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

A few more details

DECnet-IV stuff

DECnet-IV routing modes (restricted by your license)

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

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

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

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?

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.