diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc929.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc929.txt')
-rw-r--r-- | doc/rfc/rfc929.txt | 3192 |
1 files changed, 3192 insertions, 0 deletions
diff --git a/doc/rfc/rfc929.txt b/doc/rfc/rfc929.txt new file mode 100644 index 0000000..b1bde75 --- /dev/null +++ b/doc/rfc/rfc929.txt @@ -0,0 +1,3192 @@ + + +Network Working Group Joel Lilienkamp (SDC) +Request for Comments: 929 Richard Mandell (SDC) + Michael Padlipsky (Mitre Corp.) + December 1984 + + PROPOSED HOST-FRONT END PROTOCOL + + +Status Of This Memo + + The reader should be aware of several things in regard to what the + present document is up to. First and foremost, IT IS A PROPOSAL FOR + A STANDARD, NOT A STANDARD ITSELF. Next, it assumes that the + separate document, RFC 928, which is an introduction to the present + document, has been read before it is. Next, it should be understood + that "final cut" over this version of the document has been exercised + by the author of RFC 928, not by the primary author of the present + document, so any readers bothered by style considerations should feel + free to blame the former, who's used to it, rather than the latter, + who may well be guiltless. (Editing at a distance finally become too + hard to manage, so if I'm typing it myself I'm going to fiddle with + it myself too, including, but not limited to, sticking my own section + on the Conceptual Model in before Joel's words start, rather than + leaving it in the Introduction. MAP) + + Finally, it should be noted that this is not a finished document. + That is, the intent is eventually to supply appendices for all of the + protocol offloadings, describing their uses of protocol idiosyncratic + parameters and even their interpretations of the standard per-command + parameters, but in order to get what we've got into circulation we + haven't waited until all such appendices have been written up. (We + do have notes on how to handle FTP, e.g., and UDP will be pretty + straightforward, but getting them ready would have delayed things + into still another calendar year, which would have been very annoying + ... not to say embarrassing.) For that matter, it's not even a + finished document with respect to what is here. Not only is it our + stated intention to revise the protocol based upon implementation + experience gained from volunteer test implementations, but it's also + the case that it hasn't proven feasible to iron out all known + wrinkles in what is being presented. For example, the response codes + almost certainly need clarification and expansion, and at least one + of us doesn't think mandatory initial parameters need control flags. + However, to try too hard for polish would be to stay in subcommittee + for the better part of forever, so what you see is what we've got, + but certainly isn't meant to be what you or we are stuck with. + + This RFC suggests a proposed protocol for the ARPA-Internet + community, and requests discussion and suggestions for improvements. + Distribution of this memo is unlimited. + + + + +Lilienkamp & Mandell & Padlipsky [Page 1] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + +Conceptual Model + + There are two fundamental motivations for doing outboard processing. + One is to conserve the Hosts' resources (CPU cycles and memory) in a + resource sharing intercomputer network, by offloading as much of the + required networking software from the Hosts to Outboard Processing + Environments (or "Network Front-Ends") as possible. The other is to + facilitate procurement of implementations of the various + intercomputer networking protocols for the several types of Host in + play in a typical heterogeneous intercomputer network, by employing + common implementations in the OPE. A third motivation, of basing a + network security approach on trusted mandatory OPEs, will not be + dealt with here, but is at least worthy of mention. + + Neither motivation should be allowed to detract from the underlying, + assumed desire to perform true intercomputer networking, however. + Therefore, it is further assumed that OPEs will be attached to Hosts + via a flexible attachment strategy, as described in [1]. That is, at + the software level an explicit Host-Front End Protocol (H-FP) will be + employed between Hosts and OPEs, rather than having OPEs emulate + devices or device controllers already "known" to Host operating + systems (in order to avoid introducing new code into the Host). + + For reasons discussed in the Introduction, an H-FP resolves into + three layers. The Link layer enables the exchange of bits between + Host and OPE. The Channel layer enables the bit streams to be + demultiplexed and flow controlled (both the Channel and Link layers + may use preexisting per-Host mechanizations, it should be recalled). + The Command (or "Service Access") layer is our primary concern at + present. It serves as the distributed processing mechanism which + allows processes on Hosts to manipulate protocol interpreters (PIs) + in OPEs on their behalf; for convenience, it will be referred to as + "the H-FP" here. (It should be noted that the Link and Channel + layers may be viewed as roughly equivalent to the inboard processing + investment for a Host-comm subnet processor PI and device driver, so + in practical terms the savings of resources achieved by outboard + processing come from making the H-FP "smaller" than the inboard + implementations of the protocols it allows to be offloaded.) + + The crucial property of the H-FP conceptually is that it stands as + the interface between a (Host) process and a PI (which is actually + outboard). Usually, the model is that of a closed subroutine + interface, although in some cases an interprocess communication + mechanism model must be appealed to. That is, the interactions + between cooperating H-FP PIs in some sense mimic subroutine or IPC + calls, from the perspective of Host processes calling upon their own + H-FP PIs, which in turn are of course interfacing via just such + + +Lilienkamp & Mandell & Padlipsky [Page 2] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + mechanisms themselves. Another way of putting it is that "if the + protocols were inboard," the processes invoking H-FP wouldn't know + the difference. H-FP, then, may be viewed as a roundabout way of + letting Host processes "get at" various PIs. + + Naturally, the mechanization of the desired concept cannot be + particularly literal. After all, the Hosts and the OPEs are + different processors, so we're not envisioning a passing through of + parameters in an exact fashion. However, in broad terms the model is + just that of a somewhat funny interface between a process and a PI. + (This should not be construed as ruling out the occurrence of events + which prompt the OPE to initiate an exchange of commands with the + Host, though; see the Introduction for more on the topic of + "Symmetric Begins.") + +Interaction Discipline + + The interaction between the Host and the OPE must be capable of + providing a suitable interface between processes (or protocol + interpreters) in the Host and the off-loaded protocol interpreters in + the OPE. This interaction must not, however, burden the Host more + heavily than would have resulted from supporting the protocols + inboard, lest the advantage of using an OPE be overridden. + + Channel Level Interaction + + As stated elsewhere, the Channel level protocol (implicitly in + conjunction with the Link level) provides two major functions. These + are demultiplexing the traffic from the Link level into distinct data + streams, and providing flow control between the Host and the OPE on a + per stream basis. These hold even if the Host-OPE attachment is DMA. + + The data streams between the Host and the OPE are bidirectional. In + this document, the basic unit of data transferred by the Channel + level is referred to as a "chunk". The primary motivation for this + terminology is that the H-FP permits the Channel level to be one of + several possible protocols, each with its own terminology. For + example, a chunk on an X.25 Channel would be a packet, while a chunk + on the DTI H-FP channel would be a message. While the Command level + is, in a sense, "more efficient" when the chunk size is permitted to + be large, the flexibility permitted in the choice of protocols at the + Channel level precludes any assumptions about the chunk size. + + Each data stream is fully asynchronous. A Channel protocol user can + send data at any time, once the channel has been properly opened. + (The Command level's logic may render some actions meaningless, + however.) The data transfer service provided by the Channel protocol + + +Lilienkamp & Mandell & Padlipsky [Page 3] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + is reliable; this entails delivery in the correct order, without + duplication, and checked for bit errors. All retransmission, error + checking, and duplicate detection is provided by this protocol in a + way that is transparent to the user. (If the attachment is DMA, + stream identification and chunk length must still be provided for.) + + The flow control at the Channel level is provided to prevent the OPE + and the Host from overloading each other's resources by excessive + transmissions. In general, this flow control should not directly + affect the outboard protocol interpreters' operation. On the other + had, this flow control has the same effect as explicit interface + events that provide flow control between the user and the protocol + interpreter (e.g., the Allocate event of the interface specification + for TCP found in MIL-STD 1778). Hence, such events do not need to be + communicated explicitly at the Command level. (If the attachment is + DMA, flow control must still be provided for.) + + Should Hosts require an OPE to be attached via a Link Level that + furnishes physical demultiplexing (e.g., a group of RS232 ports), any + attempt to avoid furnishing reliability and explicit flow control, is + done at their peril; we have not chosen to assist such an + enterprise, but neither have we precluded it. (It would certainly + violate the spirit of the thing, however.) + + Command Level Interaction + + The approach chosen for this H-FP is to base the interaction on a + small set of commands, separately applicable to a given Channel Level + channel. The commands are simple, but sufficiently flexible to permit + the off-loading of the interpreters of the large number of protocols + at various levels in the hierarchy. This flexibility is made + possible in part by the similar nature of the interfaces to most + protocols, combined with the provision of "protocol idiosyncratic + parameters". These parameters are defined for each offloaded protocol + interpreter in the OPE. The use of such parameters does not + complicate the basic design of the OPE, since it must be customized + for each off-loaded protocol anyway, and all that is required of the + OPE for those parameters is to pass them to the off-loaded protocol + interpreter. Hence, an interface tailored to a particular protocol + can be created in a straightforward and cost-effective way. + + The command dialog is more or less asynchronous. Commands can be + issued at any particular time (except when there is a pending + command, which will be discussed below), and there is no need for + dummy traffic on a channel when no commands are issued. + + Associated with each command is a response. The purpose of this + + +Lilienkamp & Mandell & Padlipsky [Page 4] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + response is to indicate, at some level that depends in part on the + particular protocol interpreter that is offloaded to the OPE, whether + the command was successfully executed, and if unsuccessful, the + reason. Often, generating the response involves interaction with the + protocol interpreter before a response can be generated. + + When a command is issued, the issuer must wait for a response before + another command is issued. The nature of the communication between + the Host and the OPE is thus a lock step command/response dialog. + There are two major exceptions to this principle, however. One + exception is the abrupt form of the End command, which can be issued + at any time to cancel any previously issued commands, and indicate + that services are no longer desired. The other exception is the + Signal command. Since a Signal is out-of-band and usually of high + importance, forcing it to wait on a response would be undesirable. + Hence, a Signal command can be issued while commands (other than + Signal) are pending. However, a Signal command should not be issued + before a successful response to the Begin command has been received. + Since it is possible for more than one command of different types to + be pending at one time, a mechanism to distinguish responses is + needed. Since there are never two commands of the same type pending, + including the command name in the response is sufficient to make this + distinction. + + A special case command is the Transmit command. Details of the + Transmit command are provided in the next section. Essentially, the + Transmit command is used to invoke the data transfer services of the + off-loaded protocol (when issued by the Host) or to indicate the + arrival of new data from the network (when issued by the OPE). The + nature of specific protocol interfaces for these events varies widely + between protocols. Some may block until the data is accepted by the + remote counterpart (or "peer") protocol interpreter, while others may + not. Hence, there is a special parameter which indicates the nature + of the Transmit command interface. It can either require that the + response should be generated immediately after determining the + Transmit command is complete and formed properly, or can indicate + that the response should not be generated until the appropriate + interface event is given by the remote protocol interpreter. The + default action for all Transmit commands can be initialized using the + Begin command and changed using the Condition command. Also, the + default action can be temporarily overridden by specifying a + parameter with the Transmit command. The net result of this mechanism + is to allow the Host to determine within reason just how lock-stepped + transmissions are to be. (It is assumed that the usual case will be + to transfer the burden of buffering to the OPE by taking immediate + responses, provided that doing so "makes sense" with the particular + offloaded protocol in play.) + + +Lilienkamp & Mandell & Padlipsky [Page 5] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Some protocols provide a block-oriented data transfer service rather + than a stream-oriented one. With such a service, the data associated + with a transfer request is viewed as an integral unit. For actual + network transmission, the protocol may permit these units to be + grouped or fragmented. However, the receiving end must deliver the + data in the original, integral units. Protocols that conform to this + model include some datagram protocols such as IP and UDP, and also + some connection protocols such as NBS TP. + + To cater to these types of protocols, it is a convention that + commands, their parameters, and any associated data be transferred + between the Host and the OPE in a single chunk. Any data associated + with an H-FP command is viewed as an integral unit which is used in + the corresponding service request given to the outboard protocol + interpreter or delivered as a complete unit to the process in the + Host. Operation of stream-oriented protocols such as TCP will not be + adversely affected by this convention. + + To accommodate Channel protocols that do not provide for arbitrarily + large chunks, a mechanism at the Command level is required to permit + the linking of multiple chunks into a single command, in order to + transfer the burden of buffering as much as possible from the Host to + the OPE. The facility proposed here would consist of an indication + at the beginning of each chunk which would distinguish integral + commands, fragments of a command for which more fragments are yet to + arrive, and the final fragment of a command. The details of this + mechanism are discussed in the section on the syntax of commands and + responses. + + It is a convention for this H-FP that any data associated with a + command must start on a word boundary (as defined by the local + system). Consequently, there is a need to provide padding within the + commands. Such padding is used only to fill to the next appropriate + boundary, and has no semantic significance to the command interpreter + (i.e., two commands that are identical except for the amount of + padding should behave identically). The details of this padding are + discussed in the section on the syntax of commands and responses. + + + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 6] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + +Syntax Rules + + At the Command Level, communication between the Host and the OPE + takes the form of commands and responses. A command is a request for + some particular action, and the response indicates the success or + failure of performing the requested action. + + All commands and responses are coded in ASCII characters. (Nothing + precludes OPEs from accepting EBCDIC from Hosts that use it in native + mode, but that is not required.) These characters are sent in some + way convenient for the Host, and the OPE is sufficiently flexible to + interpret them. (i.e., OPEs are expected to accommodate Host + idiosyncracies in regard to such things as use of 7-bit ASCII in a + 9-bit field.) This approach offers several advantages: + + Adaptabilities in most Hosts: Most Hosts have the ability to + generate and interpret ASCII character streams. Hence, integrating + H-FP into a Host will not require difficult software. + + Script generation: Generation of test and operational command + scripts will be simplified, since they will not need to contain + special characters. + + Terminal Operation: Using simple command streams simplifies the + conversion of an OPE to a generic virtual terminal support machine. + This is particularly useful during development and testing. + + Testing: Testing will not require special hardware to interpret + commands and responses. A terminal or data line analyzer would be + adequate. + + The specific format for the commands and responses will be discussed + in the sections that follow. In those sections, the quote character + is used to indicate strings. The symbols "<" and ">" (referred to as + angle brackets) are used as meta-characters. + + Syntax of Commands + + As alluded to in the section discussing the interaction discipline + between the Host and the OPE, a function is provided by which a chunk + can be used to carry either a complete command or a fragment of a + command. The mechanism chosen to provide this function entails use + of the first character position in the chunk as a chunk usage + identifier. The character "C" in the first position indicates a + chunk containing a single, complete command. "F" in the first + position indicates a chunk which is the first part of a multichunk + command. "M" in the first position indicates the chunk is a middle + + +Lilienkamp & Mandell & Padlipsky [Page 7] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + part (neither the first nor the last chunk) of a command. Finally, + "L" indicates the chunk is the last chunk of a multi-chunk command. + Hence, the following sequences of chunks (the letter corresponds to + the chunk usage identifier in each chunk, and the angle brackets + enclose a chunk) are legal: + + <C> + <F><L> + <F><M><M><L> + + while the following are not legal: + + <L> + <M><L> + <F><C> + + Tactics for handling multiple chunks with regard to OPE buffering + limits are left to the ingenuity of OPE builders. The spirit is to + take as much as you can, in order to relieve the Host of the + necessity of buffering itself. + + A command always begins immediately following the indicator + character, with possible intervening spaces. This implies a chunk + can contain at most one complete command. The end of the command + (not including the data) is signified by a newline (denoted as <nl> + in this document) that does not appear inside a quoted string (see + below). The end of the data is designated by the end of the last + chunk. + + Commands take the form of an ASCII string. The command identifier is + the first word of the chunk. It consists of at least the first two + letters of the command, in either upper or lower case (e.g., the + sequences "BE", "Be", "bE", and "be" all identify the Begin command). + Additional letters of the command name can be included if desired to + aid readability of the command stream. + + Following the command identifier is a list of parameters. These + parameters are also represented as ASCII strings, although the + specific format will depend on the particular parameter. The data to + be transmitted is not considered a control parameter, however, and + need not be ASCII data. + + Parameters are separated by one or more spaces. Tabs, newlines, and + other white space are not legal parameter separators. + + Parameter strings may be quoted, using the character <">. Any + + + +Lilienkamp & Mandell & Padlipsky [Page 8] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + characters between the <"> characters are a part of the parameter, + including spaces and newlines. The character <"> that is part of the + parameter is represented inside a quoted string as <"">. + + The order in which the parameters appear within the command is + significant to their interpretation by the Host and by the OPE. + Optional parameters may be skipped by using the characters ",," to + indicate a NULL parameter. Such a NULL parameter takes its default + value. Alternatively, each parameter has a MULTICS/UNIX style + Control Argument/Flag associated with it that can be used to identify + the parameter, without placing NULL parameters for each parameter + skipped. This flag consists of one or two ASCII characters, and + either upper or lower case may be used. For example, if the fourth + parameter of a command had a flag of "-p" and the user wished the + first three parameters to be null, he could use: + + command -p value + + or + + command -P value + + instead of + + command ,, ,, ,, value + + if it were more convenient for the Host to do so. Flagged parameters + must still appear in the correct sequence within the command, + however. + + There may be data associated with some of the commands. Any such + data is placed into the chunk following all the parameters and the + unquoted newline. Padding can be provided by placing spaces between + the end of the final parameter string and the newline, so that data + begins on a word boundary. The OPE will always pad to a host word + boundary. Padding by hosts is optional. + + Syntax of Responses + + Responses are actually just a special form of a command. It is + anticipated that all responses would fit into a single channel chunk, + although the mechanisms described for multichunk commands can + certainly be used in responses. The ASCII string used to uniquely + identify the response command is "RE" ("Re", "rE", and "re" are also + permitted). + + After the response command identifier is the original command + + +Lilienkamp & Mandell & Padlipsky [Page 9] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + identifier, so the response can be associated with the proper + command. Following this identifier is a three ASCII digit response + code, a set of protocol idiosyncratic parameters, and a textual + message. The protocol idiosyncratic parameters are used to transfer + interface information between the Host and the OPE, and may not be + needed when off-loading some protocol interpreters. The textual + message is intended for human interpretation of the response codes, + and is not required by the protocol. The three digits uniquely + identify the semantics of the response, at least within the context + of a particular command and particular outboarded protocol + interpreter. + + Responses are numerically grouped by the type of information they + convey. The first digit identifies this group, and the last two + digits further qualify the reply. The following list illustrates + this grouping. + + 0XX Successful: The command was executed successfully. The + response code may contain further information. + + 1XX Conditional Success: The command was executed successfully, + but not exactly according to the service and flow control + suggestions. If those suggestions were particularly important + to the requester, he may wish to issue an End command. The + response code contains information on what suggestion or + suggestions could not be followed. + + 2XX Command Level Error: An error at the command level has + occurred. This could include requesting services of a + protocol not supported, or a problem in the way those services + were requested. This level does not include problems with the + syntax of the command or its parameters. + + 3XX Syntax and Parameter Errors: An error in the syntax of the + command or a problem with one of its parameters has occurred. + A problem with a parameter may be other than syntactical, such + as illegal address. + + 4XX Off-loaded Protocol Interpreter Problems: Some problem with + the particular off-loaded protocol has occurred. + + 5XX Local OPE Internal Problems: Problems, such as insufficient + OPE resources, or problems with OPE to subnet interface. + + 6XX Security Problem: Some problem with Host, network, or OPE + security has occurred. The response code indicates the + problem. + + +Lilienkamp & Mandell & Padlipsky [Page 10] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 7XX Reserved for Future Expansion + + 8XX Reserved for Future Expansion + + 9XX Protocol Idiosyncratic Errors: Some error occurred that is + idiosyncratic to the particular off-loaded protocol being + used. The response code indicates the error. + +Description of the Commands + + As stated above, communication between the Host and the OPE at the + Command Level is accomplished using commands and responses. Commands + may be issued by either the Host or the OPE, and are used to + stimulate activity in the other entity. Some commands may only have a + meaningful interpretation in one direction, however. A response + indicates that the activity started by the command was completed, and + a code indicates success or failure of the command, and perhaps other + information related to the command as well. + + Associated with each command is a set of parameters. The order in + which the parameters appear is significant to the correct operation + of the protocols. More information on the syntax of command + parameters can be found in the syntax descriptions. + + The commands are: + + - Begin: initiate communication between a process in the Host and + an off-loaded protocol interpreter in the OPE. (A Channel level + stream/connection will typically have been opened as a prior step. + All other commands, except No-op, apply to a stream on which a + successful Begin has been done.) + + - Transmit: transmit data between a process in the Host and an + off-loaded protocol interpreter in the OPE. + + - Signal: cause an out-of-band signal to be sent by the + off-loaded protocol interpreter to its peer, or indicate the + arrival of such a signal from the remote side. + + - Condition: alter the off-loaded protocol interpreter's + operational characteristics. + + - Status: transfer status requests or information between a + process in the Host and an off-loaded protocol interpreter in the + OPE. + + + + +Lilienkamp & Mandell & Padlipsky [Page 11] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + - End: indicate that services from the off-loaded protocol + interpreter are no longer required, or will no longer be provided. + + - No-op: performs no operation, but facilitates testing. + + These commands will be discussed in the following sections. Each of + these sections includes a discussion of the purpose of the command, a + description of each of the parameters used with the command, a list + of responses for the command, an example of the command, and a set of + notes for the implementor. (An appendix will eventually be furnished + for each protocol offloading, showing the use of its protocol + idiosyncratic parameters as well as of the general parameters on a + per-command basis. Initially, only representative offloadings will + be treated in appendices, with others to be added after the protocol + gains acceptance.) + + Begin + + Purpose of the Begin Command + + The purpose of a Begin command is to initiate communication + between the Host and the OPE on a particular stream or channel + (the channel is opened as a separate step, of course). The + interpretation of the command is somewhat dependent upon + whether it was issued by the Host of the OPE. + + - If the command was issued by the Host, it means some process + in the Host is requesting services of a protocol that was + off-loaded to the OPE. The user request results in the + establishment of a channel connection between the Host and the + OPE, and a Begin command to the Command interpreter in the OPE. + + - If the command was issued by the OPE, it means some protocol + interpreter in the OPE has data for some process in the Host + which is not currently known by the OPE. An example would be + an incoming UDP datagram on a new port, or if no Begin for UDP + had been issued at all by the Host. (An incoming TCP + connection request could be handled by a response to the user's + Passive Open request, which had previously caused a Begin + request from the Host; an incoming TCP connection request to a + port on which no Listen had been issued would cause an OPE + generated Begin, however.) + + As indicated earlier, any particular Host is not required to + support two-way Begins. + + + + +Lilienkamp & Mandell & Padlipsky [Page 12] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Parameters of the Begin Command + + The Begin command has several parameters associated with it. + These parameters contain information needed by the offloaded + protocol to provide an adequate level of network service. This + information includes protocol, source and destination + addresses, and also type of service and flow control advice. + These parameters are discussed in detail below. + + Protocol + + The protocol parameter identifies that off-loaded protocol in + the OPE to which Begin is directed, or which issued the Begin + to the Host. For example, if the user wished to utilize TCP + services, and the TCP software was off-loaded into the OPE, + then the Protocol parameter for the Begin command would be TCP. + + There are two categories of protocol parameters -- generic and + specific. A generic parameter identifies a type of protocol + service required, but does not identify the actual protocol. + Use of generic protocols allows a Host process to obtain + network services without specific knowledge of what protocol is + being used; this could be appropriate for use in situations + where no specific aspect(s) of a specific protocol is/are + required. For example, the user may select a generic + Host-to-Host connection protocol, and (at some point in the + future) may actually receive services from either TCP or the + NBS Transport Protocol, depending on the network (or even the + foreign Host) in question. A specific protocol parameter + identifies some particular protocol, e.g., TCP, whose use is + required for the given channel. + + The valid entries for the protocol field include: + + Generic Specific Comment + + GIP IP Datagram Internetwork Protocol + HHP TCP Connection Transport/Host-Host Protocol + GDP UDP Datagram Transport/Host-Host Protocol + VTP TEL Virtual Terminal (Telnet) Protocol + GFP FTP File Transfer Protocol + MAIL SMTP Mail Transfer Protocol + PROX PROX Proximate Net Interface Protocol + + (Note that the final line is meant to allow for a process in an + OPE'd Host's getting at the PI of the Network Interface + Protocol for whatever the proximate network is. Of course, so + + +Lilienkamp & Mandell & Padlipsky [Page 13] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + doing only makes sense in specialized contexts. We conceive of + the desirability of "pumping bits at a peripheral" on a LAN, + though, and don't want to preclude it, even if it would be + impossible on many LAN's to deal with the problem of + distinguishing traffic coming back on the LAN in this "raw" + mode from normal, IP traffic. Indeed, in some contexts it is + likely that administrative considerations would preclude + avoidance of IP even if technical considerations allowed it, + but it's still the case that "the protocol" should provide a + hook for going directly to the L I protocol in play.) + + There is no default value for this parameter. If it is not + present, the Begin command is in error. The control flag for + this parameter is -pr. + + Active/Passive + + The Active/Passive parameter indicates whether the issuer of + the Begin command desires to be the Active or Passive user of + the protocol. This parameter is particularly relevant to + connection-oriented protocols such as TCP, where the user may + actively pursue connection establishment, or else may passively + wait for the remote entity to actively establish the + connection; it also allows some process to establish itself as + the Host "fielder" of incoming traffic for a connectionless + protocol such as IP. + + Active is requested using the single character "A". Passive is + indicated using the character "P". The default value of this + parameter is "A". Also, when the OPE issues the Begin command, + the value must be "A". The control flag for this parameter is + -ap. + + Foreign Address Primary Component + + The addressing structure supported by H-FP is two level. Each + address has two components, the primary and the secondary. The + exact interpretation of these two components is protocol + specific, but some generalities do apply. The primary + component of the address identifies where the protocol is to + deliver the information. The secondary component identifies + which recipient at that location is to receive the information. + For example, the TCP primary address component is the Host's + Internet Address, while the secondary address component is the + TCP port. Similarly, IP's primary address component is the + Host's Internet Address, and the secondary address component is + the IP ULP field. Some protocols provide only a single level + + +Lilienkamp & Mandell & Padlipsky [Page 14] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + of addressing, or the secondary level can be deduced from some + other information (e.g., Telnet). In these cases, only the + primary component is used. To cater to such cases, the + secondary component parameter comes later in the parameter + list. + + The Foreign Address Primary Component parameter contains the + primary component of the destination address. It may be in + either a numeric or symbolic form. (Note that this allows for + the OPE to exercise a Name Server type of protocol if + appropriate, as well as freeing the Host from the necessity of + maintaining an in-board name to address table.) The default + value for this parameter, although it only makes sense for + Passive Begins, is "Any Host". The control flag for this + parameter is -fp. + + Mediation Level + + The mediation level parameter is an indication of the role the + Host wishes the OPE to play in the operation of the protocol. + The extreme ranges of this mediation would be the case where + the Host wished to remain completely uninvolved, and the case + where the Host wished to make every possible decision. The + specific interpretation of this parameter is dependent upon the + particular off-loaded protocol. + + The concept of mediation level can best be clarified by means + of example. A full inboard implementation of the Telnet + protocol places several responsibilities on the Host. These + responsibilities include negotiation and provision of protocol + options, translation between local and network character codes + and formats, and monitoring the well-known socket for incoming + connection requests. The mediation level indicates whether + these responsibilities are assigned to the Host or to the OPE + when the Telnet implementation is outboard. If no OPE + mediation is selected, the Host is involved with all + negotiation of the Telnet options, and all format conversions. + With full OPE mediation, all option negotiation and all format + conversions are performed by the OPE. An intermediate level of + mediation might have ordinary option negotiation, format + conversion, and socket monitoring done in the OPE, while + options not known to the OPE are handled by the Host. + + The parameter is represented with a single ASCII digit. The + value 9 represents full OPE mediation, and the value 0 + represents no OPE mediation. Other values may be defined for + + + +Lilienkamp & Mandell & Padlipsky [Page 15] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + some protocols (e.g., the intermediate mediation level + discussed above for Telnet). The default value for this + parameter is 9. The control flag for this parameter is -m. + + Transmit Response Discipline + + The Transmit Response Discipline parameter is used to set the + desired action on the OPE's part for generating responses to + Transmit commands. Essentially the parameter determines when + the OPE's response to the transmit command occurs (i.e., + immediately or delayed). + + The Transmit Response Discipline value is represented by a + single ASCII character. The character "N" is used for + nonblocking Transmit commands, which implies that responses for + Transmit commands should be generated as soon as the command + has been examined for correctness (i.e., that the syntax is + good and the parameters appear reasonable). In other words, + the outboard protocol interpreter has the data in its queue, + but hasn't necessarily transmitted it to the net. The + character "B" is used for blocking Transmit commands, which + requests that the response not be generated until the protocol + interpreter has successfully transmitted the data (unless, of + course, the Transmit command was badly formed). The default + value for this parameter is "N", or a nonblocking Transmit + command. The control flag for this parameter is -tr. + (Depending on the protocol in play, "successfully transmitted" + might well imply that an acknowledgment of some sort has been + received from the foreign Host, but for other protocols it + might only mean that the given collection of bits has been + passed from the OPE to the proximate net.) + + Foreign Address Secondary Component + + The addressing mechanisms supported by this level of H-FP are + discussed above. The Foreign Address Secondary Component + parameter contains the value of the destination address's + secondary component. Some protocols do not require this + parameter, or can obtain it from other information. Therefore, + the default value for this parameter is NULL. A NULL secondary + component might be an error for some protocols, however. The + secondary component can be expressed either numerically or + symbolically. The control flag for this parameter is -fs. + (Note that it is intended to be "legal" to specify a Secondary + Component other than the Well-Known Socket for the protocol in + play; in such cases, the result should be that the virtualizing + of the given protocol be applied to the stream, in the + + +Lilienkamp & Mandell & Padlipsky [Page 16] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + expectation that that's what the other side is expecting. This + is to cater to, for example, a Terminal-Terminal protocol that + merely "does Telnet" to a socket other than the usual Logger.) + + Local Address Secondary Component + + The Local Address Secondary Component parameter contains the + value of the local address's secondary component. (The primary + component is assumed to be the default for the Host, but can be + altered as well; see below.) Some protocols do not require this + parameter, or can obtain it from other information. In some + cases, the OPE may already know the value for this parameter + and therefore not require it. The default value of this + parameter is NULL. The local address secondary component can + be expressed either numerically or symbolically. The control + flag for this parameter is -ls. + + Begin Timeout Interval + + After a Begin command is issued, a timer can be started. If + the activity requested cannot be performed within some timed + interval, then the Begin command may expire. An expired Begin + command returns a response code indicating a Begin timeout + occurred. The Begin Timeout Interval parameter contains the + length of time the timer will run before the Begin timeout + occurs. + + The parameter is represented as a string of ASCII digits + indicating the time interval in seconds. The default value of + this parameter is infinity (i.e., the Begin command will never + timeout). The control flag for this parameter is -bt. + + Type of Service Advice + + The Type of Service Advice parameter contains information on + the service characteristics the user desires from the offloaded + protocol. Included in this parameter is the precedence of the + data transfer, and also indication of whether high throughput, + fast response time, or low error rate is the primary goal. + + The format of this parameter is a letter immediately (i.e. no + intervening spaces) followed by a digit. The letter "T" + indicates that high throughput is desired. The letter "R" + indicates minimal response time is the goal. The letter "E" + indicates that low error rates are the goal. The letter "N" + indicates there are no special service requirements to be + conveyed. The digit immediately following the character + + +Lilienkamp & Mandell & Padlipsky [Page 17] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + indicates the desired precedence level, with zero being the + lowest, and nine being the highest. The specific + interpretation of this parameter is dependent on what service + options are provided by the protocol. The default value of + this parameter is the lowest precedence (ROUTINE), and no + special service requests. The control flag for this parameter + is -ts. + + Flow Control Advice + + The Flow Control Advice parameter contains information on the + flow characteristics desired by the user. Some applications + such as file transfer operate more efficiently if the data is + transferred in large pieces, while other, more interactive + applications are more efficiently served if smaller pieces are + used. This parameter then indicates whether large or small + data blocks should be used. It is only relevant in stream or + connection-oriented protocols, where the user sends more than a + single piece of data. + + This parameter is represented by a single ASCII digit. A value + 0 means the data should be sent in relatively small blocks + (e.g., character or line oriented applications), while a value + 9 means the data should be sent in relatively large blocks + (e.g., block or file oriented applications). Other values + represent sizes between those extremes. The character "N" + indicates that no special flow control advice is provided. The + actual interpretation of this parameter is dependent on the + particular protocol in the OPE. The default value of this + parameter is no flow control advice. In this case, the protocol + in the OPE will operate based only on information available in + the OPE. The control flag for this parameter is -fc. + + Local Address Primary Component + + This parameter contains the local address primary component. It + is anticipated that under most circumstances, this component is + known to both the Host and the OPE. Consequently, this + parameter is seldom required. It would be useful if the Host + desired to select one of several valid addresses, however. The + control flag for this parameter is -lp. + + Security + + The security parameters contain a set of security level, + compartment, community of interest, and handling restriction + information. Currently, security is provided by performing all + + +Lilienkamp & Mandell & Padlipsky [Page 18] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + processing at system high level or at a single level. + Consequently, these parameters are probably redundant, since + the security information is known. In the future, however, + these parameters may be required. Therefore a field is + provided. The control flag for this parameter is -s. + + Protcol Idiosyncratic Parameters + + The remaining parameters are protocol idiosyncratic. That is, + each protocol that is off-loaded may have a set of these + parameters, which are documented with a description of the + off-loaded protocol. The default value for these parameters is + NULL, unless otherwise specified by a particular offloaded + protocol. The control flag for this set of parameters is -pi, + which identifies the first protocol idiosyncratic parameters. + Control flags for other protocol idiosyncratic parameters must + be defined for each off-loaded protocol. + + Data + + After the Protocol Idiosyncratic Parameters, if any, and the + required <nl>, if the protocol in play allows for it at this + juncture the rest of the chunk will be interpreted as data to + be transmitted. That is, in connection oriented protocols data + may or may not be permitted at connection initiation time, but + in connectionless protocols it certainly makes sense to allow + the H-FP Begin command to convey data. (This will also be + useful when we get to the Condition command.) + + Responses + + The following responses have been identified for the Begin + command: + + 000 Command completed successfully + 101 Throughput not available; using maximum + 102 Reliability not available; using maximum + 103 Delay not available; using minimum + 110 Flow Control advice not followed; smaller blocks used + 111 Flow Control advice not followed; larger blocks used + 201 Failed; Begin not implemented in this direction + 202 Failed; timeout + 203 Failed; Begin command on already active channel + 300 Problem with multiple chunks + 301 Syntax problem with Begin command + 302 Protocol not supported in OPE/Host + 303 Active service not available + + +Lilienkamp & Mandell & Padlipsky [Page 19] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 304 Passive service not available + 305 Invalid Foreign Address Primary Component + 306 Invalid Transmit Discipline + 307 Invalid Foreign Address Secondary Component + 308 Invalid Local Address Secondary Component + 309 Invalid Timeout Interval + 310 Invalid Type of Service Advice + 311 Invalid Flow control Advice + 312 Invalid Local Address Primary Component + 401 Protocol Interpreter in OPE not responding + 402 Remote Protocol Interpreter not available + 403 Failed; insufficient protocol interpreter resources + 501 Failed; insufficient OPE resources + 601 Request violates security policy + 602 Security parameter problem + + Additionally, protocol idiosyncratic responses will be defined + for each off-loaded protocol. + + Example of Begin Command + + The Begin command is the most complex of the H-FP Command + Level. When the off-loaded protocol is TCP, the Begin command + is used to open TCP connections. One possible example of a + Begin command issued by an inboard Telnet interpreter to open a + TCP connection to ISIA, with no begin timeout interval, is: + + C BE TCP A ISIA 9 N 23 ,, ,, N0 S <nl> + + Where: + + TCP The code for the protocol TCP + A Indicates Active Begin + ISIA The name of a Host at USC-ISI + 9 Mediation Level 9: Full OPE mediation + N Non-blocking transmit + 23 Destination Telnet Port + ,, skip over parameters (Local Address Secondary, + Begin Timeout Interval) + N0 Type of Service Advice: No special Advice, + Normal Precedence + S Flow Control Advice: use small blocks + + This command will cause the OPE to invoke the TCP interpreter + to generate the initial SYN packet to the well-known Telnet + socket on Host ISIA. It also informs the OPE to do all TCP + related processing via the Mediation Level, accepts default + + +Lilienkamp & Mandell & Padlipsky [Page 20] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Local Address parameters, and sets the Begin Timeout Interval + to infinity. The precedence of the TCP connection is Normal, + and the TCP interpreter is informed that the data stream will + consist of primarily small blocks. + + Notes to the Implementor + + Response 203 might seem silly to some readers, but it's there + in case somebody goofed in using the Channel Layer. + + Transmit + + Purpose of the Transmit Command + + The purpose of the Transmit command is to permit the process in + the Host to send data using an off-loaded protocol interpreter + in the OPE, and also to permit the OPE to deliver data received + from the network destined for the process in the Host. The + Transmit command is particularly relevant to connection and + stream type protocols, although it has applications for + connectionless protocols as well. After the Begin command is + issued successfully and the proper Response received, Transmit + commands can be issued on the given channel. The semantics of + the Transmit command depend on whether it was issued by the + Host or the OPE. + + - If the Host issues the Transmit command, a process in the + Host wishes to send the data to the destination specified to + the off-loaded protocol interpreter that was established + (typically) by a previous Begin command on the given H-FP + channel. + + - If the OPE issues the command, the OPE has received data + destined for a process in the Host from a connection or stream + supported by the off-loaded protocol that was established by a + previous Begin command on the given H-FP channel. + + Parameters of the Transmit Command + + The Transmit command has one parameter associated with it. It + is an optional parameter, to temporarily override the response + discipline for this particular transmit command. Some protocols + may have protocol-idiosyncratic parameters as well. The + transmit command also has data associated with it. All + parameters must precede the data to be transmitted. + + + + +Lilienkamp & Mandell & Padlipsky [Page 21] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Response Discipline Override + + The Response Discipline Override parameter indicates the + desired response discipline for that individual Transmit + Command, overriding the default response discipline. A single + ASCII character is used to indicate the desired discipline. + The character "N" indicates that this Transmit command should + not block, and should return a response as soon as the data is + given to the protocol interpreter in the OPE. The character "B" + indicates that this Transmit command should block, meaning that + a response should not be generated until the data has been sent + to the destination. The default value of this parameter is the + currently defined Transmit Command response discipline. The + use of this parameter does not alter the currently defined + Transmit command response discipline; the default is changed + with the Condition command. The control flag for this + parameter is -rd. + + Protocol-Idiosyncratic Parameters + + Any other parameters to the Transmit command are + protocol-idiosyncratic. That is, each protocol that is + off-loaded has a set of these parameters, which are documented + with a description of the off-loaded protocol. The default + value for these parameters is NULL, unless otherwise specified + by a particular off-loaded protocol. The control flag for this + set of parameters is -pi, which identifies the first + protocol-idiosyncratic parameters. Control flags for other + protocol-idiosyncratic parameters must be defined for each + off-loaded protocol. + + Responses + + The following responses for the Transmit command have been + identified: + + 000 Transmit Command completed successfully + 201 Transmit Command not appropriate + 300 Problem with multiple chunks + 301 Syntax problem with Transmit Command + 302 Invalid Transmit Command Response Discipline + 401 Protocol Interpreter in OPE not responding + 402 Failure in remote protocol interpreter + 403 Failed; insufficient protocol interpreter resources + 501 Failed; insufficient OPE resources + 601 Request violates security policy + + + +Lilienkamp & Mandell & Padlipsky [Page 22] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Additionally, protocol-idiosyncratic responses will be defined + for each off-loaded protocol. + + Example of Transmit Command + + The transmit command is used in TCP to provide the TCP write + call. An example of such a transmit command would be: + + C TR N <nl> <DATA> + + Where N indicates non-blocking transmission discipline, <nl> is + the required command-ending newline, and <DATA> is presumed to + be the user's data that is to be transmitted. + + Notes to the Implementor + + If you get a 403 or a 501 response and have sent a multiple + chunk it probably makes sense to try a single chunk; if you've + sent a single chunk, it makes sense to wait a while and try + again a few times before giving up on the stream/channel. + + Condition + + Purpose of the Condition Command + + The primary purpose of the Condition command is to permit a + process to alter the characteristics that were originally set + up with the Begin command. (That is, "condition" is a verb.) + These characteristics include the addresses, the mediation + level, the type of service, and the flow control parameters + from Begin. They may also include protocol-idiosyncratic + characteristics. (Although Condition is usually thought of as a + Host->OPE command, it may also be used OPE->Host in some + contexts.) + + Condition is a generic command that may find little use in some + off-loaded protocols. In others, only some of the parameters + identified may make sense. For example, changing the + destination address of a TCP connection involves closing one + connection and opening another. Consequently, in may make more + sense to first issue an End command, and then a Begin with the + new address. In other protocols, such as IP or UDP, changing + the address on each datagram would be a perfectly reasonable + thing to do. + + + + + +Lilienkamp & Mandell & Padlipsky [Page 23] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Parameters of the Condition Command + + The Condition command has the same parameters as the Begin + command. Any parameters expressed in a Condition command + indicate the new values of the characteristics to be altered; + all parameters not expressed retain the current value. + + Although it is possible to express the change of any of the + characteristics originally set up in the Begin command using + the Condition command, there are some characteristics that do + not make sense to alter, at least for some protocols. For + example, once a connection is opened, it does not make much + sense to change the Foreign Address Primary or Secondary + Components. Doing so is inconsistent with current versions of + TCP, and would require the closing of the existing connection + and opening a new one to another address. Earlier versions of + TCP did permit connections to be moved. If a protocol that + provided such a feature was implemented in the OPE, the + changing the Secondary Address Components would be a reasonable + thing to do. + + Responses + + The responses to the Condition command are the same as those to + the Begin command. + + Example of Condition Command + + The Condition Command can be quite complex, and can be used for + many purposes. One conceived use of the condition command + would be to change the type of service advice associated with + the channel. An example of this (which also demonstrates the + ability to skip parameters) is: + + C -ts T <nl> + + which causes the offloaded PI associated with the current + channel to attempt to achieve high throughput (in its use of + the comm subnet(s) in play). + + Notes to the Implementor + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 24] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Signal + + Purpose of Signal Command + + The purpose of the Signal Command (implicitly at least) is to + permit the transfer of out-of-band signals or information + between the Host and the OPE, in order to utilize (explicitly) + out-of-band signaling services of the off-loaded protocol. The + semantics of the Signal command depend upon whether it was + issued by the Host or the OPE. + + - If the Signal command was issued by the Host, it means a + process in the Host desires to send out-of-band data or an + out-of-band signal. + + - If the Signal command was issued by the OPE, it means + out-of-band data or an out-of-band signal arrived for the + process associated with the channel in the Host. + + Parameters of the Signal Command + + The basic usage of the Signal command is with no parameters, + which sends or reports the receipt of an out-of-band signal. + Some protocols, such as the NBS Transport Protocol, permit the + user to send data with the out-of-band signal. Hence, data is + permitted to accompany the Signal command. There may also be + protocol-idiosyncratic parameters for the Signal command. If + this is the case, these parameters would come before the data. + + Protocol-Idiosyncratic Parameters + + The parameters for the Signal command are protocol + idiosyncratic. That is, each protocol off-loaded has a set of + these parameters. The default value for these parameters is + their previous values. Control flags for multiple + protocol-idiosyncratic parameters must be defined for each + off-loaded protocol. + + Responses + + The following responses have been identified for the Signal + command: + + 000 Command completed successfully + 201 Command not appropriate + 300 Problem with multiple chunks + 301 Syntax problem with Command + + +Lilienkamp & Mandell & Padlipsky [Page 25] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 401 Protocol Interpreter in OPE not responding + 402 Failure in remote protocol interpreter + 403 Failed; insufficient protocol interpreter resources + 501 Failed; insufficient OPE resources + 601 Request violates security policy + + Additionally, protocol-idiosyncratic responses will be defined + for each off-loaded protocol. + + Example of Signal Command + + The major perceived use for the Signal command when offloading + a connection protocol is sending an out-of-band signal with no + data. In such a case, the appropriate signal command would be: + + C SI <nl> + + Notes to the Implementor + + Some protocols may allow only only one outstanding signal at a + time. For these protocols, it is an implementation issue + whether the OPE will buffer several signals, but a good case + could be made for the position that a scrupulous OPE would + reflect a 202 response back to the Host in such cases. + + There is some question as to the proper handling of the + "expedited data" notion of some (particularly ISO) protocols. + It might be more appropriate to deal with such a thing as a + protocol idiosyncratic parameter on the Transmit command + instead of using the Signal command (even if it's the closest + approximation to an out-of-band signal in the given protocol). + If it's provided using the Signal command, the expedited data + should not be passed as ASCII, and should appear after the + command-terminating newline character (and appropriate padding + with space characters). + + Status + + Purpose of Status Command + + The purpose of the Status command is to permit the Host to + request and obtain status information from the OPE, and vice + versa. This includes status request of a conventional protocol + interface (e.g., in TCP, there is a request to determine the + state of a particular connection). + + + + +Lilienkamp & Mandell & Padlipsky [Page 26] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Parameters of the Status Command + + The parameters for the Status command indicate whether it is a + request or a response, and contain the status information. + + Request/Report + + This parameter indicates whether the command is a Status + request or a Status report. It consists of a single ASCII + character. Q indicates a request (query), and R indicates a + report. It should be noted that a report may be generated + as the result of a query, or may be generated as the result + of specific protocol mechanisms. + + Protocol-Idiosyncratic Parameters + + The parameters to the status command are + protocol-idiosyncratic. That is, each protocol off-loaded has a + set of these parameters. The default value for these + parameters is their previous values. Among these parameters is + an identifier of the type of status information contained or + requested, and a value or set of values that contain the + particular status information. The status information itself + should be the last item in the command. The control flag for + this set of parameters is -pi, which identifies the first + protocol-idiosyncratic parameters. Control flags for other + protocol-idiosyncratic parameters must be defined for each + off-loaded protocol. + + Responses + + The following responses have been identified for the Status + command: + + 000 Command completed successfully + 201 Command not appropriate + 300 Problem with multiple chunks + 301 Syntax problem with Command + 302 Inappropriate status request + 303 Inappropriate status response + 401 Protocol Interpreter in OPE not responding + 402 Failure in remote protocol interpreter + 403 Failed; insufficient protocol interpreter resources + 501 Failed; insufficient OPE resources + 601 Request violates security policy + 9xx Protocol Idiosyncratic status responses + + + +Lilienkamp & Mandell & Padlipsky [Page 27] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Example of Status Command + + The status command can be particularly complex, depending on + the protocol and particular type of status information. One + possible use of the status command when off-loading TCP is to + communicate the status service request. For performing this + operation the status command would be: + + C ST Q <nl> + + Notes to the Implementor + + End + + Purpose of the End Command + + The purpose of the End command is to communicate that services + of the off-loaded protocol are not required. The semantics of + the End command depends upon whether it was issued by the Host + or the OPE. + + - If the Host issues the End command, it means the process in + the Host no longer requires the services of the offloaded + protocol. + + - If the OPE issues the End command, it means the remote entity + has no more data to send (e.g., the off-loaded protocol is TCP + and the remote user has issued a TCP close). + + Parameters of the End Command + + One parameter is associated with the End Command. It indicates + whether the termination should be "graceful" or "abrupt" (see + below). + + Graceful/Abrupt + + The Graceful/Abrupt parameter indicates whether the End + should be handled gracefully or abruptly. If it is handled + gracefully, then data in transit is allowed to reach its + destination before service is actually terminated. An + abrupt End occurs immediately; all data transmitted from the + Host but still pending in the OPE is discarded, and no new + incoming data is sent to the Host from the OPE. + + + + + +Lilienkamp & Mandell & Padlipsky [Page 28] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + The parameter is indicated by a single ASCII character. The + character "G" denotes graceful, and "A" denotes abrupt. The + default value for this parameter is graceful. + + Responses + + The following responses have been identified for the End + command: + + 000 Command completed successfully + 201 Command not appropriate + 300 Problem with multiple chunks + 301 Syntax problem with Command + 302 Illegal Type of End Command + 401 Protocol Interpreter in OPE not responding + 402 Failure in remote protocol interpreter + 403 Failed; insufficient protocol interpreter resources + 501 Failed; insufficient OPE resources + 601 Request violates security policy + + Additionally, protocol idiosyncratic responses will be defined + for each off-loaded protocol. + + Example of End Command + + The syntax of the End command is relatively straightforward. It + consists of a chunk that contains only a chunk usage + identifier, the end command string, and the parameter + indicating whether the end should be graceful or abrupt. A + possible valid (abrupt) End command would be: + + C EN A <nl> + + Notes to the Implementor + + Once an End has been issued in a given direction any other + commands on the channel in the same direction are in error and + should be responded to appropriately. + + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 29] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + No-op + + Purpose of the No-op Command + + The No-op command performs no operation. Its purpose is to + permit the Host and OPE to participate in a dialog which does + not alter the state of communication activities, both for + debugging purposes and to support features of certain protocols + (e.g., Telnet's Are You There command). + + Parameters of the No-op Command + + There are no parameters associated with the No-op command. + + Responses + + There are only two possible legal responses to the No-op + command. They are: + + 000 No-op Command Completed Correctly + 300 Problem with multiple chunks + + Example of No-op Command + + Syntactically the No-op command is quite simple. It consists + of a chunk that contains only the chunk usage identifier and + the string for the command, and the newline. One possible + valid No-op command is: + + C NO <nl> + + Notes to the Implementor + + No-ops are included for use in testing and initial + synchronization. (The latter use is not mandatory, however. + That is, no exchange of No-ops is required at start-up time, + but it is conceivable that some implementations might want to + do it just for exercise.) They are also traditional. + + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 30] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + +References + + (References [1]-[3] will be available in M. A. Padlipsky's "The + Elements of Networking Style", Prentice Hall, 1985.) + + [1] Padlipsky, M. A., "The Host-Front End Protocol Approach", + MTR-3996, Vol. III, MITRE Corp., 1980. + + [2] Padlipsky, M. A., "The Elements of Networking Style", M81-41, + MITRE Corp., 1981. + + [3] Padlipsky, M. A., "A Perspective on the ARPANET Reference Model", + M82-47, MITRE Corp., 1982. + + [4] Bailey, G., "Network Access Protocol", S-216,718, National + Security Agency Central Security Service, 1982. + + [5] Day, J. D., G. R. Grossman, and R. H. Howe, "WWMCCS Host to Front + End Protocol", 78012.C-INFE.14, Digital Technology Incorporated, + 1979. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 31] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + +APPENDIX + + Per-Protocol Offloading Descriptions + + 1. Command Level Interface to an Off-loaded TCP + + This appendix discusses the use of the commands described in the + body of this document to provide an interface between a Host + process and an off-loaded interpreter of the DoD's Transmission + Control Protocol (TCP). The interface described here is + functionally equivalent to the interface found in the MIL-STD 1778 + specification of TCP. It is not, however, identical, in that some + features of the interface are particularly relevant only in an + inboard implementation. + + The first section describes the mapping between the interface + events of MIL-STD 1778 and the commands and responses of this + H-FP, and highlights the unique features of the interface. The + next sections discuss the details of each command. These details + include the specialized usages of the command and the + protocol-idiosyncratic parameters for that command. + + 1.1. Relation to MIL-STD 1778 Interface + + Most of the requests and responses of the TCP interface + specified in MIL-STD 1778 are mapped directly to H-FP Commands + and responses. The exceptions are noted in the following + descriptions. + + 1.1.1. Requests + + Unspecified Passive Open, Fully Specified Passive Open, + Active Open, and Active Open with Data requests are all + implemented using variations of the Begin command. The + distinction between Passive and Active Open is made using + the Active/Passive parameter of Begin. The distinction + between unspecified and fully specified lies in the presence + or absence of the destination address fields. An active + open with data is identical to a normal active open, except + for the presence of data following the command. + + The Send Service Request is implemented using the Transmit + command. Special protocol idiosyncratic parameters are + provided for Urgent, Push, and changing the ULP timeout + action and values. The response to the Transmit command + indicates that the appropriate Send call has been made. + + + +Lilienkamp & Mandell & Padlipsky [Page 32] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + There is no corresponding response in the specified TCP + interface; its only significance is that the Host can issue + another Transmit command. + + The Allocate event is a specification feature of MIL-STD + 1778 to indicate the willingness of the user to accept + incoming data across the interface. However, because this + is precisely the type of flow control provided by the + Channel level, the Allocate event would be a superfluous + mechanism. Thus, there is no direct analogy to that event + in the H-FP interface. A Host process indicates its + willingness to accept new data by informing the channel via + its flow control interface (if it has an explicit one). + + Close and Abort are provided by the End command. Close uses + the graceful version of the End command, while Abort uses + the abrupt version. The response indicates that the End + command has been received and the corresponding Close or + Abort was issued. There is no corresponding response in the + specified TCP interface. + + Status is provided by using the query form of the Status + command. The response to the Status command contains the + information (see below). + + 1.1.2. Responses + + The Open Id response is provided so that the user has a + shorthand name by which to refer to the connection. With an + outboarded TCP interpreter, there is a one-to-one mapping + between TCP connections and H-FP channels. Hence, the Open + Id event is not needed, since the channel ID is sufficient + to indicate the desired connection. + + The Open Failure and Open Success responses are provided + using OPE-generated responses to Begin commands (which + provide the Active and Passive Service response primitives) + issued by the Host. The value of the response code + indicates whether the Begin command succeeded or failed, and + can be mapped to the appropriate Open Failure or Open + Success indication by the Host. + + Deliver is provided by having the OPE issue a Transmit + command. As mentioned above, the "flow control" between the + TCP interpreter and the Host is provided by the Channel + layer, so no explicit interface events are needed. The + + + +Lilienkamp & Mandell & Padlipsky [Page 33] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + response to the Transmit command indicates the data was + received by the Host process. There is no corresponding + response in the specified TCP interface. + + The Closing and Terminate service responses are provided + using the End command. Closing is indicated using the + graceful version of the command, while terminate is provided + using the abrupt version. The response indicates the End + command was received by the Host process. There is no + corresponding response in the specified TCP interface. + + Status Response is provided by a response to the query + version of the Status command. The status information is + communicated via protocol-idiosyncratic parameters following + the Response code. + + Error messages are reported using the spontaneously + generated version of the Status command issued by the OPE. + The error message is provided in a parameter. The response + indicates the error message was received by the Host + process. There is no corresponding event in the specified + TCP interface. + + 1.2. The Begin Command + + The Begin command is used in TCP in three major ways: + + 1. To inform the OPE that a process in the Host wishes to + open a connection to a particular port on a internet + address. + + 2. To inform the OPE that a process in the Host wishes to be + informed when a connection attempt is made to any or to a + specific port at this Host's internet address. + + 3. To inform the Host that a connection attempt to the OPE + has arrived, and there was no Begin of the second type + (passive open) issued by the Host relevant to that + particular port. + + 1.2.1. Specialized Usage + + There are four major aspects to the specialized usage of the + Begin command and its parameters. These parameters are: + + 1. The meaning of the Mediation Level parameter + + + +Lilienkamp & Mandell & Padlipsky [Page 34] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 2. The selection of blocking treatment of Transmit + command + + 3. The meaning of the address components + + 4. The selection of the TCP Active Open with Data + primitive. + + The Mediation Level parameter has only two possible values + when offloading TCP. These are "9" and "0". The normal + usage of an off-loaded TCP uses the value "9", which means + the Host is in no way involved in the operation of TCP. The + value "0" indicates the Host wishes to negotiate with the + TCP options. + + The normal TCP Send event is non-blocking. That is, when a + user issues the send command, it counts on the reliability + services of TCP, and is not explicitly notified when the + data has reached the other end of the connection and been + properly acknowledged. Hence, the default value for this + parameter with TCP is "N". There are some applications + where the user may not wish to receive a response to a + Transmit command until the data has been acknowledged by the + other end of the connection. In these cases, the value "B" + should be used for this parameter. If such a feature is not + supported by the offloaded TCP interpreter, then it is + acceptable to issue a 100 level Conditional acceptance + indicating that blocking is not supported, but the Begin + command will proceed using non-blocking Transmits. + + The primary address components of the local and remote + addresses refer to the internet addresses of (or a symbolic + Host name for) the respective Hosts. The secondary + components refer to the particular sockets at those internet + addresses. Normally, the secondary components (ports) are + specified numerically. They may, however, be specified by + name if the port is a well-known service port. In an Active + Begin command, the remote addresses primary and secondary + components must be specified. The local address components + need not be specified, unless the user wishes to indicate + that the connection should be from a particular port or a + particular internet address of a multi-homed Host. In a + Passive Begin command, the remote addresses are specified + only if connection attempts from one particular Host are of + interest. The local address secondary component must be + used to indicate on which port to perform the Listen. + + + +Lilienkamp & Mandell & Padlipsky [Page 35] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + The way the TCP Active Open with data is provided is by + including the data with the Begin Command. This data is + included in the same Channel level chunk, immediately + following the newline. If the data is more than a single + chunk can hold, then the multi-chunk command feature of the + H-FP must be used. + + 1.2.2. Protocol-Idiosyncratic Parameters + + The protocol-idiosyncratic parameter identified for the TCP + interface is the "ULP timeout" information. This + information includes whether the offloaded interpreter + should abort the connection on a ULP timeout or report it to + the inboard user, and also the numerical value of the + timeout interval. The format chosen for this parameter is a + single letter followed immediately (with no spaces) by an + ASCII number. The letter can be either "R" or "A", and + indicates that the ULP timeout should cause a report or an + abort, respectively. The number is interpreted to be the + timeout interval in seconds. + + 1.2.3. Examples of the Command + + An example of an Active Begin command that might be issued + by an inboard user Telnet is: + + C BE TCP A ISIA 9 N 23 ,, 60 R 0 -pi R120 <nl> + + ISIA is the destination Host, 23 is the well-known port + number for Telnet connections, a Begin timeout of 60 seconds + was chosen. The desired type of service is to strive for + good response time, the transmissions are expected to be in + small units, and protocol-idiosyncratic parameter R120 + implies that a ULP timeout of 120 seconds should be + reported. + + An example of a Passive Begin Command that might be issued + by an inboard server Telnet is: + + C BE TCP P ,, 9 N ,, 23 ,, R 0 -pi R120 <nl> + + The major differences are that no remote address components + are specified, and the local secondary address component is + identified as the socket on which the Listen is being + performed. Also, the default ("infinite") timeout is taken. + + + + +Lilienkamp & Mandell & Padlipsky [Page 36] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 1.3. The Transmit Command + + The Transmit command is used by the Host process to instruct + the off-loaded TCP interpreter to send data to a remote site + via the TCP connection associated with the command's channel. + It is used by the OPE to deliver incoming data from the + connection to the process in the Host. + + 1.3.1. Specialized Usage + + The Transmit command must be capable of providing all the + specialized features of the Send and Deliver Event. These + special features are Urgent, Push, and modification of the + ULP Timeout action and/or interval. + + Urgent is a means to communicate that some point upcoming in + the data stream has been marked as URGENT by the sender. + While the actual Urgent bit travels through the connection + out-of-band, it carries a pointer that is related to the + sequence numbers of the in-band communication. Hence, the + urgency must be indicated in the Transmit command rather + than the Signal command. + + Push is a feature of the TCP Send Event that is used to + indicate that the data in the Transmit command should be + sent immediately (within the flow control constraints), + rather than waiting for additional send commands or a + timeout. Push is indicated in the Transmit Command. The + push feature has the same meaning when sent from the OPE to + the Host. If the Host implementation does no internal + queuing, the flag has no meaning. + + The TCP Send event permits the user to modify the "ULP + timeout action" and/or the "ULP timeout interval" associated + with that connection. When changed, the new values take + effect for the remainder of the connection, unless changed + later with another Send. This feature is provided in this + H-FP using the Transmit Command. + + 1.3.2. Protocol-Idiosyncratic Parameters + + The three features identified above are provided using + protocol-idiosyncratic parameters. + + The first such parameter is the Urgent parameter. From the + point of view of the interface, it is just a flag that + indicates the data is urgent (the actual Urgent pointer is a + + +Lilienkamp & Mandell & Padlipsky [Page 37] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + concern of the off-loaded TCP interpreter, which is keeping + track of the sequence numbers). When issued by the Host + process, the Urgent flag means the stream should be marked. + When issued by the OPE, it means the receiver should go to + (or remain in) the Urgent receive mode. If the flag is not + set in the Transmit issued by the OPE, then the receiver + should remain in (or return to) the non-urgent receive mode. + The value of this protocol-idiosyncratic parameter is "U" if + the Urgent is set, or "N" if it is not set. The default + value for this parameter is "N". Since this parameter is + the first protocol-idiosyncratic parameter for the Transmit + command, it requires no special flag, and can be indicated + using the flag -pi. + + The second protocol-idiosyncratic parameter is the Push + flag. This parameter is only issued by the Host, since + there is no Push in the TCP Deliver event. Its value is "P" + for push, or "N" for normal. The default value of this + parameter is "N". Its control flag is -pu. + + The third protocol-idiosyncratic parameter is the ULP + timeout action and value parameter. The action part + indicates whether the offloaded interpreter should abort the + connection on a timeout or report it to the inboard user. + The value part is the numerical value of the timeout + interval. The format used for this parameter is the same as + in the Begin command, which is a single letter followed + immediately (with no spaces) by an ASCII number. The letter + can be either "R" or "A", and indicates that the ULP timeout + should cause a report or an abort, respectively. The number + is interpreted to be the timeout interval in seconds. The + default interpretation for this parameter is its previous + value. The control flag for this parameter is -ul. + + 1.3.3. Examples of the Command + + An example of a Transmit command issued by a Host process is + + C TR -pi N P R160 <nl> <DATA> + + where <DATA> is the data contained within the chunk. This + command is for a non-urgent but pushed TCP Send event, that + also resets the timeout action and interval to Report with a + value of 160 seconds. The response mode (i.e., nonblocking) + is derived from the Begin command and not effected by + transmit. + + + +Lilienkamp & Mandell & Padlipsky [Page 38] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + An example of a Transmit command issued by the OPE is + + C TR -pi N <nl> <DATA> + + where <DATA> is the data contained within the chunk. This + command is for a non-urgent delivery (presumably, after a + previous Urgent delivery). + + 1.4. The Condition Command + + The Condition command is used to modify the transmission + characteristics of the connection. The parameters that make + sense to modify with TCP are the Transmit Response discipline, + the Type of Service, and the Flow Control Advice. + + 1.4.1. Specialized Usage + + There is no usage of the Condition command with an offloaded + TCP interpreter that is particularly specialized. + + 1.4.2. Protocol-Idiosyncratic Parameters + + There are no protocol-idiosyncratic parameters for the + condition command for the off-loaded TCP. It would be + possible for the ULP timeout action values to be changed + with a condition command. However, this is accomplished + with the Transmit command, which more closely models the + interface specified in MIL-STD 1778. We propose that the + condition command not provide this capability. + + 1.4.3. Examples of the Command + + An example of the Condition command to change the flow + control advice for a connection is + + C CO -fc 1 <nl> + + which indicates that relatively small transmission units are + now expected. + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 39] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 1.5. The Signal Command + + As we currently understand it, TCP's URGENT feature provides an + INband signal rather than a true out-of-band signal (and at + least one of us deeply regrets this). The actual URGENT bit is + sent out-of-band, but it contains an URGENT pointer which + relates the URGENT to its position in the data stream. The + actual semantics of the URGENT is left to the higher level + protocol (e.g., Telnet says to discard all data up to the + URGENT pointer). Since the Signal command is allowed to cross + a pending Transmit in the H-FP channel, it would be potentially + dangerous to implement the interface to TCP URGENT using the + Signal command since the wrong sequence number could be used as + the urgent pointer. Barring persuasive arguments to the + contrary, it is proposed that Signal should not be used with + TCP. + + 1.6. The Status Command + + The Status command maps directly into the TCP Status event when + issued by a Host process. It is also used for the TCP error + event when issued by the OPE. There is currently some question + as to how information from lower protocol levels (e.g., ICMP + error messages) should be reported to TCP users. When these + issues are resolved, there may be other uses for the Status + command. We solicit other ideas for the Status command with + this report. + + 1.6.1. Specialized Usage + + The major specialized usage of the Status command is to + provide the error reporting service. This usage is a form + of the Status generated by the OPE. + + 1.6.2. Protocol-Idiosyncratic Parameters + + When used as a TCP Status request (command issued by the + Host process), there are no protocol-idiosyncratic + parameters associated with the Status command. The OPE + response codes the TCP status. + + When used as a TCP error report (command issued by the OPE), + there is one protocol-idiosyncratic parameter associated + with the Status command. It is an error description in the + form of a text string. It requires no special control flag + since the flag -pi is unambiguous and there are no other + protocol-idiosyncratic parameters. + + +Lilienkamp & Mandell & Padlipsky [Page 40] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 1.6.3. Examples of the Command + + An example of the Status command issued by the Host process + to request status information is + + C ST Q <nl> + + The status information is returned in the response to the + status command. + + An example of the Status command issued by the OPE to report + an error from the TCP interpreter is + + C ST R -pi "Connection already exists" <nl> + + which is issued when a TCP open (HFP Begin) is issued to an + already opened (foreign) connection. + + 1.7. The End Command + + The End command is used to indicate that TCP services are no + longer required. Thus, it can be mapped into either the TCP + Graceful Close or the TCP Abort events. It is also used as the + TCP Closing response (as contrasted with the response by the + OPE to the close command), when issued by the OPE. + + 1.7.1. Specialized Usage + + Because of the nature of the two-way close provided by TCP, + there is a possibility that the Host and the OPE wish to + gracefully terminate the connection at the same instant. If + this happens, then both the Host and the OPE would issue End + commands at the same time. To be prepared for this, it is + necessary to make this the normal graceful closing sequence. + In other words, both the Graceful Close request and the + Closing response are mapped to End commands, and the + response to one of those commands only indicates that the + command has been received and executed, but not that the + connection is actually fully closed. The connection is + gracefully closed when both End commands have been issued, + and both successful responses have been received. + + With an abrupt end, a two-way exchange is not necessary. + Only the Host or the OPE need issue it, for the connection + to be aborted. + + + + +Lilienkamp & Mandell & Padlipsky [Page 41] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 1.7.2. Protocol-Idiosyncratic Parameters + + There are no protocol-idiosyncratic parameters for the End + command used with TCP. + + 1.7.3. Examples of the Command + + An example of the End command used to indicate either a TCP + Close request (from the Host process) or TCP Closing + response (from the OPE) is + + C EN G <nl> + + An example of the End command used as an Abort request (from + the Host process) or as a Terminate response is + + C EN A <nl> + + 2. Command Level Interface to an Off-loaded Telnet + + This appendix is provided to discuss the use of the commands + described in the body of this document to provide an interface + between a Host process and an off-loaded interpreter of the Telnet + protocol. + + The interface described here is not based on a formal interface. + There are several reasons for this, including the lack of a widely + accepted standard interface to Telnet, and its headerless nature. + Consequently, the interface described here is very similar to the + actual Telnet data stream. + + 2.1. The Begin Command + + The Begin command is used with Telnet to initiate Telnet + connections. + + 2.1.1. Specialized Usage + + There are three major specialized usages to the Begin + command. They are the meaning of the Mediation Level + parameter, the way the number of incoming Telnet connections + are supported, and the meaning of the secondary address + components. + + The mediation level is used in Telnet to control which of + the various Telnet activities are performed by the OPE, and + which are controlled by the Host. It has been determined + + +Lilienkamp & Mandell & Padlipsky [Page 42] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + that all monitoring of the Telnet Socket should be performed + by the OPE. Mediation level 9, which is the default, + indicates the Host desires to play no role in Telnet + operation. Level 5 means that protocol-idiosyncratic + parameters to this Begin command indicate which incoming + options the Host wishes to handle; all other options, and + all NVT translations, are to be performed by the OPE. Level + 0 indicates that the Host will handle all options, while all + NVT translations are to be performed in the OPE (see Section + B.1.3). + + The Host can either accept the connections by fielding OPE + generated Begins, or by issuing passive Begins to the OPE. + The Host may wish to restrict the number of incoming Telnet + connections that it will handle at any particular time. It + can do this by rejecting OPE-generated Begins above a + certain number, or by limiting the number of Host-issued + passive Begins. However, precedence constraints dictate + that the Host actually issue additional passive Begins or + accept additional Begins from the OPE beyond the maximum + number it is normally willing to support, so that + high-priority service requests can be accommodated, possibly + by preempting lower priority activities. + + The secondary address component is used to refer to specific + ports. Normally, they are used only when the standard or + default ports are not used, such as special purpose + applications or testing. + + 2.1.2. Protocol-Idiosyncratic Parameters + + The protocol-idiosyncratic parameters to the Telnet Begin + command are the identifiers for the options which the host + wishes to negotiate when using mediation level 5. On other + mediation levels, these parameters are not used. + + 2.1.3. Examples of the Command + + An example of a passive Begin for an outboard Telnet + protocol is: + + C BE TEL P ,, 5 N -fc 0 -pi 9 <nl> + + Where the parameters are: + + TEL Code for the Telnet Protocol + P Passive Begin + + +Lilienkamp & Mandell & Padlipsky [Page 43] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + ,, Skip the Foreign Address Primary Component + 5 Mediation Level is 5 + N Non Blocking Transmits + -fc Skips over parameters up to Flow Control Advice + S Small Blocks are appropriate for Telnet + -pi Skips over parameters to the Protocol Idiosyncratic + List of Options to be Handled by the Host. + 9 Option Code for Line Length Option + + Here, no remote address component was specified, since the + Host will accept connections from any Host. Similarly, no + local addresses are specified, since the default well-known + socket for this Host is to be used. In this example, the + Host specifies it will handle the line length option (number + 9). Other options are handled in the OPE. + + An example of an active Begin for an outboard Telnet + protocol is: + + C BE TEL A ISIA 5 N -fc 0 -pi 9 <nl> + + This command is identical to the passive command, except + that a remote primary address component is specified to + identify the intended Host. No remote secondary component + is specified, since the well-known socket at that Host is to + be used. No local secondary address components are + specified, since the connection can originate from any + available socket of the appropriate type selected by the + OPE. + + 2.2. The Transmit Command + + The Transmit Command is used to send data across a Telnet + connection. + + 2.2.1. Specialized Usage + + The Transmit command is used to transmit data over the + Telnet connection. There is one specialized aspect of the + Transmit command used with an outboard Telnet interpreter. + This is the provision of the Go Ahead feature of Telnet that + supports half-duplex devices. + + Go Ahead is provided as a protocol idiosyncratic parameter + to the Transmit. It is only used if the Host will support + it, however. It is our opinion that Go Ahead is probably + not a proper thing for the default case. + + +Lilienkamp & Mandell & Padlipsky [Page 44] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + Go Aheads are a matter between the Host and the terminal. It + is difficult to offload the generation of Go Aheads to the + OPE, since the OPE is not really cognizant of the semantics + of the communication between the Host and the terminal. + Hence, the OPE does not know when the Host is done + transmitting and willing to pass "the turn" back to the + terminal. Similarly when the remote site relinquishes + control, the OPE includes Go Ahead in its TR. + + We don't believe this Go Ahead problem to be an indictment + against outboard processing. It merely illustrates that + functionality not found in a Host cannot necessarily be + provided by the OPE. Hence, we provide this note to the + implementor: if the Host cannot generate the + protocol-idiosyncratic Go Ahead parameter, then the DO + Suppress Go Ahead must be issued immediately after the + connection is established. + + 2.2.2. Protocol Idiosyncratic Parameters + + The protocol idiosyncratic parameter is the Go Ahead + indicator. When present, the character "G" is used to mean + the Go Ahead can be sent to the other end of the connection, + but only after the data associated with that Transmit + command is sent. When the character is any other value, or + is absent, the Go Ahead should not be sent. + + 2.2.3. Examples of the Command + + An example of the Transmit command is: + + C TR -pi G <nl> <DATA> + + With this command, the Go Ahead is passed to the other side + after the data is sent. + + 2.3. The Condition Command + + The Condition command is used with Telnet to modify the + Transmission characteristics and to enable or disable Telnet + options on a Telnet connection. + + 2.3.1. Specialized Usage + + The Condition command takes on specialized usage with + Telnet, in addition to its normal usage. It is used to + + + +Lilienkamp & Mandell & Padlipsky [Page 45] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + control the option selection and negotiation process, when + such selection is performed by the Host (currently, this is + done at mediation levels 5 and 1, but not at level 9). + + A set of protocol-idiosyncratic parameters has been defined + for this purpose. They are based heavily on the Telnet + negotiation and subnegotiation mechanisms. For simple + negotiations there are two parameters, a negotiation type + (from the set {DO, DONT, WILL, WONT}) followed by the code + (numeric) or name (symbolic) for the desired option. The + codes for the options are identified below. A basic + difference between the H-FP interface to Telnet and the + internal Telnet protocol is that additional parameters are + included with the request (DO or WILL). The Telnet protocol + subnegotiation is used internally to communicate that + information in the Telnet data stream. Option-specific, + protocol-idiosyncratic parameters are used for these + additional parameters. + + Both the Host and the OPE can issue these Condition + commands. When issued by the Host, it means the user wishes + to enable or disable a particular option. The OPE proceeds + to issue the appropriate negotiation commands (i.e., IAC + <DO> <code>) in the Telnet data stream. When the results of + the option negotiation are available, a response is + generated by the OPE. For the types DO and WILL, a 000 + Response indicates the appropriate acceptance (WILL or DO, + respectively). A nonzero Response code may indicate + negotiation failure or negotiation rejection (among other + things). For the types DONT and WONT, a 000 Response + indicates the option will be disabled. A negotiation + rejection should not be expected in those cases. + + When the Condition command is issued by the OPE, it means + the other end of the connection is negotiating a change. + Here the response from the Host indicates the Host's desired + action for the option negotiation. Again, valid requests to + disable options (DONT and WONT requests) should always get a + 000 Response. + + 2.3.2. Protocol-Idiosyncratic Parameters + + There are two protocol-idiosyncratic parameters for primary + negotiation using the Condition command. These are the + negotiation type and the option code. The negotiation type + is one of the set of {DO, DONT, WILL, WONT}. The option + code is a numeric value used to identify the particular + + +Lilienkamp & Mandell & Padlipsky [Page 46] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + option being negotiated. The values for these codes are + indicated here, but are identical to the codes used in the + actual Telnet negotiation. The codes are: + + Option Name Option Code Short Name + + Transmit Binary 0 Binary + Echo 1 Echo + Suppress Go-Ahead 3 SuppressGA + Approximate Message Size 4 NAMS + Status 5 Status + Timing Mark 6 TimingMark + RCTE 7 RCTE + Line Length 8 LineLength + Page Size 9 PageSize + Carriage Return Disp 10 CRDisp + Horizontal Tabstops 11 HTabStops + Horizontal Tab Disp 12 HTabDisp + Formfeed Disposition 13 FFDisp + Vertical Tabstops 14 VTabStops + Vertical Tab Disposition 15 VTabDisp + Linefeed Disposition 16 LFDisp + Extended ASCII 17 ExASCII + Logout 18 Logout + Data Entry Terminal 20 DET + Terminal Type 24 TermType + Extended options list 255 ExOptions + + Options not listed here may of course be used. The code + number should be the same as the option code used in Telnet + negotiation. + + 2.3.2.1. Simple Options + + Options that do not require additional parameters use the + simple negotiation mechanisms described briefly above and + in greater detail in the Telnet documentation. No + additional parameters are required. These options + include the Transmit Binary, Echo, Suppress Go Ahead, + Status, Timing Mark, and Logout options. + + 2.3.2.2. Approximate Message Size Option + + The Approximate Message Size option requires two + parameters. The first indicates whether the approximate + message size being negotiated applies to the local or the + remote end of the connection. DS means the size applies + + +Lilienkamp & Mandell & Padlipsky [Page 47] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + to the sender of the command (i.e., if the Host issues + the command, DS means the local end of the connection; + if issued by the OPE, DS means the remote end of the + connection). DR means the size applies to the receiver + of the command (i.e., if the Host issues the command, DR + means the remote end; if issued by the OPE, DR means the + local end of the connection). This convention is + consistent with the Telnet subnegotiation mechanisms. + The second character is an ASCII encoded numeric value, + which is a character count of the message size. + + 2.3.3. Line Width and Page Size Options + + The Line Width and Page Size Options require two additional + parameters. The first indicates whether the line width or + page size being negotiated applies to the local or the + remote end of the connection, and uses the DS and DR + convention described above. The second parameter is an + ASCII encoded numeric value, which is interpreted as follows + (assuming the Condition command was issued by the Host): + + 0 The Host requests that it handle length or size + considerations for the direction indicated by + the first parameter. + + 1 to 253 The Host requests that the remote end handle + the size or length considerations for the + direction indicated by the first parameter, but + suggests that the value indicated be used as + the size or length. + + 254 The Host requests that the remote end handle + the size or length considerations for the + direction indicated by the first parameter, but + suggests that the size or length be considered + to be infinity. + + 255 The Host requests that the remote end handle + the tabstop considerations, and suggests + nothing about what the value should be. + + If the Condition command is issued by the OPE, then the + roles of the Host and the remote end are reversed. + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 48] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 2.3.4. Tabstop Options + + The Horizontal and Vertical Tabstops options require two + option specific parameters. The first is either DR or DS, + as was described previously. The second is a list of one or + more ASCII encoded numeric values separated by spaces which, + assuming the Condition command is issued by the Host, are + individually interpreted as: + + 0 The Host requests that it handle tabstops for + the direction indicated by the first parameter. + + 1 to 250 The Host requests that the remote end handle + the tabstop considerations for the direction + indicated by the first parameter, but suggests + that the value(s) indicated should be used as + the tabstops. + + 255 The Host requests that the remote end handle + the tabstop considerations for the direction + indicated by the first parameter, and suggests + nothing about what the value should be. + + If the Condition command is issued by the OPE, then the + roles of the Host and the remote end are reversed. + + 2.3.5. Character Disposition Options + + The Carriage Return Disposition option, the Horizontal Tab + Disposition option, the Formfeed Disposition option, the + Vertical Tab Disposition option, and the Linefeed + Disposition option are all considered character disposition + options from the perspective of H-FP. Two option-specific + parameters are required for the character disposition + options. The first is the DR or DS code, which was + described previously. The second is a single ASCII encoded + numeric value, which is interpreted as (assuming that the + Host issued the Condition command): + + 0 The Host requests that it handle the character + disposition for this connection. + + 1 to 250 The Host suggests that the remote end handle + the character disposition considerations, but + suggests that the value indicated should be + taken as the number of nulls which should be + + + +Lilienkamp & Mandell & Padlipsky [Page 49] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + inserted in the data stream following the + particular format character being + subnegotiated. + + 251 The Host suggests that the remote end handle + the character disposition considerations, but + recommends that it replace the character with + some simplified character similar to but not + identical with it (e.g., replace a tab with a + space, or a formfeed with a newline). + + 252 The Host suggests that the remote end handle + the character disposition considerations, but + recommends that it discard the character. + + 253 The Host suggests that the remote end handle + the character disposition, but recommends that + the effect of the character be simulated using + other characters such as spaces or linefeeds. + + 254 The Host suggests that the remote end handle + the character disposition considerations, but + recommends that it wait for additional data + before sending more data. + + 255 The Host suggests that the remote end handle + the tabstop considerations, and suggests + nothing about what the value should be. + + Some of the codes between 251 and 254 are not used with some + character disposition options. Refer to the ARPANET + documentation for additional details. + + If the Condition command is issued by the OPE, then the + roles of the Host and the remote end are reversed. + + 2.3.5.1. RCTE Option + + The Remote Controlled Transmission and Echoing option + requires parameters to indicate the sets of break + characters and transmit characters. There are two + option-idiosyncratic parameters for RCTE. The first is a + list of the character classes that make up the set of + break characters, as defined in the RCTE documentation. + The second is a list of character classes that make up + the set of transmit characters, as defined in the RCTE + documentation. Since the two classes are optional and + + +Lilienkamp & Mandell & Padlipsky [Page 50] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + can be of arbitrary length, it is necessary to precede + each list with a -bc (break characters) or -tc (transmit + characters). The character classes are defined as + + 1 Upper Case Letters A through Z + 2 Lower Case Letters a through z + 3 Digits 0 through 9 + 4 Format effectors <BS> <CR> <LF> <FF> <HT> <VT> + 5 Non-format control codes, plus <ESC> and <DEL> + 6 Punctuation . , ; : ? ! + 7 Grouping { [ ( < > ) ] } + 8 Misc ' ` " / \ % @ $ & + - * = ^ _ | ~ + 9 <space> + + 2.3.5.2. Extended Option List + + The Extended Option List option requires a parameter to + carry the number of the option on the extended list. + There is thus one option specific parameter to the + Condition command when used for this purpose, which is + the number of the option on the extended option list. It + can be expressed in ASCII using an octal, decimal, or + hexadecimal format. + + 2.3.5.3. Terminal Extension Options + + The Extended ASCII, SUPDUP, and Data Entry Terminal + options of Telnet were all attempts to extend the basic + capabilities of the Telnet data stream beyond the simple, + scroll mode terminal model that was the basis of the + original Telnet design. + + All of these options have limitations to their + effectiveness. The Extended ASCII option lacks a + standardized interpretation of the bit patterns into + extended ASCII characters. The SUPDUP effort was + actually an independent mode where a different virtual + terminal protocol was used, and the option was there + merely to switch to and from this protocol. The Data + Entry Terminal option requires the excessive overhead of + subnegotiation for each use of extended features. All of + these options lack the more valuable asset of widespread + implementation and use. + + The way these options should be handled is not detailed + in this appendix. It is clear that the Condition command + could be used for initiating and terminating the use of + + +Lilienkamp & Mandell & Padlipsky [Page 51] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + these options. The actual transmission of characters + related to the extended terminal features should be + provided by the Transmit command, either as part of the + normal Host-to-OPE data stream or by using + protocol-idiosyncratic parameters. + + A more recent option, the Terminal Type option, should be + mentioned here. It permits one end of a connection to + request information about the terminal at the other end + or send information about the terminal at the local end. + This is convenient for systems that provide a wide + variety of terminal support, but it clearly does not + follow the model of reducing the MxN problem by use of a + virtual terminal. Its use is very straightforward in the + H-FP context. It only requires sending the terminal type + to the other end, and activating the Binary Transmission + Option. + + 2.3.5.4. Status Option + + The Status option is enabled using the negotiation + mechanism of Telnet. However, the means to transfer + status information between OPE and the Host is provided + via the Status command. Therefore, details of status + negotiation are irrelevant to the interface to the + outboard Telnet. + + 2.3.6. Examples of the Command + + The following example shows the command issued by a Host to + the OPE, requesting that the OPE negotiate with the other + side so that remote echo is performed. + + C CO -pi DO 1 <nl> + + The numeral 1 is the option code for ECHO from the table + above. All of the simple options listed above use this same + basic format. + + The options with additional parameters use straightforward + extensions of this syntax. For example, a possible usage of + Condition by the Host to set the approximate message size + is: + + C CO -pi DO 4 DS 1024 + + + + +Lilienkamp & Mandell & Padlipsky [Page 52] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + The 4 is the Option Code for the Approximate Message Size + option, the DS indicates that Host's message size should be + set, and 1024 is the desired size. + + 2.4. The Signal Command + + The Signal command is used with Telnet to provide the Telnet + Interrupt Process and Abort Output services. + + 2.4.1. Specialized Usage + + The Signal command is used with an outboard Telnet + interpreter to interface to the Telnet synch mechanism. + This mechanism is used with a protocol-idiosyncratic + parameter, which indicates what particular command is being + "synched." It is expected that normally, this Signal + mechanism will only be used with the Interrupt Process and + Abort Output Telnet signals. When the Signal command is + issued by the Host, it goes through the Channel + (out-of-band) to the OPE, where the Telnet interpreter + issues the corresponding Telnet signal and synch sequence. + When such a sequence is received by the OPE, it immediately + issues a Signal to the Host. It is expected that a Host or + OPE would not, in general, reject the Signal command unless + it is badly formed. + + 2.4.2. Protocol-Idiosyncratic Parameters + + The Telnet protocol-idiosyncratic parameter used with the + Signal command identifies which Telnet signal is begin + issued. Normally, it would have the value of either "IP" or + "AO", for Interrupt Process or Abort Output. If absent, the + default value is "IP". + + 2.4.3. Examples of the Command + + An example of a Telnet Signal Command (in this case, to send + an Interrupt Process signal) is: + + C SI IP <nl> + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 53] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 2.5. The Status Command + + The Status command is used with Telnet to obtain information + about the Telnet connection and the options in effect. + + 2.5.1. Specialized Usage + + The Status command has one specialized aspect when used to + interface to an outboard Telnet interpreter. That is to + send and receive the Telnet Protocol status request + subnegotiation message to and from the data stream. In + order to invoke the status command for this purpose, + however, the user must have previously issued the Condition + Status command, which causes the ability to request status + to be negotiated. The OPE, when it receives a valid Status + request command, immediately responds to the user indicating + the status. The OPE can issue a status to request the + Host's negotiated positions. + + 2.5.2. Protocol-Idiosyncratic Parameters + + There are no protocol-idiosyncratic parameters to the Status + query command. The Status Response command has a single + protocol-idiosyncratic parameter. It is an ASCII string + containing the status of the various options (not at their + default values). + + 2.5.3. Examples of the Command + + An example of a Status Query command is: + + C ST Q + + An example of a Status Response command is: + + F ST R "WILL ECHO DO SUPPRESS-GO-AHEAD + L WILL STATUS DO STATUS" <nl> + + In the previous example, note the opening quote is in the + first chunk, and the closing quote is in the last chunk. + This technique permits parameters to span chunk boundaries. + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 54] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 2.6. The End Command + + The End command is used to terminate the Telnet connection, + either gracefully or abruptly. + + 2.6.1. Specialized Usage + + The graceful termination of a Telnet requires End commands + to be issued by both the Host and the OPE. This specialized + usage is identical to that of the outboard TCP interface, + however. + + 2.6.2. Examples of the Command + + An example of the graceful End command is: + + C EN G <nl> + + The abrupt End command is similar. + + 2.7. The No-op Command + + The No-op command is used with Telnet so the Host can determine + if the OPE is active, and vice versa. + + 2.7.1. Specialized Usage + + The No-op command has one specialized usage when offloading + Telnet. This is to provide the Telnet Are You There (AYT) + feature. When an (AYT) message is received by the OPE, it + issues a No-op command to the Host. Upon receiving the + response from the Host, the appropriate response is sent + back in the data stream. + + 2.7.2. Protocol Idiosyncratic Parameters + + There are no protocol-idiosyncratic parameters to the No-op + command. + + 2.7.3. Examples of the Command + + An example of the No-op command is: + + C NO <nl> + + + + + +Lilienkamp & Mandell & Padlipsky [Page 55] + + + +RFC 929 December 1984 +Proposed Host-Front End Protocol + + + 3. FTP Offloading + + TBS + + 4. Mail Offloading + + TBS + + 5. Whatever Offloading + + TBS + + Where TBS nominally = To Be Supplied, but really means: We'll argue + through these once we get sufficiently positive feedback on the + others (and on the H-FP as a whole). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lilienkamp & Mandell & Padlipsky [Page 56] + |