Digital PDFs
Documents
Guest
Register
Log In
AA-X439A-TK
December 1983
160 pages
Original
34MB
view
download
OCR Version
11MB
view
download
Document:
DECnet Digital Network Architecture Phase IV NSP Functional Specification
Order Number:
AA-X439A-TK
Revision:
0
Pages:
160
Original Filename:
OCR Text
softare DECnet Digital Network Architecture NSP Functional Speclflcatlon Order No. AA-X439A-TK December 1983 This document describes the NSP architecture, which models that part of the DECnet software that supports the creation and destruction of logical links, error control, and flow control. NSP is the protocol of the End Communications layer. The End Communications layer is part of the Digital Network Architecture. | SU_PERSESSION/UPDATE INFORMATION: This is a new manual. VERSION: 4.0.0 To ‘orde_r additional copies of this document, contact your local Digital Equipment Corporation Sales Office. digital equipment corporation - maynard, massachusetts First Printing, ”December 1983 The information in this document is subject to change without notice and should not be construed as a commitment by Digital Equipment Corporation. Digital Equipment Corporation assumes no responsibility for any errors that may appear in this document. The software describedin this documentis furnished under a license and may only be used or copiedin accordance with the terms of such license. | No responsibilityis assumed for the use or rehablhty of software on equipment thatis not supplied by DIGITAL or its afflhated companies. Copyright © 1983 by Digital Equipment Corporation The postage-prepaid READER’S COMMENTS form on the last page of this document requests the user’s critical evaluation to assist us in preparing future documentation. | The following are trademarks of Digital Equipment Corporation: DIGITAL DEC DECsystem-10 | DECtape | MASSBUS | OMNIBUS PDP DIBOL DECUS EDUSYSTEM COMPUTER LABS FOCAL RSX COMTEX INDAC TYPESET-8 DDT LAB-8 TYPESET-11 DECCOMM DECSYSTEM-20 TMS-11 UNIBUS ASSIST-11 | 0S/8 PHA FLIP CHIP | RSTS RTS-8 VAX VMS DECnet IAS DATATRIEVE TRAX ITPS-10 SBI ~ PDT Distributed Systems Publications typeset this manual using DIGITAL’s TMS-11 Text Management System. MGTPEALL of Page Contents CONTENTS | 0 0 INTRODUCTION FUNCTIONAL 2 3 4 4.1 .4.2 .1.3 .4.4 c e« s e & & & & e s e e e e 6 o s e o e Logical Links And Ports .. « Port And Logical Link States . Logical Link Identification . « .« . . . . « . . Data FIow . . .« ¢ ¢ . . . . . ¢ ¢ o ¢ o o o o o o e s s s+ e e s o e o = . . . Major NSP Functlons . ' . Establishing And Destroylng Loglcal Llnks e . . . . . . . . User Messages e e e o o o o . oo o o o e+ o e . .. . .9 NSP Link . . . . . « . ¢ o« « o o o o o o . e e o o o o o e States . « o e e ¢ ¢ . ¢ .. . ¢« . . +« . . « . e e o e o . . Data 5 0 Buffer DETAILED Base . . « « « Pools . . . FUNCTIONAL MODEL Interface Routines . . o o « « o e e e ¢ o e e s e o o s e . . . . . . . . . e o o o Transmit Processes . Connect/Disconnect Transm1t Processes . Data Transmit Processes . .« « « « o« « . Reserved Transmit Processes . 4 . . Transmit Allocation Module ~ ALGORITHMS . . Data Segment . . . e e o Retransm1551on . [] o . . e . . o . . o . . o . Other-Data Handling . .. . . . Retransmission Timer Value Estima Inactivity Timing . . « « & o & e . . . e o . . « e Transmit Format Module Segmentation Module . ("‘0 8 S 0 1 2 3 v .. o Reassembly Module .6 .6.1 .6.2 6.3 . . [} c o e Receive Dispatcher Module e e e e e e Index to Routlnes . . ¢ o « « « o o o o Recelve Processes . . . e o o o e o Connect/Disconnect RECEIVE Processes . Data Receive Processes . . «« « + o o Reserved Receive Processes c e e e . ) 7 ] . . DATA BASES AND BUFFER POOLS Node o & NSP's Internal Data Base . . « Session Control Port Data Base Reserved Port Data Base . . . 4 1 2 3 .4 4.1 4.2 4.3 & States Logical NSP . o 9 Port J Interface STATES o . . Error Control . . . . . Flow Control « o Normal Data Flow Control « o Interrupt Data Flow Control Segmentation And Reassembly Of Functional Components . c Data Bases And Buffer Pools e Modules . . . . « ¢ ¢ ¢ ¢ ¢ ¢ NSP INTERFACES . . . e e« o o Session Control Interface ¢ o o Network Management Interface . . Routing c . . .6.2 0.3 .6.3.1 .6.3.2 .6.4 7 7.1 1.2 .0 .1 . .1 .2 3 i . .6 .6.1 2 \.—o»’d . Messages .1 \“1 . eD .3 | . DESCRIPTION Design Scope . . ¢« o o Relation to DIGITAL Network Archltecture Routing Characteristics . ¢« « « o« o « o Basic NSP Concepts « ¢ « « o« o« o« o o o o 1 3 AJ Table 110 112 Interrupt MesSSage . .« No Operation Message . 113 115 o . « o « « o o o o « « o o o« o o o . . « « « « o o o o o« o « o & o o o . . . . « « o o o o« . . « o + « « 121 o o«o 124 . . . 124 . . . 126 « « o« 127 o« « o 128 o o« « o «« « o « (N Connect Initiate And Retransmitted Connect Initiate MesSsSagesS .« « o « o « o o « o « o Connect Confirm Message . « « « ¢ « « « « Disconnect Initiate Message . . . .. . . Disconnect Confirm Message . . « . « « « o o o« 116 o 117 o 1189 « . 128 o o . o o . 129 131 133 >:T$’ o. N+ e w 113 . Link Service Message . . .« « o« o o Acknowledgment TYPES ¢ « o« « o o o o Data Acknowledgment Message . . . Other-Data Acknowledgment Message Connect Acknowledgment Message . . Control MeSSAgeS. « « o« 2 o o o o o o w N+ FORMATS Message Format Notation General Message Format Data MesSSAgesS . + « « « Data Segment MesSSage . 0N b= W « « . o o o o o o o @ o o o o« o o o o v v o o o o o w ¢« B.2 DATA STRUCTURES OPERATION LJ o .@ + &« + L} [] [] « « o o « « o« o « « « « « « B- ° |J ® [} ® [ ] .. . [ J i « |J o o ® o L2 o o [] L] LJ [] o o« ® o |J o o ® B C.2 APPENDIX D DATA STRUCTURES OPERATION [] LJ |J . ® & v LJ | ® & |] TRANSMIT ALLOCATION MODULE o [] o .‘ o LJ . L] ‘. EXAMPLE + « v o v o o o o o o o o o o o . w N DATA STRUCTURES ® OPERATION (] (] [-] APPENDIX E REVISION HISTORY APPENDIX GLOSSARY -] ] [] [] [] q)fl C.l N REASSEMBLY MODULE EXAMPLE ) [} [} ® L] ® [] [] [] [] [] [] = APPENDIX C -0 - o STRUCTURES N INTERFACE TO THE ALGORITHM . +. v DATA SEGMENTATION MODULE EXAMPLE B.1 F 134 CJEJU ® 112 Confidence Testing ¢ LJ i i W N - APPENDIX B whwlw 4 Page Contents LOGICAL LINK ADDRESS ASSIGNMENT/DEASSIGNMENT - APPENDIX A of MESSAGE ) N AN WWWWN QO ) o 00 O "ot n 0O 00 00 OO0 00 00 OO 00 0 00 00 00 OO 0O Table | Page 5 | Introduction INTRODUCTION 1.0 1interfaces, functions, structure, the This document describes and The the protocol of the End Communications Layer. messages of NSP, Network DIGITAL the of part that 1s Layer ns Communicatio End Architecture (DNA) that models the software (or hardware) enabling the flow data creation and destruction of logical communication 1links, reassembly and segmentation the and control, error end-to-end control, | | | of messages. DECnet which on model the 1is DIGITAL Network Architecture A DECnet network is a family of software implementations are based. modules, data bases, and hardware components used to tie DIGITAL systems together resource for remote system communication. a layered structure. DNA is functions. Modules different computer within dlstrlbuted computation or sharing, Modules in each systems) a single communicate DNA in (but typically layer specific wusing distinct perform layer protocols. in the same computer typically (but layers in different Modules system) interface using subroutine calls or a system- dependent method. in terms of calls to interfaces are described In this document subroutines. 1II, In Phase This spec1f1cat10n describes Phase IV NSP architecture. With Phase III an earlier version, Session Control was part of NSP. from NSP, and Phase IV, Session Control has been logically separated The Session Control and the 1nterface between the two layers defined. The Layer is described in a separate functional specification. Routing specification, also a part of the Phase II NSP spec1f1cat10n has been greatly expanded in Phase III and Phase IV and 1is contained Appendix E details the separate Routing specification. a in ‘(\ ) differences between Phase III and Phase IV NSP. A glossary at the end of this document defines many NSP terms. This is familiar with computer reader the that assumes document The primary audience consists of those who communications and DECnet. however, the document may be useful to implement DECnet systems; The other anyone interested in the details of DECnet structure. current DNA functlonal spec1f1cat10ns are: DNA Data Access Protocol (DAP) Functional Specification, Version - DNA Digital Communications Data Protocol Messagev (DDCMP) Functional Specification, Version 4.1.0, Order No. AA-K175A-TK DNA Ethernet Data Link Functional Order No. AA-Y298A-TK Maintenance 3.0.0, Operations Order No. | | Functional AA-X436A-TK Version Specification, DNA Ethernet Node Product Architecture 1.0.0, Order No. AA-X2440A-TK DNA | | - 5.6.0, Order No. AA-K177A-TK 1.0.0, Specification, Version o | Specification, | | Version Introduction - - DNA Network Management Functional Order No. Page 6 Specification, Version 4.0.0, 2.0.0, Order AA-X437A-TK DNA Routing Layer Functional No. AA-X435A-TK DNA Session Control No. AA-K182A-TK Specification, Functional Version Specification, Version 1.0.0, Order The Ethernet - A Local Area Network - Data Link Layer and Physical Layer Xerox), DECnet (Order DIGITAL Network No. architecture and specifications. 2.0 NSP Architecture AA-N149A-TC) an provides introduction to 2.0, (Digital, (Phase an IV) General overview each of of the ‘ » Intel, and Description the network functional FUNCTIONAL DESCRIPTION performs the following functions: 1. Enables the creation (logical a 2. network 1links) node and destruction of virtual channels that can be used for sending messages within and between Manages the movement transmit buffers to mechanisms. network nodes. of interrupt and normal data from receive ‘buffers, wusing flow control 3. Breaks up normal data messages into portions (segments) 4. and reassembles after they have : these been Guarantees the delivery of control to data and specified destination by means of Section 2 is an overview of NSP, covering an the ‘0 Design scope o Relation of NSP to the DIGITAL Network o Routing o Basic concepts(Section2.4) error messages a control mechanism. following topics: (Section 2.1) 2.2) characteristics (Section o) MeSsages (Section 2.5) o that can be transmitted 1individually, segments 1n theilr correct order transmitted. Major functions (Section 2.6) Architecture (Section 2.3) N The Specifications, Version Order No. AA-K759B-TK Design Scope NSP satisfies these following design requirements: Compatibility. NSP version 4.0 is compatible with previous ~versions of NSP except for those differences described 1n 1. | Appendix E. 2. Performance. NSP allows an implementation to perform without 3. Promptness. d moving data NSP minimizes the delays incurre1n 4, Efficiency. NSP minimizes the communications 5. Extensibility. 6. Fairness. deadlocks while using dynamic buffer pools. ov rnead (f example, line bandwidth) consumed by the protocol. the established to | a subset. future, leaving earlier functions as the r NSP accommodates additional functions in If more than one logical link 1is same destination at the same time, NSP assures that each provides useful communication services. 7. , from one Session Control module to another. (Y v\ Page 7 Functional components (Section 2.7) o 2.1 | | o | Functional Description Elasticity. resources NSP allows an (both for performance. | trade to implementation memory algorithm complexity and buffer pool sizes) - B The following are not within the scope of Phase IV NSP: 1. - Maximum throughput. NSP will not throughput of a logical link. 2. Uniform service. throughput NSP will not necessarily | the guarantee maximize same the average and average delays over two logical links from a common source to a common destination. 2.2 Relation to DIGITAL Network Architecture Figure 1 shows the relationship of the End Communications Layer to the DNA hierarchy. protocols. Each layer in DNA consists of functional modules and - f Generally, modules use the services of the next lowest layer. In this document the service relationship 1is demonstrated in the way the Note, however, -- as calls to subroutines. interfaces are modeled each of the with that the Network Management Layer interfaces directly interface Control Session lower layers. Also, all the layers above - Functional Description directly referred with to as 1it, the | In fact, "end user.” the - | three upper | layers | are Page 8 sometimes | 4\“’/ Modules of the same type in the same layer communicate with each other to provide their services. The rules governing this communication and the messages required constitute the protocol for those modules. Messages are typically exchanged between equivalent modules 1in different nodes. However, equivalent modules within a single node can also exchange messages. - ——————— ) | e ————= ! Network ! - | ! ——————— ! ' | ! Page 9 | | - Functional Description = e e e = Management e e ee e ! Modules i ———— o — e e —————— ' ' ' ! ! ! \Y \Y ! ! ! . e ! ! r ! | Network Application Modules :----> ! o b e - ] e ! ! ! ! ! ! ! ! ! Vv Vv Vv ! ! — e —————— o - . ! e mm e ! ! R Session Control Modules ¢ ———=> f vy ! P ! §— v e ——— Ne | ! ! ! ! ! ! ! ! ! \'/ TT ) ! ! ! ! ! ! ! | ! ! \Y —=. ———— e ——————— f—mm——mmmmmm ! Modules e —————— > | End Communications e —— —— e ——— — e ' i { ! ! ! TTT T T e T e § e ——————— > | Routing Layer Modules ! ! —— e —————— e ! Vv —— {—m————————— > | Data Link Modules ——_—_,—,,————— Ne | ! ! ! ! Vv ! Vv ! e, ———_——————— ' ! \Y ! ! o« T T ,—-——————-—' —————————— ® ! R ittt > | Physical Link Modules ! ! S Figure 1. S NSP Relation to DNA to A brief description of each layer follows in order from the highest | the lowest layer: l. User Layer. The highest layer, the User Layer supports user services and programs. Programs such as the Network Control Program, which interfaces with the Network Management Layer, and file transfer programs, which interface with the Network Application Layer, reside in the User Layer. Functional Description | | Page 10 2. Network Management Layer. The Network Management Layer is the only one that has direct access to each lower layer for control purposes. Modules in this layer provide user control over and access to network parameters and counters. These modules also perform up-line dumplng, down-1line loading, and | 3. testing functions. | Network Application Layer. Modules in the Network Application Layer support network functions, such as remote file access and file transfer, used by the User and Network Management 4., Layers. Session Control | Layer. The | Session Control defines the system-dependent aspects of logical link communication, which allows messages to be sent from one node to another 1in a networx. Session Control functions include name to address translation, process addressing, and, 1n some systems, process activation and access control. 5. End Communications defines the communication. 6. 7. The End Communications aspects 8. of 1logical Routing Layer. Modules in the Routing Layer route called packets, between source and destination Data Link Layer. The Data Link Layer ‘concerning data 1ntegr1ty and phy51cal - 2.3 Layer. system-independent defines channel Layer 1link messages, nodes. the protocol management Physical Link Layer. The Physical Link Layer encompasses a part of the device driver for each communications device plus the communications hardware itself, The hardware includes interface devices, modems, and the communication lines. Reuting Characteristics NSP interfaces directly with the Routing Layer for 1its services. Routing 1is a datagram delivery service to NSP. A datagram is a block of data sent intact from one DECnet node to another. Routing .sends ‘datagrams 1n packets. NSP expects Routing to have the following characteristics: | ,;l. 2. 3, - Routing w1ll accept a datagram at least as large as 230 8-bit bytes. - There 1s an extremely low.probability that Routihg will: a. vDuplicate’a datagram | | ‘b, Deliver a datagram to the wrong destination - C. Changelthe data in a datagram Routing‘may fail to deliver a datagram. N’ Functional Description 4, Page 11 | | Routing may fail to deliver datagrams to a glven destination from a given source 1in the order they were transmltted from a given 5. Datagrams delivered to a given destlnatlon a variable delay while under the control of source undergo Routing. However, this maximum delay 1s bounded. Datagrams not delivered w1th1n the maximum delay will not be dellvered 2.4 Basic NSP Concepts section This describes understanding of NSP. \> concepts that | are fundamental 1. Ldgical links and porté (Section 2.4.1) 2. Port and logical link states (Section 2.4.2) 3. Logical link identification (Section 2.4.3) 4. Data flow (Section 2.4.4) to an -) 2.4.1 Loglcal Llnks And Ports - NSP prov1des a logical 1link between service A logical link is a virtual connection to Session Control. two Session Control modules, either between two nodes or within one The connection enables controlled communication between network node. | nodes. A pair of Session Control modules may have more than one Each logical 11nk is separate from all them. Dbetween 1link logical other ') logical links. Each logical link must have a port at each end. A port is an area 1in memory, generally in a dedicated or shared pool, that contains control in Section 5.2 4 Table 1links. logical for managing variables Each node on a network NSP manages ports. specifies these variables. has a number of available ports. In forming -a logical link, one port is associated with another. f When Session Control requests a logical link or requests that a port be opened to receive an incoming connect request, NSP allocates a port if sufficient resources are available. When Session Control requests a port be closed, NSP deallocates the resources associated with that the port. Deallocation usually occurs after Se551on Control requests a loglcal link dlsconnectlon. NSP also maintains a "confldence" variable in each port that has opened. useful Session Control has access in detecting network failures. been to this information, which is | - Functional Description 2.4.2 one of | | - Page 12 Port And'ngical Link States - Each end of a logical link is in a set of states at any time. “state. The | 1In other words, each port | states at one end of the link affect has a the states at the other end of the link. In this document the possible link states at one end of a link are called the port states. The logical link states are the combination of possible states at both ends of the logical link. Evéry logical link has its own set of logical link states. Session Control requests and NSP messages determine the particular states and state transitions of the logical link. NSP manages these state changes, based on the particular requests and messages it receives. Sectzon 5 details all the normal port and logical link states and state transitions. | | 2.4.3 Logical Link Identification - In order for two NSP modules to manage a given logical link, each NSP module must be able to identify the link. The Iogical 1link 1identification consists of the port addresses at each end of the link. | Each NSP module assigns a 16-bit numerical address to 1its end of a logical link. The port at one end of the link contains the address of the port at the other end of the link and vice versa. This is the way in which the two ports are associated with each other. The complete identification of the link, identifying both ends of the 1link, 1is therefore a 32-bit number. | | To avold using the same number module refrains from assigning (but now disconnected) to identify two different links, an NSP a 16-bit address it used for a previous link to a new link as long as possible. The probability that each of the two NSP modules reassigns its 16-bit address and that these two addresses are paired a second time during a connection process is extremely low. Therefore, the probability that the same 32-bit identification would exist for two different links 1is very low. This ensures that there will be no cross-talk between links. | 2.4.4 Data Flow - After a logical link is established, data may flow in both directions (full-duplex) from transmitting Session Control transmit buffers through the network +to receiving Session Control receive buffers. The size of the buffers at each end of the link is implementation-dependent. However, the data flowing through the network 1is always handled the same way. The NSP interface to Session Control takes Session Control data provided in DATA-XMT calls (Section 3.1). It then transforms the data to a network form. At the other end of the link the receiving NSP interface, responding to Session N Functional Description ‘Page 13 Control DATA-RCV calls, transforms the data from its network form to are The mechanisms NSP uses to handle data its receive buffer form. transparent to Session Control. From Session Control's viewpoint, the data flow is as shown in Figure 2. | ed a transmitting from This figure shows Session Control data transform Session Control to a transmitting NSP and then transformed back from a not The NSP data does a receiving Session Control. receiving NSP to (The DNA General actually move tarough the network as shown. the through actually move Description shows how Routing packets network.) | Functional Description - Page Tfansmitting Node | TRANSMITTING | SESSION CONTROL | | | = | | B | | B | 11 u | | u | | I F | | F | | | F | | 7 | | | E |. 0 B | | R | I R | I B I | | # | | # | | | N | [ 1| | === ——— e — e — | : Interface | | | | | | I | I | I e e | I : | |=====,, | | | I | | | | | I | | I || I | | | | | | | | | | | e eV | I | \ / | \/ | ###################### # Bh4HeHHHH GRS HSHY # # - # # # bH4H#t | HH##E | - o E 3L # # NETWORK | -e . | E | O | M | | | | DATA I | I . . . | | | E O M | | | DATA | | | # # #4444 8 ———— ' HH## # | # # # # # HHHHAGHEE RS « 3T EE: | N I?################### | | || | Receiving Node | EOM end-of-message DATA a collection of 8-bit bytes / flag I | | I I : I { I I I I | I I | | | RECEIVING SESSION CONTROL ——- THEme" o S I NSP Interface — % | | I I WS w | | | | | | | ] Z :: LEGEND: # # Figure 2. Model of Data Flow as Seen by Session Control. 14 The transmitting NSP appends the end-of-message Page 15 | J Functional Description (EOM) (Figure flags 2), to the data in the network form. The receiving NSP module removes these flags, places only data in the Session Control receive buffers, informs the receiving and then returned receive buffer whether an | details this procedure. Throughout the data flow places data bytes from a in the same order as they no data will be that ; procedure. 2.5 Session Control via a flag in a Section 3.1 EOM was received. o | | NSP NSP preserves data order. process, single transmit buffer into the network form guarantees also NSP were 1in the buffers. the data flow 3.1 details Section lost. - | Messages In order to provide logical 1link service, (thereby supporting the Session control flow ' control and error NSP interface), Control They do so by sending modules in different nodes must communicate. consists of these protocol NSP The messages. NSP ‘and receiving messages and the rules governing their exchange. There are three types of NSP‘messages: .o Data messages 0 Acknowledgmént messages »o Control~messages' Table 1 summarizes the functions performed by each " Section 8 describes the message formats in detail. NSP message. Functional Page Description Table NSP 1 Messages +___...___. ______________ d e | Message S e AN Gvm AR MY SRS WML VNS WA SEES TR Gl SEm S NS GRS VINDS AIDE N SEIUN GENED AU RN MmOy RN G Al GRADN AN UMM W M W MM SRS SAEME WAL AR SIS T AN WA GMA eGwA Data Data G S O emed | T MR M GEDE WL GOMD IS Sugel SN WED AN GEN GEME TEMN) SEI SN AN G MG WGl e ———— -.- —————————————————————— k. Description D S YNNG MAUS NGNS EING G G GmAn WM G IR SEERS RGN GEER EEES GEE W S M AGOE D GAEED CHAEN VDS GEVE MG WD AR VEIN G FEUG WSS GMGE SENND SEE NGNS WMAR D SN NN M MR GG Em e D e NI GG AN A M WG A wm— awm— Carries a portion of a Session Control message. (This has “been passed to Session Control from higher DNA layers and Session Control has added 1its own control information.) Segment Carries urgent data, originating from higher DNA layers. | (also called Other-Data) Carries data flow control information (also called Link Service message). | Interrupt Request| Carries 1interrupt flow: control (also <called Link | information | Service message). + Acknowledgment Data Acknowledgment | | | | | Acknowledges receipt of either a Connect Confirm message or one- Or messages, more and Data Segment optionally Other Data message. | an + _________________________________ <+ | | OtHer Data Acknowledgment | | | Acknowledges more receipt Interrupt, Interrupt Data Request of one Request or or messages. + | Connect | Acknowledgment | | | | | | Acknowledges recelpt of a Connect Initiate message or Retransmitted Connect Initiate message. + (to be continued) N ——— 16 Functional Description Page Table NSP 17 1 (Cont.) Messages _________________________________ + Description } Carries a logical link connect request from a Session Control module. | | | _________________________________ + Carries a logical link acceptance from a Control module. connect | Session | a ————————————————————————————————— + Disconnect Initiate Carries a logical link connect rejection or disconnect request from a Session Control module. | | | _________________________________ + Sent when a Connect Initiate | message (or Retransmitted | Connect Initiate message) is | received and there are no | resources to establish a new | port (also called Disconnect | Confirm message). o ————————————————————————————————— + Disconnect Complete Acknowledges the receipt of a Disconnect Initiate message (also called Disconnect Confirm message) . ———— T Sent when a message is received for a non-existing link (also called Disconnect Confirm message) . | | | | + | | | | ————————————————————————————————— + Does nothing (included for compatibility with NSP V3.1). | | | ————————————————————————————————— + ‘Functional Description 2.6 | | | - Page 18 Major NSP Functions This section summarizes the operation of the major'NSP functions which include: o 1. Establishing and destroying 2. Error control (Section 2.6.2) 3. Flow control (Section 2.6.3) 4. 'SegmentatiOn and reassembly of user data links | | . 2.6.4) logical (Section | | 2.6.1) messages (Section 2.6.1 Establishing And Destroying Logical Links - A source NSP and a destination NSP exchange messages to establish and destroy (in other words, to connect and disconnect) logical links. Fiqures 3 through 7 summarize the message exchanges. The calls in capital letters under Session Control headings are names of interface functions as described exchanges below will take place correctly algorithms in Section 4 are followed. N4 in Section 3.1. The message in an implementation, if the | | | Session I Control I | -—————- | | NSP | { | | - I | |Session | { e el o | | | | : | | | | | R | | CONNECT-XMT -->Connect | | | : Initiate . I | = = - NSP ] | | —-—=———————-——- > | B | | { | | et | | { I Connect Acknowledgment <———————— - Connect | | | | Data I I Acknowledgment ---------> | | Figure 3 |Control | LDl TT | | | { | | Confirm<-------- ACCEPT | Connection with Acceptance ] Functional Description | | | - Source | Page 19 Destination |- | | = —_————— | Session | | | |Session | Control | NSP | | NSP |Control | = -1 [ ==e | | | | | | CONNECT-XMT -->Connect = -——---—- ———————— > | | | | | | In:tiate | | | | | L | SourCe a——— —— —— ——— a— s /) CONNECT-XMT | - -->Connect | Kmmmmm I | | e | Acknowledgment | | Disconnect | Initiate<------- REJECT | | -—--—--—--————- > b | Initiate I | | | | |Session | NSP |Control | | ___________ — | ~ e e —_————— | —————————e————— > | | e | \‘V/’ —— | | | - |—————— | Session | | Control | NSP - | | “ | Disconnect | Complete W | | | <mmmmmm Connect | | | | | | | | { | Figure 5 Connection Attempt with No Resources Functional Description | - Source : | : | ~ Page 20 Destination I | m ittt bt | Session | a | . |Session | | Control | NSP ] l NSP |Control | | === e — | | mee- | | | | | | I | CONNECT-XMT -->Connect — ——-=---- . | | | | | | | 1 | In1t1ate | | | | (Connect | | <---—-—-' | | Figure 6 | Initiate I returned to sender by Routing) g ,| | l | | | | 1 Connection Attempt with No Communication Source | : Destination I | { | I : 'NSP | | o l o | | |-l e | | | Session Control | | NSP | | - |Session |Control ey [ [ U | I | I | I | CONNECT -XMT -->Disconnect -—---------==--=> | Initiate | I | | | | A ommn ST MED GEN S S ERED GEUN WD TN SN S GG EMD RN ST SN SN R SR e B | LR | S SR S | | | SN 2.6.2 | | ST wsew e Figure ensure | 7 | | l AN AN ST T S G GG WERS G G S messages are | | | AUSE) SO GENN WD IO UM | | NG U TN G SR RS A em— 1 Disconnection Error Control - NSP uses a basic acknowledgment that | | Complete NS | | Disconnect | I delivered. mechanism to NSP does this for each of the four data messages listed in Table 1, Sectlon 2.5. On a logical link, the four data”messages can be_thought of as moving in two subchannels. One contains Data Segment messages, the other contains Interrupt, Data Request, and Interrupt Request messages '(collectlvely known as Other-Data). Messages if each subchannel transmitting NSP. quickly. OtherW1se, | are 'nUfiBered seQUentially ~ by' the The receiving NSP returns an acknowledgment the transmitting NSP retransmits the message. It Functional Description not necessary to S acknowledge each message Acknowledgment of a given numbered message implies all messages with a lower number Page 21 individually. acknowledgment Section Cknowledgment operation. Flgure 8 deplCtS the ofsegment the acknowledgment messages. specifies the format Figure 8 8 a— to a message, — | — transmit number = n Data-receiving — Data Segment Message|--> — — W [ R an ca transmit number = m "Other Data" Message|--> —— —— NSP — | | |--| e c— —— — | | | | /et ve——— d—— number s o——— Sm— ua——— | | | | | Data-transmitting | NSP . Segment'Acknowledgment Operation The data transmitting NSP a551gns a transmit transmits the message, and starts a t1mer. -' of' (modulo the maximum message number). ——— c— o — — ’is | W — If the timer times out, the message is retransmitted. - f o @ /. — N Data :Subchannels If the timer does not time out, and the flow control mechanism ' allows another message to be sent, the data-transmitting NSP assigns the transmit number plus one to the next data message transmitted in that e | | | | Data-transmitting | | ] | | e ———————— . | transmit number = n+l| | |--|] Data Segment Message |-->| | ~----------m ' | ] NSP o subchannel. I | } B bbbl bttty . | transmit number = m+l| :——j { | I | ] Data-receiving | ) NSP ! UGS SR CEE R S CHNE NI VES SN} ML NN VNN W GRS D ANSE S | "Other Data" Messagel-r>= 1 G .= I | el | Data Subchannels > e I BN I When the message with the f1rst transmit number is received by ' the data-receiving NSP, it returns that number as an acknowledg- ment number W1th1n the f1rstacknowledgment | | - Page 22 If the next O 1is equal to the NSP R e — ) | Acknowledgment| .-—-| Data . | o Message e- | | ' ——— . | 1| | | w— receive ack. number = n + ——| o | | w— . . | | | | Data- receiving NSP Data * The data-receiving NSP might not Sacrn C— mee S /) e v S — amssm — —— | | receive ack. | | | | number = m ] | = -| "Other Data" = |---------- | | <=——m——— Acknowledgment | | Message | | 1 — . receive ack. | . number = n | | | <--. Data . Acknowledgment | . Message* | transmitting= — transmit number received —— i — —— — —— Data- — data message current acknowledgment number plus one, the data-receiving NSP accepts the data message, 1ncrement1ng the acknowledgment number, It then sends the new receive acknowledgment number back to the data- transmlttlng NSP within an acknowledgment message. ———— C——— ——— ) — | Functional Description Subchannels send an acknowledgment for number each implies I O However, 1f the data- rece1V1ng NSP receives a data message transmit number less than or equal to the current receive acknowledgfor that subchannel, the data segment is discarded. The data-receiving NSP sends an acknowledgment back to the datatransmitting NSP. The acknowledgment contalns the receive acknowledgment number. | . —— - P om— I3 | ment number ’ F e— | data message received. The receive acknowledgment that all previous numbers were received. | If the data-receiving NSP receives a data message transmit number greater than the current receive acknowledgment number plus one for that subchannel, the data segment may be held until the | preceding segments are received or it may be discarded. Figure Segment 8 Acknowledgment Operation Functidnal Description 2.6.3 when | | | Page 23 Flow Control - Flow control is the mechanism that determines to send an NSP Data Segment or Interrupt message. This mechanism, along with the error control mechanism, coordinates the flow of data on a logical link from transmit buffers in one node to receive buffers in another node. Flow control is performed separately for normal Flow control operates a logical 1link. 2.6.3.1 Normal algorithms 1. for symmetrically Data Flow for data Control - Flow interrupt data. each dlrectlon on requires two . | | An algorithm executed by a data-transmitting determines 1f a Data Segment message may be sent. addition, data-receiving an NSP messages "on/off" control may "send/do not send" data-transmitting message, the value data base mechanism may be NSP used that by a to indicate to a data-transmitting NSP that Data or may not be On/off control. On/off control is control. It operates as follows: a 1in An implementation-dependent algorithm executed by a data-receiving NSP that determines both when to send a request message and the count value to be put into a request 2. Segment and —control normal data: message. In flow g indicator. sent. independent of the request count Each Data Request message contains When the error control mechanism NSP has received of the "send/do not associated with the logical in a and accepted a Data Request send"” indicator is saved in the link. When the value is "do not ~send," the data-transmitting NSP may not transmit normal data. When the wvalue 1is "send," the data-transmitting NSP exercises the flow control mechanisms described next. , | Request count flow control. During logical link formation, the NSP at each end of the link determines the kind of flow control 1t expects when actlng as a data recelver., The term "data-receiving NSP" means an NSP acting as a data receiver. There is a choice of: o No o Segment 0 flow control flow control Session Control message flow control The choice’ of flow control 1is 1indicated wvia fields 1in Connect Initiate, Retransmitted Connect Initiate and Connect Confirm messages. Functional Description ~ Page 24 Each data-transmitting NSP must accept the type of flow control the data-receiving NSP expects. Note, Message flow control is obsolescent and will be eliminated at a future time. A data-transmitting NSP maintains a "transmit request count" variable for normal: data in the data base associated with each logical link. When the error control mechanism receives and accepts a Data Request message, flow control adds the count value from the message to the appropriate transmit request count. The count values contained in the request messages may be zero, positive, or, in some cases, negative. messages are |1] NSP/Node A send a Connect Initiate message to NSP/Node B: | !2 -' Connect Initiate |-—-—--—--=--————- > NSP/Node B, having received the Connect Initiate message, returns a Connect Confirm message. A field in the message indicates that NSP/Node B expects segment flow control <————mmmm | Connect Confirm - "I want segment |3] NSP/Node A's data base has the -' count variable | ! 14| -' . for FLOWrem dat=0 o~ T T T T T T T/ o | e e 2 I ~ ——— v | — - —— —— — — A _____ ! flow control"--------- ' initial value of normal data segment 0 for its request flow control: l —_"1 NSP/Node B sends Data Request message contalnlng a flow control value that indicates the number of Data Segment messages NSP/Node B can receive. (NSP/Node B executes an implementation- dependent algorithm to determine this value): <m——mm—mm o | Y | "I can Data Request e : : I | A________l receive n messages"---—--—-—--- ' |5] NSP/Node A sets FLOWrem-dat to n: o D 4\\ No flow control. If the data-receiving NSP selected "no flow control,"” the data-trarsmitting NSP may transmit data at any time (subject to the "on/off" constraint). | / This additive scheme works because the request error-controlled; 1t would not work otherwise. O | I p— Functional Description | . ' Page 25 NSP/Node A executes algorithm to determine if Data Segment Number 1 can be sent (highest acknowledged Data Segment message plus the current request count must be greater than or equal to the number of the next Data Segement message sent): * * (Q+n>=1?. *--NO--can't send * | YES | / ~ SEND The answer to the above is YES, so NSP/Node A sends Data Segment | 1: / Qo number | h Data Acknowledgment of segment number 1 | | ' Figure 9 Example of Segment Flow Control for Normal Data on a Logical Link (shown in one direction only) Segment flow control. Figure 9 shows an example of the operation of segment flow control. Segment flow control operates in the following If the data-receiving NSP selected the segment flow control ‘manner: mechanism when the logical link was formed, the highest numbered Data Segment message that may be transmitted is the one whose number is equal to the sum of the highest numbered Data Segment message that has by the mechanism) control been acknowledged (via the error The count. request the of value current the plus NSP iving data-rece for one by variable count request its s decrement NSP smitting data-tran each Data Segment message acknowledged by the data-receiving NSP. The count values that can be contained in Data Request messages may be Functional Description | ~ Page 26 negative. This means that the permission to transmit a particular Data Segment message (even if it has been previously transmitted) may be withdrawn by the receiver. This, in turn, causes an interaction between the flow control and error control mechanisms. Specifically, it 1s not necessary for the error control mechanism to maintain an active retransmission timer for a Data Segment message that transmitted other words, at to least once retransmit) but has for which permission been withdrawn. has to transmit been (in | Session Control message fiow control. If the data-receiving NSP selected Session Control message flow control, the data-transmitting - NSP cannot send a segment if the number of end-of-message segments between the (exclusive) highest 1is acknowledged greater than segment or and equal data-transmitting NSP decrements its request each Data Segment message that 1is an acknowledged by the data-receiving NSP. the segment to the in question count. The count variable by one for end-of-message segment The mechanism for Session Control message flow control does not interact closely with the error control mechanism (unlike the mechanism for segment flow control). Once a Data Segment has been given permission to be transmitted, the permission will never be withdrawn, | - 2.6.3.2 Interrupt Data Flow Control - All NSPs use interrupt data be negative. The flow control for moving interrupt data. This mechanism is similar in operation to the Session Control message flow control mechanism. Interrupt message request counts are carried in Interrupt Request messages. The counts are interrupt-transmitting transmit request count. an implicit request transmitting NSP cannot Interrupt and the messages Interrupt additive and may not NSP can, therefore, maintain an interrupt When a logical link is established, there 1is of one interrupt message. The 1interrupt send an Interrupt message if the number of between the highest acknowledged message Other Data message in question is greater than or equal to the The 1interrupt-transmitting NSP decrements its request count by one for each Interrupt message acknowledged by the count. variable interrupt-receiving NSP. 2.6.4 Segmentation And Reassembly Of User Messages'— Because of network constraints such as availlable buffer sizes and transmission error characteristics, user messages in Session Control buffers cannot always be .sent in one piece. A data-transmitting NSP breaks up data contained in a single Session Control buffer into segments. A data-receiving NSP reassembles the segments. The data-transmitting Functional Description - Page 27 NSP transmits the segments by means of ~data-receiving NSP puts into the correct sequence. Data Segment messages. The the segments from the Data Segment messages These messages contain user data as well as NSP header information. The segment acknowledgment scheme (Figure 8, Section 2.6.2) ensures that all data segments' are received. The data- transmlttlng NSP must know the maximum length of ThlS lesser length 1s the of: a Data Segment | 1. The size of a transmit buffer in the source node. This size cannot be larger than the node's Routing Layer will permit. 2. The maximum length that the data-receiving NSP can receive. The SEGSIZE field in the Connect Initiate and Connect Confirm messages, exchanged when contains this infcrmation. the 1logical | 1link was formed, The data-receiving NSP orders the data segments using the sequence number contained 1in the Data Segment message and end-of-message information. When Data Segments have been recelved out of sequence, they are either discarded or stored temporarily in a cache buffer (Section 2.7.1). This document does not specify the detailed processes of segmentation and reassembly. However, Sections 6.5 and 6.8 provide a model implementation and Appendlxes B and C provide examples. 2.7 Functional Components In its relation to DNA, NSP can be considered / for a "black box, which modules. Brief interfaces to Session Control and Routing by defined 1nterfaces and with other NSP modules by the Network Services Protocol. The functional components in. this section and in Sections 5 and 6 describe the operation of this "black box" by means of a sample implementation. Any other implementation with equivalent operation 1s also a legitimate NSP implementation. NSP of consists data bases, | buffer pools, and descriptions of each follow in this section. Section 5 details the data base and buffer pool specifications. Section u specifies 1in detail the operation of the NSP modules with a model 1mplementat10n written in a high-level, colloquial computer 1language. Figure 10 shows the interrelationship of the NSP components. | Functional Description 2.7.1 NSP -~~~ Page 28 Data Bases And Buffer Pools - The follow1ng is a model of the data | | bases' | NSP 1nternal,data base. The NSP internal data base contains NSP's internal variables and parameters. Variables are values defined by 'NSP. Variables change automatically during the operatlon of NSP. Parameters are values defined by the Network Management interface. Parameters can be read and sometimes set by the user. Many parameters are static in the sense that they remain set untll the user changes them. . Session Control port data base. The Session Control port data contains the port variables that NSP uses to manage a logical When a logical link is created, NSP allocates a Session Control to 1t. When the port data base link is destroyed as a free Reserved port data_base. port variables base link. port NSP releases the port back to the' port reserved The reserved port for manage the sending of messages Control port data base. data NSP's internal use. that do not map base contains NSP uses onto the these the to Session o | SESSION | CONTROL | | | INTERFACE | ROUTINES | |~ fmmmm——————mm—————— ' [ A | mmmees ' v | CACHE | e. I REASSEMBLY | <—->| AND I I MODULE | -. I | | PORT ' | | COMMIT| | -' xVa | Lo . | ] ittt TRANSMIT ——————— | | ] e v e —mm—— . SEGMENTATION | | MODULE | I I A | RECEIVE - v —————————— . g } | | . v ————, | TRANSMIT | ,-====-——----, —————————-'] | LARGE | | | N vo e. | | RECEIVE | POOLS | N I DATA |<-=—————- > | PROCESSES I | <==———=- >| | PROCESSES —-——---—---- ' BASES |<-----, | Cem e ' I B ittt ' | | I I I | I | I Page 29 | v | | R o | - Functional Description | Somm . kbt ' |RECEIVE| | BUFFER | I | “=>| DISPATCHER |<->|POOL |<->| AND | ALLOCATION| | FORMAT I I I MODULE | I SMALL | | | MODULE= | | MODULE ' bt bahata B ' ittt B | TRANSMIT | ' ittt eR BUFFER | N Figure 10 POOLS | Interrelationship of NSP Components The node data base contains a collection of node Node data base. node descriptor is required for each remote node to A descriptors. which a logical link 1is variables and counters A node descriptor contains established. pertaining to communicatlons with that node (for example, the estimated round trip communlcatlons delay, traffic The large and small transmit usage and error counters) | Large and small transmit buffer pools. | buffer pools contain large and small transmit buffers. Large transmit buffers transmit Connect Initiate (or Retransmitted Connect Initiate) Functional messages Description or Data | Segment messages. all other NSP messages. transmit buffer pool for Receive recelve | | Page 30 Small transmit buffers transmit An implementation may all NSP messages.» choose to use a single | buffer pool. The receive buffer pool contains a collection buffers required to receive an NSP message from Routing. of " Commit buffer pool. The commit buffer pool is an optional pool which contains commit buffers wused for data that the receiving node may commit to storage even in the absence of receive buffers supplied by Session Control. Such data may be acknowledged to its transmitter. Cache buffer pool. The contains a collection Data Segment are out buffer or a Event order that cannot or because Session Control buffer queued messages of cache buffer pool of cache buffers. pool. to NSP's The event be event queue is no buffer buffer for optional pool which buffers hold received acknowledged there receive is an Cache pool reading for in because either a they commit them. contains buff er o~ > L hat by Network Managem ent 2.7.2 Modules - NSP modules perform specialized two kinds of modules: 1. either storage functions. A process is a module that is independent of may d There other be are modules, but uses the services of some other modules. It is designed as 1f it were executlng On a processor dedicated to it. 2. A - In routine is processes, general, a module but processes does that not provides have communicate a with functions context routines of its for one or more own. by means of calls and with other processes by means of shared variables, usually a port. The mechanisms that synchronize two processes to prevent common entry to a cr1t1cal region are not explicitly defined. The NSP process and routine modules are described below. Note that these are functional descriptions of components. Implementations not be structured exactly as outlined in these descriptions. Interface routines. The interface routines handle all Session Control calls (Section 3.1). | Receive ‘dispatcher receive buffer routine, pool. Receive processes. The recelve dispatcher manages It polls Routing for received messages, them, maps them onto ports, approprlate NSP process. Communications need and returns message contents the parses" to the | These receive and'handle NSP messages from the End Layer at remote nodes and help manage logical link \\J } Functional Description states. | - | Each Session Control port has a set of "Page 31 these processes. Reassembly routine. The reassembly routine determines the flow control policy, maintains the cache and commit buffer pools, and reassembles received Data Segment messages 1into Session Control receive buffers. | Transmit processes. ‘messages to Control port | | These transmit (and retransmit, End Communications Layers at has a set of if necessary) NSP remote nodes. Each Session these processes. Transmit format routine. The transmit format routine maintains large and small transmit buffer pools and formats outgoing messages. It queues messages to Routing. It polls Routing to get "transmit complete” notifications. Segmentation routine. buffers messages. into a form | This segments data in Session Control suitable | for | transmission ‘ 1in , Data transmit Segment - Transmit allocation routine. The transmit allocation routine receives requests for perm1551on to transmit from the transmit processes. It allocates permission to transmit in a way that gquarantees that when more than one logical link is established to the same destination at the same time each provides useful communication services, 3.0 NSP INTERFACES This sectioh describes the three external NSP interfaces: The 1. Session Control 2. Network Management interface 3. Routing interface interface following interface functions are described as calls to subroutines 1in the format: FUNCTION (1nput; output) Descriptions of input and output then follow unlesspreviously given. In general, there are two types of subroutlne5° function for that transmitting 1s completed or rece1v1ng data.. For buf fer-queueing calls, immediately, additional ‘those performing a and those queuelng a buffer «calls are defined polling to obtain "buffer returned" notifications. A argument denotes a system-dependent buffer descriptor that to allow "buffer"” contains location and 1length information. A "port id" is a system-dependent number identifying a port. Although not described 1in the following NSP Interfaces functions, an | invalid port identifier causes an Page error. Note that an implementation 1s not required to code the interfaces calls to subroutines. The calls specify functions only. It may be useful to refer to the port state 4.1 when studying the following interface 32 descriptions 1in functions. as Section 3.1 Session Control This link more same i1nterface allows NSP to provide Session Control with the logical service. This service allows Session Control to create one or logical links to one or more other Session Control modules in the network. In the Interface interface descriptions, the terms "source" and distinguish the requester of a function from the request. The source and destination can be within a "destination" receiver of the single Session Control module or in two separate Session Control modules. single node, a Session Control module can communicate with Thus, at a itself via ~a logical 1link; Dbetween two nodes, two Session Control modules can communicate with each other via a logical 1link. The calls, described by function, are as follows: STATUS (; NSP status) returns: NSP NSP is halted. 1s running; (NSPbuf -- Table 3, minimum receive Section 5.1) buffer size returned This function reads the status of NSP and obtains a minimum receive buffer size 1f NSP 1s running. This is the one Session Control interface function that does not 1nvolve the use of a logical link. . OPEN (source, buffer; source: | return) a lé6-bit buffer to contain the logical link,requéster‘ node address request returns: when this node receives a connect ~ port allocated and port identifier returned port not allocated -- insufficient resources port not allocated -- NSP halted ‘ " This function allocates a pbrt in NSP for receiving a logical link connect request. The source variable receives the address of the requesting node; the buffer receives node the NSP Interfaces | | Page 33 incoming connect data. When the port incoming connect request 1s received, NSP node address 1in the source variable and the buffer. | CLOSE (port 1id) This function deallocates a port. When state 1indicates an places the source the incoming data in | | a port is closed, NSP immediately returns all transmit and receive buffers to Session Control (see DATA-XMT and DATA-RCV calls). Once a port 1is closed, 1its associated port identifier 1is wundefined. Any subsequent an error call 1ssued with such a port identifier return. results 1in \ Session Control may close a port at any time regardless of the port's state. However, doing so may create ambiguities for the Session Control module at the other end of the logical link. CONFIDENCE (port returns: id; confidence) network probably connected network probably disconnected port not in RUNNING, DISCONNECT-REJECT, or CONNECT-CONFIRM, DISCONNECT-INITIATE state This function obtains NSP's assessment of connectivity. NSP periodically tests a logical 1link once it 1is formed to ascertain if the physical path supporting the link is connected. The result of this testing is-the probable state of connectivity. It is not a guaranteed state. Session Control may issue disconnect a link on behalf STATE (port id; returns: this call to determine when of a program at the user level. to state) the state of the associated logical link This function returns the state of a port that is not CLOSED. Because NSP's operation 1s not necessarily synchronized with that of Session Control, it is possible that this call will not detect every state transition. This 1s especially the case for state transitions that occur very quickly. However, this is not a problem because the 1nterven1ng undetected states can be log1cally deduced. NSP Interfaces | . ‘Page 34 CONNECT-XMT (destination [,circuit [,nexthopl], buffer; destination: return) destination node address circuit: an internal NSP mechanism loop testing. selector Circuit 1is used ‘normal use) or a system-dependent representing the circuit NSP is messages estabiishing this logical Management loop tests). ‘nexthop: a node number circuit) (required ‘buffer:: contains cohnéct data refiurns: port allocated; if to enable circuit to use number for its either unspecified link (for 1s a «circuit (for Network broadcast port id returned port ncf allccatéd -—- insufficient resources port not allocated -- NSP halted requests a logical 1link is set to CONNECT-STATUS returns: "unspecified." (port id, buffer; | return) connect request accepted by destination -- port in connect request rejected by destination -- port in RUNNING state; REJECTED state; port in accept data reject data returned in buffer returned in buffer neither RUNNING nor REJECTED state This function obtains result of a previous accept or reject data returned as a connect request. If the return 1s one of the first two, NSP returns any available accept or reject data. Once this 1is done, an NSP implementation may discard 1its copy of the accept or reject data so that a subsequent connect status function would not return data. | | In cases where state transitions occur Control may not be able very to perceive some Consequently, this call may not be accepted rapidly, Session intervening states. (see Section 4.1). | /// and connection. After a logical link has been successfully formed, Session Control can put a load on a particular physical 1link for 1loop test purposes provided that the circuit argqument specified the physical 1link. This enables testing of the physical 1link and all of the DECnet modules from Session Control or higher layers by sending and receiving data on the resulting logical 1link. For normal use, the circuit argument | This function allocates a port NSP Interfaces - | Page Accept data will be lost if the rapid state transitions with a transition to the DISCONNECT-NOTIFICATION state and call was never executed 1in the RUNNING state. No data is otherW1se | 35 end this lost If the connect request is accepted, up to 16 bytes of accept data may be returned in the buffer. If the connect request was ‘rejected, up to 18 bytes of reject data may be returned in the buffer ACCEPT (port (see id, the ACCEPT buffer; returns: link and REJECT calls). return) accepted port not in CONNECT-RECEIVED state This function accepts a connect request from a remote Control module. The call supplles a buffer containing bytes of accept data. REJECT (port id, value, buffer: ) returns: Session to 16 up return) 1link rejected port not in CONNECT-RECEIVED state This function rejects a connect request from a Session module. The containing up call to 16 supplies bytes of a 2-byte reject data. wvalue and Control a buffer i) DISCONNECT-XMT (port id, value, buffer' return) returns: This call accepted call rejected function requests is 1in a buffer the RUNNING contalnlng -- the state. up to port not in RUNNING disconnection of The 16 call bytes supplies of a state logical link a 2-byte disconnect value that and data. The remote Session Control module receives any data transmitted by the disconnecting Session Control module prior to this call. Session Control disconnects a link when it has no more data to send and wants to ensure that the 1link will be properly disconnected, not aborted. | | | NSP Interfaces ABORT-XMT (port returns: . id, value, call | buffer; . Page 36 return) accepted call rejected -- port not in RUNNING state This function requests the immediate disconnection of a logical link that 1is in the RUNNING state. The remote Session Control module may not receive all previously transmltted data before rece1v1ng the abort notification. The call supplies a 2-byte value 16 of bytes abort data. and a buffer containing up | DISCONNECT-RCV (port id, value, buffer; returns: disconnect data no disconnect to | return) available data availlable port not in DISCONNECT-NOTIFICATION state This function receives disconnect data returned to the local Session Control module as a result of a DISCONNECT-XMT or ABORT-XMT call from the remote Session Control module. Session Control detects a logical 1link disconnection or an abort when a STATE call returns a DISCONNECT-NOTIFICATION. A 2-byte value and up to 16 bytes of data may be returned in the buffer. - DATA-XMT (port xmtflag: id, buffer, return) a flag.indicating whether the last byte in the buffer is the value 1s last byte one of: of a Se551on Control message. ~ o end-of-message o qot—ehdhof—message Section returns: xmtflag; 2.4.4 describes data Its flow. buffer queued buffer not'queued -— insufficient resources port not in RUNNING state This function queues a transmit buffer to transmitting normal data on a logical link. queue the buffer either if th'e port is not if a port for NSP refuses to it lacks the resources to do in the RUNNING state. so or NSP Interfaces j) Page 37 XMT-POLL (port id; returns: return) no tranmsit complete' transmit complete -- buffer descriptor returned "This function returns a transmit buffer to Session Control. DATA-RCV (port id, fcvflag: buffer, a flag indicating whether data truncation is allowed. \v/ o "returns: f> return) It may have either of the o L rcvflag; following values: no truncation allowed truncation allowed Dbuffer queued buffer not queued -- insufficient buffer -- not queued buffer resources too truncation was specified in rcvflag | small and no - | port not 1in RUNNING or DISCONNECT-INITIATE state This function queues a receive buffer to a port to receive normal data. A "buffer too small” return indicates the buffer size is smaller than the minimum receive buffer, NSPbuf (see STATUS) . - Session Control may provide a buffer to a port 1in the DISCONNECT-INITIATE state to avoid a Session Control deadlock > in which each end DISCONNECT-INITIATE of implementation-dependent RCV-POLL (port returns: id; the state. logical - However, 1issue. link 1is in the buffers are this 1S an return) no buffer returned (Either queued to available.) the port o or | no receive there 1is no receive data | buffer returned -- no data lost, end-of-message buffer returned -- data lost, end-of-message /) | buffer returned -- no data lost, not end-of-message buffer returned -- data lost, not end-of-message NSP Interfaces - buffer Page 38 returned empty -- DISCONNECT-INITIATE, port not in RUNNING, DISCONNECT-COMPLETE, or DISCONNECT-NOTIFICATIO states. N This function obtains a "receive complete" notification for a receive buffer previously queued via a DATA-RCV call. NSP returns receive buffers along with buffer descrlptors to Session Control in the order in which data was placed in them. A data-transmitting NSP DATA-XMT call and seaments sends each data given segment to 1t separately network. Dby through the the A segment containing data given to NSP with an "end-of-message"” flag 1is so marked. A data-receiving NSP segments and places given to packets flowing sequence of data-receiving Section 2.4.4. NSP the data in Session Control NSP by the DATA-RCV function. The from a data-transmitting NSP to a constitutes 'the network form described ~ in If a data-receiving Session Control module gives NSP each receive buffer with the rcvflag set to "no truncation allowed" on the DATA-RCV call, then NSP attempts to place the data, in order, from one or more segments of a single Session Control message into each receive buffer. A receive buffer 1is always returned ~with a "no data lost" indication and is returned with an "end-ofmessage" indication if and only if the last segment of data placed in it was marked as an "end-of-message" segment. Note that two DATA-XMT calls by the data-transmitting Session Control module, one with data that 1s not marked "end—of—message" and the second with no data but marked "end-ofmessage, may result in data and status being given to the data- receiving Session Control either in two buffers, as given to NSP by the data-transmitting Session containing data or in a single buffer "end-of-message." | the Control and | module, marked as If a data-receiving Session Control module gives NSP each receive buffer with the rcvflag set to "truncation allowed," then NSP either fills the receive buffer or puts data into it up to and including the data in a segment marked as "end-of-message” whichever comes first. If a receive buffer is filled first, then NSP continues to receive and discard data segments up to "end-of-message." returned case as where an and In 1including either "end-of-message” data was discarded, the first one marked: : receive buffer case, the on RCV-POLL the the receive call. buffer with a "data lost" indication. The only time a w1th a "truncation allowed" rcvilag 1S "not-end-of-message" is when the logical link by the data-transmitting Session Control partially transmitted message. is In as is the returned buffer given returned as is disconnected module with a A data receiving Session control module may mix calls with the - "truncation allowed" rcvflag with calls with the "no truncation allowed" rcvflag. )/! these buffers \_\ recelves receive NSP Interfaces ) | If Session Control closes queued via the INTERRUPT-XMT (port id, buffer; immediately. returns: ) . > a port that has call, NSP receive these buffers buffers return) accepted data not accepted port not in RUNNING state destination Session Control module. The data has no sequential relationship to normal data transferred on a logical link. NSP may refuse a request to send interrupt data if it is unable to queue the data 1nternally The buffer may be up to 16 Dbytes long. | INTERRUPT-RCV (port id, buffer; i> | returns This function sends up to 16 bytes of high priority data to the - o data DATA-RCV Page 39 | return) | v’returns: ‘data returned no.data returned port not in RUNNING state This function»obtains available interrupt data. is delivered function. 1in the order transmitted by the Interrupt data has no sequential normal data transferred on a logical 3.2 link. Interrupt data INTERRUPT-XMT relationship to Network Mahagement Interface Network Management can perform the Network Management interface: following functions wusing NSP's 1. Initialize or halt NSP. 2. Read and set some of NSP's local parameters and variables. 3. Read NSP s remote node varlables and counters. remote ) 4. node counters. Clear NSP's | Read (one event at a time) and clear NSP's event queue. The interface is modeled as a subroutines. Each call collection represents a of functions specific provided function. by In each NSP Interfaces | | return, the variable 1n parentheses is its name base descriptions in Tables 3 and 4. Section 5. ~ appearing in Page 40 the data Many of the calls pertain to either local or remote NSPs. Actually, ‘the "remote" NSP 1s the local NSP if the logical link is made within a single node.: All the variables read, set, or <cleared by the following Network Management functions are locally kept variables. Thus, a set of NSP variables for each remote node to which there is an active logical link 1s kept at the local node. NSP does not guarantee that any information will be available when there are no logical llnks to the specified remote node. ~ . Implementatlons of Network Management are not parameter, variable, or counter listed here. The Network Management interface requ1red functions are the NSP. as to return every follows: INITIALIZE This_function initializes local HALT This function halts NSP. The call has the following effects: l. NSP closes all ports. 2. 3. | NSP will refuse to open é'new port. NSP returns all Session Control its counters and buffers to Session Control. 4. NSP freezes LOCAL—READ—ADDRESS (: return: This address reads NSP's LOCAL-READ-INACTIVITY (; returh: queue. address) NSP's node function event (NSPself) node address. inactivity) NSP's inactivity timer (NSPinact tim) This function returns the interval after which, 1f there is no Page 41 | NSP Interfaces data going in either direction on a link, NSP checks the link. NSP checks the link by sending a Data Request message (Table 1) This message does not change flow control to the remote NSP. but does require an acknowledgment. parameters, LOCAL-READ-DELAY (; return: delay) NSP's delay factor (NSPdelay) N4 This function returns the number by which to multiply one the estimated round trip delay to a node to set sixteenth of The round trip delay 1is the retransmission timer to that node. used in an NSP algorithm that determines when to retransmit a | message (Section 7.3). LOCAL-READ-WEIGHT return: (; weight) NSP's delay weight (NSPweight) the current to applies This function returns the weight NSP round trip delay estimate to a remote node when updating the estimated round trip delay to a node ( Section 7.3). (; LOCAL-READ-RETRANSMIT return: retransmit) NSP's retransmit threshold (NSPretrans) times the This function returns the maximum number of timer sion retransmis expired an restart will NSP deciding that the remote node unreachable probably is source Dbefore (see When this number is exceeded, NSP CONFIDENCE ' in Section 3.1). return to a Session Control on” disconnecti "probable a gives " CONFIDENCE call. Session Control may then disconnect the link on behalf of the end user. The retransmit threshold is called the NODE RETRANSMIT FACTOR Functional Specification. LOCAL-READ-MAXIMUM-ACTIVE (; return: in the Network Management DNA maximum ports) NSP's maximum ports number (NSPmax) This function returns the maximum number of ports NSP has | | concurrently had assigned to a logical link (in other words, concurrently in a state other than OPEN or CLOSED).. This 1is called NODE MAXIMUM LOGICAL LINKS ACTIVE in the DNA Network Management Functional Specification. | NSP Interfaces | LOCAL-READ-TOTAL (; return: ThlS the in S | NSP's total ports number (NSPtotal)~ function returns the maximum active logical llnk count for is the total number of ports that NSP can have This concurrently. DNA Network return: This Management LOCAL-READ-VERSION is called Functional (; version ‘number NSP's version number NODE MAXIMUM LINKS the value (qualifier, qualifier: one returned 1S in the Specification. (NSPver51on) This functlon returns the local NSP's version number version, LOCAL-SET - Page 42 total ports) node. use | 4.0, For this value) of the following, defined above: LOCAL-SET-ADDRESS LOCAL-SET-DELAY LOCAL-SET-INACTIVITY LOCAL-SET-MAXIMUM LOCAL-SET-RETRANSMIT LOCAL-SET-WEIGHT value: | the new numerical value variable. for the selected parameter or This function sets NSP local parameters. REMOTE-READ-DELAY (node: delay) node: a return: the node address estimated (NODEdelay) This round tr1p delay function returns the estimated round remote node. - to the trip remote node delay to the Page 43 ;. | | B NSP Interfaces active) \) REMOTE-READ-ACTIVE (node; the number of active logical links to the remote | (NODEactive) return: NSP of ports in a state other than This function returns the number to the remote OPEN that NSP has associated with logical links 1in the DNA node. This variable is called NODE ACTIVE LINKS Network Management Functional Specification. bytes received) REMOTE-READ-BYTES RECEIVED (node; j> | the number of user data bytes received (NODEbyt_rcv) return: of user data bytes " This function'retUrns the total number including normal,, interrupt, received connect, the from node, remote reject and disconnect data. accept, REMOTE-READ-BYTES SENT (node; i> bytes sent) the number of user data bytes sent (NODEbyt xmt) returns This function returns the total number of‘user data bytes sent to the remote node. REMOTE-READ-MESSAGES RECEIVED (node; return: - » messages received) the total number of messages recelved f rom the remote node (NODEmsg_rcv) » This function returns the total number messages received disposition. from remote types of NSP node regardless of thelr This includes detected duplicates. REMOTE-READ-MESSAGES SENT (node; return: the of all messageS'sent) remote the total number of NSP messages sent to | the o node (NODEmsg xmt ) | Th1s function returns the total number of NSP messages sent the remote node. This includes retransmissions. to | ' NSP Interfaces Page 44 REMOTE-READ-CONNECTS RECEIVED (node; return: connects received) the total number of received from the NSP remote Connect node Initiate messages (NODEcon rcv) This :function returns the total number of NSP Connect ‘Initiate messages the regardless of 'local their REMOTE-READ-CONNECTS SENT return: has received (node; from the remote sent returns to the connects the remote sent) number return: of NSP sent | connects rejected) the number of received NSP Connect Initiate for which there was to | Connect Initiate node. REMOTE-READ-CONNECTS REJECTED (node; node | the number of NSP Connect Initiate messages the remote node (NODEcon xmt) This function messages node disposition. messages no openvport'(NODEcon_rej) This function returns the number of NSP Connect Initiate messages rejected by the local NSP. This variable is called "received connect resource errors" in the DNA Network Management Specification, REMOTE-READ-TIMEOUTS (node; returns: number the | "This from of timeouts that for acknowledgments node (NODEtimeout) function the timeouts) returns the destination value: the occurred kind) in from the waiting. remote | number of numerical qualifier. qualifier: have any response timeouts received NSP. REMOTE-READ-AN (node, D-CLEAR value; | (of qualifier) wvalue for the corresponding | | one of the following, defined above: o o REMOTE-READ-BYTES RECEIVED REMOTE-READ-BYTES SENT 0o REMOTE-READ-MESSAGES RECEIVED 0o REMOTE-READ-MESSAGES SENT | | - Page 45 ©CO00O NSP Interfaces returns: REMOTE-READ-CONNECTS REMOTE-READ-CONNECTS REJECTED REMOTE-READ-TIMEOUTS the selected This function counter. reads | RECEIVED REMOTE-READ-CONNECTS SENT | information and then clears | a node-dependent NSP return) (; READ-QUEUE returns: event the queue first following empty entry on the events: event queue. One of the < invalid message A received message was discarded because reserved bits or values in the message were used. The beginning of the message 1s the event data. invalid flow control A received Link Service message was discarded because it contained a request count that, when used to compute an accumulated request = count, would produce a result out of limits. The message and current request counts are the event data. | data base reused | A node descriptor 5.4) was reused events The queue was lost | o (Section for a different remote node. The contents of the data base are the event data. | full when attempted to place an entry it. One or more events function reads the first entry on in were lost. This NSP | an event queue. NSP maintains an internal event queue. The length of the queue is implementation-dependent, but is always at 1least one. When events (described above in the returns) occur, NSP places entries in the queue. If the queue is full when NSP attempts to place an entry in it, the last entry in the queue changes to "events lost."” The DNA Network Management Functional - | - Specification describes NSP Interfaces return o | | | Page 46 formats. 'CLEAR-QUEUE This function clears NSP's internal event queue. Interface NSP requires a Routing service for provides NSP with the ability its to messages) to, and receive datagrams same DECnet network. operation. A Routing. service send datagrams (containing NSP from any other NSP module ~ in the / Routing The interface described below appears in the form of calls from an NSP module to a Routing module ROUT ING-TRANSMIT - - source: in the same node. (source, destination, [,circuit[,nexthopl]], buffer, tryhard; a destination node address returnflag: a Boolean flag to ‘ circuit: returnflag return) a source node address destination: ' ~ indicate whether or not the is to be returned by the Routing destination node is inaccessible. The one of the following values: an o false o true -- return packet' -- do not return packet internal NSP mechanism testing). One of: selector (used for loop o unspecified O a circuit that 1is the circuit on which Routing should direct this datagram. If circuit specifies a broadcast circuit, then nexthop must also be specified. | nexthop: a buffer: a buffer containing a packet “tryhard: a Boolean flag to indicate whether or not the is packet service if the flag may have node to number be sent to the destination node paCket using the | 3.3 NSP Interfaces ) . | | | | | | 'Page 47 RoutinglLayer's tryhard algorithm. When this flag 1is true, NSP is instructing the Routing Layer to make a maximal effort to deliver the packet. When false, "NSP is 1instructing the Routing Layer to deliver the packet using a less costly and potentially less reliable mechanism. The normal default is false. returns: buffer queued buffer not queued This function queues a transmit rejects call (in buffer to Routing. Routing other words, does not queue a packet) only if it has insufficient resources to queue the buffer. If ‘the destination node 1is currently unreachable, then Routing accepts the buffer, although 1t may return the buffer | - this > | immediately (see ROUTING-CHECK-TRANSMIT-BUFFER following). The "circuit" argument has the that in the CONNECT-XMT call (Section 3.1). same | call, meaning | as ROUT ING-CHECK-TRANSMIT-BUFFER (buffer, return;) . returns: all buffers remain queu:d by Routing .i>‘ buffer returned to NSP buffer: a buffer previously This function checks to see if buffer given ROUTING-TRANSMIT call can be returned to NSP. ;) ROUTING-SUPPLY-RECEIVE-BUFFER (buffer; returns: a to . previously ‘ - Routing . queued | via - a transmit return) buffer queued for receive by Rout ing buffer not queued for receive by Routing ) This function queues a receive buffer to Routing. » ROUTING-CHECK-RECEIVE-BUFFER (source, destination, - [,circuit[,nexthopl], buffer, tryhard; source: ‘) a source node destination: circuit: | return) | address a destination node address " an internal NSP mechanism testing). One of: selector (used | | for | loop 'NSP Interfaces o o - unspecified 0 | nexthop: a node returns: all Page 48 a circuit that 1is the <circuit on which Routing should direct this datagram. If circult specifies a broadcast circuit, then nexthop must also be specified. number buffers remain queued by Routing buffer returned with addresses -- contains buffer returned -- contains packet This functign checks buffer 4.0 NSP can be to see 1if returned to a "retfirn previously node to sender"” queued receive NSP. the states and state transitions required for | Port‘States Whenever Session Control allocates with state. data a and destination packet STATES ThlS section describes normal NSP operation. 4,1 source a normal a base. exists. The This This state CLOSED state state 1s 1s a port, NSP associates represented by a variable really means necessary 1in that the the port architecture the port in the port no longer because the remote port may be placed in the CLOSED-NOTIFICATION state. In some implementations the CLOSED state may be indicated by the absence of an entry. A port has only one state at a time. Table 2 summarizes the normal port states. | NSP Page States Table Port pommm | 49 2 States oo B S (Symbol) State ¥ Explanation The local Session Control has 1ssued an OPEN call which created the port. _________________________________ + NSP nas received a Connect Initiate message. (The remote port 1S or was in the CONNECT-INITIATE state.) _________________________________ + The local issued a port Session Control REJECT call while was in CONNECT-RECEIVED has the the state. ____;________4_________+ _________ + NSP has received Complete message Disconnect while in the DISCONNECT-REJECT state. (The remote port 1is a or has been 1in the REJECTED state.) The local Session Control issued an ACCEPT the port was CONNECT-RECEIVED call, in has while the state. The local Session Control has issued a CONNECT-XMT call, which created this port. (NR) NO-RESOURCES NSP has message received a No Resources while in the CONNECT-INITIATE remote NSP did available port state.) state. (The not have an 1in the OPEN | NSP has received its own Connect Initiate message while in the CONNECT-INITIATE state because Routing was unable to deliver the message. (CD) CONNECT-DELIVERED NSP has received a Connect Acknowledgment message while 1in the CONNECT-INITIATE state. (The destination port is or has CONNECT-RECEIVED the in been state.) NSP States Page 50 Table 2 (Cont ) ‘ Port States’ +—___——_;——__;;—;—*;;;f—_—————T*;’—+—;*—__———;;g;f;;;f;—~f_-7-—f _____ + I I | | I I I I »Explanatlon REJECTED (RJ) NSP has recelved a'=D1sconnect ‘Initiate message while CONNECT-INITIATE | in remote port is or has the DISCONNECTREJECT . — — —— (RUN) ———— N — SR GaS —— AN = W R O Gman e S ——— — — WU o ou— o— —— - RUNNING the or CONNECT DELIVERED ‘state. =+ ——— | | | | | | | | | | | | | | | State (Symbol) (The been 1in state.) _________________________________ + NSP has elther received a Connect Confirm message while in the CONNECT-INITIATE or CONNECT-DELIVERED state or recelved a Data, Data Request, Interrupt - Request, Acknowledgment or Data Other Data Acknowledgment message while in the CONNECT-CONFIRM state. The logical 1link may be used for sending and receiving data. (Either the remote port entered the RUNNING is or was in the CONNECT-CONFIRM state or the remote port | state from the CONNECT DELIVERED state.) + _________________________________ + | | | | The local Sess1on Control has issued a DISCONNECT-XMT call an ABORT-XMT RUNNING call whlle or in the either a state. + | | | | | | | | | | + | I | | | + (DIC) DISCONNECTCOMPLETE NSP has Disconnect recelved Complete message or a Disconnect Initiate while in | 'DISCONNECT-INITIATE (The remote port in state. is or has been ~either the DISCONNECT-NOTIFICATION or message the the state DISCONNECT-INITIATE state.) —————---————-———-—_——————_———-———————-——— NSP has received Initiate message RUNNING state. port 1is or has a Dlsconnect while in the (The remote been 1in the DISCONNECT- INITIATE state.) NSP States Page 51 Table 2 Port e | (Symbol) State (Cont.) States Fm | ————————— Explanatlon_ The local Sess1on Control has issued a CLOSE call (normally ‘while the local port was in the DRC, DN, state). DIC, NC, NR This is not or CI really a state of the port, but is for descriptive purposes indicate that the port there. (CN) CLOSED- NOTIFICATION NSP has message is not | received ~ while a CONNECT-CONFIRM remote port.) NSP Link RUN or the | state. closed ~ No in DISCONNECT-INITIATE, DISCONNECT-REJECT, used to the (The remote NSP State S Figure 11 , These | ~ ‘Page following, summarizes the normal tra nsitions | O ~ correspond with those CC e = ' ' |++>|RUN ) ~ L= D + | DR |+ ++++++>| CN R e | R . I . = . D I ' | | 1 I .————. .~'" | NC _t N | . |<———-" I C—é——. |<++++++++]| v . .—= | + \ .————' - | SS v NR | S A contains port state CI R| —— VvV V N -——_C<-v .—7 CL ) I I | == I |J ' I v o——+——o | RJ | | | | ——=- R v - === | DN | | i | R transitions. B | --------------- >| state |<++++++++++++++++++++++++++]| CD P \ .'_———. 2. t v e TTTT e e~ T T T e | DI |++>|DIC | S port in Table 52 | (Table 2) ++++> result from an action by NSP _———> result from a Session Control call NOTES 1. A state from which am exit can be made by a ++++> arrow 1s potentially unstable state. 2. | | a "A state from which the only exits are -—---> arrows are stable states. A state from which an exit can be made only by more ++++> arrow is non-deterministic. Figure 11 a state from which the than exit one 1s Port State Diagram A transition to CLOSE from any state other than those connected by NSP States | | ~ Page 53 the logical arrows to CL on Figure 11 is equivalent to terminating link while it was in a useful state. Such a transition would occur, This 1is the when a user process terminates abnormally. for example, only kind of transition that can occur that is not shown in Figure 1l. 4.2 Logical Link States when one Session Control module attempts to form a connection to a second Session Control module NSP places the requesting port in the NSP then attempts to assoclate the local CONNECT-INITIATE (CI) state. If source port with a destination port that is in the OPEN (O) state. The initial logical is the logical link state. of the two port states logical 1link implementations can Dbe that transitions correctly. 1in follow An NSP may fail to associate following situations: o in model two ports. in | NSP time. a at Section 6 will make the This happen can 1n the the NO-COMMUNICATION state. in If there are no ports managed by the remote NSP state. In NO-RESOURCES o state one the If the network is disconnected so that the destination system In this case, NSP places the requesting is not accessible. port o only | | link state is represented as CI/O. A combination the " the association between the two ports is successful, this the OPEN case, NSP places the requesting port in the state. If the network is not (e.qg. operating 'properly is badly succesive retransmissions fail, Sessions and congested) the Confidence variable. this by checking detect Control can 'Figure 12 shows the normal logical link state transitions. The only state transitions that are not illustrated in Figure 12 are those that represent the transition of one of the ports to the CLOSED 1is generally Such a transition state from a non-terminal state. ICATION CLOSED-NOTIF the to port other the of transition a succeeded by of diagram the 1into ambiquity introduce transitions state. These of kind this of example an shows 12 Figure transitions. 1link logical ambiguity in the exits from the CL/DI and DI/CL states. Figure 12 "does not show this complete set of transitions, because there are too they Moreover, many to represent coherently in a single diagram. a of operation normal during occur that transitions the "obscure logical. 1link. Note: | | 1In certain unlikely cases a port in the open state may match up when the for connection (for example, with a duplicate request to be appear will data connect The rejected). was connection original NSP States | valid. If connection the the | receiving 1local port Page 54 session control user accepts this false will never enter the RUNNING state. However, 1f communication exists with the remote node, the local port will eventually enter the "CN" state. Because of these cases, a user program which does not wish to process the data from a duplicate connect should accept incoming connections and process data only if the connection enters the RUNNING state. the connect e n S this state if the port that is still v ’ _—— ——— v | | | DR | | ———— | % S .____ Q e - o | R |---=>] RJ | L= : 1 V | , ' I—ié—u;* DN -,1 DI I + | + . IDI IDIC I IDIC : @ <+ =4 CL |<--|DIC DN | |IDN - |DIC CcL -~ * | | | | ’ | | | | I | 5 + 'n~————; || Sk T Tk T T i -+ — * |++>|DRC [ CL| -+ ) e g____ ' lDI ~ CN S DRCI ‘____l, RJ '————,* * CL CL | 2 —— |++++>| e | DR _+__ CL v omal CD |-->| CcD — — ' + Y LSSl vT > i + ‘ ~f_¥- + \ ’ - | | DR e is closed by Session Control. - CI } | V fi - - A | | e open f mm— e—— | e Page 55 * An exit 1s made to the CL/CL state from I o o ,; - Y NSP States +++++++++++++++++>.——-—,* |----------—=—--——-——-->|DIC | | | |cL v | | ' 12 Logical Link State Diagram Figure ) % | NSP State S ( | | - Page 56 LEGEND: contains logical link state consisting of the port states at both ends transition of the link (Table 2). caused by NSP transition caused by a Session Control call a +++++> arrow 1s a g by l‘y A state from which an exit can be made potentially unstable state. A state from which stable states. the A state from which an +++++> -~ arrow 1s non-deterministic. The logical 1link only exits exit can a state states be are made from presented disconnection or abortion of the link ----- > arrows by more which the above are than exit one 1is describe the from the RUN state when requested by either Session Control module. This 1is true because the Session Control requesting a disconnection could be either the Session Control that requested the loglcal link or the module that accepted the loglcal link. If a logical link enters the DI/RUN or RUN/DI state because of a disconnect request by one of the Session Control modules, then an NSP exit from the DI/RUN or RUN/DI states 1is possible only if the Session Control module in the RUN state has provided a sufficient number of receive buffers to receive all data transmitted by the other Session Control module. The +++++> arrow exit from either of these states means that NSP guarantees to make exit this constraint has been met. Similarly, the DI/DI state 1s possible only 1if eventually only Control modules sharing the 1logical 1link has met constraint. This constraint does not apply when the DI state 1s entered because of an abort request. - Figure 12 Logical Link State Diagram if an NSP exit from one of the Session (continued) this port L 1. // NOTES 5.0 Page 57 - | NSP Data Bases and Buffér Pools NSP DATA BASES AND BUFFER POOLS This section specifies the variables and parameters in the data bases | and buffer pools described in Section 2.2: o e NSP's internal data base (Section 5.1) Session Control port data base (Section 5.2) Resérvéd port data base (Section 5.3) Node data base (Section 5.4) Buffer pools (Section 5.5) 5.1 NSP's Internal Data Base This data base Network contains Management can describes the data base. NSP's internal variables and parameters., modify some of these (Section 3.2). Table 3 NSP Data Bases5and"BufferTPoolSoYdtfij o NSP's - Page 58 Table 3 | Internal Data Base +—-——————;—————+——;————~————+——v—++--—++4——-4—6—;—4e—ffe—+—+ ————————— + I | | Name | NSPstate | | Initial value |IBit ~ | ‘ | | |width| Definition | State-'"halted" or runnlng" } _I==========================:===================fi====i=fi£==fi=fi==:===== | "halted" 1 | l—————————————;+——————————+++=a;~;+; ——————————————— T | NSPself | | NSP1nact tim | 0+ 0 | e o e | e + Ill6'nl’The node address of thlS NSP | |—-—---—~-—-—-~+*-4—*-“-*—-¥—+*4%+*' ————————————————————————————————— + | | | | ] R ox | o IZNSPs 1nact1v1ty tlme value (in | = ee | NSPdelay 2+ | l system dependent units). 0 means]| | " no t1me value" (Sectlon 7. 4) | e TT+ |':8_'1;NSP s "delay factor" (Sect. 6.6) | | "round tr1p delay estlma— |————————-—————+——; ——————————— o ———— +%—————=—————-~~——~————~—————; ————— + | | NSPweight 1 - N 3+ I 8 1 | NSP's | tion factor” (Section 6.6). | ] l______a___‘g__+a;;; ________ {—a__a+;_¢________-_a_______*_ -_~___;;___+ | NSPretrans | = | I | | 5+ | | 8 "retransmit threshold" for | 1Zdeterm1n1ng confidence in network| I | (Section 7.5). al | | NSP's 1 | connectivity fora loglcal l1nk o l | |_____+;_____a_+_____a_-__d_+adt_l+;_________-___fi_;gzigg;;;;_;;_ | | NSPmax T | | 0 ____+ | * | The maximum number of ports that | | NSPhas had simultaneously in a A | - | | | state other than OPEN. I I_______;;____4+___a__*,__a;+ég;;;+;_______________-__-___;;;; _______ + | NSPversion | 4.0 e *fvl“NSP s versionnumber.,;d,iy |___-________-l+__5;;-_-___,+__f€;+g ____________________'_;;i;;_; | NSPtotal | ’ R lo* o | _____ + *751?The total number of portsNSP canl . | handle simultaneously. o | |——-———~——-————+—————a ——————— e pp—— +4———————-—-——————-——~——-=—fi:;a————+ NSPbuf ] | | N * | B | o | - —— = NSPtryhard : : | | | N | | The minimum Session Control rcv. | buffer size and the maximum NSP | transmit segment size for this | implementation (this value is | 'equal | S | I : * | i | to the maximum Routing Layer block size [returned from | Routing Layer Read Blocksize.] 1 | | minus 13, the maximum NSPheader | size. See Sectlon 5.5) —— - o t———— Fm | ceiling | I of | INSPretrans/Zl * This value + This 8 | NSP's "tryhard threshold" for | determining when the tryhard I'flag should get set (Sect 5.2) 1s not essentlal to the model is a suggested initial value, bound to use th1s as an 1mplementatlon. 1mplementatlons 1n1t1al value.» are + | | : | not | : 5.2 Page 59 | o NSP Data Bases and Buffer Pools Session Control Port Data Base ports. This data base consists of a collection of NSP a allocates port on a Session Control OPEN or CONNECT-XMT call. A port contailns the minimal information required to maintain a logical link. Table 4 | specifies a Session Control port. Table 4 Session Control Port ——— — fmmm—————— o o | : Name | | Initial [|Bit | value | | STATE fmm fmm — + e— —————— | | |Width| Definition 5 Oor CI | | 0 | NODE | e | 16 | Remote node address. | O | 16 | Local link address. | ADDRrem | 0 | 16 | Remote link address. | CIRCUIT | | | | O | | | | NEXTHOP | 0 | VERSION | 0 | TIMERdat | | | O | +—-——————————————— t————————— +——————_—_—_——— e | = e —_————— — —e _————— e +——————————————— +——_—————— +———— 4+——_— | ADDRloc I | | The state of the port. — ———— e ——— tm——— e —— - N —— — — + | — —+ e —————— | e ————— o — + ————— f————— e ——— — o o ————— e o * | | | | | 16 | Node Number e o ——T ———— pmm b e ———— Fm——— o fmm e | TIMERoth | | | | | * | | * | | | | * m fmm ———— e fmmm | TIMERcon | 0 | | | * * e S % ———t———————— ] | — ————— + —e | The version of the remote NSP. e —————— e | Message timer value for Data | Segment messages. — pmmm—————— F————— e ———— | O | | | e | | | | The circuit number to use to | transmit messages to Routing. 0 (= "unspecified") | One of: a circuit number | | — | + | ] + Message timer value for Interrupt or Link Service messages (data type messages other than Data Segment). | | | | Message timer value for Connect | and Disconnect messages. | I | | | | e ———— t———— o mm e — ——————————— + ——— — fmmm—————— f———— e ——— e fmm e | Inactivity timer value (Sect. 7.4) | | TIMERinact | 0 | | NUMdat | | 1 I | 12 | Number of next Data Segment | to transmit. | message | fmm————— ———————— o———— fm———— e et ee ————— + | | e ————e + NSP Data Bases and Buffer Pools Page 60 Table 4 (Cont.) Session Control Port ——————— e ————— + Initial |Bit | Value |IWwidth]| 1 | | I I 12 | I . | Service message type messages to transmit other than (data Data ————————— +-————+ 0 | I | 12 | I | Segment message available from Session Control. | —_————————— +—-———- + 0 | | 12 | | Number of highest numbered Data Segment message sent by local NSP. ————————— +-————+ 0 | I 12 | I ————————— +-—————+ 0 | I I ACKrcv dat + _______________ FLOWloc dat | | I 0 | | I 12 | ] I 0 | 8 e, — - —_——_——_————— FLOWrem 1int sent by Number last the of message from | Interrupt or Link acknowledgment local NSP. highest Data acknowledgment remote NSP. Segment received | I | + The normal will be data sent in request the count next that Data Request message. The I I | | I | I ————————— t————— 0 | | $+——_ of Service message ————————— +—————t e % | | I | | I I FLOWrem_dat Number ————————— t=—————t FLOWloc int e e T —— last Data Segment message | acknowledgment sent by local NSP. | ————————— +————=+ ____________________________________ -+ I I e S —— 12 + Number of 8 | | flow control state for receiv- One of: ing interrupt data. This variable takes into account the contents of the buffer BUFrcv as well as whether or not a new interrupt request should be sent. "interrupt"” "send request" ____________________________ ________ + The cumulative normal data request count received from the remote NSP. ————————— +————— ———————————————————————————————————— + 1 | I I 8 | | I ————————— +———— + The cumulative interrupt data request count received from the remote NSP, ' | NSP Data Bases and Buffer Pools Table 4 | ~ Page 61 (Cont.) Session Control Port —— + —————— e e ———— t————— e ——— pmmm fmm e | | Name - 3 | Initial IBit I | | |Wwidth| Definition | Value I==============:=====================================================I | FLOWrem sw I | | 1 | | "send” | | | I | | | The normal data on/off switch most | | recently received from the remote | "send" | NSP. One of: "do not send" I | | I | | | | The flow control type of the | remote receiver (determines how remote normal data request counts are interpreted). One of: | I | | | "session-control-message” I ——————— fmmm—————— f————— e —————— + e | FLOWrem typ | I | | I | | "none" | | | | | | I | | N | ————— o | FLAGoth ack | I I "none" "segment” I | | I e ———— fm——— o —————— + ———— pmm o | FLAGdat ack 2 1 | | false | | | false | 1 | I I requ1red" flag. fomm—————— m———— i I I | Boolean "data acknowledgment — — — ———————_—— + : Boolean "other data acknowledgment | | required" flag. I | Boolean "buffer required for con- | b ————— $———— e + ———— emmm fmm | FLAGbuf 1 | | false | | nect or disconnect message"” flag | | —————— fmmmmmm———————— b —————— fm———— o | 1 | Boolean "connect data available" | false | FLAGcon | flag. I | I o | | I e ———— b —————— tm——— e + m | FLAGint avail | false | | ———— b e | FLAGcon alloc | false | I | | ———— fmm o et | | o | BUFxmt I | | | | | | I avallable flag. ——— bm———— e - + |1 | | | Boolean "transmit allocation | requested for the port connect/ I dlsconnect transmit process." ] I - 1 | | | | Boolean "transmit allocation - | requested for the port | data transmit process." | 0 | | I | | 0 I | 8 I | Buffer to contain data for trans- | | Initiate, or Interrupt messages. | | Buffer to contain data for | |bytes| mitted Connect Confirm, Disconnect | —— } ———— pm———— o | 8 |bytes| received Disconnect Initiate | or Interrupt messages. | ————— ——— frmmm—————— Fm———— e o | BUFacc | | | Boolean "transmit interrupt data ————— ————— b —————— pm———— e o — e | BUFrcv 1 | ———— T s et + | FLAGdat alloc | false | | + | 0 | I I + | 6 | Buffer to contain accept data for | |bytes| received Connect Confirm message. |+ ——— fmmmm————— f————— e fmm e NSP Data Bases and Buffer Pools Table 4 (Cont.) Session Control Port | Initial |Bit Name BUFcon | | value | 0's N | |Width | l N * | data from a transmitted or | received Connect Initiate message. e o —————— e + ____________________________________ + | BUFsrc | 0's | | | | | * Address of a buffer to contain | | | source e e ——————— +———== + COUNTretrans | O o 1 16 node received address connect for a request. ____________________________ ________ | Count of message + retransmissions. o ————— +———— + DELAYstr tim i 0 i * i Round trip time-of-day value for start of round trip time estimation]| R i o —————— $————— + DELAYmsg num | | O | | N I I 12 The | number of the Data Segment single "Other | message currently being timed for | the round trip delay estimation. +-———_—_—— e ——— —_—_—— +-————————t——_—_—— + OTHERstate : "ready" : | | | +-———————— e OTHERtyp 2 : | | | | | | ——_————— +-——— + | o* | A | | | | | I | | | | | 2 } true : 1 if state of the message any. One being transmitted, of: "ready" 14 Sent " "timeout" ________________________ ____________ | The | | | | | | Rt e ——— ———— + CONFIDENCE The Data" type of "Other being sent, only when "ready". if Data" any. OTHERstate One <+ message It has meaning]| is not of: | "interrupt" | "interrupt request"” "data request"” ____________________ ________________ + The Boolean "confidence" variable : for the port. e mm——————— - + SIZEseg o* e TRYHARD { T 1 16 | T Ty —— t———— + false : 1 } the * This value _________ e e e e 1s e not port. T Lm IR SEENG GNN MER GUNN T . GG SN G G SR R GNED GED G S SR SN WD GO MY G SSUVR GRS A SES CHME eein GEED NS G S SN G SR L NS WM NS DR S GWER G i SRl CHNEL A SURD AN G NP < CMAR NN N ot — o — — — —— — — NN G G S cmmm ES G ST M mme e S essential e e e e e e — ———_——— — e ¥ NSP Data Bases and“Buffer Pools 5.3 o . o f | Page 63 Reserved Port Data Base This data base conta1ns a collectlon of port varlables reserved for NSP's 1internal wuse. NSP wuses them to manage responses to received messages that do not map onto the Session Control port data base. Table 5 describes a reserved port. | R | Table5 Reserved Port o ————— e ————— o ————— T L T T pp—— + I ] In1t1al | value = | Name | | Bit | : | Definition Width I | S - |===::::::::::2;;;::;;;;::::==;:fi=:=======================fi==========l | NODE o 1 16 - | ee m | ADDRtmp | 0 | 16 Remote node address. | e | + Temporary (1ocal) llnk address. | b b e+ | ADDRrem |0 116 I-Remote llnk address. | b e | | | | | MSGtype - e | | | | | | "none" | | I I l —————— CIRCUIT | 2 | | | | | The message,type, 1f any that | | must be sent. One of: N | ° "no resources" | | | | | "no link" | | "none" | fm———————— Fm——————— e e + | 0 | | | o | N | | | * I-The NEXTHOP |10 | c1rcu1t number e et T 16 | T to P Node Number t——_——————————— —-—+-——————= +-—————— =t 5.4 to use | transmit messages to Routlng | One of: |0 (="unspecified") l ‘a circuit number T s st | + | | | | | —— + | e ———————— + Node Data Base The node data base contains a collection of node descriptors. A node descriptor 1is 'a collection of node-dependent variables and counters. These are required in processing logical link connections. When NSP receives elther an outgolng an incoming connect request connect request (via a Connect (from Session Control) Initiate message) or NSP attempts to allocate a node descriptor for the remote node if one does not exist. Failure of such an attempt has the same - conseguences as failure to allocate a port Table 6 descrlbes a node descrlptor. NSP Data Bases and Buffer Pools -~ | Table | -~ Page 64 6 Node Descriptor o | ——————— e ——————— e | | Name | NODEaddr Initial | value | Bit | width | + | Definition | Node address. o | I==:===========================:=====:==================:===:======== I e ———— fmm | NODEdelay * | 16 | e ————— e ———— o | 0 | * | I + Estimated round trip delay. | +-—-———————————————t—_—_—————— +-——————— +-————— e, ——— + | | | | NODEactive e | | 0 | | | | | | | * | | | | The number of ports with | logical links to the remote node in a state other than | OPEN, | | | ———————— +-———————— +-——————— +--————— e —————— NODEbyt rcv | 0 | 32 | Total user data bytes received. | e fm——————— fmm e ———— e + | | 32 NODEbyt xmt | | | e pom | NODEmsg_rcv 0 | | | | e ———— fom | 0 | NODEmsg_ xmt | 0 | | | | T T T 32 | e ——————— e | Total user data bytes transmitted. Total NSP messages received | e+ 32 | Total NSP messages transmitted. | t+-———— —_—————————— +-—-——————— +-—————— +- — — — — e ———— + | | NODEcon_rcv | 0 o po e | | NODEcon xmt = | | N | | | 16 | | Connect Initiate messages ———————— fmmm—————— b S 0 | | | 16 | | I 16 o ——————— ————e e b | NODEcon_rej | | | | | 0 T | T it & | | Connect Initiate messages transmitted. | | | | Connect Initiate messages received for which there was no OPEN port. A e | | received. = o | -+ o o ————— b ———— o NODEt imeout 5.5 Buffer { 0 : 16 : Number of timeouts causing NSP message retransmission. | | | + | | Pools There can be up to six bfiffer pools, asfollows: Large transmit buffer pool. Large transmit buffers are required to transmit Connect 1Initiate or Data Segment messages. The form these buffers take 1s 1implementation-dependent. Implementations that support buffer chaining may require only enough space in a large "transmit buffer to build a message header. Other implementations may NSP Data Bases and Buffer Pools | | Page 65 use buffers no larger than the size Routing can transmit. size for the pool 1s one buffer. The minimum Small transmit buffer pool. Small transmit buffers are required to transmit messages other than Connect Initiate or Data Segment. The minimum size for this pool is one buffer. An implementation may use a single transmit buffer pool. 1In this case, the buffers must all be "large." — | ~ Receive buffer pool. Receive buffers are required to receive an NSP message from Routing. Minimum buffer size is 230 bytes. This size is equal to the contents of NSPbuf (Table 3, Section 5.1) plus 13 (the maximum length of a Data Segment header). All NSP messages are received into buffers of the same size. The minimum size for this pool is one buffer. Commit buffer pool. Once data is placed 1in a receiving node 1s committed to keeping it. Such to the transmitter. A commit buffer is the same buffer. This buffer pool is not required for the NSP. commit buffer, the data is acknowledged size as a receive correct operation of | Cache buffer pool. Cache buffers hold received Data Segment messages that cannot be acknowledged either because they were received out of order or because there is no permanent storage (such as a commit buffer or a Session Control buffer) for them. A cache buffer is the same size as a receive buffer. This buffer pool is not required for the correct operation of NSP. | Event buffer pool. This contains buffers for NSP's event queue for reading by Network Management. The minimum size for the pool is one buffer. | 6.0 DETAILED FUNCTIONAL MODEL Section 6 is essentially a model implementation of NSP that defines the operation of NSP in terms of a high level language. There 1s no requirement that an actual implementation conform to either the structure or the logical flow of this model. This is a specification of function only. The following variables are used in the model: o Data base variables from Section 5. capital and small letters CONFIDENCE, CIRCUIT and NEXTHOP. plus These are given in STATE, TIME. This referS'to the value of a local keeps o Fields in a message from Section 8. These variables and are given in capital letters. all other All NSP segment number arithmetic in this section is performed modulo the time of day. A segment number n clock mixed VERSION, that 4096. o NODE, are 1is defined to be greater than a segment Detailed Functional Model number m if 0 < (n - m) < | 2048, SR - Page 66 modulo 4096. A timer is modeled as a variable in a port. A timer 1is 1in one of three states: stopped, running, or expired. A timer contains a zero when it is stopped, a time value (the expiration time) greater than the time of day when it is running, and a time value less than or equal to the time of day when it has expired. | This section does o o not describe: The operation of the Network Management interface, The maintenance of counters in the variable NSPmax in NSP's node data internal data base, o The handling of NSP'S event queue, or o The handling of port pools. base and - the It is assumed that the above operations are described sufficiently the description of the Network Management interface in Section 3. 1in Finally, this section does not describe the operation of an NSP implementation that requests no flow control or message flow control. Nor does it describe the operation that would generate a negative acknowledgment or exercise "on/off" flow control. The operation of NSP in transmitting to an NSP implementation that uses these other forms of flow control and acknowledgment 1is described in Section 2.6.3. The colloquial language in.the model adheres to the following rules: 1, 2. <-- is the aSsignment operator < > means "not equal to" 3. <= means "less than or equal to" 4. >= means 5. "Loop...Endloop" defines a section of 1logic repeatedly. An "Exitloop" causes an exit immediately following the "Endloop." | 6. "If...Elseif...Else...Endif" defines a collection of separate logic sections, each guarded by a Boolean condition. After the first section with a "true" Boolean guard is executed, an exit 1s made to the logic following the "Endif." The implied Boolean condition on "Else" 1s "true." That is, the section following an "Else" 1s always executed if a previous section has not been executed. | "greater than or equal to" that executes to the logic | 7. Comments are near the code to which they apply, either before or after. ‘Detailed Functional Model 6.1 | Page 67 Interface Routines This section specifies how NSP handles the Session Control calls Control port described in Section 3.1. The operation is described by a series of algorithms with comments. The algorithms assume that at each of the entry points 1involving a port identifier passed by Session Control, NSP does the following: | | 1. Checks the port identifier for validity. 2. Maps the port 1identifier descriptor, if possible. onto a Session " The port descriptor variables used herein refer to those descriptor. in the proper OPEN: Logical If link address assignment (NSPstate = return "halted") "no port (Appendix A) then allocated - NSP halted"” Elseif (Session Control port 1is available and a logical link address is assignable) allocate Session Control port then ADDRloc <-- assigned link address STATE <-- "O" | BUFcon <-- Session Control's buffer descriptor 'BUFsrc <-- address of "source" argument return "port allocated" with port identifier Else | return ‘ "port not . allocated - insufficient resources"” Endif CLOSE: Logical link address‘deassignment'(Appendix A) deassign release link address 1n ADDRIloc resources CONF IDENCE : If (STATE = return "RUN" Else | return Endif return "CC" or "DR" / STATE in | | | invalid state" | or | ~ "port STATE: ) or CONFIDENCE | | "DI") | then | | Detailed Functional Model - - Page 68 CONNECT-XMT : Logical link address assignment (Appendix A). Setting FLAGbuf true causes the connect/disconnect process for the port to send a Connect Initiate message. NSP passes the circuit, nexthop value to Routing for subsequent transmissions for this port. The circuit,nexthop value 1s | used for loop-back testing. (NSPstate = "halted") then return "no port allocated - NSP halted” Elseif (Session Control port 1is availlable and a node descriptor exists or 1s avallable If and a logical link address is assignable) then allocate Session Control port descriptor allocate and initialize a node descriptor, 1if necessary - NODErem <-- destination from call ADDRloc <-- assigned link address STATE <-- "CI" BUFcon <-- Session Control's buffer descriptor CIRCUIT <-- circuit from call NEXTHOP <-- nexthop from call FLAGbuf <-- true return "port allocated" w1th port Else return "port not allocated - identifier 1nsuff1c1ent resources” Endif CONNECT-STATUS: Accept or reject data 1S only available if the port is 1in the "RJ" or "RUN" states. The data 1is in BUFacc if the port 1s in the "RUN" state; the data is in BUFrcv if the port 1s 1in the "RJ" state. Furthermore, since BUFrcv receives interrupt data once the logical link is running, Session Control can obtain accept data only once. The variable FLOWloc int identifies the contents of the BUFrcv buffer. Setting this variable to "empty" allows NSP to receive interrupt data | | on the logical link. (STATE = "RJ") then "Session Control's buffert <-— BUFrcv return "connect request rejected" Elseif (STATE = "RUN") then If (FLOWloc int = "accept") then Session Control's buffer <-- BUFacc If Endif return Else "connect return "port not Endif request accepted” 1in RUNNING or REJECTED state" Detailed Functional Model Page 69 'ACCEPT: Setting 'FLAGbuf true will cause the connect/disconnect process to send a Connect Confirm message. If (STATE = "CR") transmit then STATE <-- "CC" BUFxmt <—-- Session Control' s data FLAGbuf <-- true return "link accepted” Else ~return "port not in CONNECT-RECEIVED state" « Endif : REJECT Settlng FLAGbuf true causes the connect/dlsconnect transmit process to send a Disconnect If (STATE = | Initiate message. "CR") then STATE <-- "DR" BUFxmt <-- Session Control's FLAGbuf <-- true data return "link rejected” Else return Endif "port not i1n CONNECTRECEIVED state” DISCONNECT—XMT: Setting FLAGbuf false and STATE to "DI" causes the connect/disconnect transmit process to send a Disconnect Initiate message only 1if there are no outstandlng,'unacknowledged data messages. If (STATE = "RUN") then \ STATE <-- "DI" | BUFxmt <-- Session Control's data DELAYstr tim <-- 0 FLAGbuf <-- false return "call accepted" Else ‘return Endif "port not in RUNNING state" Detailed Functional Model | Page 70 ABORT-XMT: This routine acts as routine DISCONNECT-XMT ~except that it ~NUMhigh to ACKrcv_dat to stop the transmission of data messages allow the transmission of a Disconnect Initiate message. If (STATE = STATE "RUN") <-- sets and to then "DI" BUFxmt <-- session DELAYstim r <-- 0 , control's data stop timer TIMERdat stop timer TIMERoth FLAGbuf <-NUMhigh <-- false ACKrcv_dat return Else "call accepted” return "port | not in Endif RUNNING state" DISCONNECT-RCV: The connect/disconnect process places any BUFrcv. If (STATE = "DN") then If (BUFrcv empty) then return Else "no disconnect | received disconnect | data available" Session Control's buffer <-- BUFrcv return "disconnect data available" Endif Else | return o "port not in Endif | | | DISCONNECT-NOTIFICATION state" | DATA—XMT: - The segmentation If (STATE = pass pass Else module "RUN") handles this call almost entirely. then call to segmentation module return to Session Control return "port Endif not in RUNNING state" XMT-POLL: The segmentation module handles this pass call to segmentation module pass return to Session Control call entirely. data | in Detailed Functional Model - | - Page 71 DATA-RCV: The reassembly module handles this call almost entirely. This call is accepted in the DI state (Section 4.1) to preventa Session Control | | deadlock. If (STATE = "RUN", "DI" or "DN") then pass call to reassembly module pass return to Session Control | Else A return "port not in RUNNING or DISCONNECT-INITIATE state" Endif RCV-POLL: The reassembly module handles this call entirely. pass call to reassembly module pass return to Session Control INTERRUPT-XMT: The BUFxmt is the single buffer holding outgoing 1interrupt data. When buffer. the of state variable FLAGint avail indicates the Putting FLAGint avail is ~false, then there is no data in it. data the causes true to vail interrupt data in it and setting FLAGint_a transmit process to send an Interrupt message. If (STATE < > RUN) then return "port not in RUNNING state" Elseif (FLAGint avail false) then BUFxmt <-- Session Control's data true return "data accepted” FLAGint avall <-- | Else return "data not accepted - insufficient resources” Endif | | Detailed Functional Model | | | Page 72 INTERRUPT-RCV: The data receive process FLOWloc_int = T"empty." ~ places received interrupt data in BUFrcv if The receive data process informs this routine that interrupt data 1is available by setting FLOWloc int to "interrupt."s This routine informs the data transmit process that it should request another interrupt message by setting FLOWloc int to "send request. This causes the data transmit process to send an Interrupt If Request (STATE < return message. > RUN) "port | then not in RUNNING state" Elseif (FLOWloc int = "interrupt") then Session Control’ s buffer <-- BUFrcv FLOWloc int <-- "send request" ~ return "data returned"” Else return "no data returned" Endif 6.2 Receive Dispatcher Module This module has Routing, polls - processes. an imbedded process that gives receive buffers to to get them back, and then glves them to the receive Although not exp11c1tly algorithms, these processes return dispatcher module after the buffers modeled 1in the receive the receive buffers to have been processed. process the receive The receive dispatcher module maps received messages onto ports parses messages into ‘field contents. Mapping a received message a particular port is described below. | | 1. If the TYPE or SUBTYPE subfields of reserved binary values, or if the then discard the message. 2. Discard 3. MSGFLG field field is contain extended, received No Operation message. A received Connect Initiate message or Retransmitted - 4. a the MSGFLG and onto Connect Initiate message with DSTADDR = 0 maps onto any Session Control port with node = NODE, ADDRrem = SRCADDR and STATE <> "O" or any Session Control port with STATE = "O", if such a port exists and if a node descriptor exists or can be created for the source node. Otherwise, it maps onto any reserved port with MSGtyp = "none", if such a port exists. Otherwise, discard the message. A returned Connect Initiate message or Retransmltted Connect Initiate maps onto the Session Control port with STATE = "CI" and SRCADDR=ADDRloc, if such a port exists. Otherwise, distard the message. | | Detailed Functional Model Page 73 | Resource Treat a received Disconnect Confirm message as a No a 1, as a Disconnect the REASON field contains if message a 42, and as a contains field REASON the if message Complete | 4l. a contains field REASON the if message Link No s onto a Session Control port in the map The following message node = NODE and DSTADDR = ADDRloc, source the with state "CI" messages, with the exception of These exists. port a such if also map onto a port in message, ent Acknowledgm Connect the any other state with source node = NODE, DSTADDR = ADDRloc, and SRCADDR = ADDRrem, if such a port exists. .00 0O0O0 Connect Acknowledgment No Resources Connect Confirm Disconnect Initiate Disconnect Confirm with REASON < > 1, 41, or 42 If a Connect Acknowledgment or No Resources message cannot be If a Connect mapped onto a Session Control port, discard it. Confirm or Disconnect Initiate message cannot be mapped onto a Session Control port, map MSGtyp = "none," if one exists. it onto a reserved port with Otherwise, discard 1it. The following messages map onto a Session Control source the port with node=NODE, DSTADDR=ADDRloc, and SRCADDR=ADDRrem, if such a port exists. O0O0O000O0O0 5. | Disconnect Complete No Link Data Segment Data Acknowledgment Interrupt Data Request Interrupt Request Other-Data Acknowledgment Interrupt, Data Request, or Interrupt Request A Data Segment, message that cannot map onto a Session Control port 1is mapped onto a reserved port with MSGtyp = "none," if one exists; Discard the remaining messages 1is discarded. it otherwise, in the above list if they cannot map onto a Session Control port. | - "CI," Note that a Session Control port with STATE = "Oo," for value "CD," "NR," or "NC" does not have a defined such onto ADDRrem. Therefore, NSP cannot map these messages a port. Detailed Functional Model | Parsing messages into field The following 1. are special | contents rules: is ~ Page 74 generally straightforward. | Check the QUAL fields of a received Data Segment, Interrupt, Link Service, Data Acknowledgment, or Other Acknowledgment message to determine if the fields are wvalid. Ignore a ' NUMBER field Mask Link the SEGNUM Service, message to regardless Mask if the of the QUAL field has field of a Data low received an Data Acknowledgment, order 12 bits. invalid value. Segment, or Other Ignore the Interrupt, Acknowledgment wupper 4 Dbits setting. the LSFLAGS field of a received Link Service message to the low order 4 bits. Ignore the upper 4 bits regardless of setting. Check the reserved values of the FCVAL INT and FC MOD subfields of the LSFLAGS field, however. If the reserved values are used, ignore the entire Link Service message. Detailed Functional Model | | Page 75 Index to Routines 6.3 than Sections 6.4 through 6.9 contain routines that are used in more your aid To once. defined only are routines These one subsection. reading of the model, Table 7 1is an alphabetic 1list of all the routines used in these sections. The table shows both the section 1in which the routine is defined and the section(s) that call or otherwise use the routine. | Table 7 Index to Routines Used 1in Model — —_— e - —— — + I Routine | ACK-SESSION-CONTROL | Defined In | 6.7 | 6.9 —— —_————————— —_—tm | ALLOCATE | | Used In : | 6.6.2 | | 6.6.1, e ———— + 2, 3 | e — e —— e ——— + | CHECK-ALLOCATE | 6.9 | 6.6.1, 3 l - —————— e - e — — + | COMMIT-NUMBER | | 6.5 | 6.4.2 I I 6.6.2 | 6.6.2 I I 6.6.2 | 6.6.2 I I 6.6.2 | 6.6.2 I —— ———————— e ———— tem— e ——— tm—————————————— + | DATA-ACK-SENT e — e ——— e — -+ | DATA-ACK-TO-BE-SENT e | -e —— — e ———— + DATA-REQUEST-TO-BE-SENT -e | DATA-TO-BE-SENT | - ——————e | DEALLOCATE | 6.6.2 | | 6.9 e e | GET-SEGMENT | 6.6.2 | | 6.6.1, 2, ee ———— + bt e e ———— + | 6.8 3 | e b be ——— + | 6.6.2 | — — —e — —e ——— + | INTERRUPT-TO-BE-SENT | INT-REQUEST-TO-BE-SENT | | 6.6.2 | 6.6.2 | 6.6.2 | 6.6.2 t——— e — e I — —+ | — — — $———— ————————————— —t e ——— + | LAST I 6.8 | 6.6.2 | | MESSAGE-SENT | 6.6.2 | 6.6.2 I 6.6.2 | 6.6.2 | 6.8 | 6.4.2, I 6.6.2 | 6.6.2 I | OTHER-DATA-ACK-TO-BE-SENT | 6.6.2 | 6.6.2 I | OTHER-DATA-SENT I 6.6.2 | 6.6.2 | | PROCESS-DATA-ACK | 6.4.2 | 6.4.2 I ee — + —e ——— e ————————— + | MESSAGE-TO-BE-SENT S | NM e b b e — | I e — t——————————————— + 6.6.2 | ————— e ———————————— e e ——— + | OTHER-ACK-SENT | +—-———- aunhee ettt +-———————_———_———————— +-—————————————— + f—— e — -e+ s —_——————ee e e —— + +— — _—_— e — —- —e ——— + Detailed Functional Model Index Page to Table 7 (Cont.) Routines Used in Model e e Routine | Defined | PROCESS-OTHER-DATA-ACK | Used 6.4.2 e e e e | REALLOCATE | e e e e e | e e i e o e e | e e o e 6.9 | 6.7 + In I 6.4.2 I e 6.6.1, e - SEND-CONNECT-ACKNOWLEDGMENT +———————— e | e et In + —F — F — f —F — o — f —f — o o p — o — o — p — f — o — p — f — o — o — f — f — o — | A 76 i+ 2, 3 | -+ 6.6.1 I e -e + SEND-CONNECT-CONFIRM | 6.7 6.6.1 | ee e e e + SEND-CONNECT-INITIATE I 6.7 6.6.1 | +—"—————"——"——__—"——-— ——————————— + —————————————————————————————————— + | SEND-DATA-ACK N 6.7 — - ———————————— e et | SEND-DATA-REQUEST | 6.7 6.6.2 | e + 6.6.2 | +——-————————-——————————————_— ——————— +-———————— e —— ———————— + +'.._..____.__.'. _________________________ ——— | SEND-DATA-SEGMENT | e 6.7 | SEND-DISCONNECT-COMPLETE | 6.7 ee e | SEND-DISCONNECT-INITIATE | SEND-INTERRUPT | —————— b | ee e, 6.7 e | e e e — e 6.6.2 | o —— e —+ 6.6.1 I + 6.6.1 | e e 6.7 + 6.6.2 | -e Tt b+ | SEND-INTERRUPT-REQUEST e | 6.7 | e 6.6.2 | e e e + SEND-NO-LINK o | | e e e SEND-NO-RESOURCES 6.7 e | e e 6.6.3 I e e+ 6.7 6.6.3 I R it e -+ | SEND-OTHER-DATA-ACK | 6.7 o- | SEND-SMALL-MESSAGE N | 6.7 6.6.2 | + 6.7 | e t—————— e — e e e + | SET-SWITCH-AND-FLAG | 6.4.2 6.4.2 | e e e e e e e e + | SPECULATE-NUMBER | 6.5 6.4.2 | e e e e + | STORE-SEGMENT | 6.5 6.4.2 I e-e e e e | TIMEOUT I | ROUTING-TRANSMIT 6.6.2 + 6.6.1, 2 I +—————¥-———-" ——————————————————————— +— — — —r e, e, ——— + - 3.3 e ————————— e | AY UPDATE-DELAY e iR Ny S RS SR WD GENEy M SE RS G ] D CEL S N TN GEp NN IR A S GHAE G GEMN SN GH GhNE D G e— + S AELG SRR 6.4.2 GG GRS GMENR SRS GhEN WAL G MIEE D AN SEmh SullE GLER NS GLw Y. 6.7 I e+ 6.4.1, 2 I Page 77 | Detailed Functional Model Receive Processes 6.4 This section contains algorithms for implementing | processes: the three o Connect/Disconnect Receive Process (Section 6.4.1) o Data Receive Process (Section 6.4.2) o Reserved Receive Process (Section 6.4.3) receive 6.4.1 Connect/Disconnect Receive Processes - These processes receive messages from the receive dispatcher module. The message variables below refer to the information content of message fields as returned from the receive dispatcher module. There is one connect/disconnect | | receive process for each Session Control port. Loop This process loops forever. Oncase (received message type) When this process receives a message, 4 statement. execute the case appropriate | Case (Connect Acknowledgment) If this message is received when the link is in the "CI" state, then observe the round trip delay (Section 7.3). This value 1s equal to the current time of day minus the time the Connect Initiate message Routine This latter time 1is kept 1in DELAYstr tim. was sent. variable the updates UPDATE-DELAY makes this calculation and NODEdelay. g | | 1f (STATE = "CI") then STATE <-- "CD" Call UPDATE-DELAY Endif Case (Connect Initiate or Retransmitted Connect Initiate) A Connect Initiate message may contain any value in the INFO field. the SERVICES field must contain "none,” "segment" or However, connect/disconnect the Setting FLAGbuf true causes "message". transmit process to send a Connect Acknowledgment message. Detailed Functional Model If (STATE = If "O") : | Page 78 then (SERVICES = "none," "segment," or "message") then buffer whose descriptor is in BUFcon <-- DATA-CTL NODE <-- node from Routing location whose address is in BUFsrc <-- NODE ADDRrem - <-- SRCADDR FLOWrem typ <-- VERSION <-- INFO SIZEseg <-- min | FLAGbuf STATE If SERVICES <-- <-- (NODE of buffer true (SEGSIZE, minus the size of a maximum NSP large transmit header size) "CR" = NSPself) CIRCUIT <-NEXTHOP <-Else CIRCUIT Endif <-- then CIRCUIT received NEXTHOP received from from Routing Routing | N "unspecified" | Endif Elseif Elseif (STATE (STATE "CR", "CC", or "DR") then FLAGbuf <-"RUN", "CD", or "DI") then discard. was a duplicate. N Message true Case ("returned to Connect Initiate) sender" Connect In1t1ate or Retransmitted If (STATE = "CI") then STATE <-- "NC" Else discard | Detailed Functional Model Case . Pagé 79 (Connect Confirm) The testing of INFO and SERVICES is the same for a Connect Confirm message as for a Connect Initiate message. Setting the variable FLOWloc int to "accept" informs the interface routines that there 1s accept data available. Since the "RUN" state can be entered, start the inactivity timer (Section 7.4). Call UPDATE-DELAY for the same reasons as when a Connect Acknowledgment message 1s received. If (SERVICES If "none," (STATE "CI" ADDRrem - "segment," or "message") or "CD") <-FLOWrem typ SRCADDR VERSION <-- INFO <-- then <-- DATA-CTL | size of a large transmit TIMERinact <-- TIME + NSPinact If (STATE = "CI") STATE <-Endif If (STATE = "RUN" "RUN") FLAGdat ack Endif then SERVICES SIZEseg <-- min of (SEGSIZE, < buffer -13) BUFacc | tim then Call UPDATE-DELAY then <-- true Endif Case (Disconnect Initiate) In all cases below, setting FLAGbuf true causes the connect/disconnect transmit process to send a Disconnect Complete message. If (STATE = "CI" or "CD") then A Disconnect Initiate message received in either of these indicates a rejection of message. ‘ ADDRrem <-- If (STATE = Elself "CI") BUFrcv BUFrcv <-- -REASON. <-- DATA-CTL then Call UPDATE-DELAY <-- "RJ" (STATE = - SRCADDR first two bytes of remaining bytes of FLAGbuf <-- true STATE two .states a previously transmitted Connect Initiate "RJ") then A Disconnect Initiate message received in this state 1s assumed to be a duplicate caused by the retransmission of the message that originally caused the transition to the FLAGbuf Elseif <-- (STATE = true "RUN") A Disconnect Initiate message disconnect of a running link. "RJ" state. in this then received | state indicates a Detailed Functional Model | first two bytes of BUFrcv remaining bytes of BUFrcv FLAGbuf STATE <-- <-- <-<-- Page 80 REASON DATA-CTL true "DN" DELAYstr tim <-- ( stop timer TIMERdat stop timer TIMERoth Elseif (STATE = "DIC" or "DI") then A Disconnect Initiate message received in either of these states is assumed to be a result of a disconnect collision. In the case of the "DIC" state, this message may have been delayed in Routing until after the reception of the Disconnect Complete message that caused the transition to the "DIC" state. In the case of the "DI" state, there has Dbeen a crossing of Disconnect Initiate messages in Routing. In either case, the response is the same. FLAGbuf STATE <-- <-- true "DIC" DELAYstr tim <-- 0 ~ Stop timer TIMERcon Elseif (STATE = "DN") then A Disconnect Initiate message received in this state is a duplicate caused by the retransmission of the originally caused the transition to the "DN" state. FLAGbuf Endif Case <-- assumed to be message that - true | - (No Resources) I If (STATE = STATE Call Endif Case <-- "CI") then "NR" UPDATE-DELAY » (Disconnect Complete) Stopping timer TIMERcon prevents the Initiate message after a timeout. If (STATE = "DR" or "DI") stop timer TIMERcon stop timer TIMERdat stop timer TIMERoth Call UPDATE-DELAY Endif : | If If Case Stopping (STATE = (STATE = "DR") "DI") retransmission then | then STATE <-then STATE <-- "DRC" "DIC" (No Link) the timers prevents any retransmissions. of a Disconnect Detailed Functional Model If (STATE = "CC," | "RUN," stop timer TIMERcon stop timer TIMERdat ~ stop timer TIMERoth STATE <-- "CN" Endif Case "DR" or | "DI") - | Page 81 then (Disconnect Confirm) This case is included only for compatibility with version 3.1. This case occurs when a 3.1 system sends thils message rather than a Disconnect Initiate message for a Session Control rejection of a Connect Initiate message. It also occurs when an NSP version 3.1 system receives a message 1n error. | If (STATE = "CI") first two bytes STATE <-- "RJ" then of | BUFrcv <-| CALL UPDATE_DELAY | Elseif (STATE = "CC" or STATE = stop timer TIMERcon stop timer TIMERdat stop timer TIMERoth STATE <-- "CN" Endif REASON - . "RUN") then Endcase Endloop 6.4.2 Data Receive Processes - These processes receive messages from the receive dispatcher module. The message variables below refer to the information content of message fields as returned from the receive dispatcher module. There 1is one Session Control port data receive process for each Session Control port. | - Loop This If process loops [(STATE = or forever. "CC" or "RUN") (STATE = "DI" and NUMhigh < > ACKrcv_dat)] then This process only runs for ports in the "CC," "RUN," or "DI" states. It runs for ports in the "CC" state to receive any data type message ) as defined by the case statements since the reception of these message types will cause a transition to the "RUN" state. It runs for ports in the "RUN" state to receive normal data, interrupts, Link Service ‘messages, and acknowledgments. It runs for ports in the "DI" state to receive data while there is outstanding, unacknowledged, transmitted data. This latter case is true when NUMhigh < > ACKrcv_dat. Detailed Functional If Model (FLOWloc _dat FLOWloc dat contains retransmitted in 0) the a - Request message can value to be sent in Call = | value, be sent. the next if any, currently being The Data routine Request If it is If the (returned value < sent, ACKxmt_dat Data returns the "false") to a pfeviously_ either a commit - COMMIT -NUMBER returned number or a new Data returned value received Data Segment that has been committed buffer or a Session Control receive buffer. If transmitted zero, The routine COMMIT-NUMBER returns the highest number of Call 82 SPECULATE-NUMBER message. SPECULATE—NUMBER.(low—overhead = <-- Page then Data Request message. FLOWloc _dat Endif | number Segment FLAGxmt_ack or true Acknowledgment transmitted. dat) then is different a new acknowledgment the data then contains > ACKxmt Data from acknowledgment Acknowledgment causes the message 1f data a sent. acknowledgment The sent variable transmitted. Setting process Segment | last be number to be message transmit Data the must message to does send not in a need any Data to be | FLAGdat ack <-- true ACKxmt dat -~ Endif Endif If (message is (STATE = If <-- returned value received) then "CC" and message type = "Data Acknowledgment" "Interrupt", "Data Request", "Interrupt or "Other—Data—Acknowledgment") then Request" If thlS message 1s taking the port out of the "CC" state, then make an estimate of the round trip delay to the remote NSP (Section 7.3). Since the port just entered the "RUN" state, start the 1inactivity timer (Section 7.4). STATE <-- "RUN" FLAGbuf <-- false Call UPDATE-DELAY stop timer CONFIDENCE TIMERcon <-- - COUNTretrans Endif Receiving any message true <-- 0 restarts the inactivity timer. TIMERinact <-- TIME + NSPinact tim Oncase (received message type) When a message 1s received, execute the appropriate case statement. Detailed Functional Model ) | | Page 83 Case (Data Segment) Process the acknowledgment field of a received independently from the rest of the message. If (ACKNUM field present) Data Segment | message then Call PROCESS- DATA ACK Endif If (ACKOTH field present) then Call PROCESS- OTHER DATA-ACK Endif If | (SEGNUM > ACKxmt dat) then / Call STORE-SEGMENT with DATA, EOM (from MSGFLG), and SEGNUM | Else > Endif h FLAGdat ack Case <-- true (Interrupt) Process the acknowledgment independently from the rest field of a recelved of the message. Interrupt message | If (ACKNUM field present) then Call PROCESS-OTHER-DATA-ACK 0 \> | Endif If (ACKDAT field present) then Call PROCESS-DATA-ACK Endif If (SEGNUM = This model of time NSP ACKxmt oth can (Section 7.2). only buffer | + 1 | and FLOWloc int = one received "empty") Interrupt 1Its number must be one greater message then at a than the number of the 1last other-data message accepted (contained in variable ACKxmt oth). When the variable FLOWloc int contains "empty," there is “) room in buffer BUFrcv. Setting FLAGoth ack true causes the data / transmit process to acknowledge this Interrupt message. BUFrcv FLOWloc ACKxmt FLAGoth <-- DATA int <-oth <-- "interrupt" ACKxmt _oth ack <-- true FLAGothack Endif <-- true Elseif (SEGNUM <= ACKxmt oth) + 1 | then Detailed Functional Model Case | | Page 84 (Data Request) Process the acknowledgment field of a received independently from the rest of Data the message. 1f «(ACKNUM field present) Request message then Call PROCESS- OTHER DATA-ACK Endif If (ACKDAT field present) ‘Call PROCESS-DATA-ACK Endif If then (SEGNUM = ACKxmt oth + 1) then - This model of NSP processes only one other-data message at a time (Section 7.2). It processes each one to completion. The number of the one it wants to process next is one greater than the one that 1t has most recently accepted and processed (and whose number 1is contained in ACKxmt oth). | Basically, the algorithm for processing a Data Request message is check its validity. (1) (3) (4) it if it is invalid. Store the data "send/do not send" o (2) Discard SW. ~ If it switch in variable | Increment the channel. is valid, . acknowledgment number for to FLOWrem - the Set the flag FLAGoth ack to true to force the | other-data data transmit process to acknowledge the receipt of this message. (Use the ~ routine SET-SWITCH-AND-FLAG.) Update the variable FLOWrem dat, 1f necessary, by addlng the count from the Data Requestmessage to it. If (FLOWremtyp = Call Elseif "none") then SET-SWITCH-AND-FLAG (FLOWrem_typ = "segment") then The following two statements define the validity check for a received Data Request message from a remote NSP that receives with "segment” flow control. | If ” (-128 <= FCVAL <= 127) then If (-128 <= FLOWrem dat + FCVAL <= - FLOWrem _dat Call <-- FLOWrem dat + | 127) then FCVAL SET-SWITCH-AND-FLAG Endif Endif Elseif (FLOWrem typ = "session-control-message") then The following two statements define the validity check for a received Data Request message from a remote NSP that receives with "session-cortrol message" flow control. If (0 <= FCVAL <= 127) then | - Detailed Functional Model Page 85 If (0 < FLOWrem dat + FCVAL <= 127) then FLOWremdat <-- FLOWrem_dat + FCVAL Call SET-SWITCH-AND- FLAG Endif Endif Endif | | Elseif (SEGNUM <= ACKxmt oth) then FLAG oth ack <-| Endif true | Case (Interrupt Request) Process the acknowledgment field of a received message independently from the rest of the message. Interrupt Request If (ACKNUM field present) then " Call PROCESS-OTHER-DATA-ACK Endif then If (ACKDAT field present) If (SEGNUM = ACKxmt oth + 1) then Call PROCESS-DATA- ACK Endif » The message number check for received Interrupt Request messages 1S the same as for received Interrupt and Data Request messages. The received following statement defines the validity check for " a Interrupt | Request message. If (FCVAL >= 0 and 0 <= FLOWrem int + FCVAL <= 127) then FLOWrem int <-- FLOWrem 1int + FCVAL ACKxmt oth <-- ACKxmt _ oth + 1 | FLAGoth ack <-- true Endif Elseif (SEGNUM <= ACKxmt oth) then FLAG oth ack Endif <-- true Case (Data Acknowledgment) Call PROCESS-DATA-ACK If (ACKOTH field present) | then CALL PROCESS-OTHER-DATA-ACK Endif Case (Non-Data Acknowledgment) Call PROCESS-OTHER-DATA-ACK If (ACKDAT field present) Call PROCESS-DATA-ACK Endif then Endcase Endif Endloop The data receive proceSses call the following routines: Detailed Functional Model | | Page 86 PROCESS-DATA-ACK: In the following contents of segment, Data If routine, the the fields of Acknowledgment (ACKrcv_dat Message or NUMsent) (NUMBER is processed when it 'NUMhigh, elther then sub-channel it 1is case, ignore TRYHARD <-- CONFIDENCE If a it is (1) NM(ACKrcv_dat + 1, message in case QUAL="nak" less than that was never wupdates the flow transmission. or equal sent. to In | NUMBER) 1is the number of "end- segments 1n (ACKrcv_dat + 1) to NUMBER, and (NUMBER - ACKrcv_dat) is the the range | number | » | of data segments range. (FLOWrem typ = "segment") then . | FLOWrem dat <-- FLOWrem dat - (NUMBER FLOWremdat <-- FLOWremdat - NM(ACKrcv _dat (FLOWremtyp = Endif If ((QUAL = "nak" <= NUMBER) then variable Note that there are | data same control data here: of-message” Elseif Message. 0 constructions If the data true <-- parallel the are received not acknowledgment. The following "If" Dblock (FLOWrem dat) that allows in QUAL false <-- COUNTretrans (2) the to ACKrcv dat, then this 1mp11c1tly processed before is equal to ACKrcv _dat nak"). acknowledging the and from then than or equal exp11c1tly or QUAL="cross NUMBER names Data Request NUMBER 1s not greater acknowledgment has been or | same <= NUMBER <= If variables the "message") or QUAL = | | - ACKrcv _dat) + "cross sub-channel 1, NUMBER) nak") or NUMdat NUMdat <-- NUMBER + 1 Endif If - either this acknowledgment was a of the next Data Segment number (contained in NUMdat) acknowledged, transmit to the then is 1less set the number just than number of negative acknowledgment message that was going to or equal the next acknowledged plus to Data the or the be sent number Segment just message to only if one. ACKrcv _dat <-- NUMBER The following code there 1s remaining restarts the data retransmission unacknowledged, transmitted data. stop timer TIMERdat If (ACKrcv dat < NUMsent) then TIMERdat <-- TIME + (NODEdelay * NSPdelay) Endif If (DELAYmsg num <= ACKrcv _dat and DELAYstr tim < timer | > Q) then | Detailed Functional Model ~ Page 87 is being tim is non-zero, then a Data Segment message If DELAYstr Section (see estimate delay trip round the to wupdate an timed for 1is number (whose timed being message Segment Data the If 7.3). calculate then acknowledged, been just has num) DELAYmsg in contained the round trip delay for that message. Call UPDATE-DELAY | Endif Endif PROCESS-OTHER-DATA-ACK: the are the variables NUMBER and QUAL In the following routine, Interrupt, received the from name same the of fields the of contents Data Request, Interrupt Request, Other-Data-Acknowledgment message, Or Data If Segment message. and (QUAL="nak" or QUAL="cross sub-channel (NUMBER=NUMoth-1 nak")) then OTHERstate <-- Endif If "timeout"” o | then (NUMBER = NUMoth and OTHERstate < > "ready") outstanding other-data single, the NUMoth contains the number of OTHERstate is equal to either "sent" any (Section 7.2). 1if message, 1is such an 1if there "ready") to equal not or "timeout" (i.e., stop the 1is acknowledged, the message If outstanding message. retransmission timer for the message. | stop timer TIMERoth TRYHARD <-- false CONFIDENCE <-- true COUNTretrans <-- 0 a timeout. Handle a negative acknowledgment in the same manner as If the message was positively acknowledged, then send a new other-data message. Setting OTHERstate to "ready" allows the data transmit process to send another other-data message. NUMoth contains the number of the next other-data message that will be transmitted. OTHERstate <-- "ready" NUMoth <-- NUMoth + 1 If (OTHERtyp = "interrupt") then OTHERtyp contains the type of other-data message that was sent and has If it was an Interrupt message, then a new acknowledged. Dbeen just Indicate this condition by setting one may be buffered into BUFxmt. FLAGint avail to false. Decrement the remote interrupt request count. Detailed Functional Model | | FLAGint-avail <-- false FLOWrem int <-- FLOWrem int Elseif (OTHERtyp = "data - | 3 - Page 88 1 request") then If a Data Request message has just been acknowledged, then clear the count value contained in 1it, allowing the data receive process to obtain a new speculate number that can be sent 1n the next Data Request message. FLOWloc_dat <-0 Endif Endif The acknowledgment any of an Interrupt Request message does explicit handling. This 1s because a additional Request message cannot interrupt be sent data whose request until was session just control acknowledged has not require new Interrupt received (Section the 7.2). SET-SWITCH-AND-FLAG: This routine stores the data "send/do not send" value from a received Data Request message 1in FLOWrem sw and sets FLAGoth ack true to indicate that an other data acknowledgment is requ1red | FLOWrem sw <-- FC ACKxmt <-- ACKxmt _oth oth FLAGoth Both ack the data processes call MOD + 1 <-- true receive the processes following and the connect/disconnect receive routine: UPDATE-DELAY: This routine updates the NODEdelay Call the routine temporary variable. If (DELAYstr with tim <> a 0)then If (NODEdelay = 0)then -~ NODEdelay Else temp <-- TIME in a node descriptor. this code, "temp" | —\DELAYstr tim | <-- TIME - DELAYStr_tim temp <-- temp - NODEdelay NODEdelay <-- NODEdelay + Endif DELAYstr tim <-- 0 Endif variable port argument. In o | | (temp | » / (NSPweight " + 1)) is a ) " Page 89 | - Detailed Functional Model all handle There 1s one processes Processes - These map onto a reserved port. 6.4.3 Reserved Receive received messages that reserved port process for each reserved port. Loop This process loops forever. If (a message is received) then If (the message 1s a Connect Initiate) then - process ~ \> to send a No Resources message. port reserved the Setting MSGtyp to "no resources" causes transmit NODE <-- source node address ADDRrem <-- SRCADDR MSGtyp <-- "no resources” CIRCUIT <-- CIRCUIT received from Routing NEXTHOP <-- NEXTHOP recieved from Routing Elseif (the.message«is'a Connect Confirm, Disconnect Initiate - Data Segment, Request) ) t> then Interrupt, Data Request, or Interrupt | Setting MSTtyp to "no-link" causes the reserved port transmit | to send a No-Link message. NODE <-- source node address ADDRrem <-- SRCADDR ADDRtmp <-- DSTADDR MSGtyp <-- | process \ | "no-link" CIRCUIT <-- circuit received from Routing NEXTHOP <-- nexthop received from Routing \ \> Endif Endloop 6.5 . | | | Endif Reassembly Module The reassembly module has two functions. First, ‘it maps data from Data Segment messages into Session Control buffers according to the Because rules implied by the Session Control interface description. e interfac the from module this to passed is of this, the DATA-RCV call This pools. buffer commit and cache the routines. Second, it manages function includes flow control policy establishment. That is, this module is aware of the amount of buffering available via Session Control receive buffers, cache buffers, and commit buffers. It uses > ’ this information to produce normal data request counts to be Data Request control messages. mechanism transmission). (in sent 1in The data transmit processes execute the flow other words, the Data Request - message Detailed Functional Model | | | - Page 90 The detailed description of the operation of this module is beyond the scope of this specification. However, it must operate with the following restriction with respect to the management of the cache buffer pool. It must not discard the data from a received Data Segment message for a given Session Control port if there a higher numbered Data Segment message in the cache Appendix C contains an example of this module. The data Segment receive processes messages that this module. corresponding may The data be be changes received receive processes ports. In requesting data gquaranteed obtain should storage. the most for store general which Therefore, in for a 1is When the transmit call a represents flow of a to "SPECULATE-NUMBER" Data-Request message. tradeoff between arriving messages messages and their Data-Request message piggyback to a data make the The of cost acknowledgments. The on whether acknowledgment. intelligent policy port port. of by Data calling values 1in the reassembly module necessarily any segments at from any given that the time 1is port. a non-zero value NSP will decision to send this message the depends data same returns benefit and the of is the number not number reassembly module wants to receive for a port referred to as the "speculate number" for the the given these case, there the for precise of control sending cost the In order for decisions a of Data-Request the over sending a message can reassembly parameter the Data-request is module defined, low-overhead, which is used to inform the reassembly module whether sending a Data-Request message at this time will be inexpensive. The data receive processes obtain the speculate number for a port Dby issuing the following call: . B SPECULATE-NUMBER port id: (port id, low-overhead return: low-overhead flag the current number of data segments would like to data receive processes periodically number committed to either a commit or following the acknowledgment The receive call: - COMMIT-NUMBER | data number to processes obtain session be obtain sent this this module the highest segment control buffer. This to the remote NSP number by 1ssuing the | (port id; return) port id: a port identifier return: the The data that receive, The value is module. return) a port identifier low-overhead: - ; highest segment receive processes attempt Segment messages buffer by issuing number:committed to put into a cache, commit, the following call: data or from session ~ received control Data receive Page 91 . | Detailed Functional Model STORE-SEGMENT (port id, data, eom, number) ,) identifier a port id: port data ftom a Data Segment message data: eom: - one of: number : o data is’end—of—message o data 1s not end—of—message the segment number of the Data Segment message i> 6.6 Transmit Processes This section contains algorithms for implementing'the following: o Connect/disconnect transmit process (Section 6.6.1) o Data transmit processes (Section 6.6.2) L o Reserved transmit processes (Section 6.6.3) 6.6.1 _ ) Connect/Disconnect Transmit Processes - These processes Connect Acknowledgment, Connect Confirm, Initiate, transmit Connect Disconnect Initiate, and Disconnect Complete messages. There 1is one session control port connect/disconnect transmit process for each Session Control port. Loop This process loops forever. 1In general if FLAGbuf 1is true a or disconnect message requ1res transmission. If (STATE = "DI" and FLAGbuf false and NUMhigh = ACKrcv_dat and TIMERcon not running) connect | then This test causes this process to attempt to send a Disconnect Initiate message (1) ~ (2) — (3) ) . only 1f: Se551on Control requested a disconnection there unacknowledged are no outstandlng, messages (NUMhigh = ACKrcv_dat); (i.e;, and Data STATE = Segment a previously transmitted Dlsconnect Initiate message, if any, is not being timed out (TIMERcon not running). Detailed Functional Model FLAGbuf <-- true DELAYstr tim <-"Endif If | - Page 92 TIMEA (timer TIMERcon explred and STATE then If the retransmission timer has retransmission count and attempts message. = "CI", explred, to send "CC", "DI", NSP | | increments a connect | or "DR") the or disconnect f FLAGbuf <-- true Call Endif TIMEOUT When FLAGbuf transmission. been 1is requested true, a connect or disconnect message requires When FLAGcon alloc 1s true, permission to transmit has from the transmit allocation module. These two variables act together to form a state variable with 4 states. Conditions that require a message to be sent can change dynamically. This process has to request permission to transmit but has to take back a request it previously made if it no longer must send a message. Therefore, interpret these variables as follows: FLAGbuf true, FLAGbuf FLAGbuf true, FLAGcon alloc true: attempt message transmission. false, FLAGcon alloc true: take back permission request FLAGbuf false, If FLAGcon_alloc FLAGcon “alloc (FLAGbuf true Call ALLOCATE FLAGcon Elseif alloc (FLAGbuf If false° and FLAGcon <-- request permission alloc false) send. then true false (FLAGbuf true and FLAGcon_alloc true) (CHECK-ALLOCATE) to do nothing. false and FLAGcon alloc true) Call DEALLOCATE - FLAGcon alloc <-- Elseif false: then then then CHECK-ALLOCATE is a Boolean function in the transmit allocation module that returns The granted. If true state 1f of and only if permission to transmit has been port determines the message to be sent. the (STATE = "CI") DELAYstr tim Call - Endif then <-- TIME SEND —~CONNECT-INITIATE with data addressed (STATE = "DIC," “RJ, or "DN") then Call SEND-DISCONNECT-COMPLETE Endif If (STATE = "DR" or "DI") then If (DELAYstr_tim = 0) then DELAYstr tim <-Call SEND-DISCONNECT-INITIATE Endif in If TIME BUFcon Detailed Functional Model If If Page 93 (STATE "CR") then Call SEND-CONNECTACKNOWLEDGMENT "CC") then (STATE If (DELAYstr tim = 0) then DELAYstr tim <-- TIME " call SEND-CONNECT-CONFIRM Endif If the transmission was successful, this process must take back 1ts request for permission to transmit (to allow another process to Dbe given an equal chance to transmit). If (success) then Call DEALLOCATE FLAGcon alloc <-FLAGbuf <-- false If false (STATE = "CC," "DI," or "DR") then If not (STATE = "CC" and VERSION = 3.1) If (NODEdelay = then 0) then This means that there is no current round trip delay estimate remote node. The 5 seconds 1is a suggested value; it to the 1s not mandatory. .~ TIMERcon <-- TIME + 5 seconds Else An estimate does exist. TIMERcon <-- TIME + Endif Endif Endif If | (STATE = "CC" (NODEdelay * NSPdelay) and VERSION = 3.1) then STATE <-- "RUN" stop timer TIMERcon CONFIDENCE <--true COUNTretrans <-- 0 TIMERinact <-- TIME + NSPinact_tim Endif Else If transmission is unsuccessful, calling REALLOCATE will give other ports a chance to transmit w1thout removing this port for contention This causes This process leaves FLAGbuf true. for Routing resources. the process to request permission to transmit again. Call Endif Endif Endif Endloop REALLOCATE Detailed Functional Model 6.6.2 Data Transmit | Processes - These processes Interrupt, Data Other-Data Acknowledgment process each for Request, Session Interrupt Request, messages. Control send Data There ‘Page 1s Data Segment, Acknowledgment, one data port. 94 and transmit | Loop This process loops forewver. The data receive process for | | the highest number of an acknowledged Data Segment message in ACKrcv_dat. This process informs the segmentation module of this value by calling ACK-SESSION-CONTROL. It obtains the highest segment number available from the segmentation. routines v1a function LAST. Call If If port puts ACK-SESSION-CONTROL with ACKrcv dat (STATE = [STATE = "RUN") then NUMhigh <-- LAST | "RUN" or (STATE = "DI" and NUMhigh < then With the - the exception of the processing | = above, this process does for a port that is not in either the with outstanding, unacknowledged Data ACKrcv_dat). If If the Data (timer TIMERdat data segment message acknowledged by timer If transmit the remote <-- ACKrcv dat TIMEOUT the state at most one nothing the "DI" (NUMhigh state < > then 1s one the number greater NSP, than of the the next highest o 1 | the other-data of + (timer TIMERoth expired) If in model explres, to NUMdat Call Endif "RUN" state or in Segment messages expired) then retransmission Segment | ACKrcv dat)] > retransmission variable then timer explres, OTHERstate. outstanding, This unacknowledged NSP. is record possible other the since data expiration there message in can be this te "timeout" OTHERsta<-Call Endif TIMEOUT The tests below are completely analogous to the tests performed in a connect/disconnect transmit process. The only difference is that the need to transmit a connect or disconnect message could be determined by examining a single flag (FLAGbuf). But the need to send a data type message is determined by a complicated Boolean function of variables in the port. The Boolean function MESSAGE-TO-BE-SENT returns true 1f a message requires transmission and is used below in a manner analogous If to FLAGbuf in a connect/disconnect (MESSAGE-TO-BE-SENT and FLAGdat Call ALLOCATE FLAGdat alloc <-- true transmit alloc false) then process. Detailed Functional Model Elseif . | | Page (not MESSAGE-TO-BE-SENT and FLAGdat_alloc true) Call DEALLOCATE FLAGdat alloc <-- 95 then false Elseif (MESSAGE-TO-BE-SENT and FLAGdat alloc true) If (CHECK-ALLOCATE) then then If permission to transmit has been granted, then determine the type of message to transmit variables in the port. by testing a The order collection of Boolean functions of in which these functions are tested is important and is part of the specification. That is, 1f more than one type of data message may be transmitted, the type that must be transmitted first 1is important. Also, 1f transmission 1s unsuccessful, call REALLOCATE for the same reasons as 1n the connect/disconnect transmit processes. If (INTERRUPT-TO-BE-SENT) then Call SEND-INTERRUPT If (success) The routine ‘successful Request then OTHER-DATA-SENT transmission of performs processing Interrupt, messages. Data common Request, and to the Interrupt | OTHERtyp <-- "interrupt" Call Else Call Endif OTHER-DATA-SENT | REALLOCATE Elseif (INT-REQUEST-TO-BE SENT) then - Call SEND-INTERRUPT-REQUEST If (success) then | OTHERtyp <-- "interrupt request" Setting FLOWloc int to "empty" allows data from a received Interrupt message g to be saved 1n BUFrcv by the data receive process. FLOWloc int <-- "empty" Call OTHER-DATA-SENT Else Call Endif Elseif (DATA-REQUEST-TO-BE-SENT) Call If REALLOCATE (success) OTHERtyp then <-- One reason that a Data Request inactivity inactivity timer has timer is then SEND-DATA-REQUEST "data request” message expired (Section restarted. may 7.4). be sent 1If this 1is is the | that case, | the the Detailed Functional Model | - Page 96 If (TIMERinact expired) then TIMERinact <-- TIME + NSPinact tim Endif Call OTHER-DATA-SENT If (VERS.ON = "4.0") then FLAGdat ack <-- false | Endif Else Call Endif Elseif | REALLOCATE (DATA-TO-BE-SENT) then If there is no Data Segment currently being timed for an update to the estimated round time of day. trip delay Also If - save (DELAYstr tim = the number of (DELAYstr tim =0) DELAYstr_tim <-DELAYmsg num <-Endif 0), then save the current the Data Segment being timed. then TIME NUMdat o Call GET-SEGMENT with segment number NUMdat returned values The routine DATA-ACK-SENT performs processing common to the successful transmission of Data Segment and Data Acknowledgment messages. If the Data Segment just sent had a number one greater than the highest number acknowledged by the remote NSP, then start the retransmission timer. The value for this timer 1s a constant times the current estimated round trip delay (Section 7.3). | If (NUMdat = ACKrcv dat+1l) then ~ TIMERdat <-- TIME + (NODEdelay * NSPdelay) Endif Increment the number of the (NUMdat) . If next Data (NUMdat > NUMsent) NUMsent = If . <-- NUMdat + DATA-ACK-SENT (VERSION = then false (OTHER-DATA-ACK-TO-BE-SENT) Call If then 1 "4.0") FLAGoth ack <-Endif Else Call REALLOCATE Endif | Elseif | NUMdat Endif NUMdat Call Segment SEND-OTHER-DATA-ACK (success) then then to be transmitted N Call SEND-DATA-SEGMENT with If (success) then Detailed Functional Model ) - The routine | OTHER-ACK-SENT performs » processing Call If (VERSION = If "4.0") \ If > then SEND-DATA-REQUEST (success) then "data request" that a Data Request message may timer has expired (Section 7.4). timer is restarted If (TIMERinact TIMER1nact Endif | | Call Else | | Call Endif Else Call If ) "true") then OTHERtyp <-- <-- expired) TIME + be sent is that 1If this is the case, then NSP1nact OTHER-DATA-SENT REALLOCATE | SEND-DATA-ACK (success) then Call Else DATA ACK —-SENT Call Endif REALLOCATE Endif ) the then (DATA-REQUEST-TO-BE-SENT) Call \> to Request, OTHER—ACK-SENT Call SPECULATE-NUMBER (low- overhead= FLOWloc dat <-- returned value One reason inactivity inactivity - Page 97 Else Call REALLOCATE . Endif Elseif (DATA-ACK-TO-BE- SENT) . common successful transmission of Interrupt, Data Request, ‘Interrupt and Other-Data Acknowledgment messages. g ) | Else Call If SEND-DATA-ACK (success) Call Else then DATA-ACK-SENT Call Endif Endif Endif Endif Endif Endloop REALLOCATE ‘The are following routines | used by these processes. tim the the Detailed Functional Model Page 98 TIMEOUT : COUNTretrans If If <—— COUNTretrans (COUNTretrans > NSPretrans) (COUNTretrans > NSPtryhard) + 1 then CONFIDENCE <-- false then TRYHARD <-- true MESSAGE-TO-BE-SENT: If (INTERRUPT-TO-BE-SENT) then return true Elseif (INT-REQUEST-TO-BE-SENT) then return true Elseif (DATA-REQUEST-TO-BE-SENT) then return true Elseif (DATA-TO-BE-SENT) then return true Elseif (OTHER-DATA-ACK-TO-BE-SENT) then return true Elseif (DATA-ACK-TO-BE-SENT) then return true | Else return false Endif INTERRUPT-TO-BE-SENT: To send an (1) interrupt message, either: Interrupt data must be available (2) The have (3) There must be no outstand1ng, unacknowledged Interrupt - Data Request, or Interrupt Request message (OTHERstate = "ready"). true), remote NSP must (FLOWrem int > 0), and | or (1) (2) in | BUFxmt requested ~ | the (FLAGint avail 1interrupt data - / > - There must be an outstanding, unacknowledged Interrupt " message (OTHERtyp = "interrupt"), and The message must have timed out (OTHERstate = "timeout"). | If (FLAGint avail true and FLOWrem int > 0 and OTHERstate = "ready") then return Elseif true > - (OTHERstate = "timeout" and OTHERtyp = "interrupt") return Else return Endif ) then true | false b INT-REQUEST-TO-BE-SENT: To send an Interrupt Request message, (1) (2) or The buffer BUFrcv must be message not and either: empty and an previously sent (FLOWloc int Interrupt = "send - Request request”); There must be no outstanding, unacknowledged Interrupt, Request, or Interrupt Request message (OTHERstate = Data - "ready"), u ) Detailed Functional Model ) ’ be | (1) There must (2) The message must have timed Request message If (FLOWloc_int return Elseif = an outstanding, (OTHERtyp = "send request" true | (OTHERstate request,” = | | Page unacknowledged "interrupt out and OTHERstate = . Interrupt request"); (OTHERstate = 99 and "timeout"). "ready") then o "timeout" and OTHERtyp = "interrupt then return true Else return Endif false DATA-REQUEST-TO-BE-SENT: To send a Data Request message, | either: (1) There must be an unsent request count (FLOWloc dat > 0); (2) There must be no outstanding, unacknowledged Interrupt, Data and Request, or Interrupt Request message (OTHERstate or - ) = "ready"). | (1) \> < ‘The activity timer must have expired (TIMERact expired); (2) There must be no outstanding, Request, or or Interrupt Request message ~ (1) unacknowledged | Interrupt, (OTHERstate = , The message must have timed out If (FLOWloc dat < return . Elseif (TIMERinact return Elself true > (OTHERstate = 0 and OTHERstate= "ready") expired and OTHERstate = Data Request "timeout"). then "ready") then true (OTHERstate = "timeout" and OTHERtyp = "data request”) return "ready"). | There must be an outstanding, unacknowledged message (OTHERtyp = "data request"); and (2) and Data | then true Else "return false Endif OTHER-DATA-ACK-TO-BE-SENT: return FLAGCth_ack DATA-TO-BE-SENT: If (NUMdat <= NUMhigh and FLOWrem sw = "send") then To consider sending the next Data Segment to be transmitted (the one with number NUMdat), the Data Segment must be available from Session Control (NUMdat <= NUMhigh) and the remote NSP must be allowing data to be sent (FLOWrem sw = "send"). Note that the next Data Segment Detailed Functional Model | message to be sent is always one that 1s Page'lOO wunacknowledged since the that was variable NUMdat is always greater than ACKrcv_dat, although there will be no data to send if NUMdat = ACKrcv dat + 1 = NUMhigh + 1. The remaining tests depend on the type of selected by the remote NSP when the logical If (FLOWrem typ = return flow control link was established. "none") then true The two tests below are analogous. Each is testing to see 1f the number of requested elements (segments or Session Control messages) is greater than or equal to the number of elements in the range from the ‘highest acknowledged (ACKrcv _dat) to the one whose transmission is being attempted (NUMdat). | Elseif (FLOWrem typ return Elseif "segment" and NUMdat <= ACKrcv _dat + FLOWrem dat) then true (FLOWrem typ = "session-control-message" and NMTACKrcv dat + 1,NUMdat) return true Else return , <= FLOWrem dat) then | false Endif Else ~ return false Endif DATA-ACK-TO-BE-SENT: return FLAGdat_ ack OTHER-DATA-SENT: Call OTHER-ACK-SENT OTHERstate <-- "sent" TIMERoth <-- TIME + (NODEdelay * NSPdelay) OTHER-ACK-SENT: Call MESSAGE-SENT FLAGoth ack <-- false DATA-ACK-SENT: Call MESSAGE-SENT FLAGdat ack <-- false. MESSAGE SENT° This routine ascertains 1if there is more data to be sent. If so, 1t calls REALLOCATE to remain in contention for transmit resources but to free those resources for other ports. If not, it calls DEALLOCATE to free the resources and remove itself from contention. 1In the latter ‘j ~ Page 101 case, it sets FLAGdat alloc false so that an ALLOCATE request will made when there If is data to send. (MESSAGE-TO-BE-SENT) Call Else , Dbe then REALLOCATE | Call DEALLOCATE FLAGdat alloc Endif - | | Detailed Functional Model <-- false 6.6.3 Reserved Transmit Processes - The reserved transmit processes send No Resources and No-Link messages. There 1s one reserved transmit process for each reserved port. Loop ) ‘> The processing here is somewhat complicated due to the interaction with the transmit allocation module and the fact that a transmit request to Routing may fail. It is not modeled analogously to the connect/disconnect and data transmit processes because the need to transmit a given message will not disappear as with the other processes. If (MSGtyp < > "none") then Call ALLOCATE -~ Loop | Call If | \> | CHECK-ALLOCATE (success) then (MSGtyp = "no resources”") then Call SEND-NO-RESOURCES Elseif (MSGtyp = "no-1link") then If Call Endif If SEND-NO-LINK | (success) | MSGtyp <-- "none" Call DEALLOCATE Exitloop Else Call Endif Endif Endloop | Endif Endloop | REALLOCATE Detailed Functional Model 6.7 Transmit o | - Page 102 Format Module This module manages the large and small transmlt buffer pools, formats outgoing NSP messages, and sends messages to Routing. In addition, although 1t is not explicitly modeled, this module polls Routing to get Dback buffers that have been transmitted. When such a buffer is - returned, The it is immediately placed back in its pool. name call of each routine in this module describes supplies the appropriate port id. SEND-CONNECT-INITIATE (port If (a large transmit allocate If large buffer is = 0) 'MSGFLG = Each avallable) "retransmit then buffer the MSGFLG <-- Else Endif function. id): transmit (COUNTretrans its "connect | initiate" connect initiate" | | SRCADDR <-- ADDRloc SERVICES <-- INFO "version <-- SEGSIZE <-- DATA-CTL Call "segment" 4.0" NSPbuf <-- data addressed ROUTING-TRANSMIT with by BUFcon "return to CIRCUIT, nexthop If = | sender" return then success Else release large transmlt return failure | Endif buffer | - Else return Endif - failure SEND-CONNECT-ACKNOWLEDGMENT If Lgprt (a small transmit buffer allocate small MSGFLG <-DSTADDR Call Else <-- transmit is id) s available) buffer "connect acknowledgment" ADDRrem SEND-SMALL-MESSAGE return Endif fallure circuit - NEXTHOP (success) and then = Page 103 Detailed Functional Model ) SEND-NO-RESOURCES (port. id): If (a small transmit buffer is available) allocate small transmit buffer MSGFLG <-- "disconnect confirm" DSTADDR <-- then | ADDRrem SRCADDR <-- 0 REASON <-- 1 Call SEND-SMALL-MESSAGE ~ Else | return failure Endif SEND-CONNECT-CONFIRM (port id): If (a small transmit buffer is available) then \> allocate small transmit buffer MSGFLG <-- "ccnnect confirm” DSTADDR <-- ADDRrem SRCADDR <-- ADDRloc SERVICES <-- "segment" INFO <-- "version 4.0" SEGSIZE <-- NSPbuf DATA-CTL \> ) ~ <-- BUFxmt Call SEND-SMALL-MESSAGE Else return failure Endif SEND-DISCONNECT-INITIATE (port id): If (a small transmit buffer is available) then \ allocate small transmit buffer MSGFLG <-- "disconnect initiate" | DSTADDR <-- ADDRrem SRCADDR <-- ADDRIloc REASON <-- first two bytes of BUFxmt DATA-CTL <-- remaining bytes of BUFxmt ‘> Call SEND-SMALL-MESSAGE Else return Endif failure SEND-DISCONNECT-COMPLETE (port id): If (a small transmit buffer is available) allocate small transmit buffer MSGFLG <-- "disconnect confirm" DSTADDR - ) <-- ADDRrem SRCADDR <-- ADDRIloc REASON <-42 Call SEND-SMALL-MESSAGE Else return Endif | failure then Detailed Functional Model SEND-NO-LINK If (port (a small Page id): transmit buffer is available) then allocate small transmit buffer MSGFLG <-- "disconnect conflrm" DSTADDR <-- ADDRrem SRCADDR REASON Call Else <-<-- 41 SEND-SMALLMESSAGE | return Endlf fallure SEND—DATA—ACK If ADDRtmp (port id): (a small transmit buffer allocate small MSGFLG <-- DSTADDR <-- SRCADDR <-NUMBER QUAL <-- <-- transmit "data is available) then buffer acknowledgment" ADDRrem ADDRloc ACKxmt dat "ack" Call SEND SMALL-MESSAGE Else return failure Endif SEND-OTHER-DATA-ACK If (port (a small transmit allocate small MSGFLG DSTADDR SRCADDR NUMBER <-<-- <-<-- id): buffer transmit "other data ADDRrem ADDRloc ACKzxmt Oth QUAL <-- "ack" Call SEND-SMALLMESSAGE Else | return Endif fallure is available) buffer acknowledgment"” then 104 Page Detailed Functional Model L \) SEND-DATA-SEGMENT (port id, buffer descriptor, eom, If (a large transmit buffer is available) then allocate large transmlt buffer eom, bom - MSGFLG <-- "data," ADDRrem DSTADDR <-- SRCADDR <-- ADDRloc o NUMBER <-- ACKxmt dat QUAL <-- NUMBER . "ack" <-- QUAL <-- ACKxmt oth "cross sub-channel ack” SEGNUM <-- NUMdat DATA <-- data from buffer descr1ptor Call ROUTING-TRANSMIT with circuit = CIRCUIT, ‘> | nexthop = NEXTHOP and tryhard = TRYHARD If (success) return then - success Else release large transmit buffer return Endif Else return Endif i) failure failure SEND-INTERRUPT (port id): If (a small transmit buffer is available) then allocate small transmit buffer MSGFLG <-- "interrupt" DSTADDR <-- - ADDRrem SRCADDR <-- ADDRIloc NUMBER <-- ACKxmt oth QUAL <-- "ack" ) SEGNUM <-- NUMoth DATA <-- BUFxmt - -MESSAGE Call SEND- SMALL Else return failure Endif bom) : 105 Detailed Functional Model Page 106 SEND-DATA-REQUEST (port id) s If (a small transmit allocate small buffer is available) transmit buffer MSGFLG <-- "data request" DSTADDR <-- ADDRrem SRCADDR NUMBER <-<-- ADDRloc ACKxmt oth QUAL <-- "ack" NUMBER ACKxmt dat "cross sub-channel QUAL <-- <-- SEGNUM <-FC MOD <-FCVAL then | INT ack" NUMoth "send" <-- "data" FCVAL <-- FLOWloc dat Call SEND-SMALL-MESSAGE -~ Else failure return Endif ] SEND-INTERRUPT-REQUEST (port If (a small transmit buffer is available) allocate small transmit buffer MSGFLG <-- "interrupt request" DSTADDR <-- ADDRrem SRCADDR <-- ADDRloc NUMBER <-- ACKxmt oth QUAL <-- SEGNUM NUMoth "send" FCVAL INT <-- FCVAL <-- 1 Call Else then "ack" <-- FC MOD <-- "interrupt" ' SEND-SMALL-MESSAGE return Endif The id): following failure routine is used by the above routines. SEND-SMALL-MESSAGE: Call ROUTING-TRANSMIT with circuit = CIRCUIT, nexthop and If tryhard (success) return = then success Else release return "Endif TRYHARD small failure ' transmit buffer NEXTHOP | Detailed Functional Model Page 107 ) 6.8.»Segmentatiofi Module transmit from Session Control The segmentation module maps data by implied rules the to according messages Segment Data into buffers the makes module The specification. interface Control the Session data available to the data transmit processes. Because of this, the interface routines pass the DATA-XMT and XMT-POLL calls to the module. ks The detailed specification of this module is beyond the scope of specification | (Appendix B). this A data transmit process obtains a buffer descriptor for a segment of a session control this from message module by issuing the following call: j) GET-SEGMENT (port id, number; return) number : the number of the desired segment returns: a buffer descriptor for the segment, an end-of-message and a beginning-of-message indication indication, longer no will it A data transmit process informs this module that require a segment or sequence of segments by issuing the following | . call. _> ACK-SESSION-CONTROL (port id,vnumber) | a segment number; number will be number process. lower a no segment with this or required again by the data transmit | A data transmit process obtains the number in as "end-of-message" segments marked numbers by executing the | data Session Control of range of segment a given following function: ~ 1> NM (port id, i, j; return) i ~ a segment number e a segment number returns: the returned number of end-of-message segments 1in the range of segments from number i to number j, inclusive | if i<=7 , | 0 in all other cases A data transmit process obtains information on the amount of transmit from the session control by executing the following data available ) function: | Detailed Functional Model LAST (port id; the highest segment number that could data Transmit avallable resources across are for transmission all must call this module to This module guarantees logical links. system-dependent this specification identifier. (Appendix and D). The are, The (port algorithms to following call: obtain the fair therefore, argument A transmit process reqdests permission ALLOCATE be executed "port transmit (port returns: true false than one 1f a message After obtaining this call to another a of port 1issuing the to transmit by be to transmit to to transmit Dby sent not cannot give at a time, that it no be sent permission longer needs id) perm1551on the next transmit A to call (port id) transmit, a transmit belfore permission process. transmlt process indicates attempt a transmit, but that ‘the following call: REALLOCATE may 1f a message may allocation module transmit process (port or 1is id) A transmit process indicates issuing the following call: DEALLOCATE by this scope 1id) CHECK-ALLOCATE transmit id" by the | transmlt process checks to see 1f it has permission executlng the following Boolean function: more to Control permission to use of Routing beyond A - The assigned from Session Allocation Module Each transmit process transmit a message. module 108 return) return: 6.9 Page that it to process must transmit it has wused its also has more data to can be 1issue given permlss1on to send by issuing Algorithms 7.0 . | Page 109 ALGORITHMS This section contains an overview of some algorithms collectively These algorithms are explicitly executed by several NSP components. 1in explanation The "defined in Section 6 in the model description. this section is added as an aid to understanding. 7.1 Data Segment Retransmission several The data retransmission algorithm described in Section 6.6 in each for timer one only is There follows. the modules operates as of start (or retransmitted), " port. When a Data Segment is transmitted is, That segment. "oldest" the is sent the timer if the segment being highest segment the than greater 1is one number the segment the timer upon restart Also, receiver. from the remote acknowledged receipt of a data acknowledgment that acknowledges data segments that have not previously been acknowledged but that does not acknowledge Stop the timer wupon receipt of all outstanding data segments. acknowledgment of all outstanding segments. that expired, When a data transmit process detects that a timer has be can that Segment Data next the of number the process sets that segment highest the of value the than greater transmitted to one has been acknowledged from the remote receiver. This causes It retransmission if the flow control variables allow retransmission. there because however, retransmission, a cause necessarily not will may have been a change to the flow control variables. An implementation of NSP may elect to provide an algorithm different each An algorithm that times one described above. the from of level higher a provide would separately Segment Data outstanding of cost a at users) end by seen delay average of terms (in service more data base 7.2 storage | for NSP. Other-Data Handling than No more Handle other-data subchannel transmission as follows. The port. given a for time a at outstanding is message other-data one an variable OTHERstate contains the state of the port with respect to other-data message. It may have the following states: - State No "ready” "sent” "timeout" Meaning other-data | has message acknowledged. - been sent but not | 'An cther-data message has been sent, has not been An other-data message has been sent, has not been acknowledged, acknowledged, and is being timed. and has timed out. Algorithms | When the port is in a state other Page than "ready," contains the other-data message type that the variable NUMoth contains its number. Other-data subchannel either Data Request message or an a update of the (FLOWrem_dat Interrupt Since message this message There 1s and receiving corresponding the a time, handle interrupt flow as count placement flow of - receipt variable in The receipt data can buffer only one in port of an BUFrcv. received Interrupt follows. attached state of the are: current The of causes the control for Interrupt data as control state machine conceptually The and states Meaning "empty" | The Request message interrupt to BUFrcv. This machine has three states. machine is contained in variable FLOWloc int. State OTHERtyp transmitted, follows. an Interrupt respectively). implementation model at an handled request FLOWrem int, causes is the variable has been 110 BUFrcv 3 been state is empty, and an Interrupt Request message sent or the logical link has just entered the (in which there is Interrupt "interrupt"” a message). implied session call "send request" control to BUFrcv get is should the has not yet sent one Interrupt message, and issued data. empty, be for | BUFrcv contains the data from an | request an INTERRUPT-RCV . and to an - Interrupt request has RUN an Request additional message Interrupt message. Because of this model message cannot request” and Dbe for sent OTHERstate interrupt for = the flow first control, time an unless Interrupt FLOWloc int "ready." Request = "send | ‘An implementation of NSP may other-data error and flow implementation could time elect to use a different algorithm for control from the ones described. An each outstanding Other-Data message separately. This would provide a higher level of service (in terms of average delay seen by end users) at a cost of more data base storage for NSP. An 1mplementation could buffer more than one Interrupt message concurrently. interrupt flow Interrupt Request for receipt of The control message 1is only restriction that, unlike cannot the interrupt data be sent 1in normal unless the data operation of flow control, an space requested. 1is | guaranteed ” 7.3' Retransmission Timer Value Estimation NSP must compute the appropriate value for the time within which to retransmit certain messages. If the value is too great, end users may detect unusually long delays, since Routing may drop packets. If the value 1s too small, NSP may make very inefficient use of the Routing bandwidth. Page 111 - | | Algorithms NSP attempts to maintain an estimate of the current round trip delay Variable " to each remote node with which it 1is communicating. 1is estimate The value. this contains NODEdelay in a node descriptor An made. is delay trip round of updated each time an observation in response to observation can be made whenever NSP receives a message a Connect sends NSP Whenever message. a previously transmitted 1t saves message, Initiate Disconnect or Initiate, Connect Confirm, NSP Whenever im. DELAYstr_t variable in the current time of day Disconnect Confirm, Connect nt, receives a Connect Acknowledgme Complete message, Oor any message acknowledging a Connect Confirm, NSP observes the round trip delay to be the current time minus the value | | DELAYstr tim. in In addition, sample round trip delays are observed by timing selected, To conserve space, use only a transmitted Data Segment messages. may choose to operate with ion implementat An single timer per port. tend to produce better would operation Such timers. multiple estimates at a cost of more data base storage. Observe the Data Segment timing by starting the timer (provided it when not already running) or implicit) acknowledgment Data a Segment message to needs 1is be transmitted the first time and by stopping the timer when an (explicit is for received Do not the message. since the restart the timer if the Data Segment 1is retransmitted, first need from delay average the estimate to attempting algorithm 1is trip round observed an Once ent. acknowledgm eventual to to transmit sample is taken as described above, average the value with the current te of a weighting factor. The formula for this 1is: by means estima | . NODEdelay = NSPweight * NODEdelay + deltaT —-—-—-—————=——=——=————————————————= NSPweight + 1 = NODEdelay + whére:<NSPweight NODEdelay deltaT deltaT - NODEdelay —-——————=———=————=-NSPweight + 1 the weighting factor the estimated round trip time the sample round trip time Note that if NSPweight is equal to a power of 2 computation can be performed easily. | minus | then 1, this a message is a The time that NSP uses to determine when to retransmit constant times the estimated round trip delay time. This constant 1is the "delay factor" and is contained in variable NSPdelay in The delay factor and the weighting factor are NSP Table 3. parameters. NSPweight is an integer in the range0 to 255, inclusive. NSPdelay is 0 to 15 and 15/16, in the range a value 1in sixteenths of a unit inclusive. | ' 1 Algorithms 7.4 - If | | N - Page 112 Inactivity Timing two time NSPs cannot communicate (for example, problem or '1s _~‘ results. because An end with each the network user that is other for a sufficiently is disconnected), either not using a the long following logical 1link 1s paSsively waiting to receive would not necessarily know that it uselessly consuming resources by maintaining the 1logical 1link. Therefore, NSP contains there 1s from the no received The 1inactivity remote NSP an algorithm traffic for each timing to exercise (either data logical link. algorithm or the NSP logical control - operates as link when messages) | follows. Start an "inactivity" timer when a 1logical 1link enters the RUNNING state. Restart the timer whenever a message is received for the logical link. If the timer expires, NSP attempts to send a Data Request message that does not change the remote NSP's communications retransmission are not possible algorithm causes NSP Data message. Request CONFIDENCE variable as flow Retransmission described control variables. to the remote to periodically can result in below. If NSP, then retransmit the the a the change to | | 7.5' Confidence Testing A given NSP module cannot know whether or not a network path exists between 1t and a given second NSP module, even if the two modules have communicated in the past. Therefore, NSP cannot give a "network disconnection" signal to Session Control when the physical network supporting a logical link fails. To provide some useful counter 1n variable timeout occurs - Segment, Link variable and (NSPretrans). CONFIDENCE (for a Connect Service, compares If false. previously information to Session Control, NSP maintains a COUNTretrans in a port. Each time a message or it to COUNTretrans Whenever unacknowledged zero. NSP 1s to CONFIDENCE call. returns greater, receives the Disconnect message) global message, COUNTretrans a a NSP Control on Confirm, Interrupt NSP NSP Data increments this "retransmit threshold” then NSP sets variable an acknowledgment sets CONFIDENCE to CONFIDENCE When communicating with a Version 3.1 neighbor,’an ~this of a Initiate, variable to of a true and Session implementation of specification may set CONFIDENCE false immediately upon detection failure of the physical link to the neighbor. ‘Message ) 8.0 Page Formats 113 MESSAGE FORMATS This section specifies the formats for NSP messages. 8.1 Message Format Notation The following notation is used to herein: FIELD (LENGTH) describe the contained description of field : CODING FIELD Is the name of LENGTH Is the length of the field as: = messages where: the field being described A number meaning number of 8-bit bytes (octets) a "B" meaning number of bits A number followed by The letters "EX-n" means extensible field. n is a specifies the maximum length of 8-bit number that fields bytes. The high-order bit of interpretation, as protocol before bytes in the no number is specified, the described below. If 1 byte. Extensible is current maximum length are variable in length consisting of 8-bit each byte 1indicates whether the next byte is part of the same field. A A O 1 means the next byte is part of this field. is the last byte. The indicates the next byte low-order 7-bits of each byte are information bits. Extensible fields can be binary or bit map. If they are binary, then 7-bits from each byte are concatenated 1into a single binary field. If they are bit map, then 7-bits from each byte are wused independently or in groups as information bits. NOTE =] The bit definitions define information bits after removing extension bits and compressing bytes. o the the the The letters "I-n" means this is an image field. 1S n a number specifying the maximum length of 8-bit " bytes in the image. A 1-byte count of ‘the 1length | remainder of the field precedes the image.: Image fields are variable in length and may be null each byte are All 8-bits. of 0),. = (count of the Message Formats o | information bits. of each 1image Page The meaning field and 114 interpretation is defined with that specific field. CODING Is the representation type used as follows: A B BM 7-bit ASCII Binary - | Bit map (each bit or independent meaning) | group C Constant null Interpretation data dependent of bits has NOTES 1. If both the length and coding are omitted, the field represents a generic field with a number of subfields specified in the description. 2. Any bit or field specified as 3. 4, zero unless otherwise ~ noted. All numeric values 1n Bits with unless otherwise noted. are numbered this bit "reserved" section 0 (low-order, least-significant bit) ‘left (high-order, convenience, when on must are the be decimal right and bit 7 on the For 2-byte field is given, it will be shown converted to a 16-bit word. When a subfield of a message field contains more than one bit, it should be considered a binary value. 5. Unless otherwise at the top of positions. 6. most-significant bit). the graphic form of a specified, the numbers that appear the message formats represent bit Bracketed fields are optional. | Message 8.2 Page 115 Formats General Message Format In general, NSP messages have the following format: m——————— tmm——————— + | MSGFLG | MSGDATA o ————— o ————— + MSGFLG (EX) Is a group of fields describing the characteristics of the message. The MSGFLG format 1is: BM - t———t———t -t ==t ——— ——— ¢ Bit: | 71 6| 5] 4[| 311211110 | +—-——+—-——F———t———t———t— ——— ——t ——+ Set to: | 0| SUBTYPE S SUBTYPE (3B) e : \ : Type | | | | | | | | | 0 o | | | | | B 1 | | | ‘| | | | | | | | | TYPE A Is | o | e e the message modlfy TYPE | 0 | 0 subtype | | Meanlng 4 | | | | | | | | | 0 1 1 (Bits). 5 6 5 5 6 - used ittt Bit set to/ | 0 1 0 Data Segment Interrupt or Link Service Beginning-of-Message segment (bit 4 = 0) End-of-Message segment (bit 4 = 0) Link Service (bit 4 = 1) Interrupt (bit 4 = 1) reserved (bit 4 = 1) 0 1 2 3 0 Data Acknowledgment Other-Data Acknowledgment Connect Acknowledgment reserved reserved 1 ——— T T pu—— o | | ] | 4-5 6 | | | | | to field. S Subtype | e | : | | | | | | | | | + | | | | | fm————— Fm——————— e + { 2 : | | | | | | | | | | | | | | | | l | | | | S I 4-6 : control | | | 0 | | | | | | | | 1 2 3 4 5 6 7 type (binary): } No Operation (included for compatibility with NSP 3.1) Connect Initiate | | | Connect Confirm Disconnect Initiate Disconnect Confirm reserved (Phase II node init) Retransmitted Connect ~ Initiate reserved N | l | I | I I —— Fmm——————— o - + TYPE (2B) : B 1 2 3 8.3 Page 116 Is the message type (binary) 0 data message , | acknowledgment message control message | reserved Is the remainder of an MSGDATA ~ | | 1 Message Formats 3-5). NSP Data Messages There are three types»of'déta messages:' l;. Data Segment messages (Sectidn 8.3.1) 2. Interrupt messages (Section 8.3.2) 3. Link Service messages (Section 8.3.3) message | (Section 8. 8.3.1 form: ~ | | Message Formats Page 117 g Data Segment Message - A Data Segment message has the followin | | | o —— t————————— e ———————— mm—————— +————+ fm—————— o | [ACKOTH] | SEGNUM |DATA| | MSGFLG | DSTADDR | SRCADDR | [ACKNUM] ——— t———————— +-————+ m——————— m————————— t————————— - ———— ———t e MSGFLG (EX) : BM | this field Bit: | Set to: of The format Represents the message identifier. 1is: 4t~ —t———t———F———F———F———+t—-——+ 4t |l 7161 514113121110 ———t———t———t———F———F———F———+ | 0 |EoMIBOM| 0 | 0 | O | 0 | O | t———t——m—F———t———t———t———t———t———+ where: : BM Is the end-of-message indicator EOM (1B) not-end-of-message end-of-message 0 1 BOM (1B) : BM Is the beginning-of-message 0 1 DSTADDR (2) : B SRCADDR (2) : B ACKNUM (2) : BM | | | | indicator | | not—beginning—of—méssage beginning-of-message Is the logical link destination address. Is the logical link source address. Is the number of the last NSP Data Segment message positive a and recelved successfully acknowledgment (ACK) or a negative (NAK) . field is optional. This set. by bit 15 being indicated this field is as follows: Bit: Set to: acknowledgment 1Its presence is The for format ——— + e ———— e o | 12 | 11 | 15 | 14 —— -+ e ——— e | 1 | QUAL fm————F e | NUMBER | ——— + ————— e where: QUAL (3B) : B Is anlacknowledgment qualifier. 0 1 ACK NAK 2-7 reserved | Message Formats Page NUMBER ACKOTH (2) BM (12B) : B 118 Is the number of the message being acknowledged. Is the number of the last NSP Other Data message successfully recelived and a positive acknowledgment (ACK) or a negative acknowledgment (NAK). This field is optional. indicated by bit this field is as B 15 being set. follows: e e Bit: | 15 | bt TP b 14 12 1Its presence The format is for me+ | 11 0 | ee -+ Set to: | 1 | S e s QUAL O NUMBER I se where: "QUAL (3B) : B~ Is an acknowledgment qualifier. 0,1 3 reserved Ccross sub-channel Cross sub-channel 4-7 reserved 2 NUMBER (12B) : B Is | SEGNUM (2) BM Is the format the being number of this for this field number of ACK NAK the message acknowledged. Data is: Segment message. The et T Uy + Bit: | 15 12 | 11 0 | e ———————— e + Set to: | 0 l NUMBER | e ———————— t————————— + DATA Is the data to be sent over a logical link. This field is transparent and may use all 8-bits of each byte. The length of the data field is ascertained from the total 1length of the Data Segment message message after and the consists SEGNUM of field. all bytes in the MessagelFormats Page following the has message - The Interrupt 8.3.2 Interrupt Message 119 form: ——————— f———————— tmmmm————— o ————— fm—————————— PR — +————- + | DATA| | MSGFLG | DSTADDR | SRCADDR | [ACKNUM]| [ACKDAT] | SEGNUM t—————+ - ————— e —————— t————————— +————————— t—————————— t———————— MSGFLG (EX) : BM B Bit: Set to: | | | is: 7161 | 0l 5141 of this or Link A et e Mtk tte bl e T | format The Is the message identifier. field 3121110l 4———tp———pm———t———t———p———t———t+———+ 111101101l ol 01l O] $m——t———t———t———f———t———F———t———+ DSTADDR (2) : B Is the logical link destination address. SRCADDR (2) : B Is the logical link source address. ACKNUM (2) : BM Interrupt Is the number of the last NSP received and a successfully message Service negative a or (ACK) positive acknowledgment 1is optional. field This (NAK). acknowledgment set. being 15 Its presence is indicated by bit The format for this field is as follows: ————— - + ot | Bit: Set to: | 15 | | 1 | e | 12 14 | 0 11 -L ——t———r———————— e ———— | NUMBER | ‘QUAL —+ o Fmm - where: Is an acknowledgment qualifier. QUAL.(3B) : B ~ NUMBER (12B) ACKDAT (2) : BM 0 ACK 1 NAK 2-7 reserved Is the : B being number message the of acknowledged. Is the number of the last NSP Data Segment message successfully acknowledgment This (NAK) . field is optional. indicated by bit 15 being this | Bit: Set to: acknowledgment 15| 14 | 1 12 | format | ———— + +————tm———_—————— - | 1Its presence 1is The follows: is as field set. positive a and received (ACK) or a negative 11 0 | +————p————————— - ————— —_———————+ | QUAL | | NUMBER ___ 4 +————t———_—————— + _______________ for Message Formats R | | ~ Page 120 where: (3B) : B Is =W N O QUAL NUMBER (12B): B | SEGNUM (2) : BM for , 1 reserved -7 cross sub-channel ACK Cross sub-channel being of this NAK reserved Is the | Is the number format an acknowledgment qualifier, number of this Interrupt field the message acknowledged. is: | message. The | +———-% ————— e + Bit: | 15 12 | 11 0 | ————_————— o + Set to: | 0 | NUMBER | ————————— e - + DATA | Is the interrupt data. This field is transparent and may use all 8-bits of each byte. The length of the data field is ascertained from the total length of the Interrupt message and consists of all bytes 1in the message after the SEGNUM field. Interrupt data may be no longer than 16 bytes. MesSageaFormats 8.3.3 Message - The Service Link following Page form: Link Service message has 121 the t—————— pmm—m—— e m—————— — fm———————— o —————— t—————— tm—————— t—————+ |SEGNUM |LSFLAGS |FCVAL]| IMSGFLG |DSTADDR |SRCADDR |[ACKNUM] |[ACKDAT] ——————— t——————— o ———— - —————— +————————— b ———— +————- + MSGFLG (EX) : BM | | Is the message’identifier. | format | of this | +%——+———+———+———+-——+———+———+———+ Bit: | 71 61 514131 | 0Ol Ol Ol 21}110 | -t ———t———F———F———F———F———F———+ Set to: | | The field is: 1 1lo01]lO0O1ll 01l 0 -t ———F———F———F———F———F———+———+ DSTADDR (2) : B Is the logical link destination address. SRCADDR (2) : B Is the logical link source address. ACKNUM (2) : BM Is the number of the last NSP Interrupt or Link Service message successfully received and a positive acknowledgment (ACK) or a negative acknowledgment (NAK). = This field 1is optional. Its presence is indicated by bit 15 being set. The format for this field is as follows: et S Bit: | 15 | i T et fmm— e ——— + 14 12 | 11 0 | t————t—————— —_——————— - ————————_————— + Set to: | 1 | QUAL | NUMBER | e-e —— + 'where: QUAL (3B) : B NUMBER (12B) ACKDAT (2) : BM : B Is an acknowledgment'qualifier. 0 ACK 1 NAK 2-7 reserved Is the being number of acknowledged. the message | Is the number of the last NSP Data Segment message positive a and received successfully acknowledgment (ACK) or a negative acknowledgment (NAK). This field is optional. 1Its presence is indicated by bit 15 being this field is as follows: The set. | format for - Message: Formats - | - e + Bit: | 15 | 14 12 e Set to: | 1 | 11 0 Rt QUAL 122 ' | e Page | | -+ NUMBER I +————t——————————— - e ——————— + where: QUAL (3B) : B Is an acknowledgment qualifier. 0,1 reserved 2 NUMBER (12B) : B | SEGNUM (2) : BM 3 cross cross 4-7 reserved 1Is the being Is the format sub-channel sub-channel nUmber of acknowledged. number of this Link Service for this field is: ACK NAK the message | message. The tm———————— tmm—————— + Bit: | , 15 - 12 | 11 0 | tm———————— e + Set to: | 0 I NUMBER | Fm——————— tmm e — + - ’BM Is the Link Service flags. field is . as The follows: format for this +t-——+—-——t———t———t————————— tm———————— + Bit: 716151 413 2 | 1 0 | +-——t———t—————— ————————— tmm——————— + Set to: | 0 | 0| O | O | FCVAL INT | FC MOD | +———t———t————————————— tm——————— + where: FCVAL INT (2B) : B Is the FCVAL 0 interpretation data segment (2B) : B or message count 1l interrupt 2-3 reserved FC MOD of field request request count Is the flow control modification. If FCVAL INT = 0, then this field following contents., WO LSFLAGS (EQ) no do change not send data send data reserved has the Message Formats - | - Page 'If FCVAL INT= 1, field 1s ignored on FCVAL (1) : B | Is the number of Session | 123 then this messages, Data 0 on transmit receive, Control and Segment messages, or Interrupt messages that sender of the message can receive in addition - those previously message. This count which requested number 1is by a added to is maintained by NSP, the to Link Services the request to determine how many Session Control messages, Data Segment messages, or Interrupt messages will be transmitted via a logical link. - NOTES 1. If FCVAL INT = 0, the message is a Data Request message. 2. 3. 4, If FCVAL INT = message. | 1, the \ The transmit request count negative. form in the message is for segment (Negative values FCVAL field.) an Interrupt flow are presented control in 2's control, the no change in count must the count. be p051t1ve. Use may be complement 1If FCVAL 1is for Session Control message or Interrupt flow to be Request | 0 1f message there 1is Message Formats 8.4 - ; Page 124 Acknowledgment message Acknowledgment Types There are three types of acknowledgment messages: 1. Data Acknowledgment message (Section 8.4.1) 2. Other-Data Acknowledgment messages (Section 8.4.2) 3. Connect Acknowledgment messages (Section 8.4.3) 8.4.1 has the Data Acknowledgment Message - The Data following form: | " | | b SR — bmm————— — tmmm————— t———— —_———y | MSGFLG | DSTADDR | o SRCADDR | ACKNUM | [ACKOTH] bom——_—_————— +——————— o MSGFLG (EX) : BM | ————— + Is the message identifier. field The format of this is: '+—-++——-+e——+———+——¥+———+-——+-——+ Bit: 716151 43121110 =t ——— -~ ————t———F———+ Set to: [ Ol OOl Ol Ol 1101 0| -ttt ———F———t———t——————+ DSTADDR (2) : B Is'the logical link destination address. SRCADDR (2) : Is the logical link source address. ACKNUM (2) : B BM Is the number of the last NSP Data Segment message successfully - acknowledgment (NAK) . this This field | is received and (ACK) or a negative field as 1is required. follows: a positive acknowledgment The format for m—————————————— o ———— - + Bit: | 15 | 14 12 | 11 0 | et ——— e —+ Set to: | 1 | QUAL | NUMBER | - ———_——— . + where: QUAL (3B) : B Is an acknowledgment qualifier. 0 ACK 1 NAK 2-7 reserved Message Page Formats of the Is the number of the last NSP Other Data NUMBER (12B) ACKOTH (2) BM : B Is the number being acknowledged. and received successfully acknowledgment (ACK) or a negative (NAK). field is optional. This set. indicated by bit 15 being this field Bit: is as follows: | message acknowledgment The format — for + 0 | et —————— e ———— + Set to:| 1 | QUAL | fm————tpmmm————_—————— tm———— NUMBER I e ————— + where: QUAL (3B) : B Is an acknowledgment qualifier. 0,1 2 reserved cross sub-channel ACK cross sub-channel NAK 3 4-7 reserved NUMBER (12B) : B Is the number of the message being acknowledged. | positive 1Its presence 1is 12 | 11 14 message a e | 15 | 125 Message Formats - | 8.4.2 Other-Data ~Acknowledgment Acknowledgment message acknowledges messages. It has the following form: e e Rt | MSGFLG | DSTADDR | SRCADDR | ACKNUM Message Interrupt LT | (EX) : | BM Is the message | field [ACKDAT] | el 7161 DSTADDR L il [ OOl to: ~ | + The format S S e T Hp I e skt T Ol 1T S lOIl Sy 1101 B Is SRCADDR (2) : B Is the logical link source address. BM or Link ] I 0] -t ——— : : this RS 514131121110 e of . (2) ACKNUM (2) Other-Data Link Service | R Bit: Set identifier. is: 126 —+ tm——————— o —————— - —————— t——————— e ——————— MSGFLG The and Page the logical link destination Is the number of the last NSP address. Interrupt Service message successfully received and a positive acknowledgment (ACK) or a = negative acknowledgment (NAK). This field 1is required. The format for this field is as fOllOWS' et —————— Fm e + Bit: Set | to: 15 | 14 Rt R | 1 | 12 | 11 0 e QUAL | | eT+ NUMBER | b L et + where: QUAL (3B) : B Is an acknowledgment qualifier. 0 1l 2-7 NUMBER (12B) : (2) : BM reserved B Is the 4 ACKDAT ACK NAK being number Is the number of the last NSP Data successfully received and acknowledgment (ACK) or a negative (NAK) . This field is optional. indicated by bit this field is as of acknowledged. 15 being follows: set. the message Segment message a positive acknowledgment 1Its presence The format is for 'Page 127 Formats Message bo —— + Bit: | 15 | 14 12 | 11 0 | t————t————————— . + Set to: | 1 | QUAL et | NUMBER | ———— + ——— - where.:. (3B) : Is an acknowledgment qualifier. B = WO QUAL NUMBER (12B) : B' | - 8.4.3 Connect message has Acknowledgment the following form: ,1 -7 reserved cross sub-channel ACK cross sub-channel NAK reserved Is the number of being acknowledged. Message - The Connect the message Acknowledgment - t——————— m———————— + | MSGFLG | DSTADDR| +,"“,'.—————— +———————— + MSGFLG (EX) : BM Is the message field 1s: R Bit: Set to: DSTADDR (2) : B identifier. The of format ek T S | 71 61 5.1 | 0Ol Ol 1 4| e e e e 311211110 | — ————+ mm—pmm b ———t———t———p—— pmm—fp toOol o1l 1101 0| $mm et m——p———p——— b ——— et —— = ———+ 'Is the logiCal link destination address. this Message Formats 8.5 Control There are 1. Page Messages five types of control messages: No Operation messages (Section 8.5.1) 2. Connect 3. Connect Confirm message 4, Disconnect 5. Discdnnect Confirm messages (Section 8.5.5) - 8.5.1 128 Initiate messages (Section 8.5.2) (Section 8.5.3) Initiate messages No Operation Message (Section 8.5.4) - - +———————— + | MSGFLG | TSTDATA/| o ————— o ————— + where: MSGFLG (EX) : BM Is the message ‘field identifier. The format s it St Bit: Set to: B el 7161 2T e e 51413121110 t———t———p———p b ——— b —— o ——— ol ol ololt1lofl 01l 0 fm——tm—— b —e ——— 'TSTDATA Is any ‘of 1S: data. this Message 8.5.2 The Page Formats Connect Initiate And Retransmitted Connect Initiate Initiate and the Retransmitted Connect Connect have the following 129 Messages - Initiate messages form: tm—————— +————————— e ————— e ———— — —— — t————— t————————— b ———————— + | MSGFLG | DSTADDR| SRCADDR | SERVICES | INFO | SEGSIZE | DATA-CTL | m——————— t—————————t————————— +m—————————— +—————— tm———————— fmm———————— where: MSGFLG (EX) : Is the Connect Initiate message BM identifier. format of this field is: $m—m Bit: | Set to: et —p———p———p———t———+———+ 71 b | The 61 —m 5141 31211120 ] e —p———p———f———p———+———+ 0Ol 0ol ol 111110101} t———t et ——t e — b= ———F———t———+ 0 or MSGFLG (EX) : Is BM the Retransmitted identifier. b Bit: The Connect format of —pm—m—pmm e this m Initiate field message 1is: e m——f———f——— ¢ 17161514131 21110] bmm—tmm—t— b m e ———p——— + Set to; | Ol 21110111101 01l 0| bt —Fm——Fpm——t———F———F———+———+ DSTADDR Is the destination (2) address will 1logical be 1link address. This 0 to allow the receiving NSP to assign a number dynamically. SRCADDR number Is the source logical link address. This is assigned by the sending NSP and will be used by (2) for the destination to address all messages logical link. The value 0 is illegal. SERVICES (EX) BM The requested services. 1s as The format for this field follows: t———t———t———F ==t ———F———f———t———+ Bit: Set to: | 71 61 51 4| | 01l 0] O O where: 31211120 | + —F ———F———t———+——— ———F—— +—-——F==t pm—— bt m——pm this | FCcOPT | O | 1 | — ===+ b ——p———F—— Message Page Formats - FCOPT (2B) : B Are the 0 1l 2 3 INFO (EX) : BM Is the as flow control options. none segment Session Control message request count request 130 count reserved information. The format follows: for this field 1is | fm—m—pmm—p———p———F———p——————F——— ¢ Bit: | 71 6 tmm Set to: | 51 4| 31| 21110 ] b —————— b ———+———+ 0l Ol Ol O] Ol O VER | t———F———t———F———t———t———t———+———+ _where: VER (2B) : B Is the NSP version. 0 1 2 3 SEGSIZE (2) version 3.2 version 3.1 version 4.0 reserved Is the maximum size (in byteS) of the Data Segment that can be received on data this in a logical link. DATA-CTL Is the Connect Initiate data field. The length of this field is ascertained from the total length of the Connect Initiate message and consists of all bytes in the message after the SEGSIZE field. Message Formats 7 | | | Page 131 following form: I the has- Connect Confirm'MeSSage - The Connect Confirm message 8.5.3 ) | - ——————— Fm——————— t———————— e t—————— ———————— fm———————— + | MSGFLG| DSTADDR | SRCADDR | SERVICES| INFO | SEGSIZE | DATA-CTL | t——————— e —————— o ———————— e h ————— +m————— Fmmm——————— t—————————— + where: MSGFLG (EX) y : BM Is the message identifier. field is: b Bit: | ~> | Set DSTADDR (2) : B ~ \> (2) o SRCADDR | SERVICES (EX) : of this 5141312111740 b ———p———F———t———t——— === ———+ to: | 0l fmm | format —pm—— e ——F——————t——————+ 7161 | The » ol 11011110101l e m et m O/ e —p———p———F———h ———+ Is the destination logical will not be 0. It field from the Connect 1link address. This is the value of the SRCADDR Initiate message. Is the source logical link address. This number is assigned by the sending NSP and will be used to address all messages for this logical 1link. The value 0 is i1illegal. BM Are the requested services. field 1s as $mm Bit: . The format follows: e for this mmm b ———F———p——————t———+ | 71l 61l 54| 3121110 | 0| 0| 0| FCOPT dm——pm——t———t———t———F———F———F———+ Set to: O | [ O | 1 | +t--+t-——+---+-——+--—+-——+-——+—-———+ _> | where: | FCOPT (2B) : B Are the flow control options. « 0 none 1 segment | 2 Session Control message request 3 ' INFO (EX) : BM ' Is the information. as follows: 4 | Set count count | reserved The format for this field . fmm e mm— b ——p—m—mm—m—m—d—— —+ | 716 151413121110 ]| Bit: > o request to: | 0l 0l b m— —p———p——— b 0Ol O0O1l ——t—— = 01| ———+ VER | e ——t———t———t———+———+ 1is - Message Formats \ Page 132 - where: VER (2B) : B Is 0 1 2 3 | SEGSIZE (2) : DATA-CTL the NSP version. (I-16) B version 3.2 version 3.1 version 4.0 reserved Is the maximum size (in bytes) of the Data link. : B Segment that can be Is user-supplied data. received on | data this 1in a logical 8.5.4 Page 133 | v | Message Formats Disconnect Initiate Message - The Disconnect has the following form Initiate message format of | t—————— tm———————— e ——————— - ——————— +m———————— + IMSGFLG | DSTADDR | SRCADDR | REASON | DATA-CTL| +—————— t————————— o ——————— o —————— t————————— where: - MSGFLG (EX) : BM Is the message 1dent1f1er. field The this is: F———+ m—pm e ———t———p——— fm——t———m— Bit: . - Set to: | | 71615141 e 0Ol ol 31211140l ———F———+———+———+ 11111101010 f———t—m—tm——pm——tpm——t——————f———+ DSTADDR (2) : B Is the logical link destination address. " SRCADDR (2) : B Is the logical link source address. REASON (2) : B DATA-CTL (I-16) ~ Is two Dbytes of Session Control the remaining bytes of Session Control the first disconnect : B Is data. disconnect data. Message 8.5.5 the Formats o | Page Disconnect Confirm Message - A Disconnect Confirm following form: $m—————— b ————— e IMSGFLG | DSTADDR fm—————— e ——_—— | message 134 has ———— o ————— + SRCADDR | REASON| b ———— $m—————— + where: MSGFLG (EX) : BM Is the message identifier. field The 1is: format of this - +-—4+———+——f+——4+———+———++f—+———+ Bit: 7161 e Set to: | et T 0Ol 5141|311 S 11l e o0l A Ol 21]11]0| e bt 110101 ST EE & 0| +———+———+———+——f+———+———+-——+———+ DSTADDR (2) : B "REASON (2) Is the logical link source address. o SRCADDR (2) Is the logical link destination address. : B - Is the disconnect reason. NOTES 1. If REASON 1, the message 1s a No Resources message. 2. If REASON 42, the message 1s a Disconnect 3. If REASON 41, the message is a No Link Terminate message. Complete message. | APPENDIX A LOGICAL LINK ADDRESS ASSIGNMENT/DEASSIGNMENT, is a 16-bit value. A logical link address When an NSP module opens a When an NSP module closes a it assigns a logical link address. port, it deassigns a logical link address. The algorithm that assigns and deassigns these addresses 1s implementation-dependent. There are port, 1. 2. It must not assign concurrently, and given a - | two requirements for this algorithm: 1l6-bit address two to ports periodaddress for a long It must not reassign a given 16-bit | | following its deassignment. n, algorithm should'operate In additiothe trading memory, reassignment. off the amount of with memory a amount modest for - period the of of The algorithm described in this appendix is a sample algorithm that of NSP is required to use meets these requirements. No implementation two the meets that algorithm Any this algorithm, however. algorithm sample The . acceptable is above stated requirements of outstanding, assigned link addresses. restricts the number A.1 INTERFACE TO THE ALGORITHM The sample algorithm is implemented by a calls: module that accepts three one to assign a link address, one to deassign a link address, and one to initialize the module. | The following routine assigns a link address. GET-ADDRESS returns: success - a link address 1is returned failure - too many link addresses currently assigned The following routine deassigns a link address. RELEASE-ADDRESS (address) LOGICAL LINK ADDRESS ASSIGNMENT/DEASSIGNMENT address: the link returns: success following routine to be deassigned | failure The address Page A-2 - link address initializes the | was not assigned algorithm module. INITIALIZE-ADDRESS NSP the 'NSP calls this routine during NSP algorithm module to meet the initializations. A.2 DATA STRUCTURES This algorithm forms link random r initialization. The routine second requ1rement above even addresses part of index bits i the following allows across form: part bits where: r+i = 16 No two concurrently assigned link value 1n the low 1 bits, Furthermore, be assigned the algoflthm concurrently addresses restricts to will contain the same addresses that can These are | the open ports number of to: 2°1-1 The data the following. 1. base consists of two vectors and three | Boolean vector INUSE This vector contains 2”i bits. There possible value in the index part of a A bit (i.e., The 2. 1s bit Vector varlablese set 1is is to "true" if in the lower set to "false" the is one bit link address. corresponding index is for 1in each use i bits of an assigned link address). otherwise. RANDOM This vector contains 27i entries, each r bits wide. An element of the vector contains the random part of the last lirtk address assigned with the index part equal to the 1index of this element in the vector. Page A-3 | LOGICAL LINK ADDRESS ASSIGNMENT/DEASSIGNMENT Variable NUMBER-ASSIGNED 3. This variable contains the number of link addresses currently | a value in the following range: It has assigned. O <= NUMBER-ASSIGNED <= 27i-1 When NUMBER-ASSIGNED = 271-1, then no more link addresses may ' be assigned. Variable 4. INDEX This variable contains the 1ndex value_portion link address that was assigned. the last of Variable TEMP 5. value 'This variable is used to temporarily hold the index 1in and gned deassi being is that address 1link a portion of module A.3 - initialization. ALGORITHM OPERATION high-level This algorithm operation 1is represented in the same the body of language,- that was used to represent NSP's operation 1in | this document. GET-ADDRESS: If (NUMBER-ASSIGNED < 27~i-1) then NUMBER-ASSIGNED <-- NUMBER-ASSIGNED + 1 while (INUSE(INDEX) true) do INDEX <-- INDEX + 1 (mod 271) | Endwhile RANDOM( INDEX) <-- RANDOM (INDEX) + 1 (mod 27r) INUSE(INDEX)‘<—— true random part of link address <-- RANDOM(INDEX) index part of link address <-- INDEX return success Else return Endif : ,) failure RELEASE-ADDRESS: TEMP <-- index part of the link address If (INUSE(TEMP) true , and RANDOM(TEMP) = random part of link address) then INUSE(TEMP) <-- false NUMBER-ASSIGNED <-- NUMBER-ASSIGNED - 1 return Else return success failure LOGICAL LINK ADDRESS ASSIGNMENT/DEASSIGNMENT Endif INITIALIZE-ADDRESS: TEMP <-- 0 While (TEMP < 2~i) do INUSE(TEMP) <-- false | RANDOM(TEMP) <-- random number TEMP <-—- TEMP + Endwhile INDEX <-- 1 | random NUMBER-ASSIGNED number <-- 0 (mod 2A1) (mod 2Ar) Page A-4 B APPENDIX SEGMENTATION MODULE EXAMPLE supports the requires the addition of the removed from the The model This appendix models a segmentation module. queuing of multiple outstanding transmit requests for each port. B.1 DATA STRUCTURES To support this model, 1items: following each port | Port Additions 1. A request queue head. 2. A segment queue head. 3. The segment number of 4. A Boolean flag to indicate if the next segment placed on “the segment queue will be a beginning-of-message segment (initial the last segment queue (initial value = 0) | | ‘value = true). segment This model also requires a pool of queue control blocks to hold information about queued transmit requests and outstanding segments. When a transmit request from Session Control 1is by the segmented, each accepted segmentation module, a queue control block is added to the request | queue for the port. It contains the following information: Request Queue Control Block Buffer descriptor from the request. 1. Xmtflag from the request. 2 . 3. 4. | Highest segment number corresponding to the request. Status ("incomplete” or "complete"). When the data from a single transmit request 1is segment is assigned a queue control block that is added to the segment queue for the port. Each segment queue control Dblock <contains the following information: | SEGMENTATION MODULE EXAMPLE Segment Control Block Buffer descriptor for End-of-message flag. 2., the segment. | Beginning-of-message flag. Segment number assigned to 3. 4, queue pointer information finding the on each block. B.2 Page B-2 Queue l. The - cells required 1in the port are first control block queue, and the in the segment. these blocks and in the queue head not described but are assumed to allow in each queue, the last control ~block control block queued after a given control OPERATION DATA-XMT This routine operates as follows. There must queue request queue queue. The length - be control of segment enough queue control blocks Dblock pool to queue one and one total or more number the transmit queue) plus of buffer available block blocks to blocks required divided the by to from the port's is segment equal SIZEseg to (for one (if there is a remainder from previous division) plus one (for the request queue). there aren't enough blocks available from the pool, DATA-XMT call is returned as "buffer not queued." If the the port's the the the If the DATA-XMT call is not rejected, add one control block request queue. Store the buffer descriptor and values from the call in the block. Set the status to to the xmtflag "incomplete." Add a control block descriptor for the the DATA-XMT call and length from the beginning-of-message beginning-of-message segment on the number queue to the plus to segment one Otherwise set the segment descriptor plus one. port the segment number (if there number to Add the remaining control blocks queue. the The transmit perhaps, the buffer buffer last is queue. The buffer control block contains the address from a length equal to the minimum of the call and SIZEseq. Set the flag to true only 1f the flag in the port is true. Set the descriptor (if of the 1is a that any) preceding preceding contained to the block block). in the segment reflects the segmentation of 1into segments. Each segment except, as long as the previous segment. Assign each block a segment number equal to that of the preceding block on the queue plus one. Clear the end-of-message and beginning-of-messa flags ge of each block, except, perhaps, the last one. The last block has the end-of-message flag set only if the xmtflag value 1in the DATA-XMT call indicates P 1. Page B-3 SEGMENTATION MODULE EXAMPLE end-of-message. 5. Give the request queue control block queued 1in step segment number of the last block on the segment queue. 2 the XMT-POLL This routine examines the first block on the request queue. If the Return the the block from the queue. remove "complete," is status Give a "transmit complete"” return with the buffer block to the pool. If the status is not "complete," give a from the block. descriptor "no transmit complete" return. \\\///l GET-SEGMENT This routine examines the segment matching segment number. and beginning-of-message queue to find The buffer descriptor, flag are returned. an éntry with a flag, end-of-message - ACK-SESSTION-CONTROL This routine operates as follows. 1. Examine the first block on the segment queue. number 4096) 2. in the block, go to step 3. Otherwise, go to step 2. Remove the block from the queue and return the block pool. Store Go to step 1. 3. If the segment from the call is less than the segment number (modulo , | Examine the request queue. containing to the the segment number from the block in the port. Mark every entry on the queue a segment number less than (modulo 4096) or equal to the segment number from the call "complete." Make a return. NM This routine entry with a to the entry the counts from the segment queue identifies the entries on the segment number equal to the first argument in the call up It equal to the second argument in the call, inclusive. number of these entries that have the end-of-message flag set and returns this value. LAST 1f 'Return the segment number of the last block on the segment = queue, the from Otherwise, return the segment number such a block exists. port. APPENDIX REASSEMBLY C MODULE This appendix contains a model of a EXAMPLE reassembly module. requires the This model supports the queuing of multiple outstanding receive requests for each port. It does not support the use of either cache or commit buffers. C.1 DATA STRUCTURES To support following Port this model, items: each port addition of the Additions o A request queue head o A variable (FLOWreass) used to conta1n changes to the count for the port (initial value = 0) O A variable (FLOWhigh) to contain the o A Boolean variable (modulo 4096) stored (initial value = 0) 1in a session (FLOWdiscard) segments are to be discarded highest to segment request number control receive buffer | indicate (initial value = if false) received This model also requires a pool of queue control blocks to hold information about. queued receive requests. When a receive request from session control 1s accepted by the reassembly module, a Qqueue ~control block the following is added to the information: request queue for the port. It contains | Request Queue Control Block "o o o Buffer descriptor from the request Temporary multiple buffer segments descriptor into the Rcvflag from the request same to handle the receive buffer reception of REASSEMBLY MODULE o C.2 EXAMPLE Page Status ("incomplete," truncation," "no EOM -- truncation"). "EOM -- no EOM -- no truncation, " truncation," C-2 "EOM -"no OPERATION In the fOllowing descriptions, the checking for invalid port states is not described specification. since 1t 1s assumed to be clear from the body of the DATA-RCV This routine operates 1. 2. as follows. If no truncation was specified and NSPbuf, reject the call. If no more queue control blocks the buffer - are 1s smaller than available, reject the call. 3. Otherwise, store the <call parameters 1n a queue control block. Set the temporary buffer descriptor equal to the request buffer descriptor. Add the block to the receive request 4, queue. 1If rcvflag indicated no truncation, 1increment FLOWreass by one. Otherwise, compute the smallest integer greater than or equal to the length of the receive buffer divided by NSPbuf. This 1is how many segments will fit into the buffer. Add the result to FLOWreass. | | RCV-POLL If the state of DISCONNECT-COMPLETE, the port 1S DISCONNECT-NOTIFICATION, CLOSE-NOTIFICATION, set the status of all "incomplete" control blocks on the request queue to either "no EOM -- no truncation" (if rcvflag was "no truncation allowed") or "no EOM -- truncation” (if rcvflag was "truncation allowed"). Examine the first or block on the receive queue. If it has a value other than "incomplete," remove the block from the queue. to the control block pool. Return the request buffer status value to Session Control. Return the block descriptor and | | If the return block has the value "incomplete," returned” indication to Session Control. | give 'SPECULATE-NUMBER Return the contents of FLOWreass and clear FLOWreass. a "no buffer REASSEMBLY MODULE EXAMPLE | Page C-3 COMMIT-NUMBER Return the contents of FLOWhigh. STORE-SEGMENT The description language. The end-of-message of this routine wuses a colloquial, NUMBER and EOM represent the segment terms flags, respectively, passed to this routine by the data receive process. If | (NUMBER = FLOWhigh + 1) then Find the first "incomplete" queued If (such a high-level and number request exists) receive request then FLOWhigh <-- FLOWhigh + 1 If (rcvflag = "no truncation") then Put received data in front of buffer Set status using EOM Else If (FLOWdiscard) then If (EOM set) then FLOWdiscard <-- false Else ‘ FLOWreass <-- FLOWreass + 1 | Endif Else | Put data (that will | | fit) in buffer Adjust temporary buffer If (data fit in buffer) If (EOM set) then descriptor then Calculate FLOW space reass <-- Set status Endif | Else | Set status to If (EOM not FLOWreass loss to "EOM o "EOM set) (NOTE FLOWreass -- -- 1) reflect storage 2) -- space loss truncation" no | truncation” then <-- FLOWreass FLOWdiscard Endif Endif Endif Endif Endif Endif (NOTE to <-- + 1 true NOTES 1. Use the temporary buffer descriptor. 2. The space loss 1s equal to the number of segments requested to fill the buffer, but for which receive space due to the impending return partially filled. » that were there will be no of the buffer ' TRANSMIT APPENDIX ALLOCATION D MODULE EXAMPLE This appendix contains a model of a transmit allocation module. D.1 DATA STRUCTURES This model requires a 1list structure. Each element contains a port identifier. This list must be large one element for each port that NSP can handle. D.2 PRIMITIVE This model List assumes that the functions described below are available. Functions l. An element 2. An element, be removed The list hold FUNCTIONS Manipulation 3. in the enough to can be added to selected from contents by a list. either 1ndex or entry list entry can be range can contents, can the list. of the first read. Random Number Generation A D.3 random number in a selected be obtained. OPERATION The following description of the transmit allocation module uses a high-level, ALLOCATE (port colloqulal language. 1d) ) Add an element with port id to the list. operation TRANSMIT ALLOCATION MODULE EXAMPLE CHECK-ALLOCATE If (port id = return Page (port id) contents of first list success entry) then | | Else return Endif failure | DEALLOCATE (port id) Remove the list Call REALLOCATE REALLOCATE entry containing (port port id id) If (list not empty) then Get random index (NOTE) . Swap first and indexed entries Endif NOTE This function obtains a random number in the range (1, length of list). D-2 APPENDIX E REVISION HISTORY This appendix-describes the differences from NSP 3.2.1 to NSP 4.0. Phase III and Phase IV NSP do net send NAKs Several fixesvto Section 6.4.2 and 6.8. The variable "NUMsent" was added to the Session Control Port of the highest numbered Data Segment indicate the number to Changes were made to the NSP. local by sent message the Data Transmit Process to and routine DATA-ACK" "PROCESS| accomodate the new variable. Change the names of the Network Services Layer and Transport Layer to the End Communications Layer and Routing Layer, | | | respectively. Addition of the "tryhard" parameter to the Routing Layer interface and a procedure for setting the TRYHARD variable in the Session Control Port data base. This is a local change only and does not affect the NSP protocol. - Replace the "channel" parameter with "circuit” and "nexthop" d Routing version 2.0. parmaters as requireby Changes to the connect procedure to allow for the will be 1ignored by old retransmission of Connect Initiate messages, with new message SO message, Initiate types for retransmitted Connect retransmitted implementations. "connects"” This is an upward compatible change. Changes,to the flow control procedures and message formats to ‘permit cross sub-channel piggybacking of acknowledgments. Cross sub-channel acknowledgments are not sent, except when 4.0, so this is an upward communicating with an NSP Vs. compatible change. F APPENDIX GLOSSARY confidence that An NSP variable (CONFIDENCE) the 1indicates pfobable’ connectedness of the physical network supporting a logical link. data flow > The movement data of from a source Session Control to a NSP transforms data from Session destination Session Control. form before sending 1t network a to Control transmit buffers NSP retransforms the data at the across a logical 1link. form to 1its receive buffer form. network destination from its (full-duplex) on a logical link. s direction Data flows in both datagram »> — ng control information, that is passed A unit of data, includiNSP transmission to a destination system. for to the Routing Layer becomes When Routing adds its route header information, the unit a packet. . | Data Link ‘The DNA layer below the Routing Layer. The modules in the Data Link Layer manage physical channels and maintain data integrity. delay factor An NSP parameter (NSPdelay) that is multiplied by round the estimated trip delay time to determine the appropriate value for the time to retransmit certain NSP messages. delay weight . ) An NSP parameter (NSPweight) that is wused to calculate a new value of the estimated round trip delay. The old round trip factor to delay is weighted by a function of this statistical k GLOSSARY | - Page F-2 calculate the new round trip delay. If the delay weight is high, the retransmit time changes slowly. If the weight 1is low, the observed round trip time can change quickly if observed round trip delays have a wide variance, and thus retransmit time delay weight is can change more rapidly. 3. The set set the the value for default ' Disconnect Confirm The The NSP No Resources, Disconnect Complete, and No Link messages. REASON field 1in the Disconnect Confirm message (Section 8) indicates which message error applies. = control The It NSP function that insures the delivery of consists of an acknowledgment mechanism. NSP data messages. flow control The NSP function that coordinates the flow of data on a link in both directions, from transmit buffers to buffers, in order to minimize communications overhead. logical receive ~ inactivity timer A timer that, Data Request enters the message purpose upon expiration, causes NSP to attempt to send a message. NSP starts this timer when a logical link RUN/RUN for of state. that the Whenever NSP receives a 1link, NSP restarts this logical timer is to provide activity for the Data Request timer. logical The 1link so that NSP can determine the probable connectedness of the physical network supporting the link. The value for the timer is an NSP parameter (TIMERinact). - Link Service The NSP messages messages logical are the that carry flow Data Request and control the information. Interrupt Request These messages. link A virtual channel between two Session Control implementations or between two components of one Session Control implementation. NSP's major function is the creation and destruction of logical links. | | logical 1inkAidentification A unique 32-bit number describing a logical link. This identification consists of the two 16-bit addresses of the ports at each end of the link. GLOSSARY | - Page F-3 Network Management The DNA layer directly above the Session Control Layer that enables operator control over and observation of network parameters and variables. Network Management also provides down-line loading, up-line dumping, and testing functions. node descriptor A collection of variables and counters pertaining to communications with a particular node. Some of the variables and counters are the estimated round trip delay, traffic usage counters, and error counters. - Other-Data The NSP Data Request, Interrupt Request, and Interrupt messages. These are all the NSP data messages other than Data Segment. Because all Other-Data messages move 1in the same data subchannel, it is sometimes useful to group them together. port A collection of control variables and parameters for managing logical 1links. Each logical link has a port at each end. Each NSP at each node has a numer of available ports. When Session Control requests a logical link or requests a port be opened to receive an incoming connect request, NSP allocates a port 1if sufficient resources are available. | reassembly ‘The ordering of received sequence request for placement data segments by into Session Control NSP into numbered receive buffers. count This term has two different definitions in the document. 1) Variables (FLOWrem.dat and FLOWrem.int) that NSP uses to determine when to send data. 2) Values sent 1in Link Service messages. The flow control mechanism adds the request counts received in Data Request and Interrupt Request (Link Service) messages (definition 2, above) to the request counts it maintains (definition 1, above) to determine when to send data. retransmission The resending acknowledged NSP's error of within NSP a data messages that certain period of control mechanism. , time. have This not been is part of 4 retransmission counter An NSP variable (COUNTretrans) that contains a count timeouts for Connect Confirm, Disconnect Initiate, of message Data Segment, GLOSSARY | | | Page F-4 Link Service, and Interrupt messages. NSP compares this variable | d> with the variable. retransmit retransmit threshold to calculate | (NSPretrans) equal to the maximum successive times a retransmission occurs received acknowledgment before NSP decides network supporting retransmit round An the confidence number of with no intervening, that the physical a logical link has failed. NSP with the retransmission counter threshold value .of trip confidence threshold An NSP variable the the | compares the determlne to ! varlable. delay NSP estimated parameter (NODEdelay) time message. This Section 4.7.6. for an parameter that acknowledgment is calculated represents to be by a the received formula current for an NSP described ,) " 1in segment The data carrled in a Session Control from Data Segment message. transmit buffers into transm1551on by Routing. NSP divides the data numbered segments for - t) segmentatlon The d1v151on into of normal segments numbered data for from Session Control transmit buffers transm1551on over logical l1nks. Session Control The DNA layer directly above system-dependent aspects of NSP. Session Control defines the logical link communication. Session Control provides functions such as name to process address1ng, and in some address systems, access translation, control sSubchannel A logical a messages two communications defined are types different path within a logical link that of NSP data messages. Because Data category handled of differently messages subchannels. can be from Other-Data thought of as handles Segment messages, traveling in the two Routing The DNA layer d1rectly below NSP that provides NSP with routing, congestion control, and packet lifetime control services. - j) DECnet Digital Network Architecture Phase IV NSP Functional Specificatio j | | . ' AA-X439A-TK READER’S COMMENTS NOTE: This form is for document comments only. DIGITAL will use comments submitted on this form at the company’s discretion. If you require a written reply and are eligible to receive one under Software Performance Report (SPR) service, submit your comments on an SPR form. Did you find this manual understandable, usable, and well-organized? Please make suggestions for improvement. Did you find errors in this manual? If so, specify the error and the page number. > Please indicate the type of user/reader that you most nearly represent. [0 Assembly language programmér OO Higher-level language programmer [0 Occasional programmer (experienced) [0 User with little programming experience [0 Student programmer 0 Other (please specify) Name | Date - Organization ~ Street ) City ‘ | State A Zip Code Country --DoNotTe'ar-FoldHereandTape-— —_——— — e o — — — No Postage - Necessary if Mailed in the United States ) 2020020 - 'BUSINESS REPLY MAIL - —_——— - : . FIRST CLASS PERMIT NO.33 MAYNARD MASS. 1925 ANDOVER STREET TW/E07 i - SOFTWARE DOCUMENTATION _ ADDRESSEE P POSTAGE WILL BE PAID BY e Cut Along Dotted Line i L — = - DoNot_Te'ar-FoldHeteandTape —_——_——_——_——— — —_— — — - — — . .| TEWKSBURY, MASSACHUSETTS 01876 Printed in U.S.A.
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies