Google
 

Trailing-Edge - PDP-10 Archives - BB-BT99V-BB_1990 - 10,7/anf10/anf10d.rno
There is 1 other file named anf10d.rno in the archive. Click here to see a list.
.lm 0;.rm 72;.page size 59,72
.fg 10
.center;DIGITAL EQUIPMENT CORPORATION
.
.center;DISTRIBUTED PROCESSING NETWORK FACILITIES
.s2
.center;DECNET-10
.s4
.center;Specification for:
.s
.center;Network Control Language
.s
.center;N C L
.s2
.center;Date:  14-July-75  PRELIMINARY
.s
.center;Address any technical comments to:
.s
.literal
                           Dave McClure
                           Digital Equipment Corp.
                           200 Forest Street
                           Marlboro, Massachusetts
.end literal
.page
.title DECNET-NCL
.subtitle 14-Jul-75 - PRELIMINARY
.figure 10
Copyright (C) 1975, Digital Equipment Corporation
.s2
This material may be copied, in whole or in part, provided that the above
copyright notice is included in each copy along with an acknowledgement that
the copy describes the NCL protocol developed by Digital Equipment Corporation.
.s
This material may be changed without notice by Digital Equipment Corporation, 
and Digital Equipment Corporation is not responsible for any errors which may
appear herein.
.page
.center;CONTENTS
.s2
.literal
1.0	INTRODUCTION
1.1	NCL Functions
    
2.0	COMMUNICATION ENVIRONMENT
  
3.0	NCL MESSAGES
3.1	User Interface an Operation
3.2	Message Formats
3.3	Data Messages
3.4	Unnumbered Control Messages
3.5	Numbered Control Messages
  
4.0	OPERATION
4.1	Logical Link Operation
4.2	Network Testing and Maintenance
4.3	Routing
   
5.0	INTERFACE TO OPERATING SYSTEMS
   
6.0	CONSIDERATIONS IN DESIGN
   
Appendix A - Object Types
Appendix B - Message Summary
Appendix C - Device Specific Attributes
Appendix D - Sample Messages
.end literal
.page
.hl1 INTRODUCTION
.s
This document defines the Network Control Language (NCL) for the Digital
Equipment Corp.   DECsystem-10 distributed computing network facilities
(DECNET-10).  DECNET-10 CONSISTS OF SOFTWARE/HARDWARE PACKAGES, INTEGRATED
INTO DIGITAL'S PRODUCTS, THAT ALLOW EASY INTERCOMPUTER COMMUNICATIONS
BETWEEN COMPUTER SYSTEMS CONNECTED TOGETHER BY COMMUNICATION LINKS.  DECNET-10
MAY BE USED TO CREATE DISTRIBUTED PROCESSING COMPUTER NETWORKS SUITABLE FOR USE IN A 
VARIETY OF APPLICATION AREAS.  FOR AN OVERVIEW OF THE DECNET system see the
product brochure or the technical summary document on DECNET.
.s
The basic goals of DECNET-10 are to create facilities that permit device
sharing and interprogram communication among the systems connected together
in a DECNET-10 environment.  To achieve these goals and allow easy integration
into existing systems, DECNET-10 has been designed to use a layered structured
approach.  Each layer in the system performs a distinct set of functions, within
each layer these functions have been separated into distinct functional modules.
The structuring of the system into layered communication levels and functional
modules within these levels provides the implementor with the flexibility
necessary to integrate the network functions into existing systems.  The design
also allows for ease of subsetting and future development within the DECNET
implementations.
.s
The presentation in this document is at the overall design level and does not 
imply the actual structure of the implementations.  The structure of DECNET 
implementations depends heavily on the facilities available and structure of
the individual systems, for example, multiprogramming, protection mechanism,
memory management and I/O mechanisms.  The implementations will, as much as 
possible, reflect the structured layered design inherent in the DECNET system.
.s
The key to a successful network is the standardization and compatibility of the
protocols used in the system.  Each level (layer) in the DECNET-10 structure
corresponds to one or more specific protocols reflected in that level.  The
levels in the structure are divided as follows:
.s
.literal
	1.  Hardware level	- The transmission/reception of the
				  data bits over a physical link.
				  This layer is concerned with
				  transmission techniques
				  (synchronous, asynchronous,
				  parallel), character synchronization
				  and modem operation.
  
	2.  Physical link level	- The interface of message packets
				  to/from the hardware level.  The
				  physical link level is concerned
				  with message error detection and
				  recovery, message sequencing and
				  message synchronization over the 
				  physical links.
	3.  Logical link level - The multiplexing/demultiplexing of
				  the physical link message stream
				  into individual message streams for
				  each logical link level is concerned
				  with end-to-end sequencing and
				  acknowledgment, message segmenting
				  and routing.
  
	4.  Dialogue level	- The conversion created from
				  converting the messages sent over a
				  logical link into a meaningful
				  exchange between users.

.end literal
The hardware level is implemented via a device driver and interrupt service
routine.  Its purpose is to exchange data with the interface and to handle
synchronization and modem control for the hardware.
.s
The physical link level implements the link protocol for error detection and
recovery.  In DECNET-10 this is an implementation of DDCMP (Digital Data
Communications Message Protocol).
.s
The logical link level creates logical data links via the NCL (Network Control
Language).  NCL commands support the creation of the logical links and the
transfers of user data over those links.
.s
The dialogue level is the conversation built from an exchange of messages
between users.  This level of exchange occurs between general user processes
and between user processes and the functional modules supporting I/O devices,
file structures, and program transfers.
.s
The diagram below shows how the various level of protocol are related.
.s
.literal
              Device  -----                 ----- Functional modules
                           \              /
                      ----- DDCMP ---  NCL  -----
                           /              \
              Drivers -----                 ----- User processes
  
 Levels:      Hardware   Physical      Logical        Dialogue
                           link          link
      
.end literal

