From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc705.txt | 2145 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2145 insertions(+) create mode 100644 doc/rfc/rfc705.txt (limited to 'doc/rfc/rfc705.txt') diff --git a/doc/rfc/rfc705.txt b/doc/rfc/rfc705.txt new file mode 100644 index 0000000..39d5068 --- /dev/null +++ b/doc/rfc/rfc705.txt @@ -0,0 +1,2145 @@ + + + +Network Working Group +Request for Comments: 705 +NIC# 33644 + + + + + + FRONT - END PROTOCOL + + B6700 VERSION + + + + + 2 September 1975 + + +This is a working document which has been developed as the specification +and guideline for design of a Burroughs B6700 attachment to an ARPA-Style +network. + +The approach is to utilize a front-end processor with a new protocol for +network operation. That protocol, described herein, has been built upon +the concepts expressed by M.A. Padlipsky, et al, in NIC# 31117, RFC# 647. + +This proposed, site-specific, FEP implementation is the work of Gerald +Bailey and Keith McCloghrie of NSA and of David Grothe of ACC. It has +already sustained some corrections provided by MAP. It will be helpful +if interested networkers will review and provide comments to us. + +Comments to BRYAN@ISI. + +Roland Bryan - ACC 1 + + + +Network Working Group +Request for Comments: 705 +Front-End Protocol: B6700 Version + + + + ***WORKING DOCUMENT*** + + + FRONT-END PROTOCOL + + + PREFACE + +This document describes the protocol to be used for connecting a general- +purpose computer system (host) to an ARPANET-like network via a "front-end" +computer. The main body of the document is aimed at a reader who is not +conversant with all the details of network protocols. However, a paragraph +marked with [n], refers a reader familiar with network protocols to the +n-th item of Appendix A which will amplify that particular paragraph. +Further information on the network protocols referred to in this document +can be obtained from the Network Information Center. + +Appendix B contains diagrams showing the transitions between the different +connection states. Appendices C and D give the implementation details of +this protocol in the Front-End and the Hosts. + +This protocol is predicated upon the assumption that for each host, a line +protocol, at a lower level, will be established between the device-driver +modules in the Host and the Front-End, and that this line protocol provides +Front-End Protocol with error-free transmissions. + + + INTRODUCTION 2 + +A host computer may be connected to a network for a variety of reasons. +Network connection may be an attempt to expand the usefulness of the +Host to the community of users which it serves by making network resources +available to them. Conversely, the services which the Host provides may +be made available to a larger community of users, with the network providing +the method of access to those services. + +In order for members of a network community to communicate in an intelligent +way, there must exist a set of protocols. The implementation of these +protocols in a host computer is typically called the Network Control Program +(NCP). The size and complexity of the NCP is proportional to the number and +complexity of protocols which it implements. For an ARPANET like network, +both the number and complexity are substantial. + + + ***WORKING DOCUMENT*** + + + 1 + + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +A host which directly connects into the network must assume the responsibility +for implementing this set of protocols. That is the "price of admission" +to become a network host. It is not necessary to implement every protocol +and every option in every host, but even in the simplest case -- implementation +of an NCP is not a small task. The intrusion into the normal operating +environment of the host is also not small. + +An alternative method for network connection is to connect the host to some +intermediate processor, and in turn, directly connect that processor to the +network. This approach is called "Front-Ending." There are many arguments +which may be posed to justify a host connection to a network through a front- +end processor. The most obvious being that the responsibility for +implementation of the network protocols (the NCP) can be delegated to the +front-end (FE), thereby reducing the impact on the host. + +The purpose of this document is not to justify Front-Ending as a philosophy, +but rather, to introduce a protocol for communications between a host and +a front-end processor which is providing it network access. The Front End +Protocol (FEP) is intended to permit the host to make use of the network +through existing protocols, without requiring that it be cognizant of the +complexities and implementation detail inherent in their execution. + +The FEP is sufficiently general to permit its implementation in the host +to be in terms of the function the host is performing, or the services +which it is providing. Of primary consideration in specification of FEP +was that it must provide the host with a sufficiently robust command +repertoire to perform its network tasks, while buffering it from the +details of network protocols. + + + CONCEPTS 3 + +Introduction 3a + +Before a detailed description of the command structures is undertaken it +seems appropriate to introduce several of the concepts upon which the FEP +is predicated. + +The following section serves to briefly describe the FEP commands, and to +elaborate on the concepts of addressing and types of connections provided. + + + + ***WORKING DOCUMENT*** + + + 2 + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Commands (General) 3b + +1. BEGIN Command + +This command is sent from the host to the front-end processor. Its function +is to direct the establishment of one or more network connections. The type +and number of connections is specified in the BEGIN command string. + +2. LISTEN Command + +Through this command the host indicates its willingness to accept requests +for connection arriving from other hosts. It directs the front-end processor +to LISTEN for any such connection requests. The number and type of +connections are specified in the command string. + +3. RESPONSE Command + +The front-end processor uses the RESPONSE command to indicate to the host that +a particular path specified in a BEGIN or LISTEN command is now open or that +the open attempt failed. + +4. MESSAGE Command + +Message text passing between the host and its front-end processor is sent in +this command string. The MESSAGE command is bi-directional, and is the same +for host or front-end. + +5. INTERRUPT Command + +The INTERRUPT command is sent by either the host of FE. Its most common use is +to convey that the user wishes to terminate what he is doing - i.e., he has +depressed the Control-C, ATTN, or INT key. + +6. END Command + +One or more connections may be closed by either the FE or the host issuing +this command. The connection(s) which are affected by the action of the END +are specified in the command string. + +7. REPLY Command + +This command is required to be sent by both the host and FE to acknowledge +receipt of all command types (except REPLY). The success or failure of the +command being acknowledged is conveyed in the REPLY command string. + + + + ***WORKING DOCUMENT*** + + + 3 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + +Connections 3c + +In order to engage in a meaningful conversation, the parties involved must +be connected. A network connection is defined by the ARPA Host-Host Protocol +document (Nic #8246) as follows : "A connection couples two processes so +that output from one process is input to the other. Connections are defined +to be unidirectional, so two connections are necessary if a pair of processes +are to converse in both directions." The components of a connection, the +sockets, are defined: "... a socket forms the reference for one end of a +connection, and a connection is fully specified by a pair of sockets. A +socket is identified by a Host number and a 32-bit socket number. The same +number in different Hosts represents different sockets." + +The existing network protocols incorporate prescribed strategies for +selecting socket assignments, pairing sockets to form connections, and in +the number of connections required to implement the protocol. + +Conversations, in most cases, are bi-directional. Thus to simplify the +Host's procedures in these cases, FEP permits duplex connections on which +the Host can both send and receive. Send only and Receive only connections +are also available for those situations where communication is one-way. + +Thus, FEP provides the flexibility to reduce complexity in the Host, in +addition to accommodating existing protocols and allowing for the +development of new protocols. + +Addressing 3d + +Conversations in FEP are uniquely identified at initiation by some combination +of Host address, Index number, Path number and Socket assignment. The Host +address and Socket assignment are required to form the connection(s); there- +after the Index and Path are sufficient to identify the conversation. + +Host Address + +If, through the BEGIN command, the local Host explicitly directs the creation +of network connection(s), it must specify the address of the foreign host to +which it desires communication. If the local host indicates a willingness to +communicate, through the LISTEN command, the Front-End processor will supply +the address of the connecting foreign host(s) in its RESPONSE command(s). + + + ***WORKING DOCUMENT*** + + + 4 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Socket + +A socket is either a send socket or a receive socket. This property is +called the socket's gender. The sockets at either end of a network +connection must be of opposite gender. As previously defined a socket +forms the reference for one end of a network connection. To the extent +possible, the FEP shields the Host from the responsibility of assigning +sockets for individual conversations. However, because the +socket is a fundamental part of the addressing mechanism of the network, +the Host may need to be aware of socket assignments when establishing +connections. + +It is through a "well-advertised" socket that a host provides services +to other members of the network community. The Initial Connection +Protocol (ICP) [1] is used to first connect to the well-advertised socket +in order to exchange the number of a presently unused socket which is then +used for the connections required so that the well-advertised socket can +be freed for others attempting to connect. + +When establishing a conversation (with a BEGIN or LISTEN command) the +Host indicates in the value of the CONN-TYPE field whether the socket +specified is to be employed directly, or to be used as an initial +connection socket. + +Index/Path Addressing 3e + +Indexes are values assigned by the local Host to identify network con- +versations. When conversations are established (with the BEGIN or LISTEN +commands) the Host must specify an index value. This value will be +associated with the resultant conversations for their duration. + +It is often necessary to affiliate conversations [2]. To accommodate this, +data paths are defined such that each index has one or more path(s) +associated with it (a path can not exist except as a subordinate to an +index) and all network communication is transmitted on some path. + +The maximum number of indexes which may be in use at any one time, and the +maximum number of paths within one index are installation parameters. + +Index 0 is reserved for controlling other indexes, and logically represent the +"pipe" through which all other indexes "flow." + + + + ***WORKING DOCUMENT*** + + + 5 + + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Addresses in FEP command strings are conveyed by the pair of fields "INDEX" +and "PATH." In commands which cause new indexes to be opened, or new data +paths to be added to an existing index (BEGIN or LISTEN), the PATH field +indicates the first path to be acted upon by this command. For those +commands which do not create new paths or indexes, if PATH is 0, then all +paths associated with this INDEX are addressed; if PATH is non-zero, only the +specific path within the specified INDEX is addressed. + +Path Types 3f + +A path can be one of three types: + + a. DUPLEX - both the Host and the FE can issue MESSAGE commands + on the path. + + b. SEND - only the Host can issue MESSAGE commands on the path. + + c. RECEIVE - only the FE can issue MESSAGE commands on the path. + +The paths within an index may be a mixture of path types but one BEGIN/ +LISTEN must be used for each contiguous set of the same type. + +An FEP path is analogous to a network connection with the following exception. +Network connections are always simplex. This is true for paths of type SEND +or RECEIVE. However, a DUPLEX path is formed by the FE connecting two local +sockets to two foreign sockets. This is a "duplex connection" which is +composed of two network (simplex) connections. + +Modes of Establishing a Path 3g + +One or more paths are established by the action of a single BEGIN or LISTEN +command, with the mode specified in the CONN-TYPE field of the command. +Each of the path types is established in one of two modes - directly or via +ICP. The gender of the path (its ability to receive or send or both) is not +affected by the mode. + +When any of the path types is specified with the ICP mode, the socket value +in the SOCKET field is used as the "well-advertised" socket and an actual +working socket will be exchanged according to the Initial Connection Protocol. +When the direct mode is indicated, the specified socket is used as the working +socket. + + + + ***WORKING DOCUMENT*** + + + 6 + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + +In either mode, when multiple paths are indicated, the next higher socket +number values of the appropriate gender are selected for each path. [3] + +Translation 3h + +When the Host sets up a path(s) (with a BEGIN or LISTEN command) it identifies +what type of translation or data-mapping it requires the FE to perform on all +data transmitted on this path(s). This is specified by two values - one +giving the format of the data transmitted between the FE and the network, +the other giving the format of the data between the Host and the FE. [4] + +Flow Control 3i + +All commands (except REPLYs) must be REPLYED to by the receiver. The sender +is blocked from sending more commands on the same path until a REPLY has been +received. The REPLY command serves two functions: it indicates the +success/failure of the last transmission on the path, and it also indicates +a willingness of the receiver to accept more data on that path. Receipt of +any valid REPLY on an open path is sufficient to unblock it for END or +INTERRUPT commands. Thus a receiver who will not (or can not) accept more +data (MESSAGE commands) on a given path need not block the sender from +ENDing the path if he desires. An indication of "READY" in the reply serves +to unblock the path for MESSAGE commands also. + +In the normal case, the REPLY performs both functions concurrently. However, +when the receiver is not ready to accept more data, he can REPLY indicating +only success/failure of the last command which should be sufficient to +allow the sender to free the transmission buffer, requeue the command for +retransmission if necessary, etc. and wait for another REPLY command +announcing the receiver's ability to accept more data. + +Exceptional Conditions 3j + +When a command is received and can not be executed, the REPLY command is used +to notify the sender of the command. To do this, the bits of CODE field of +the REPLY are set to show the CATEGORY of the error and its TYPE within that +category (see Section 3h). + + + + ***WORKING DOCUMENT*** + + + 7 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + + COMMANDS 4 + + +Introduction 4a + +All communications between the Host and the FE is performed by means of +commands. The commands are given names for documentation purposes but are +distinguished by the binary value of the first field of the command string. +Command strings will be padded with zeros up to the next multiple of an +installation defined parameter. (This value will be dependent on the +capabilities of the hardware interface between the Host and the FE.) + +Field lengths within a command string are specified as some number of bits. +These information bits will be right-justified within the least number of +bytes needed to hold them. The size of a byte will be an installation +parameter which will normally be 8 bits but other values will be accommodated +as necessary. + +The values and meanings of the CODE field of the REPLY command are given for +each command within the following descriptions: + +1: BEGIN 4b + +Format + + BEGIN INDEX PATH HOST SOCKET TRANS-TYPE CONN-TYPE NPATHS + +Use + +This command is sent only from the Host to the FE. Its function is to direct +the FE to establish one or more logical connections (paths) on the specified +index between the Host and the FE. + +Its use has three different modes (depending on the value of the PATH field) : + + mode (a) - to set up a new index and to direct the FE to attempt + to establish network connections for the one or more paths + specified within this index. + + + + ***WORKING DOCUMENTS*** + + + 8 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + + mode (b) - to attempt to establish network connections for an + existing (but at present closed) path within the already set-up + index. + + Mode (c) - to attempt to establish network connections for + one or more new paths within the already set-up index. + +Parameters + + a) BEGIN is an 8-bit field with the value 1. + + b) INDEX is a 16-bit field, specifying the index. Note that + the value 0 is reserved for special use (see Section 4). + + c) PATH is an 8-bit field, specifying the path(s) which are + to be established. Its value identifies the mode of the + BEGIN (see above) : + + mode (a) - its value must be 1. + + mode (b) - its value must be that of the path to be + "re-opened." + + mode (c) - its value must be exactly one greater than + the current number of paths defined within this index. + + d) HOST is a 32-bit field specifying the foreign host with + which connections are to be established. + + e) SOCKET is a 32-bit field, specifying the first or only + socket at the foreign host to which connections are to + be made. + + f) TRANS-TYPE is a 16-bit field which directs the FE to + perform this type of translation on all data (i.e. TEXT + in the MESSAGE command string) sent on every path being + established by this command. The first 8 bits specify + the format of the data on the network side; the second + 8 bits specify the format of the data on the Host side. + The values assigned to the particular formats (eq. ASCII, + EBCDIC etc.) are installation parameters; however, the + + + ***WORKING DOCUMENT*** + + + 9 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + value 0 will always mean "bit string" and thus if either + of the 8-bit sub-fields contains 0, then no mapping will + be performed. + + g) CONN-TYPE is an 16-bit field, specifying the type and mode + of connection(s) to be established for the specified path(s). + Its value informs the FE how to associate sockets with + indexes/paths (see Sections 2f and 2g). + + Value Type Mode + + 7 Duplex via ICP + 6 Duplex direct + 5 Receive via ICP + 4 Receive direct + 3 Send via ICP + 2 Send direct + + h) NPATHS is an 8-bit field, specifying the number of paths which + this command directs the FE to attempt to establish connections + for. If the BEGIN is of mode (b) then its value must be 1. + Otherwise the sum of its value and the value of the PATH field + is the new current number of paths plus one. + +Error CODES in REPLY + + Category Type Meaning + + 3 1 PATH invalid for new index + 3 2 PATH invalid for old index + 3 3 PATH already open + 3 4 HOST unknown + 3 5 TRANSLATION-TYPE invalid + 3 6 CONNECTION-TYPE invalid + 3 7 NPATHS invalid for old path on old index + 3 8 Specified socket inconsistent with CONN-TYPE + 3 9 INDEX invalid, not ready for business + 4 1 No new connections - FE full + 4 2 No new connections - closing down soon + + + ***WORKING DOCUMENT*** + + + 10 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +2: LISTEN 4c + +Format + + LISTEN INDEX PATH HOST SOCKET TRANS-TYPE CONN-TYPE NPATHS + +Use + +This command is sent only from the Host to the FE. + +Its function is to direct the FE to "listen," i.e., to hold the specified paths +pending until such time as a request for connection (RFC) is received from the +network to the specified local socket. then to set up connections and to +respond with a RESPONSE command for each path. + +Its use has three different modes (depending on the value of the PATH field) : + + mode (a) - to set up a new index and to listen on the specified local + socket in order to establish connections for the specified paths. + + mode (b) - to listen on the specified socket in order to establish + connections for the specified, existing (but at present closed) + path within the already set-up index. + + mode (c) - to listen on the specified socket in order to establish + connections for the specified new path(s) within the already set-up + index. + +By use of the HOST parameter, the FE can be directed to accept RFCs from any +host or only from the specified host. + +Parameters + + a) LISTEN is an 8-bit field with value 2. + + b) INDEX is a 16-bit field specifying the index. + + c) PATH is an 8-bit field specifying the first of the one or more + paths which are to be held pending receipt of a RFC. Its + value identifies the mode of the LISTEN (see above) : + + + + ***WORKING DOCUMENT*** + + + 11 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + mode (a) - its value must be 1. + + mode (b) - its value must be that of the existing path. + + mode (c) - its value must be exactly one greater than + the current number of paths within this index. + + d) HOST is a 32-bit field specifying the host from which RFCs + are to be accepted; a value of 0 implies from any host. + + e) SOCKET is a 32-bit field specifying the local socket on which + the FE is to listen for RFCs. + + f) TRANS-TYPE is a 16-bit field specifying the type of translation + the FE is to perform on all data sent on every path established + as a result of this command. Its values are the same as in the + BEGIN command. + + g) CONN-TYPE is an 16-bit field specifying the type and mode of the + connection(s) to be established for the specified path(s) when + an RFC is received. Its values are the same as in the BEGIN + command. + + h) NPATHS is an 8-bit field specifying the number of paths which + this command associates with the specified index and which are + to be established. If the LISTEN is of mode (b) then its value + must be 1. Otherwise the sum of its value and the value of the + PATH field is the new current number of paths plus one, within + this index. Thus its value is the number of extra RFCs for + which the FE is listening on this socket. + +Error CODEs in REPLY + + Category Type Meaning + + 3 1 PATH invalid for new index + 3 2 PATH invalid for old index + 3 3 PATH already open + 3 4 HOST unknown + 3 5 TRANSLATION-TYPE invalid + + + ***WORKING DOCUMENT*** + + + 12 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + 3 6 CONNECTION-TYPE INVALID + 3 7 NPATHS invalid for old path on old index + 3 8 Specified socket inconsistent with CONN-TYPE + 3 9 INDEX invalid, not ready for business + 3 10 Socket already in use. + 4 1 No new listens - FE full + 4 2 No new listens - closing down soon + +3: RESPONSE 4d + +Format + + RESPONSE INDEX PATH CODE HOST SOCKET + +Use + +This command is sent only from the FE to the Host - once per path specified in +a BEGIN or a LISTEN command. + +For paths specified in a BEGIN, it is sent to indicate the success or failure +of the connection attempt. For paths specified in a LISTEN, it is sent at +the time when the FE has received a matching RFC and has established the +connection. + +The HOST and SOCKET parameters are purely informational which the Host can +ignore if it so desires. Their contents are only guaranteed if the connection +attempt succeeded. + +Parameters + + a) RESPONSE is an 8-bit field with value 3. + + b) INDEX is a 16-bit field specifying the index. + + c) PATH is an 8-bit field specifying the particular path. + + d) CODE is a 16-bit field indicating the outcome of the + connection attempt: + + + ***WORKING DOCUMENT*** + + + 13 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + Value Meaning + + 0 Path successfully established. + 1 Local IMP dead. + 2 Foreign IMP inaccessible. + 3 Foreign Host dead. + 4 Foreign Host not responding. + 5 Connection refused. + + e) HOST is a 32-bit field specifying the foreign host to which the + connection has been made. + + f) SOCKET is a 32-bit field specifying the socket at the foreign + host. If the connection type is simplex, then it is the only + foreign socket for this path; if duplex, then it is the lower + of the two foreign sockets. + +Error CODES in REPLY + + Category Type Meaning + + 3 11 INDEX unknown + 3 12 PATH unknown + 3 13 CODE invalid + +4: MESSAGE 4e + +Format + + MESSAGE INDEX PATH COUNT PAD TEXT + +Use + +This command is sent by either the Host or the FE to transmit data on the +specified path and index. + +Parameters + + a) MESSAGE is an 8-bit field with value 4. + + b) INDEX is a 16-bit field specifying the index. + + + ***WORKING DOCUMENT*** + + + 14 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + c) PATH is an 8-bit field specifying the path. Note that the value + 0 is used in the broadcast option (see Section 3j). + + d) COUNT is a 16-bit field specifying the number of bits of data + in the TEXT field. + + e) PAD is an n-bit field, where n is an installation parameter. + It contains only padding (in the present protocol specification) + and can be used to enable the host to have the TEXT field start + on a convenient boundary. + + f) TEXT is a field containing COUNT bits of data being transmitted + on this path. + +Error CODES in REPLY + + Category Type Meaning + + 2 1 This option not implemented + 3 12 PATH unknown + 3 14 No connection opened in this direction + 3 15 PATH blocked at this time, resent later + 3 16 PATH suspended at this time, resent later + 3 17 PATH closed + 3 17 COUNT too large + 4 3 Error in transmitting data, resend command + 4 4 Data lost, resent command. + +5: INTERRUPT 4f +Format + + INTERRUPT INDEX PATH CODE +Use + +This command is sent by either the Host or the FE. + +Its most common use is to pass the information that a terminal user has +pressed his INT (or ATTN or Control-C) key, thereby requesting his +applications program to quit what it is doing for him.[5] + + + ***WORKING DOCUMENT*** + + + 15 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Parameters + + a) INTERRUPT is a 8-bit field with value 5. + + b) INDEX is a 16-bit field specifying the index. + + c) PATH is an 8-bit field specifying the path on which the + INTERRUPT is transmitted. Note that the value 0 is used in + the broadcast option (see Section 3j). + + d) CODE is a 16-bit field. It has no defined meanings as yet + and should contain 0. + +Error CODES in REPLY + + Category Type Meaning + + 2 1 This option not implemented + 3 11 INDEX unknown + 3 12 PATH unknown + 3 14 No connection opened in this direction + 3 15 PATH blocked at this time, resend later + 3 17 PATH closed. + +6: END 4g + +Format + + END INDEX PATH CODE + +Use + +This command is sent by either the Host or the FE, to terminate a connection. +If PATH is 0, then the index and all its paths are terminated, otherwise just +the specified path of the index is terminated. + +Parameters + + a) END is an 8-bit field with value 6. + + b) INDEX is a 16-bit field specifying the index. + + + ***WORKING PARAMETER*** + + + 16 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + c) PATH is an 8-bit field containing the path to be closed, or 0 if + the whole index is to be closed. + + d) CODE is a 16-bit field indicating the reason for the closure: + + Value Meaning + + 0 Normal close + 1 Retries exhausted + 2 Foreign Host failure + 3 Foreign IMP failure + 4 Network failure + 5 Local IMP failure. + + The "Retries exhausted" code indicates that the FE has been + retrying a transmission to the foreign host without success. + +Error CODES in REPLY + + Category Type Meaning + + 3 11 INDEX unknown + 3 12 PATH unknown + 3 13 CODE unknown + 3 15 PATH blocked at this time, resend later + 3 17 PATH closed. + +7: REPLY 4h + +Format + + REPLY INDEX PATH CODE + +Use + +This command is sent by both the Host and the FE to acknowledge receipt of +every other type of command (including those on index 0, see Section 4) and/or +to unblock that particular direction of an opened path for the transmission +of another command. + +Note that the INDEX and PATH fields contain exactly the same as those of the +command being replied to. + + + ***WORKING DOCUMENT*** + + + 17 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + +Parameters + + a) REPLY is an 8-bit field with value 7. + + b) INDEX is a 16-bit field specifying the index. + + c) PATH is a 8-bit field specifying the path. + + d) CODE is a 16-bit field indicating the success/failure of the + command being REPLYed to, and the sender's readiness for more + commands on the same path. It is divided into four subfields - + STATUS, COMMAND, CATEGORY, and TYPE. + + 1) STATUS is 4 bits wide + + bit 0 (right-most) - READY + bit 1 - NOT-READY + bit 2 - ACK + bit 3 - NAK + + ACK=1 indicates that the sender (of the REPLY) has accepted + the command (being REPLYed to). NAK=1 indicates that the + sender has discarded the command (with the reason given by + the settings of the other bits of the CODE field). + + NOT-READY=1 indicates that the sender (of the REPLY) is + willing to receive an END or INTERRUPT on this path. + READY=1 indicates that MESSAGE commands will also be received. + + Normally only one REPLY command will be sent for each + other command. However MESSAGE, INTERRUPT, RESPONSE and + invalid END commands can be replied to by a REPLY with + ACK (or NAK)=1 and NOT-READY=1 and another REPLY, some + time later, with READY=1. [6] + + The ACK and NAK bits are mutually exclusive and should + never both be on simultaneously, and similarly the READY + and NOT-READY bits. + + Note that the READY/NOT-READY bit settings are only + relevant when a path is open. + + + ***WORKING DOCUMENT*** + + + 18 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + 2) COMMAND is 4 bits wide. It indicates the command for + which this is a REPLY : + + Value Meaning + + 0 any of the following + 1 BEGIN + 2 LISTEN + 3 RESPONSE + 4 MESSAGE + 5 INTERRUPT + 6 END + + The value 0 is defined for cases where a Host does not + wish to incur any overhead required to fill in the + non-zero value. + + 3) CATEGORY is 3 bits wide. It specifies the category of + the error indicated by the ACK bit being off : + + Value Meaning + + 1 Command not recognized + 2 Option not implemented + 3 Invalid + 4 Action failed. + + Its value is relevant only when NAK=1. + + 4) TYPE is 5 bits wide. It specifies which error occurred. + Its value is relevant only when NAK=1. The possible values + and meanings for the various errors and their corresponding + CATEGORY subfield values are given under the description + of each command. + +Sequencing 4i + +Once communication between the Host and the FE has been established and each +side is "Ready for Business" (see Section 4b) the Host may at any time send +BEGIN or LISTEN commands for new indexes. The FE will acknowledge a BEGIN or + + + ***WORKING DOCUMENT*** + + + 19 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +LISTEN with a REPLY and the index is then set-up providing that the REPLY +indicates no errors. Other BEGIN or LISTEN commands for the new paths on the +same index may be sent at any time after the index is set-up. + +The FE will send a RESPONSE command for each path on completion of its attempts +to fulfill the Host's instructions. If an attempt failed (indicated by the +CODE field) then the path remains closed and another BEGIN or LISTEN for that +path can be sent. If the attempt was successful, then MESSAGE or INTERRUPT +commands can be sent after the Host has REPLYED to the RESPONSE. + +An INTERRUPT or END command may be sent on any opened path after receiving +a REPLY for the previous command on the same path in the same direction. A +MESSAGE command may be sent if in addition the READY bit was on in the last +REPLY command. + +New paths on the same index may be opened at any time after the index has +been set-up, or particular paths may be ENDed and then have new BEGINs or +LISTENs for them issued. An index remains set-up, even if all its paths are +closed, until an END command with PATH=0 is issued for the index. + +Communication between the Host and the FE is terminated by an END with INDEX=0 +and this will abort any remaining open paths and indexes. + +Broadcasting 4j + +Broadcasting is an optional feature of the protocol. If it has been enabled +by the installation parameter, then the Host may send a MESSAGE or INTERRUPT +command on a particular index with PATH=0. This instructs the FE to send the +data contained in the TEXT field of the MESSAGE command (or an interrupt) on +every network connection corresponding to an open path of the specified index. + +This feature will only occur on MESSAGEs from the Host to the FE (since no +utilization of it in the other direction is envisaged). + +A broadcast MESSAGE is replied to with one or two REPLYs in the same way +as any other MESSAGE command. Flow control within the index is maintained +as if broadcast MESSAGEs were sent on a separate path, i.e., flow control +on other paths is not directly affected. + + + ***WORKING DOCUMENT*** + + + 20 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Note that for a broadcast MESSAGE command the FE will perform translation +on the data for each path in accordance with the BEGIN or LISTEN which +initiated that path. Thus, care must be taken when all paths of the +particular index do not have the same format on the Host side specified in +their TRANS-TYPE (see Section 6b). + +Index 0 5 + +Introduction 5a + +Index 0 provides a control link between the Host and the FE, and thus has no +network connections directly associated with it. The commands on this index +are used to establish and terminate the connection between Host and FE and to +control other indexes. + +Path 0 5b + +Path 0 of Index 0 is used to pass global commands - i.e., those which do not +refer to any particular index or path. The currently defined commands are : + + MESSAGE INDEX=0 COUNT PAD TEXT + + where TEXT = COMMAND [PARM1] [PARM2] + COMMAND is 8 bits long + PARM1 and PARM2 are 16 bits long + + a) COMMAND=1 , PARM1=Hostid + + This is the "Ready for Business" command which must be sent by both + Host and FE to establish communication between them. Count gives the + length of the TEXT field as usual. If COUNT=8, then just the COMMAND + field is present. If COUNT=24, then both the COMMAND and Hostid are + present. + + The FE will never send a Hostid. The Host may send its Hostid in the + event that the FE is connected to more than one IMP or if alternate + routes to the network exist (e.g., via patch panels). + + Until both sides have sent this command no other command is valid. + + b) COMMAND=2 , PARM1=M , PARM2=N + + + ***WORKING DOCUMENT*** + + + 21 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + This is the "CLOSING" command which is a purely information indication + that the sender's FEP module has been told that communication will be + terminated in M minutes for a period of N minutes (N=0 implies + unknown). + + No action is required of the receiver, however he may be able to + distribute the information to his users. + + c) COMMAND=3 + + This is the "CONTINUE" command which indicates that any previous + CLOSING command is now no longer true. + + END INDEX=0 PATH+0 CODE + + This command terminates the connection between the HOST and FE. All + other paths/indexes are automatically aborted and the FE will close + all network connections. The values of the CODE field are the same + as in the general END command. + +Path 1 5c + +Path 1 is reserved for commands specific to a particular path or index. No +commands are presently defined; they will be at a later date when more +experience has been gained on the need for them. + +Path 2 5d + +Path 2 of Index 0 is used for Operator-to-Operator communication between the +Host and the FE. It is an optional feature which is enabled by an installation +parameter. + +MESSAGE commands are formatted in the normal manner with the sender requesting +that the TEXT field be displayed to the receiver's system operator. + +Scenarios 6 + +The following scenarios are included to provide the reader with a "feeling" for +FEP in a varied set of applications. The examples selected relate to existing +ARPANET protocols or other networking applications, and do not represent an +exhaustive list of capabilities. 6a + + + ***WORKING DOCUMENT*** + + + 22 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Fields which are variable or not relevant are not shown (for purposes of +clarity) in the command strings in the following examples. 6b + +Host Implementation of User TELNET 6c + + BEGIN ndxa,PATH=1,host,SKT=1,,CONN-TYPE=duplex+ICP,NPATHS=1 + +The User TELNET process in the Host causes the BEGIN command to be issued. +When a successful RESPONSE has been returned by the FE, a typical duplex +TELNET connection will have been made to the Host specified in the BEGIN. + +Host is Providing Server TELNET 6d + + LISTEN ndxa,PATH-1,HOST=0,SKT=1,,CONN-TYPE=duplex+ICP,NPATHS=32 + + +With this one command the Server TELNET process in the Host has conditioned +the FE to LISTEN on Socket 1 (the well-advertised TELNET socket) and to +establish as many as 32 duplex data paths. The FE, through the RESPONSE +command, will report each connection as it occurs. Path 1 will represent +the first such duplex connection, etc. The Host may then manage the data +paths individually. Individual paths may be ended and placed back into a +LISTENing state by the Host. If at any time an END command specifying this +INDEX with a PATH of 0 were to be sent by the Host, all connections would +be dissolved, and for all practical purposes, the Host is no longer willing +to provide Server TELNET services. + +Host is Providing Server FTP 6e + + LISTEN ndxa,PATH=1,HOST=0,SKT=3,,CONN-TYPE=duplex+ICP,NPATH=1 + +As soon as a RESPONSE for this LISTEN comes from the FE, the Host Server FTP +process should select a new INDEX and issue a new LISTEN for ndxb on socket 3. +The duplex connection which has been made is the control path for the file +transfer. Based upon control information passed between server and user on +ndxa (path 1) the server FTP will either: + + BEGIN ndxa,PATH=2,(hostid etc. from response),NPATHS=1 + OR + LISTEN ndxa,PATH=2,(hostid etc. from response),NPATHS=1 + + + ***WORKING DOCUMENT*** + + + 23 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +When a RESPONSE command has been received to the previous command, the data +connection (PATH 2) will have been made and transfer of data may begin. The +values for TRANS-TYPE and CONN-TYPE for the LISTEN or BEGIN will be derived +from the exchange of information on the control path. + +Host Is User FTP 6f + + BEGIN NDXA,PATH=1,HOSTID,SKT-3,,CONN-TYPE-duplex+ICP,NPATH=1 + +when a RESPONSE to this command has been returned by the FE the control path +will have been connected. The Host, after exchanging information on the +control path, may then proceed by issuing a BEGIN or LISTEN as in the Server +FTP example. + +Teleconferencing 6g + +An INDEX with n PATHs permits up to n otherwise disassociated conversations +to be affiliated. Each path can be manipulated individually, or all paths as +a group. With the broadcast option -- a MESSAGE command specifying INDEX but +not specifying PATH will be broadcast to all open paths on that index. Thus +each host may direct its messages to any or all parties. + +A "conference" may be initiated by any host who issues a LISTEN with multiple +duplex paths on an agreed upon (but not necessarily well advertised) socket. +When some foreign host connects, an ordinary TELNET connection exists. If, +however, a third or forth or more parties connect, the hosts already engaged +in the conversation may elect to inform the late comers of the members already +involved. Each host may then elect to connect to as many other hosts as he +desires. (The parties could agree as to who would BEGIN and who would LISTEN). +Following this scheme [it is not a protocol] all parties participate equally, +there is no moderator. Each host decides to whom he will speak. Using the +initial LISTEN, a variation on this would permit the LISTENer to be moderator +and require that he relay messages to other parties, as desired. + +In summary, the data path mechanism permits a group of users to select an +agreed upon socket, appoint a "moderator," and at a prescribed time engage in +a conference without benefit of special protocol implementations in the FE +or in any of the hosts (except possibly the moderator). + + + ***WORKING DOCUMENT*** + + + 24 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Example of the Use of Simplex Connections 6h + +The Simplex connection types permits a host to LISTEN on a group of simplex +sockets of a particular gender. If the host supported a group of line +printers, for example, the Line Printer Applications Program could perform a +LISTEN on a socket advertised to be his "Printing Socket," specifying as many +receive paths as he had printers. Foreign hosts could then connect (via ICP) +to his print socket. They would be given an appropriate working socket value +and then connect to an available printer. In this way up to n foreign hosts +may be connected to his n printers at all times. All that any needs to know +to avail themselves of printing services is the server host's print socket. +[1] + +Host Implementation 7 + +Concepts 7a + +The Front-End Protocol permits a Host to make use of the network through +existing low-level protocols, without requiring that it be cognizant of the +implementation details of those protocols. + +Implementation of FEP in the Host is in terms of the function it is performing +or the service it is providing. Information regarding sockets is available +to the sophisticated user, but can be ignored if not relevant to the problem +at hand. + +The Host should provide the equivalent of a BEGIN, LISTEN, MESSAGE, INTERRUPT, +and END command. In other words, the human user or applications level process +has at its disposal the full power of FEP. + +The FEP module in the Host serves as a control mechanism to multiplex/ +demultiplex traffic between itself and the FE. In appearance and function it +is much like any multi-line interface driver. It handles REPLYS, reports +errors, etc. The FEP module must also assume the responsibility for assignment +of indexes. This could easily be implemented as a "GETINDEX" subroutine +which would allow a user to ask for an index to be assigned to him. The +user could then proceed to do BEGINs, LISTENs, etc. on that index. + +A server process makes itself available to the network at large by issuing an +appropriate LISTEN. The Host FEP module would not have to be aware of what +servers were implemented or in operation. The server process, when it was + + + ***WORKING DOCUMENT*** + + + 25 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +activated, could do a "GETINDEX," followed by a LISTEN on its well-advertised +socket, and then proceed from there. The Host FEP module simply associates +indexes to processes and passes the incoming traffic to the appropriate process +for analysis and response. It maintains flow between itself and the FE through +the generation and receipt of REPLYs. + +The type of data structures, or format of information employed in the +implementation of the FEP commands in the Host is, of course, up to the +implementor. BEGIN could be a macro call, with the various information +passed as parameters to the Host FEP module -- which would then arrange it +into a command for delivery to the Front-End processor. The important +consideration is not how the commands are implemented, but simply that their +function is provided. It might be desirable, for instance, to implement the +Host such that the front-end processor looks like a special I/O device. In +this case, it may be appropriate to implement a form of OPEN [for BEGIN or +LISTEN], a GET or PUT [for MESSAGE], CLOSE [for END], etc... + +Regardless of the implementation details, it appears that, while it is the +responsibility of one control module to assign and manage INDEXes, data paths +are entirely the responsibility of the process which "owns" the INDEX. + +Installation Parameters 7b + +To package the software for the FE for a given Host, that Host supplies a +number of parameters defining what FE capabilities it requires. These +parameters are input to a system-generation procedure to produce the particular +FE code. + +The parameters are: + + Byte Size + + This gives the size in bits, into a multiple of which each and every + field of a command string will be right-justified (i.e., the + information bits come last, preceded by as many padding bits as are + needed to complete the least integral number of bytes). + + Its value will normally be 8 but other values will be accommodated + as necessary. + + + ***WORKING DOCUMENT*** + + + 26 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + Command String Padding + + This gives the size in bits of the width of the hardware interface + between the Host and the FE, such that every command string + transmitted in either direction will have padding appended to + complete the least multiple of this width. + + In the typical implementation, this parameter will be 0 and any + padding required will be appended/discarded by the line protocol + underlying FEP. + + Pad Field Length + + This gives the size in bits of the PAD field in the MESSAGE command. + This enable a Host to have the TEXT field start on a convenient + boundary. + + Its value can be anywhere in the range 0 to 64. + + Maximum of MESSAGE + + This gives the maximum length of a MESSAGE command string. + + Because buffer allocation in the FE is based on this parameter, + its value should be chosen with care. + + Maximum number of Indexes + + This gives the maximum number of indexes which may be set-up at any one + time. + + Maximum Number of Paths + + This gives the maximum number of paths within one index which may be + open at any one time. + + Translation Types + + This gives the set of required values and meanings of the TRANS-TYPE + field of the BEGIN/LISTEN commands. The TRANS-TYPE field is divided + into two 8-bit subfields; the first giving the format of data on the + + + ***WORKING DOCUMENT*** + + + 27 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + network side; the second giving the format of data on the Host side. + The FE is required to translate between these formats all data + contained in the TEXT field of MESSAGE commands. + + This parameter specifies the required formats and their values in the + 8-bit subfields. The value 0 is reserved to mean "bit-string" and + when it appears as either (or both) of the subfields it implies no + translation is to be done. + + Broadcast Option + + This specifies whether the Host wants to be able to use the Broadcast + feature (see Section 3j). + + Operator-to-Operator Communication Option + + This specifies whether the Host wants the ability to send messages + to the FE operator or to have the Host's operator receive messages + from the FE. + +Other options may be included in the protocol at some later date and these will +be available through installation parameters similar to the Broadcast option. + +Note that all of these parameters affect the size and complexity of the FE +code. Thus it is important that their values be chosen carefully so as to +maximize FE efficiency while minimizing Host implementation effort. + +For descriptions of individual Host implementations and a list of the options +available so far, see Appendix D. + +FE Implementation 8 + +FEP is device independent. For the present however, an initial implementation +will be accomplished using the DEC PDP/11 computer as the FE device and the +front-end software is to be based upon an extended version of the original ELF +system developed at SCRL. + +For more detailed information, see Appendix C. + + by : 9 + G. W. Bailey (BAILEY@OFFICE-1) + K. McCloghrie (MCCLOGHRIE@OFFICE-1) + + + ***WORKING DOCUMENT*** + + + 28 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + APPENDIX A 10 + + References + + +[1] ICP is used in this document in a less strict manner than specified + in NIC 7101, in that it is not necessarily two simplex connections + that are set up as the result of the exchange of the socket number + on the initial connection. + +[2] An example of connections needing to be affiliated, is in the + implementation of FTP, where the control connection and the data + connection have a defined relationship in their socket assignments. + +[3] Note that a range of socket numbers is reserved for use by an index + when it is set-up (cf. AEN). + + However, socket numbers for the paths of an index are not necessarily + contiguous. For instance, when the next path opened after a SEND + path is another SEND path, or when a path other than the first of an + index is opened with ICP specified. Nevertheless, if a protocol + requires contiguous sockets, then the opening of the paths in a logical + manner will provide the contiguity. + +[4] One possible translation will be from a Network Virtual Terminal on + the network side to a local terminal type on the Host side. + +[5] The FE will directly equate the INTERRUPT command with the Host-Host + protocol INR/INS commands. + +[6] Note that the READY indication in a REPLY is, in the general case, + not directly related to a network RFNM; unless it is heavily loaded, + the FE will be buffering possibly more than one message (in either + direction) until flow control mechanism allow the messages to be sent + on. + + However, it is possible that a particular Host might wish to have + knowledge of receipt of a previous message before transmitting the + next. In this case, the FEP implementation could be set up to only + indicate READY after receiving the RFNM and possibly only send RFNMs + after receiving a REPLY containing an ACK. + + + ***WORKING DOCUMENT*** + + + 29 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + APPENDIX B 11 + + State Diagrams + + + +In the state diagrams below the following notation is used: + + REPLY(A) - REPLY with ACK=1, READY/NOT-READY irrelevant + REPLY(N) - REPLY with NAK=1, READY/NOT-READY irrelevant + REPLY(R) - REPLY with ACK=0, NAK=0, READY=1 + REPLY(A+R) - REPLY with ACK=1, READY=1 + REPLY(N+R) - REPLY with NAK=1, READY=1 + REPLY(A+NR) - REPLY with ACK=1, NOT-READY=1 + REPLY(N+NR) - REPLY with NAK=1, NOT-READY=1 + + + + State Diagram for INDEX + + + + / ------\ /-------\ /-----\ + ! !BEGIN(new index) ! ! ! ! + ! !->--------------->-!Index ! ! ! + !Index !LISTEN(new index) !Open ! ! ! + !Closed ! !Pending! !Index! + ! ! REPLY(N)! !REPLY(A) !Open ! + ! !-<---------------<-! !->------->-! ! + ! ! \-------/ ! ! + ! ! ! ! + ! ! /-------\ END(Path=0)! ! + ! ! ! !-<-------------<-! ! + ! ! REPLY(A)!Index ! ! ! + ! !-<---------<-!Close !REPLY(N) ! ! + ! ! !Pending!->------------->-! ! + \-------/ \-------/ \-----/ + + + + ***WORKING DOCUMENT*** + + + 30 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + APPENDIX B (continued) + + State Diagram for Whole Path + + + /------\BEGIN /----------\ + ! !->-------->-! ! + ! !LISTEN !Connection! + !Path ! !Pending !REPLY(A) /-------\ + !Closed! REPLY(N)! !->------------>-! ! + ! !-<--------<-! ! ! ! + ! ! \----------/ !Path ! + ! ! !Conn- ! + ! ! /-----\ RESPONSE(CODE>0)! ecting! + ! ! ! !-<-----------------<-! ! + ! ! !Path ! ! ! + ! ! REPLY(A)!Abort! END(PATH>0)! ! + ! !-<--------<-!Pend-!-<-----------------<-! ! + ! ! ! ing ! ! ! + ! ! ! !REPLY(N) ! ! + \------/ ! !->----------------->-! ! + \-----/ ! ! + ! ! + /-------\ ! ! + ! ! RESPONSE(CODE=0)! ! + /----\ !Path !-<--------------<-! ! + ! ! !Open ! ! ! + !Path! !Pending!REPLY(N) ! ! + !Open! REPLY(A)! !->-------------->-! ! + ! !-<--------<-! ! \-------/ + \----/ \-------/ + + + + + + + + + + ***WORKING DOCUMENT*** + + + 31 + + +RFC 705 +Front-End protocol + + + ***WORKING DOCUMENT*** + + + + APPENDIX B (continued) + + State Diagram for Each Direction of Path + + + + + /----\MESSAGE /-------\ /-------\ + ! !->---------------->-! !REPLY(A+NR) ! ! + !Path!INTERRUPT !Command!->--------->-!Message! + !Open! !Blocked!REPLY(N+NR) !Blocked! + ! ! ! ! ! ! + ! ! REPLY(A+R)! ! INTERRUPT! ! + ! !-<----------------<-! !-<---------<-! ! + ! ! REPLY(N+R)\-------/ ! ! + ! ! REPLY(R)! ! + ! !-<----------------------<---------------<-! ! + ! ! ! ! + ! !END(PATH>0) /-------\ END(PATH>0)! ! + ! !->---------------->-! !-<---------<-! ! + ! ! ! ! ! ! + ! ! REPLY(N+R)!Path !REPLY(N) ! ! + ! !-<----------------<-!Close !->--------->-! ! + \----/ !Pending! \-------/ + ! ! + /------\ REPLY(A)! ! + !Path !-<--------------<-! ! + !Closed! ! ! + ! ! \-------/ + \------/ + + + + + + + + + + + ***WORKING DOCUMENT*** + + + 32 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + + APPENDIX C + + Front-End Implementation + + +Introduction + +A Network Access System (NAS), developed for a DEC PDP/11 computer, supports +the current Imp-Host, Host-Host and ICP protocols. The implementation of +these protocols facilitate process-process communications across the network +and multi-user TELNET access to foreign hosts. This NAS provides the FE +environment in which FEP is implemented. + +The NAS system is comprised of a Kernel or executive section and a Network +Control Program (NCP) plus a collection of modules to support device +interfaces, handle terminals, and implement applications, as appropriate. The +software is modular and extensible. + +The KERNEL + +The Kernel of the system consists of a set of functional modules which perform +the task of resource management in a multiprocessing environment. This allows +processes to be created, vie for processor service according to priority, +intercommunicate, and be terminated. System primitives exist for various +tasks such as process creation and synchronization, storage allocation, and +sharing of the interval timer. + +The term process used here describes an autonomous sequence of states brought +about by the PDP-11 processor; a process' state is characterized by the set of +processor registers, a stock, and process-owned storage areas. Process share +storage areas which are accessed only (eq. pure code). Processes also share +storage areas which may be updated (eq. control tables). In this case an +allocation mechanism is utilized to prevent simultaneous ownership of an +updatable storage area. The storage area is thus viewed as a sequentially +sharable resource which is allocated by the process, modified, and then +released. + +Processes are given control of the processor by a single procedure called the +Dispatcher. Processes are said to be in a ready state or in a waiting state. +When a process blocks itself, control is given to the highest priority ready +process. + + + ***WORKING DOCUMENT*** + + + 33 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Each process has an associated input message queue. This queue is the vehicle +for interprocess communication. A process is blocked (put into a wait state) +when its input message queue becomes empty (voluntary wait), or when an +interrupt occurs (involuntary wait) because a higher priority process is to +receive control of the processor. A process may voluntarily block itself +waiting for any signal, or it may block itself for a specific event to be +posted to its input message queue. + +The Network Control Program + +The NCP provides "third level" protocol functions to local processes. It +contains a process which decodes and passes messages which have been received +from the IMP and placed on the IMP-Host queue. This process interacts with +other processes which call the NCP to establish connections or to transmit +data. Thus the NCP is essentially divided into two parts: + + 1) a process which handles incoming messages from the network, + interprets IMP-Host and Host-Host control messages, and forwards + regular messages on established connections; and + + 2) a set of primitives which allow local processes to establish + connections to other processes across the network, and to perform + requests for data to be transferred on these connections. + +There are two primary data structures used by the NCP to monitor the status +of network connections. The first is called the Host Table, and describes +that which is peculiar to each given host; the second is referred to as a +Connection Table and contains all information on the state of a local NCP +socket (connection). Connection Tables may be created either through +external requests (e.q., an RFC is received from a remote host) or through +internal requests (e.g., a local process performs a LISTEN). + +Flow control is that portion of the NCP which governs the flow of data on +connections. There are two procedures which perform this task; one which +handles receive connections and one which handles send connections. These +procedures receive control when an event has occurred which may now make it +possible to transfer data on a connection. + +Both send and receive flow control procedures have the responsibility of moving +data between local process buffers and messages being received or transmitted +over the network. In addition, they handle the formatting and unpacking of + + + ***WORKING DOCUMENT*** + + + 34 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +messages received. Local processes are unaware that data is being transmitted +as discrete messages. + +The NCP watchdog process monitors the state of network connections, checking +for error conditions and performing garbage collection tasks. It receives +control at periodic intervals and scans the list of known hosts, looking for +existing connections. For each host to which an input or output connection +exists, the Watchdog causes a Host-Host NOP message to be sent. Thus if a +remote Host crashes while data is being awaited, local processes are informed +of the error condition. The NCP takes notice of the remote crash when it +receives a IMP--Host type 7 control message (Destination Host Dead). It then +automatically closes all connections to that Host, and notifies using processes +of that fact. + +A second function of the NCP Watchdog is to check for connections hung because +of an outstanding RFNM. If a RFNM is not received for a specified interval, +the message is discarded, and the associated connection closed. + +The FEP Handler + +The Front-End Protocol is implemented as a collection of related, but +specialized processes which manage network connections on the one side, and +manage FEP paths and indexes on the other. Some FEP processes are NCP users. +They cause network connections to be made, rule on incoming RFCs, and both +accept and generate network data. Other FEP processes support the Host. +These processes parse incoming commands, create indexes and paths, control +the generation of replies and generally manage the paths. Certain FEP +processes control specialized tasks such as translation of data, servicing of +LISTEN commands and generation of RESPONSE commands. + +Two data structures provide control information for FEP activities. An Index +Table exists for each active index. Each Index Table associates one or more +Path Table entries. Information in the Path Table reflects the state of the +path, the translation type specified for data on this path, and necessary +information to associate the path to any appropriate NCP Connection Tables. +The Path Table is the common interface for all of the FEP modules. Most FEP +processes are activated to service some event which is usually associated to +a path. The action of the process will likely be dictated by the state of the +path as indicated by the Path Table entry, and may result in altering the state +of the path or the activation of one or more other FEP processes. + + + ***WORKING DOCUMENT*** + + + 35 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +Two message queues provide Host input and output to the FEP modules. A line +protocol mechanism services these queues. Commands from the Host are placed +on the FEP Input queue by the line protocol process and the FEP Host Input +process is signaled. When an FEP Host Output module places a Command for the +Host on the host Output queue it signals the line protocol process. + +The FEP implementation is basically Host independent down to the level of the +Host Input and Host Output queues. + +The Line Protocol Mechanism + +The device interface and the line protocol between the FE and the Host are +installation dependent. Because of this dependency, only a general discussion +of the Line Protocol Mechanism is possible in this context. Detailed +descriptions of the specific line protocols are included in the section for +each Host. + +The communications discipline and physical device characteristics may vary +considerably from host to host. All FEP line protocols, however, will show +certain common characteristics. The interface between the FEP handler and the +Line Protocol Mechanism will always be Host Input and Host Output queues. All +line protocol mechanisms will be expected to guarantee the integrity of the +data. This implies some form of flow control, error detection/correction and +retransmission capability, as well as normal transmit/receive responsibilities. +The Line Protocol Mechanism will be expected to report failure after +unsuccessfully attempting to perform an I/O operation. The number of retries +etc. before reporting failure is an installation parameter. The FEP Handler +works only in terms of FEP commands. The line protocol may provide for block +transfers where each physical block is comprised of one or more FEP commands. +If such is the case, it is encumbent upon the Line Protocol Mechanism to +deblock the incoming Host commands before placing them in the Host Input queue. + +The Line Protocol Mechanism will, in the general case, not manage any buffers. +After successfully transmitting a command to the Host it is responsible for +reporting the I/O complete, but the buffer space is freed or reused only by +the FEP process which "owns" that space. The FEP Handler might use buffer +assignment to control the rate of incoming traffic. When the FEP Host Input +queue is ready to accept an additional command, it would acquire a buffer and +signal the Line Protocol Mechanism, passing it a pointer to a buffer. This + + + ***WORKING DOCUMENT*** + + + 36 + + +RFC 705 +Front-End Protocol + + + ***WORKING DOCUMENT*** + + +is effectively a "read" request. When the line protocol handler has filled +the buffer, it adds it to the Host Input queue and signals I/O complete to +the appropriate FEP process. + +If the nature of the physical connection is such that the FE must accept +unsolicited input, it may be necessary for the Line Protocol Mechanism to +have its own buffer pool, in addition. If this is the case, it must be +entirely managed by the line handler and transparent to the FEP Handler. + +Data Translations + +The TRANS-TYPE provisions in FeP may be employed for at least two general +services. First, it can be used for normal character set substitutions. This +is where, in the general case, there is a one-to-one relationship between the +two character sets. + +The second service addresses the problem of data transformation. In this case, +there need not be a one-to-one relationship between incoming data and outgoing +data. + +The translation mechanism uses a token (e.g., a character) from the incoming +data stream to index into a translation table. The result may be one of the +following: + + a) do nothing, drop the character + b) output the character unchanged + c) substitute input character by output character + d) substitute input character by output string + e) activate a procedure indicated by the table + f) change the translation + g) test the translation mode and do any of the above depending + on the result. + +For each translation/transformation required by the Host a translation table +must be defined. For simplicity and clarity the TRANS-TYPE field in the FEP +commands allows the user to specify Host side and Network side as independent +entities. In actual execution the Host/Network pair addresses a translation +table which must have been previously defined. Note that for a duplex path +two translation tables are necessary (A->B is not the same as A<-B). + +A collection of "standard" character sets will be addressed initially (EBCDIC, +ASC117, ASCII8, BCD, etc.) and at least NVT. As new requirements are defined +these will be added to a library which will then be available to subsequent +users. + + + ***WORKING DOCUMENT*** + + + 37 + + +RFC 705 +Front-End Protocol + + +***WORKING DOCUMENT*** + + + APPENDIX D + + Host Implementations + + + +To be written at a later date. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ***WORKING DOCUMENT*** + + + 38 \ No newline at end of file -- cgit v1.2.3