DIGITAL EQUIPMENT CORPORATION DISTRIBUTED PROCESSING NETWORK FACILITIES DECNET-10 Specification for: Network Control Language N C L Date: 14-July-75 PRELIMINARY Address any technical comments to: Dave McClure Digital Equipment Corp. 200 Forest Street Marlboro, Massachusetts DECNET-NCL Page 2 14-Jul-75 - PRELIMINARY Copyright (C) 1975, Digital Equipment Corporation 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. 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. DECNET-NCL Page 3 14-Jul-75 - PRELIMINARY CONTENTS 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 DECNET-NCL Page 4 INTRODUCTION 1.0 INTRODUCTION 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. 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. 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. 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: 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. DECNET-NCL Page 5 INTRODUCTION 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. 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. 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). 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. 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. The diagram below shows how the various level of protocol are related. Device ----- ----- Functional modules \ / ----- DDCMP --- NCL ----- / \ Drivers ----- ----- User processes Levels: Hardware Physical Logical Dialogue link link DECNET-10 Structure 1.1 NCL Functions 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 DECNET-NCL Page 6 INTRODUCTION error-free link is created from the DDCMP line discipline, the device driver, the hardware interface, modems (if any), and the physical wire link. NCL provides the following functions within a network system: 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. DECNET-NCL Page 7 COMMUNICAITON ENVIRONMENT 2.0 COMMUNICAITON ENVIRONMENT 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: User process---NCL---Communication Net---NCL---User process NOTE This diagram shows logical data flow and does not include the physical links and DDCMP protocol used in actual data flow. 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: 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 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: 1. Guaranteed sequential delivery of messages (sequential nodes) 2. Possible non-delivery or delivery out of order (non-sequential nodes) DECNET-NCL Page 8 NCL MESSGAES 3.0 NCL MESSGAES NCL networks can contain two types of nodes; "sequential" and "nonsequential". 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. 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. 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. 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. 3.1 User Interface And Operation 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: 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) DECNET-NCL Page 9 NCL MESSGAES 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) 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: 1. CONNECT command - Connect message (Control Message) 2. TRANSMIT command - Data message 3. RECEIVE command - Data request (Control Message) 4. DISCONNECT command - Disconnect message (Control Message) 3.2 Message Formats 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: Field (length) : coding = description of field Field = the name of the field being described Length = the length of the field as: 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 DECNET-NCL Page 10 NCL MESSGAES 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. All fields are transmitted low-order bit first on the data links unless otherwise specified. All number values are in decimal representation. Parentheses "( )" around a field indicate that the field can be repeated. The parentheses are not part of the NCL syntax. NOTE The size of extensible fields may be limited to some maximum number of bytes or bits. 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). 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. Messages take the following general form: 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 DECNET-NCL Page 11 NCL MESSGAES 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. 3.3 Data Messages 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. For a DM, DAT is: DNA DAP DLA(EX) : B = the logical link destination address for this DECNET-NCL Page 12 NCL MESSGAES 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 3.4 Unnumbered Control Messages 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: NNM SNM SID 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. 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. 3.5 Numbered Control Messages 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: 1. NCMs related to operation of logical links 2. NCMs related to network testing 3. NCMs related to routing All NCMs have the following form for DAT: <0> (CNT TYP CMD) DECNET-NCL Page 13 NCL MESSGAES 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. DECNET-NCL Page 14 NCL MESSGAES 3.5.1 Control Message For Logical Link Operation - 3.5.1.1 CONNECT (TYP = 1) - 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: DLA SLA DNF SFN MML FEA 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 DECNET-NCL Page 15 NCL MESSGAES 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. 3.5.1.2 DISCONNECT (TYP = 2) - 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: DLA SLA RSN 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 3.5.1.3 NEIGHBOURS (TYP = 3) - The NEIGHBOURS message for non-sequential nodes includes all adjacent nodes that a node will route to. For sequential nodes, the NEIGHBOURS message includes all nodes it will route to. DECNET-NCL Page 16 NCL MESSGAES 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: ( NNM LVL ) 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.) 3.5.1.4 REQUEST CONFIGURATION (TYP = 4) - 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. 3.5.1.5 CONFIGURATION (TYP = 5) - This message returns the system configuration and options in response to a request configuration message. The form of CMD is: ( OBJ NDV ) OBJ(1) : B = object type for process as described in Section 3.5.1.1. NDV(EX) : BM = the number of devices available 3.5.1.6 DATA REQUEST (TYP = 6) - The DATA REQUEST message informs the destination node that the source node is willing to accept data. The CMD form is: DLA DRQ 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. DECNET-NCL Page 17 NCL MESSGAES 3.5.1.7 STATION CONTROL (TYP = 7) - 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: 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 DECNET-NCL Page 18 NCL MESSGAES specified and continuing until the data runs out (determined by the byte count). DECNET-NCL Page 19 OPERATION 4.0 OPERATION This section describes the operation of NCL with respect to the message categories: 1. Messages related to logical link operation. 2. Messages related to routing. 4.1 Logical Link Operation 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. 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. 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: 1. creation/destruction of logical links. 2. control of traffic over logical links. 3. insure sequentiality and delivery. 4. create a mechanism for interruption over logical links. These functions are described below. 4.1.1 Creation Of Logical Links - 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 DECNET-NCL Page 20 OPERATION 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. 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. There are two other reasons for rejecting connections: 1. an error was detected and an error message was sent back 2. a connect-rejection by NCL (disconnect message) 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. The following notation is used for this and other state diagrams: 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 The state operations for connection are: 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)---------------> DECNET-NCL Page 21 OPERATION <--------------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) These state examples are not exhaustive but give the operation in the basic cases. 4.1.2 Message Transfer Over Logical Links - 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. 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. 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. The operation is as follows: 1. User issues receive command. 2. NCL sends a data rquest for N messages. 3. Other NCL modules may then send N data messages. When a user issues a transmit command, the NCL module checks the current local request count and if greater than zero, sends the message. The state operations for message transfer are: DECNET-NCL Page 22 OPERATION 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)--------------> There are many other possibilities due to timing but these examples give the basic flavor of the traffic control/acknowledgement schemes. 4.1.3 Interruption Over Logical Links - The NCL has a mechanism for allowing interruption over a logical link. This feature allows: 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. 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.). Some implementations may limit the amount of data that may be sent in an interrupt message. DECNET-NCL Page 23 OPERATION 4.1.4 Destruction Of Logical Links - 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. 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: 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) 4.2 Network Testing And Maintenance 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. DECNET-NCL Page 24 OPERATION 4.3 Network Message Routing 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. 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. 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. 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. 4.3.1 Sequential Node Routing - 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. DECNET-NCL Page 25 OPERATION 4.3.2 Adaptive Routing - Non-Sequential Nodes - 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. 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. 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. 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. 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. 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. DECNET-NCL Page 26 OPERATION 4.3.3 Multiple Path Routing - 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. 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. 5.0 INTERFACE TO OPERATING SYSTEMS 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. 6.0 CONSIDERATION IN DESIGN To be completed. APPENDIX A OBJECT TYPES This is the current list of object types defined for processes in DECNET-10. 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 APPENDIX B MESSAGE SUMMARY 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 APPENDIX C DEVICE SPECIFIC ATTRIBUTES Table C-1 Card Reader Specific Attributes 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 DEVICE SPECIFIC ATTRIBUTES Page C-2 Table C-2 Line Printer Specific Attributes 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 DEVICE SPECIFIC ATTRIBUTES Page C-3 Table C-3 Terminal Specific Attributes 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 APPENDIX D SAMPLE MESSAGES D.1 SAMPLE CONNECT MESSAGE 110,10,3,46,133,0,13,1,24,44,0,0,1,15,112,0,110,7 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 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. 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 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. 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.