.center;DECNET-10 Structure
.s
.hl2 NCL Functions
.s
NCL creates a mechanism for general communication between processes
operating in DECNET-10 systems.  It is concerned with the creation of
conversation paths (logical links), the routing and flow control of data
over those links and the diagnosiblity of problems in the transfer of data
through the network, NCL assumes an error-free physical data link over
which it may pass messages to adjacent systems.  In DECNET-10 this error-free
link is created from the DDCMP line discipline, the device driver, the
hardware interface, modems (if any), and the physical wire link.
.s
NCL provides the following functions within a network system:
.s
.literal
	1.  Functions to the dialogue level:

		a.  Create a conversation path (logical link).

		b.  Transmit data over a logical link.

		c.  Receive data over a logical link.

		d.  Interrupt over a logical link.

	2.  Functions for operation of link:

		a.  Multiplex logical links into physical links.

		b.  Control traffic over logical links.

		c.  Ensure end-to-end delivery of data
		    in proper sequence.

	3.  Functions for network supervision:

		a.  Route messages through net.

		b.  Detect node/link failures and
		    maintain routing paths.

	4.  Functions for network maintenance:

		a.  Maintain error logs.

		b.  Examine and deposit remote node memory.
.end literal
.page
.hl1 COMMUNICAITON ENVIRONMENT
.s
The Network Control Language consists of two, essentially independent, 
functions.  The first is conerned with the creation and operation of the
logical links, the mechanism for interprogram communication in DECNET. 
The second is concerned with the creation and operation of a communication
network and is used by the first function for message routing and network
maintenance.  If one looks at the two systems engaged in a single conversation
the network appears as:
.s
.left;  User process---NCL---Communication Net---NCL---User process
.s
.center;NOTE
.literal
		This diagram shows logical data flow and
		does not include the physical links and
		DDCMP protocol used in actual data flow.
.end literal
.s
The communication net is used to transfer data from the NCL on one
node to the NCL on another node.  The communciation net may physically
consist of simply the two nodes connectecd by a single wire:
.s
.literal
	1.  Node A------Node B
  
one or more nodes in between:
  
	2.  Node A---Node X---Node Y---Node B
  
or more complex topologies:
  
	3.  Node A---Node X----Node Y
                     |         |
                     --------Node Z------Node B
  
.end literal
.s2
The actual data transfers over the net, for instance in example 2, go from
node A/NCD to Node A/DDCMP to Node X/DDCMP to Node X/NCL, where a routing
decision is made; to Node X/DDCMP to Node Y/DDCMP to Node Y/NCL, where 
another routing decision is made; to Node Y/DDCMP to Node B/DDCMP to Node B/NCL
to the user.  As can be seen the NCL's at nodes A and B perform both logical
link functions and routing functions while the NCL's at nodes X and Y may 
perform only routing functions.  If one considers only the end-to-end or 
logical link functions of NCL then the system may be viewed as the end NCL
modules with a communication net used to physically transport the data between
the systems.  This communication net may have a number of varying properties
including:
.s
.literal
	1.  Guaranteed sequential delivery of messages (sequential nodes)
  
	2.  Possible non-delivery or delivery out of order
	    (non-sequential nodes)
.end literal
.page
.hl1 NCL MESSGAES
.s
NCL networks can contain two types of nodes; "sequential" and "nonsequential".
.s
A sequential node is one that has only one path from it to any other node in 
the network.  A sequential node whose DDCMP ACKs a message is committed to
pass the message on in numerical order to its destination.  The message can
only be discarded if the destination node has become disconnected.
.s
In a nonsequential network, there may be multiple paths from one node
to any other node.  Because of the possibility of having several paths,
a message may become lost and require retransmission (e.g., an intermediate
node's DDCMP ACKs a message and then the node dies).  Further, messages to
a nonsequential node may arrive out of numerical order (e.g., the route of 
the second message differs from that of the first message and the second
message arrives before the first).  A nonsequential node whose DDCMP ACKs
a message should pass the message on to its destination, but passing the
message is not required.
.s
Nonsequential nodes maintain an end-to-end numbering scheme for all
important messages in order to determine whether their messages have
arrived at their destinations.  The NCL-REP, NCL-ACK, and NCL-NAK messages
are used to maintain the message numbering scheme.
.s
For nonsequential networks, it is important that messages not lie around
too long.  (Consider the case of node A sending message 1 to node B,
then transmitting messages 2 through 256 and having the message numbers
wrap-around to 1 again.  The second copy of message 1 is sent from node A,
but the first one suddenly arrives at node B.  Node B then believes that the
old message 1 arriving is actually the second.)  Therefore, in nonsequential
networks, if the DDCMP routine is unable to successfully transmit a message to 
the next node on the path within a fixed period of time, the message is
disposed of, and the DDCMP messages are realigned using the RESET and RESAK
messages.  Any node can calculate the maximum length of time a message can be
outstanding (time period times maximum number of links), and use this time for
its NCL-REP timer.
.s
.hl2 User Interface and Operation
.s
The basic goal of NCL is to create paths of conversation between users
(interprocess communication) and manage the operation of these paths.  The
user has four basic commands that may be issued to NCL for the operation of
this communications mechanism:
.s
.literal
	1.  CONNECT	- directs NCL to create a communication path
			  (logical link) between the processes issuing the
			  command (usually with an ASSIGN system command,
			  INIT UUO, OPEN UUO, or FORTRAN OPEN statement)

	2.  TRANSMIT	- directs NCL to send user data over the logical
			  link (usually performed with an OUTPUT UUO or
			  FORTRAN WRITE statement)

	3.  RECEIVE	- directs NCL to receive data over the link
			  (usually done with an INPUT UUO or a FORTRAN
			  READ statement)

	4.  DISCONNECT	- terminates the conversation and destroys the
			  logical link (usually done with a DEASSIGN
			  system command, RELEASE UUO, or FORTRAN CLOSE
			  statement)

.end literal
To minimize system buffer occupancy, NCL does not move any data over the
link until a transmit request has a corresponding receive request, implying
a user buffer for the incoming data.  The commands are interpreted by NCL
and result in one or more messages exchanged by NCL modules.  These messages,
to be described in the next section are:
.s
.left;  1.  CONNECT command - Connect message (Control Message)
.s
.left;  2.  TRANSMIT command - Data message
.s
.left;  3.  RECEIVE command - Data request (Control Message)
.s
.left;  4.  DISCONNECT command - Disconnect message (Control Message)
.s2
.hl2 Message Formats
.s
This section describes the basic messages and their formats.  Sections 4.0
through 4.1.3 describe the state transitions and operation of the NCL.  The
following notation is used to describe the messages:
.s
.left;  Field (length) :  coding = description of field
.s
.left;  Field = the name of the field being described
.s
.left;  Length = the length of the field as:
.s
.literal
	1.  a number meaning number of 8-bit bytes

	2.  a number followed by a "B" meaning number of bits

	3.  the letters "EX" meaining extensible field - Extensible
	    fields are variable length consisting of 8-bit bytes,
	    where the high-order bit of each byte denotes whether the
	    next byte is part of the same field.  A 1 means the next
	    byte is part of this field while a 0 denotes the last
	    byte.  Extensible fields can be ASCII or binary.  If
	    ASCII they are merely variable length strings of 7-bit
	    ASCII.  If binary then 7-bits from each byte are
	    concatenated into a single binary field.
  
  coding = the representation type used A=7-bit ASCII, B=binary
                                        BM=bit map (each bit has
                                        specific meaning)
  If length and coding are omitted Field represents a number of
  subfields specified in description.
  
.end literal
All fields are transmitted low-order bit first on the data links unless
otherwise specified.  All number values are in decimal representation.
.s
Parentheses "( )" around a field indicate that the field can be repeated.
The parentheses are not part of the NCL syntax.
.s
.center;NOTE
.s
.literal
		The size of extensible fields may be
		limited to some maximum number of bytes
		or bits.
.end literal
.s
Users exchange data over conversation paths (logical links) created by
NCL.  The NCLs also exchange data for creation and supervision of the
logical links as well as for network control and routing.  There are two
types of messages, therefore, that are exchanged by NCLs.  Data Messages
(DM) carry the dialogue level information between processes and Control
Messages (CM) carry information between NCL modules.  Control Messages can 
be either numbered (NCMs) or unnumbered (UCMs).
.s
Messages exchanged by NCL, both DM and CM, may pass through several
intermediate nodes along the communication path or may be directly connected
by a physical link.  In the former case the message must include routing
information for use by intermediate nodes; in the latter case such information
may be omitted for efficiency.  It is recommended that messages always be 
built to include both the destination and source node addresses.  This 
eliminates the need to rebuild the message to include routing information if
a link should go down.
.s
Messages take the following general form:
.s
.literal
         NCT   DNA   SNA   NCA   NCN   DAT

NCT(EX) : BM =  A group of flags denoting characteristics of the
                message.  They have the following meaning if set:
		
		bits 0-2- the type of the field in binary
			0 = data message or numbered control
			    message
			1 = ACK,
			2 = NAK,
			3 = REP,
			4 = START
			5 = STACK
			6 = node-ID
		bit 3 - DNA and SNA present - routing informaiton
			is included following this field
		bit 4 - This is a trace mode message
		bit 5 - Interrupt message (does not affect the data
			request count)
		bit 6 - Non-sequential node
		bit 7 - Reserved for extension (currently 0)

DNA(EX) : B =	The destination node identifier (binary number) -
		where 0 = next node on link - used to address
		adjacent node over synchronous line.  This field
		is optional and is included only if NCT bit 3 is
		set.


				NOTE

              	The user usually addresses node using
              	an ASCII name which is internally mapped
              	into the destination node address.

SNA(EX) : B =	The source node identifier - (maximum of 6 bits
		with 6.02 monitors) may not be 0.  This field is
		optional and is included only if NCT bit 3 is set.

				NOTE

              	The omission of the DNA defaults to
              	DNA = 0 and implies the SNA as the
              	adjacent node sending this message.

NCA(1) : B =	Network Control ACK.; the number of the last 
		network control message correctly received.

NCN(1) : B = 	the number of this network control message.

DAT = 		the message information for DM or CM.

.end literal
.hl2 Data Messages
.s
If any of the three low-order bits of NCT are set, the message is an
Unnumbered Control Message; otherwise it is a Data Message (DM) or a
Numbered Control Message.  If the first byte of DAT is zero, then the
message is a Numbered Control Message; otherwise it is a Data Message.
.s
For a DM, DAT is:
.s
	DNA DAP
.literal

DLA(EX) : B =	the logical link destination address for this
		message. This is the address for a conversation
		and is usually dynamically assigned via the
		connection procedure.  The maximum size for DLA is
		12 bits.  Zero is an illegal DLA address.
  
DAP =		a data message in accordance with the Data Access Protocol
   
.end literal
.hl2 Unnumbered Control Messages
.s
If bits 0-2 of NCT indicate that the message is an unnumbered control
message, and the message is a START, STACK, or NODE-ID message, then
DAT has the form:
.s
	NNM SNM SID
.s
.literal

NNM(EX) : B =	node name identifying node.  Maximum of 12 bits;
		zero means the next node over an asynchronous line.
  
SNM(EX) : A =	station name.
  
SID(EX) : A =	software identification containig two sub-fields;
		(1) name and version of the operating system and
		network software, (2) creation data of the software.
  
.end literal


If bits 0-2 of NCT indicate that the message is an unnumbered control
message and the message is not a START, STACK, or NODE-ID, then DAT
is empty.
.s
.hl2 Numbered Control Messages
.s
If the three low-order bits in NCT and the first byte of DAT are zero,
the message is a Numbered Control Message (NCM).  NCMs are used to
pass information between NCL modules.  These message are divided into
three group:
.s
	1. NCMs related to operation of logical links
.s
	2. NCMs related to network testing
.s
	3. NCMs related to routing
.s
All NCMs have the following form for DAT:
.s
	<0> (CNT TYP CMD)
.s
.literal


CNT(1) : B = 	the number of bytes in this NCM (not including CNT
		byte) - allows blocking of NCMs.
  
		This field is OPTIONAL depending on bit 4 of NCT.
  
TYP(1) : B =	the number representing the type of NCM.  These
		numbers are given with each NCM description and in
		the summary in Appendix A.  Types 128-255 are
		reserved for any user extensions to NCL.
  
CMD = 		the data specific to each NCM.
.end literal

.page
.hl3 Control Message for Logical Link Operation
.s
.hl4 CONNECT (TYP = 1)
.s
The connect message is used to establish a logical link (communication
path) between processes in the network.  The state transitions for the
connection sequence, given in section 4.1.1, basically consist of the
exchange of connect initiate and connect confirm messages.  The form of
CMD for the connect message is:
.s
.left;     DLA   SLA   DNF   SFN   MML  FEA
.s
.literal
DLA(EX) : B =	destination message link address (i.e., the index
		into the node's connection database, maximum of
		12 bits; zero is illegal.

SLA(EX) : B = 	source message link address, maximum of 12 bits;
		zero is illegal.

DPN = 		destination process name.  Consists of:

		OBJ PID

OBJ(1) : B =	object type for process

			0 = terminal handler
			1 = terminal
			2 = Card reader
			3 = Line printer
			4 = Paper-tape reader
			5 = Paper-tape punch
			6 = Plotter
			7 = Magnetic-tape
		       10 = DECtape
		  200-377 = reserved

PID(EX) : A = 	task-name and qualifier (e.g., PPN or UIC)

SPN =		source process name.  Consists of

		OBJ PID

MML(1) : B =	maximum NCL message length for connection;
		including NCL header, but not including DDCMP
		information.

FEA =		feature included.  Consists of:

		DCM RLN DVT

DCM(1) : BM =	data code and mode
		0 = ASCII
		1 = EBCDIC
		2 = Image
		3 = Hollerith (CDR only)
		4 = DEC image (CDR only)
		5 = reserved
		6 = compressed format

RLN(EX) : B =	maximum record length.  Dependent on device;
		Usual values are 132 for line printer, 80 for card
		reader, etc.

DVT = 		device specific attributes.  See Appendix C.

.end literal
.hl4 DISCONNECT (TYP = 2)
.s
The disconnect message is used to destroy a logical link previously
established and/or confirm that a connection rejection has been
completed.  The state transitions usually consist of the exchange of
disconnect initiate and disconnect confirm messages.  The form of CMD
for the disconnect message is:
.s
.left;    DLA   SLA   RSN
.s
.literal


DLA(EX) : B =	destination message link address (i.e., the index
		into the node's connection database).  Maximum of
		12 bits; zero is illegal.
  
SLA(EX) : B = 	source message link address.  Maximum of 12 bits;
		zero is illegal.
  
RSN(1)  : B =	the reason for the disconnect.
  
		0 - no specific reason
		1 - object type unsupported
		2 - too many connects to node
		3 - too many connects to process
		4 - process does not exist


.end literal

.hl4 NEIGHBOURS (TYP = 3)
.s
The NEIGHBOURS message for non-sequential nodes includes all adjacent
nodes that a node will route to.
.s
For sequential nodes, the NEIGHBOURS message includes all nodes it will
route to.
.s
Each time a node (1) acquires a new neighbor, (2) loses a neighbor,
or (3) changes a link level, it sends a NEIGHBOURS message to all the
nodes known to it.  The form of CMD for the NEIGHBOURS message is:
.s
.left;     (  NNM  LVL  )
.s2
.literal

NNM(EX) : B =	node name identifying node
  
LVL(1)  : B =	link value used to determine the preferred path.
		(The preferred path is the path whose link values
		add up to the lowest number.)
   
.end literal
.hl4 REQUEST CONFIGURATION (TYP = 4)
.s
The request configuration message is sent to the NCL module at another
node to get information on the operating system and version being
used, the NCL options supported and the node address and name.  This
information is returned in a configuration message.  The byte labelled
CMD is omitted for this message.
.s
.hl4 CONFIGURATION (TYP = 5)
.s
This message returns the system configuration and options in response
to a request configuration message.  The form of CMD is:
.s
.left;   ( OBJ  NDV )
.s
OBJ(1) : B = 	object type for process as described in Section 3.5.1.1.
.s
NDV(EX) : BM =	the number of devices available
.s2
.hl4 DATA REQUEST (TYP = 6)
.s
The DATA REQUEST message informs the destination node that the source node
is willing to accept data.  The CMD form is:
.s
.left;   DLA  DRQ
.s  
.literal
DLA(EX) : B =	description message link address.  Maximum of 12 bits.
  
DRQ(1)  : B =	number of data requests outstanding.  Each data
		request enables one DDCMP message to be received.

.end literal
.page
.hl4 STATION CONTROL (TYP = 7)
.s
Station control messages are used to perform operations with the
bootstrap level of remote station software.  CMD for STATION CONTROL
messages is one of the following forms:
.s
.literal
	BOOT -		LNM	<000>
	EXAMINE -	LNM	<001>	AD1	AD2
	DEPOSIT -	LNM	<002>	ADR	DATA
	GO TO -		LNM	<003>	ADR
	CLEAR -		LNM	<004>	AD1	AD2
	DEBUG -		LNM	<005>
	ACCEPT -	LNM	<011>	ADR	DATA
	EXAMINE DATA -	LNM	<012>	ADR	DATA
	REJECT -	LNM	<013>
	REQUEST BOOT -	LNM	<014>	TYPE	SER	DES
	REQUEST LOAD -	LNM	<015>	TYPE	SER	DES


LNM(1) : B =	the number of the line connecting the destination
		node to the node which is to receive the station
		control message.  Zero means the destination node;
		N means that the node connected to line (N-1) of
		the destination node is to receive the message.
  
DES(EX) : A =	a string of ASCII characters which describes ther
		program to be loaded.  This is usually a file
		description.
  
SER(EX) : B =	the serial number of the node to be booted.
  
TYPE(EX) : B =	the code for the type of node requesting the load.
		1 = DC71 (PDP81 with DP01).
		2 = DC72 (PDP8E with DP8E).
		3 = PDP-11/40 with DU11.
		4 = DAS82 (PDP-11/40 with DQ11).
  
ADR(3) : B =	an address made up of three concatenated bytes,
		with the low-order byte arriving first (on the
		PDP-8 based nodes, the length of this field is 2
		bytes).  ADR indicates the address in the remote
		node which is being operated on.
  
AD1(3) : B =	an address made up of three bytes (two for PDP-8s)
		indicating the lower limit of the range of
		locations to be operated on.
  
AD2(3) : B =	an address made up of three bytes (two for PDP-8s)
		indicating the upper limit of the range of
		locations to be operated on.
  
DATA(EX) : B =	the information portion of the STATION CONTROL
		messages.  When only one ADP is specified with a
		data stream for deposit, the data is deposited in
		sequential locations starting at the address
		specified and continuing until the data runs out
		(determined by the byte count).
.end literal
.page
.hl1 OPERATION
.s
This section describes the operation of NCL with respect to the
message categories:
.s
	1. Messages related to logical link operation.
.s
	2. Messages related to routing.
.s
.hl2 Logical Link Operation
.s
The basic function of NCL is to provide an interprocess communication
mechanism between processes located on different nodes in a DECNET
system.  This mechanism operates via a communication path known as a
logical link.
.s
Logical links define the end points of a conversation (dialogue) and
in no way imply the technique used for message transmission between
those end points or the line discipline used.
.s
The NCL modules creating the link and passing data over it must know
certain characteristics of the communication system being used.  Much
of this has been described earlier in the discussion on characteristics
of the communication network.  The two important characteristics are
those of non-sequential delivery or sequential delivery.  These 
characteristics determine whether or not certain NCL options must be 
used to guarantee sequential message delivery to the user. The NCL
functions for operation of logical links include:
.s
	1. creation/destruction of logical links.
.s
	2. control of traffic over logical links.
.s
	3. insure sequentiality and delivery.
.s
	4. create a mechanism for interruption over logical links.
.s
These functions are described below.
.s
.hl3 Creation of Logical Links
.s
The establishment of a logical link is a cooperative effort between
the processes wishing to engage in a conversation.  The protocol
achieves security and protection by letting the parties involved in a
conversation decide if they should converse.  The creation of a link
involves an exchange of connect messages.  One of the processes issues
a connect command to NCL through an interface in the operating system
environment (such as the ASSIGN command).  This command causes NCL to
send a connect-initiate message to the destination NCL.  This message 
includes the names of the processes wishing to connect and any
additional information one process wishes to pass along to the other,
such as passwords, device characteristics, etc.
.s
The destination process receives this information and decides whether
or not to complete the connection.  If it does, it issues a connect
command and NCL sends a connect-confirm message back to complete the
connection procedure.  Otherwise, it issues a connect-reject command
causing a disconnect message to be sent and the logical link broken.
.s
There are two other reasons for rejecting connections:
.s
	1. an error was detected and an error message was sent back
.s
	2. a connect-rejection by NCL (disconnect message)
.s
To improve the efficiency of logical link operation the connection
procedure encodes the process names and associated queues into an
address which is passed over in the connect-initiate (SRCADDR) and a
corresponding encoding returned from the other end in a
connect-confirm.
.s
The following notation is used for this and other state diagrams:
.s
.literal
  CI(a,b)    - connect initiate:dest addr=a, src addr=b

  CC(a,b)    - connect confirm

  DM(a,n)    - data message:  dest addr = a, message number = n

  DR(a,n,k)  - data request:  dest addr = a, request count = n, ack
               number = k

  DS(a,b)    - disconnect by NCL

.end literal
The state operations for connection are:
.s
.literal
  1.  Normal connection

           CI(0,a)---------------->
       complete <----------------CC(a,b)

  2.   Connection rejection

           CI(0,a)---------------->
                <----------------DS(a,0)
  
  3.   Sender aborts or cancels connection

           CI(0,a)---------------->
           connect cancelled

                  <--------------CC(a,b)
           DS(b,a)--------------->
                  <--------------DS(a,b)

  4.   Error in connect parameters

           CI(0,a)--------------->
                  <--------------DS(CI(0,a))

  5.   Error in confirming parameters

           CI(0,a)--------------->
                  <--------------CC(a,b)
           DS(CC(a,b))--------------->
                  <--------------DS(a,b)

.end literal
These state examples are not exhaustive but give the operation in the
basic cases.
.s
.hl3 Message Transfer Over Logical Links
.s
When the connection procedure has been completed, each end of the
logical link has a reference number (destination address) it uses to
address the logical link.  This address is used in data messages sent
over the link and in control messages referencing the link.
.s
The design of NCL does not include any provision for disk storage of
incoming messages.  A user wishing such a facility may add it locally 
without affecting NCL operation.
.s
In order to minimize system buffer occupancy a traffic control scheme
has been included in the operation of the logical links:  a message is
not transmitted over a logcial link until the receiving user has
allocated a buffer for storage of the message (issued a receive command
to NCL).  This is implemented on the logical link by a request count scheme.
Whenever a receive command is issued, the destination NCL sends a data request
message.  When a transmit is issued the source NCL checks the current data
request count.  If the count is greateer than 0, NCL sends the message and
decrements the count.  To improve efficiency, NCL need not send data request
messages with each request but may wait for a number of them to accumulate and 
then send the total in one message.
.s
The operation is as follows:
.s
	1. User issues receive command.
.s
	2. NCL sends a data rquest for N messages.
.s
	3. Other NCL modules may then send N data messages.
.s
When a user issues a transmit command, the NCL module checks the
current local request count and if greater than zero, sends the
message.
.s
The state operations for message transfer are:
.s
.literal
	1. Single request and acknowledge
  
	   User issues "receive"
  
		DR(a,1,b)--------------->
  
		User issues "transmit"
  
		<----------------DM(a,b+1)
  
	   Acknowledge message (numbered)
		DR(a,0,b+1)-------------->
  
	2. Acknowledge and request
  
	   dR(a,1,b)---------------->
		<-----------------DM(a,b+1)
	   DR(a,1,b+1)-------------->
		<-----------------DM(a,b+2)
	   DR(a,1,b+2)-------------->
  

.end literal
There are many other possibilities due to timing but these examples
give the basic flavor of the traffic control/acknowledgement schemes.
.s
.hl3 Interruption Over Logical Links
.s
The NCL has a mechanism for allowing interruption over a logical link.
This feature allows:
.s
.literal
	1.  Interruption to "wake-up" a user and start data transfer.
	    This is very useful on links with intermittent transfers
	    because the user is not required to have an outstanding
	    receive.
  
	2.  Interruption of the normal data stream to inform the user of
	    some unusual condition.
.end literal
.s
The interrupt message is sent without any previous request and is
passed to the user outside the normal buffer mechanism scheme usually
through some local interrupt mechanism (i.e. synchronous system traps, 
event flags, mail boxes, etc.).
.s
Some implementations may limit the amount of data that may be sent in
an interrupt message.
.s
.hl3 Destruction of Logical Links
.s
Logical links may be terminated upon request from the user, failure of
the user process, or failure of a communication link or intermediate
node.  All these cases are handled in about the same way, the main
difference being that the processes are notified of the different 
reason for disconnection.  If it is process-initiated, the NCL module
sends a disconnect message upon receipt of a disconnect command from
the user.  This message may include optional data the disconnecting
process wishes to pass to the other end.  All transmit and receive
commands currently pending are terminated, the user only being sure
that transmit commands that have completed have been received at the
destination node.  Upon receipt of a disconnect message the receiving
NCL notifies the process via some local mechanism and also terminates
any pending commands.  It returns a disconnect-confirm message to
close off the logical link.  Messages received between the sending of
a disconnect message and the receipt of a disconnect-confirm are
discarded.  The processes on the link must complete their conversation
prior to issuing the disconnect command.  It has the effect of
immediately "hanging up".  Either process may initiate a disconnect,
not necessarily the one that initiated the connection.
.s
In the aborting case the same things happen except the receiving 
process is notified that this is a disconnect abort and is not passed
any optional data, as in the process-initiated case.  Some examples of
disconnection states are:
.s
.literal
	DI(a,b) - disconnect initiate: dest addr=a, srcaddr=b
  
	DC(a,b) - disconnect confirm
  
	DA(a,b) - disconnect abort
  
	1. User initiates disconnect
  
	  DI(a,b)----------->(on numbered links resent on timeout)
	                      complete
	  complete<----------DC(b,a)
  
	2.  User aborts
  
	    DA(a,b)---------->(on numbered links resent on timeout)
                               complete
            complete<---------DC(b,a)
.end literal
.s
.hl2 Network Testing and Maintenance
.s
Current knowledge of network testing and maintenance is limited to
those operations available using the Remote Debugger DDT11.  Further
information on DDT11 can be obtained in the DECNET-10 User's Manual in
the chapter on Network Maintenance.
.page
.hl2 Network Message Routing
.s
To enhance the operation and characteristics of DECNET-10, NCL allows
routing of messages within the system.  This means that the computer
systems (nodes) in which the communicating processes exist do not have
to be directly connected by a physical link.  Routing allows
conversations with processes to which there are paths, not necessarily
direct wire connections.  This means that intermediate nodes act as
routers in the forwarding of messages.
.s
The basic concepts of routing are fairly straightforward.  A message
enters a node and is given to NCL.  NCL examines the routing information,
deciding if it is the destination system.  If not, it executes a routing
algorithm, whose purpose is to associate the destination address with an
outgoing physical link number.
.s
The routing header in NCL includes some characteristics flags, the
destination node address and the source node address.  In 
point-to-point only communications this header may be omitted for
efficiency.  The receipt of a message without a DNA and SNA implies
that the receiver is the destination node and the node on the other
end of the physical link is the source node.  The NCT flags are used
by the routing algorithm to pick the outgoing link.  Routing algorithms
can be very simple table lookups or very complex computations attempting
to find optimal paths on a dynamic basis.  The algorithms used, and the 
information that must be exchanged by routine nodes is what makes routing
a complex problem.  The mechanics of receiving a message and forwarding
it on another link are rather simple.
.s
Sections 4.3.1 through 4.3.3 descirbe the routing techniques employed in
DECNET-10.  This is independent of the other two sections of the
NCL specification, logical link operation and maintenance and testing.
Other routing algorithms and techniques may be used without affecting
logical link operation.  All NCLs in a network must, however, be aware
of the characteristics of the routing algorithm and communication
system in order to choose an option consistent with the routing.  This
has been discussed earlier in the characteristics of the communication
system and the operation of numbered and unnumbered logical links.
.s
.hl3 Sequential Node Routing
.s
Sequential nodes in a network can only send messages down a single
link.  Therefore, the routing from sequential nodes is direct until a
non-sequential node is reached.  At the non-sequential node, adaptive
routing techniques are used to pass the message to the destination.
.s
.hl3 Adaptive Routing - Non-Sequential Nodes
.s
The most dynamic scheme is the adaptive routing technique that adapts
to changes in the topology and selects the best path for message
routing.  The technique uses the NEIGHBOURS message to pass
information between network nodes on the current state of each others
neighbours.  This technique is based on the concept that a node's
routing information is no better than the routing information of its
neighbors (adjacent nodes).  When a node routes a message to one of
its neighbors it is then up to the neighbor to route it further.  It
does no good for a node to have "better" information than the node to
which it is sending the message for further routing.
.s
Based on this concept, nodes send NEIGHBOURS messages to adjacent
nodes whenever there is a change to their route path table which will
change routing path information.  Since NEIGHBOURS messages are sent
only to neighbor nodes they themselves do not require
routing.  This eliminates the race condition problem when routing 
 messages are being routed with invalid routing tables trying to update
 these tables.
.s
Nodes operating in such an environmen may be either end nodes or
routing nodes.  End nodes perform no routing and are either sources or
destinations for messages.  The requirements are that these nodes
accept NEIGHBOURS messages and either discard them or keep the names
of valid nodes; and if they have multiple physical links they keep
the link numbers for each valid node.  End nodes may, thus, oeprate
either intelligently by knowing all valid nodes and checking messages
before sending them out; or by simply sending and handling the routing
error messages when they are sent back.
.s
Routing nodes must send NEIGHBOURS messages when physical link status
changes (up or down) and when they have updated their tables and this
causes a routing change.  Routing nodes may maintain alternate paths
in their routing table if desired.  The lack of this will result in
the absence of a path when the primary route fails.  The node may then
have to wait until it receives a NEIGHBOURS message with a new route
to the destination node if one exists.
.s
Transit values are assigned to links based on their goodness or 
"cost".  They may have values from 1-9, 1 being a better or lower cost
link.  Once transit values in route tables reach 127 they remain at
this maximum value.  Each node adds its link transit value to values
received in NEIGHBOURS messages to obtain the total cost to the destination
node.
.s
The basic rule in using routing in a non-sequential network is that
the total transit cost from the neighbour doing the routing must be
less than the total transit cost from the node itself.
.s
.hl3 Multiple Path Routing
.s
There are many cases when a node has more traffic to another node than
the bandwidth of the highest speed link or path between them.  In
theses cases the nodes may wish to use several paths simultaneously for
increased performance and high reliability.  It is possible to do this
in a number of ways.  One way is to assign multiple addresses to nodes
and different routing paths to each address.  When logical links are
assigned, the operating system may alternately map the node name into
these multiple addresses.  There are not changes to NCL in this case.
Some logical links take one path, while some take another.  Unnumbered
logical links may be used if the routing for each link is sequential.
.s
NCL may choose to send messages through a logical link which does not
have the lowest transit cost if the DDCMP queues for that link are
backed up.  Again, NCL can chooses an alternate route to the
destination as long as the neighbour it routes through has a transit
cost to the destination less than the cost of the node itself.
.s
.hl1 INTERFACE TO OPERATING SYSTEMS
.s
The NCL interface to a TOPS-10 network operating system is via system
commands and monitor calls (UUOs).  The elements in the interface are
described in the DECNET-10 User's Guide.
.s
.hl1 CONSIDERATION IN DESIGN
.s
To be completed.
.page
.no subtitle
.no headers
.s4
.center;APPENDIX A
.s
.center;OBJECT TYPES
.s4
This is the current list of object types defined for processes in
DECNET-10.
.s
.literal
Object	Type Number	Object Description

	0 =		terminal handler

	1 =		terminal

	2 =		Card reader

	3 =		Line printer

	4 =		Paper-tape reader

	5 =		Paper-tape punch

	6 =		Plotter

	7 =		Magnetic-tape

       10 =		DECtape

  200-377 =		reserved
.end literal
.page
.s4
.center;APPENDIX B
.s2
.center;MESSAGE SUMMARY
.s4
.literal
Unnumbered Control -  NCT  DNA  SNA  NCA  NCN  NNM  SNM  SID

Numbered Control   -  NCT  DNA  SNA  NCA  NCN  <0>  CMD

Data Messages      -  NCT  DNA  SNA  NCA  NCN  DLA  DAP



CMD message formats are:

CONNECT            -  CNT  <1>  DLA  SLA  DPN  SPN  MML  FEA
DISCONNECT         -  CNT  <2>  DLA  SLA  RSN
NEIGHBOURS         -  CNT  <3>  NNM  LVL
REQ CONFIG         -  CNT  <4>  OBJ  NDV  PID
CONFIGURATION      -  CNT  <5>
DATA REQUEST       -  CNT  <6>  DLA  DRQ
STATION CONTROL    -  CNT  <7>  STC

.end literal
.page
.s4
.center;APPENDIX C
.s
.center;DEVICE SPECIFIC ATTRIBUTES
.s2
.center;Table C-1
.s
.center;Card Reader Specific Attributes
.s4
.literal

	WORD	BITS	MEANINIG

	1	0-1	speed
			0 = don't care
			1 = <300 cards/minute
			2 = between 300 and 600 cards/minute
			3 = >600 cards/minute
		2	mark sense if set
		3	hardware EOF required if set
		4	suppress EOF card detection if set
		5-6	unused
		7	extensible bit - should be zero

.end literal
.page
.literal

DEVICE SPECIFIC ATTRIBUTES					Page C-2

.end literal
.s4
.center;Table C-2
.s
.center;Line Printer Specific Attributes
.s2
.literal

	WORD	BITS	MEANING

	1	0-1	speed
			0 = don't care
			1 = <300 lines/minute
			2 = between 300 and 600 lines/minute
			3 = >600 lines/minute
		2	lower case required
		3	removable character set required
		4	multi-part paper required
		5	12 channel skipping required
		6	unused
		7	extensible bit - should be set to 1
	2	0-1	skip requirements
			0 = don't care
			1 = changeable from handler
			2 = changeable at site
			3 = changeable, but don't care how
		2	requires overprint if set
		3	6 lines/inch printer required
		4	8 lines/inch printer required
		5	changeable fromwidth required if set
		6	unused
		7	extensible bit - should be zero

.end literal
.page
.literal

DEVICE SPECIFIC ATTRIBUTES					Page C-3

.end literal
.s4
.center;Table C-3
.s
.center;Terminal Specific Attributes
.s2
.literal
	WORD	BITS	MEANING

	1	0	modem control
		1	auto-baud detection
		2	handler can set baud rates
		3	2741
		4	Baudot
		5	auto-dial line
		6	unused
		7	extensible bit - should be zero

.end literal
.page
.s4
.center;APPENDIX D
.s
.center;SAMPLE MESSAGES
.s2
D.1  SAMPLE CONNECT MESSAGE
.s
110,10,3,46,133,0,13,1,24,44,0,0,1,15,112,0,110,7
.s2
.literal
BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message; bit 3 is set indicating that 
			SNA and DNA bytes are present;  bit 6 being
			set indicates that the sender is a non-sequential
			node.
2	10		DNA - the destination node number is 10.
3	3		SNA - the source node number is 3.
4	46		NCA - the last network message correctly received
			was message number 46.
5	133		NCN - this is message number 133.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	13		CNT - this byte indicates that there are 13 bytes
			remaining in this message.
8	1		this byte identifies that this is a CONNECT
			message.
9	24		DLA - the destination message link address is 24.
			If this byte was zero, the message would be a
			CONNECT initiate.  Since it is zero, the message
			is a CONNECT confirm.
10	44		SLA - the source message link address is 44.
11	0		OBJ - the destination object type for the process
			is TTY handler.
12	0		PID - the destination process identification is
			the default choice.
13	1		OBJ - the source object type for the process is
			TTY.
14	15		PID - the source process unit number is 15.
15	112		MML - the maximum message length is 112 bytes.
16	0		DCM - the data code is ASCII
.end literal
.page
.literal
SAMPLE MESSAGES							Page D-2
SAMPLE CONNECT MESSAGE

17	110		RLN - the record length is 110 (octal) characters.
18	7		DVT - the attributes of the terminal are:  (1)
			modem control, (2) auto-baud, and (3) the handler
			can set the baud rates.


D.2  SAMPLE DISCONNECT MESSAGE

110,10,3,46,137,0,4,2,76,40,0


BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message;  bit 3 is set indicating that
			SNA and DNA bytes are present;  bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	10		DNA - the destination node number is 10.
3	3		SNA - the source node number is 3.
4	46		NCA - the last network message correctly received
			was message number 46.
5	137		NCN - this is message number 137.
6	0		this byte differentiates a Numbered Control 
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	4		CNT - this byte indicates that there are 4 bytes
			remaining in this message.
8	2		this byte indentifies that this is a DISCONNECT
			message.
9	76		DLA - the destination message link address is 76.
10	40		SLA - the source message link address is 40.
11	0		RSN - the value zero indicates that this is a
			normal disconnection.


D.3  SAMPLE NEIGHBOURS MESSAGE

110,6,22,46,153,0,5,3,10,55,5,110

BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message; bit 3 is set indicating that
			SNA and DNA bytes are present;  bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	6		DNA - the destination node number is 6.
3	22		SNA - the source node number is 22.
.end literal
.page
.literal
SAMPLE MESSAGES								Page D-3
SAMPLE NEIGHBOURS MESSAGE


4	46		NCA - the last  network message correctly received
			was message number 46.
5	153		NCN - this is message number 153.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	5		CNT - this byte indicates that there are 5 bytes
			remaining in this message.
8	3		this byte indentifies that this is a NEIGHBOURS
			message.
9	10		NNM - one neighbour of node 22 is node number 10.
10	55		LVL - the link value between nodes 22 and 10 is 55.
11	5		NNM - another neighbour of node 22 is node number 5.
12	110		LVL - the link value between nodes 22 and 5 is 110.


D.4  SAMPLE REQUEST CONFIGURATION MESSAGE

110,20,77,66,122,0,1,4

BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message of Numbered
			Control Message; bit 3 is set indicating that
			SNA and DNA bytes are present; bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	20		DNA - the destination node number is 20.
3	77		SNA - the source node number is 77.
4	66		NCA - the last network message correctly received
			was message number 66.
5	122		NCN - this is message number 122.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	1		CNT - this byte indicates that there is 1 byte
			remaining in this message.
8	4		this byte identifies that this is a REQUEST
			CONFIGURATION message.


D.5  SAMPLE CONFIGURATION MESSAGE

110,40,26,55,100,0,7,5,1,10,2,1,3,1

BYTE	CONTENTS	MEANING

.end literal
.page
.literal
SAMPLE MESSAGES							Page D-4
SAMPLE CONFIGURATION MESSAGE

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message;  bit 3 is set indicating that
			SNA and DNA bytes are present;   bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	40		DNA - the destination node number is 40.
3	26		SNA - the source node number is 26.
4	55		NCA - the last network message correctly received
			was message number 55.
5	100		NCN - this is message number 100.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	7		CNT - this byte indicates that there are 7 bytes
			remaining in this message.
8	5		this byte identifies that this is a CONFIGURATION
			message.
9	1		OBJ - the object type for the process is TTY.
10	10		NDV - this bit map indicates that there are two
			terminals on node 40.
11	2		OBJ - the object type for the process is card
			reader.
12	1		NDV - there is one card reader on node 40.
13	3		OBJ - the object type for the process is line
			printer.
14	1		NDV - there is one line printer on node 40.


D.6  SAMPLE DATE REQUEST MESSAGE

110,3,10,46,115,0,3,6,24,3

BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message;  bit 3 is set indicating that
			SNA and DNA bytes are present;  bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	3		DNA - the destination node number is 3.
3	10		SNA - the source node number is 10.
4	46		NCA - the last network message correctly received
			was message number 46.
5	115		NCN - this is message number 115.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	3		CNT -this byte indicates that there are 3 bytes
			remaining in this message.
8	6		this byte identifies that this is a DATA REQUEST
			message.
9	24		DLA - the destination message link address is 24.
10	3		DRQ - there are three more outstanding data
			requests.
.end literal
.page
.literal
SAMPLE MESSAGES							Page D-5
SAMPLE REQUEST MESSAGE


D.7  SAMPLE STATION CONTROL MESSAGE

110,3,10,76,114,0,5,7,1,1,110,130

BYTE	CONTENTS	MEANING

1	110		NCT - bit 0 is zero which indicates that this
			message is either a Data Message or Numbered
			Control Message;  bit 3 is set indicating that
			SNA and DNA bytes are present; bit 6 being set
			indicates that the sender is a non-sequential
			node.
2	3		DNA - the destination node number is 3.
3	10		SNA - the source node number is 10.
4	76		NCA - the last network message correctly received
			was message number 76.
5	114		NCN - this is message number 114.
6	0		this byte differentiates a Numbered Control
			Message from a Data Message.  Zero indicates that
			this is a Numbered Control Message.
7	5		CNT - this byte indicates that there are 5 bytes
			remaining in this message.
8	7		this byte identifies that this is a STATION
			CONTROL message.
9	1		LNM - this byte indicates that the node under
			consideration is connected to line 0 of node
			number 3.
10	1		the STATION CONTROL message is EXAMINE.
11	110		the first location to be examined is location 110.
12	130		the last location to be examined is location 130.
.end literal