INDRA Working Paper INDRA Note 965 TSIG 4.1 IEN 154 7th August 1980 Realization of the Yellow Book Transport Service Above TCP C. J. Bennett ABSTRACT: This note defines an enhancement of the service provided by the US DoD Standard Transmission Control Protocol (TCP) sufficient to meet the requirements of the UK Network Independent Transport Service (the Yellow Book). This note supersedes an earlier version (INDRA Note 959, TSIG 4.0 and IEN 153). Department of Computer Science University College London 1. Introduction This document defines a means of providing the Yellow Book Transport Service [1] above the DARPA Internet facilities, in particular TCP [2], so that this can then be used to support other services such as endpoint file transfer without requiring UK hosts to implement the Internet family of protocols. It assumes familiarity with both TCP and the Yellow Book. The basic approach taken is to enhance the TCP service along the lines suggested for enhancing X25 in Annex I of the Yellow Book, taking into account the different services provided by TCP. In addition, the note discusses how to integrate Yellow Book TCP so that it can run alongside ordinary TCP - an issue the Yellow Book ignores for Yellow Book X25. 2. Deficiencies of TCP A comparison of the services provided by TCP and those provided by the Yellow Book reveals that TCP is unable to support directly, either in whole or in part, the following Yellow Book features: (i) The RESET and ADDRESS primitives. (ii) The Yellow Book multiple-domain addressing structure. The TCP address space constitutes a single naming domain in Yellow Book terms. Consequently, features involving addressing - notably ACCEPT - are inadequately supported by TCP. (iii) Much of the subsidiary information provided with Yellow Book primitives. The fact that the source address provided with certain actions such as DISCONNECT is not provided is again a limitation of the global TCP naming domain. The Yellow Book 'Explanatory Text' parameters have no corresponding feature in TCP. (iv) The closest equivalent to Yellow Book EXPEDITED data - theoretically requiring a priority data channel - is TCP URGENT data. However, TCP URGENT data remains in sequence, and the URGENT pointer only marks the end of the data. Its beginning is not delimited. (v) The Yellow Book DISCONNECT is a full-duplex close, whereas the TCP CLOSE is only half- duplex. The TCP RESET is a unilateral close, used in error conditions. Connection closure Bennett 1 INDRA 965 Yellow Book above TCP provides particularly subtle problems. Hence in order to provide a Yellow Book service above TCP an enhancement of TCP is necessary. The remainder of this document discusses such an enhancement. 3. Principles of the Enhancement The basic principles of the enhancement are as follows: (i) Where a TCP function corresponds directly to a Yellow Book function that TCP function is used directly. (ii) Where the Yellow Book function requires more information or action, the TCP function is associated with a TCP Control Message in a defined way. This message is a record of defined format containing the information required. (iii) Where there is no TCP function even remotely corresponding to the required Yellow Book function, a control message is defined which may be used by the source and destination processes if possible, and may be forwarded into other transport domains more capable of taking the appropriate action. 4. The Yellow Book TCP Enhancement 4.1 Distinguishing the Yellow Book TCP The services using the Yellow Book enhancement to the TCP will be identifiable through the TCP socket number used. These will be allocated for standard services as required. 4.2 Identification of Yellow Book TCP Messages The data stream is structured into records, which in turn are substructured depending on the record type. These records are independent of TCP letter indications as the latter are purely push delimiters. Bennett 2 INDRA 965 Yellow Book above TCP The record structure proposed is as illustrated in Figure 1. Each record is prefaced by a single octet, known as the TYPE octet. This takes a value of 0 for data records and a value of 1 for command messages. All other values are undefined. +------+----- - - - - - ------+ | TYPE | RECORD BODY | +------+----- - - - - - ------+ | | / | | 0 = DATA |-------< | 1 = COMMAND \ Figure 1: Letter Structure in Yellow Book TCP 4.3 Structure of TCP Data Messages A TCP Data Message is a Yellow Book TCP record of TYPE 0. Each record consists of a number of SUBRECORDS. Each subrecord consists of a header octet and a number of data octets, up to a limit of 127 octets. The subrecord header is a single octet. The high- order bit of this octet, if set to 1, declares that the current subrecord is the last subrecord of the current record. The remaining seven bits define the length in octets of the current record. Bennett 3 INDRA 965 Yellow Book above TCP This structure is illustrated in Figure 2. +-------- - - - - - - - - --------+ | DATA MESSAGE | +-------- - - - - - - - - --------+ / \ / \ / \ / \ +-------- - - + - - - - - - - + - - --------+ | SUBRECORD 1 | ........... | SUBRECORD K | Data Record +-------- - - + - - - - - - - + - - --------+ Structure | \ | \ | \ | \ +--------+------ - - - - - -------+ | HEADER | BODY | Subrecord Structure +--------+------ - - - - - -------+ | \ | \ | \ +-+-+-+-+-+-+-+-+ | | C O U N T | Header Structure +-+-+-+-+-+-+-+-+ | |--- EOR Bit Figure 2: TCP Data Message Structure 4.4 Structure of TCP Command Messages A TCP Command Message is a Yellow Book TCP record of TYPE 1. The first octet of the message defines the COMMAND CODE of the message. These codes are defined in subsequent sections, and have been chosen to correspond to the command codes of the X25 Command Messages. Following the command code is a number of PARAMETERS. The significance of these parameters is defined by their position in the parameter sequence for each command, and the command message is completed only when all parameters have been specified; thus no parameter may be omitted, though it may have a null value. Bennett 4 INDRA 965 Yellow Book above TCP Most parameters have a free field format. For this reason each parameter is constructed of a number of FRAGMENTS. These fragments consist of a header byte and the body of the fragment, which may have a maximum length of 127 octets. The fragment header is a single octet. The high-order bit of this octet, if set to 1, declares that the current fragment is the last fragment of the current parameter. The remaining seven bits define the length in octets of the current fragment. This structure is summarised in Figure 3. +-------- - - - - - - - - --------+ | COMMAND MESSAGE | +-------- - - - - - - - - --------+ / \ / \ / \ +------+-------- - - + - - - - - + - - -------+ | CODE | PARAM 1 | ....... | PARAM N | Command +------+-------- - - + - - - - - + - - -------+ Structure / \ / \ / \ / \ +-------- - - + - - - - - + - - --------+ | FRAG 1 | ....... | FRAG K | Parameter +-------- - - + - - - - - + - - --------+ Structure | \ | \ | \ | \ +--------+------ - - - - - -------+ | HEADER | BODY | Fragment Structure +--------+------ - - - - - -------+ | \ | \ | \ +-+-+-+-+-+-+-+-+ | | C O U N T | Header Structure +-+-+-+-+-+-+-+-+ | |--- EOP Bit Figure 2: TCP Command Message Structure Bennett 5 INDRA 965 Yellow Book above TCP A parameter with a null value is represented by a fragment header whose EOP bit is set to 1 and whose count field is set to 0. The rules governing the syntax of free-field parameters are the same as those defined in section 2.7 of the Yellow Book, based on the use of the IA5 character set, except where otherwise noted. The sole difference between this structure and the X25 Command Message structure is that the count field in the fragment header is extended by one bit - this bit is used for a specific purpose in X25 CONNECT messages which does not arise with the TCP. This doubles the maximum fragment size. Because of the similarity of structure the same terminology has been used, though the term 'fragment' is somewhat unfortunate in the DARPA context through its specific association with the Internet Datagram Protocol. 4.5 Yellow Book Commands and TCP The following general remarks apply to the following specification: (i) All codes are specified as decimal integers. (ii) All address fields include the appropriate TCP address components, specified as /++/, where the bracketed fields are the character strings of the octal representations of those TCP fields. Where a field consists of more than 8 bits, it is further subdivided into eight bit units separated by commas for representational purposes. Thus, the NIFTP port (octal 10651) at ISIE (net 12, host 1, logical host 0, IMP 64) will be denoted by the string: /12+1,0,64+21,251/ (iii) All command messages must be accompanied by a TCP end of letter at the end of the last fragment of the last parameter. 4.5.1 CONNECT The CONNECT command message is defined by the following code and parameters: Bennett 6 INDRA 965 Yellow Book above TCP Code = 16 Parameter 1: Called Address Parameter 2: Calling Address Parameter 3: Quality of Service Parameter 4: Explanatory Text This message will be preceded by the usual TCP three-way handshake. Where possible or appropriate, the quality of service parameter will be used to select TCP quality of service from the options defined in the TCP specification. The CONNECT message will be the first message sent by the calling party. It will be possible for the calling party to initiate the transfer of data before the arrival of an ACCEPT message. 4.5.2 ACCEPT The ACCEPT command message is defined by the following code and parameters: Code = 17 Parameter 1: Recall Address Parameter 2: Quality of Service Parameter 3: Explanatory Text This message will be the first message sent by the called party after the three-way handshake, unless the call request was rejected (see DISCONNECT, below). 4.5.3 DISCONNECT The DISCONNECT command message is defined by the following code and parameters: Code = 18 Parameter 1: Reason Parameter 2: Address of DISCONNECT Initiator Parameter 3: Explanatory Text The reason parameter is a single octet giving a machine-oriented encoding of the reason the DISCONNECT was initiated. The defined reasons are listed in Appendix B of the body of the Yellow Book. Parameter 2 is included to cover the case where the DISCONNECT was initiated by some intermediate gateway (where 'gateway' is used in the Yellow Book sense). Bennett 7 INDRA 965 Yellow Book above TCP DISCONNECT will always cause the TCP to issue an URGENT call. On receipt of a DISCONNECT message, no further data may be sent and all data currently queued for transmission should be flushed if possible. No data will be passed across to the user after a DISCONNECT has been issued. Beyond this, the exact DISCONNECT sequence used varies depending on the state of the connection, as follows: (i) If the DISCONNECT is being used to reject a CONNECT request, the DISCONNECT message will be followed by a TCP RESET. This will abort the TCP connection, flushing all outstanding data. No response is expected. The URGENT pointer points to the TCP RESET. (ii) In the normal case of closing an open connection, the DISCONNECT issued by the initiator will be followed by a TCP FIN. The remote party will respond with an optional DISCONNECT message accompanied by a FINACK and a FIN. The URGENT pointer points to the TCP FIN. (iii) For error terminations, a DISCONNECT message should be answered with a TCP RESET. The issuer of the DISCONNECT will also issue a TCP RESET after a timeout period, if a RESET has not already been received. The URGENT pointer points to the end of the DISCONNECT message. 4.5.4 DATA DATA is sent as a sequence of Yellow Book TCP data messages, as defined above. 4.5.5 PUSH The PUSH function is conveyed by use of the TCP EOL function, pointing to the data octet at which the PUSH was issued. Note that it is possible to collapse EOL indications, effectively combining PUSHes. Strictly speaking, the Yellow Book requires that a PUSH remains in sequence, but this is not necessary to obtain the required Bennett 8 INDRA 965 Yellow Book above TCP effect. In order to propagate the PUSH, it is necessary that the TCP delivers EOL indications to the user process. The circumstances under which this occurs are currently unclear. It may be necessary in the future to define a PUSH command message. 4.5.6 EXPEDITED The EXPEDITED command message is defined by the following code and parameter: Code = 21 Parameter 1: EXPEDITED data EXPEDITED data is accompanied by a TCP URGENT pointer pointing to the end of the message. There are no restrictions on the encoding of EXPEDITED data messages beyond the normal fragment structuring rules. It should be noted that this will cause the receiver of the URGENT to process all data up to the URGENT pointer in 'fast' mode, whether EXPEDITED or not. It may or may not be possible to deliver the EXPEDITED data to the user ahead of sequence. As noted above, TCP has no direct equivalent of a priority data channel, but the mechanism described at least allows the preservation of EXPEDITED data so that it may be passed as such in subsequent networks. 4.5.7 RESET The RESET command message is defined by the following code and parameters: Code = 19 Parameter 1: Reason Parameter 2: Address of RESET Initiator Parameter 3: Explanatory Text TCP has no equivalent of the RESET function (a TCP RESET is something else entirely). Thus the only TCP action taken with a RESET message is to accompany it with an URGENT pointer pointing to the end of the RESET message. As with DISCONNECT, the defined RESET reasons are those listed in Appendix B of the main portion of the Yellow Book. The address parameter is again included to cater for the case where a RESET was initiated in some Bennett 9 INDRA 965 Yellow Book above TCP intermediate network. A RESET may only be issued if the connection is fully open and there are no RESETs already outstanding. A RESET message must always be replied to with another RESET message, leaving the connection open, or with an error DISCONNECT message followed by a TCP RESET, which will abort the connection. All data and control messages, with the exception of DISCONNECT, received after a RESET has been issued and before a RESET reply has been received, will be discarded without informing the user. In the case of DISCONNECT, the connection will be considered as having closed in an abnormal state. If a DISCONNECT has been issued, a received RESET will be ignored. Where possible the issue of a RESET should cause the sender to flush its transmission buffers. 4.5.8 ADDRESS The ADDRESS command message is defined by the following code and parameters: Code = 20 Parameter 1: Address Parameter 2: Address Qualifier The ADDRESS qualifier is a single octet parameter taking one of the values defined in the Yellow Book: 0: The message is passing towards the addressed object. 1: The message is passing away from the addressed object. 2: An addressing error has been detected. There is no associated TCP action taken with an ADDRESS message. The receiver of an ADDRESS message will perform the appropriate ADDRESS transformation as defined in the Yellow Book. It is recommended that the ADDRESS function should not be used. Bennett 10 INDRA 965 Yellow Book above TCP 5. Conclusions One of the difficulties of writing a note such as this is that it is addressed to several audiences with different interests and not necessarily a great deal of overlap either in aim or in background. The immediate audience is the team at University College London who are involved in implementing a 'Protocol Convertor' to make possible direct access between hosts in Britain using the CCITT and UK national standards and the hosts in the US based on the DARPA Internet standards. For this audience, the document hopefully defines an answer to what will soon be a practical need, though it is a matter for continuing debate to what extent the full enhancement defined here will be implemented. Within Britain, the wider audience aimed at is centred on the Transport Service Implementors' Group. For this group, the aim of the document will be well understood - it is defining a service enhancement similar to the one that is already defined for X25 and the ones they are defining for their local campus networks. The aim is to provide a common transport service for all these systems. They will be unfamiliar with the detailed nature of the TCP itself, but this is not particularly important. The major interest of the document lies in the fact that the system being enhanced is not an ordinary local network, but an entire family of networks, and the resultant enhancement will make possible direct authorised access between UK and US hosts. I would also like to point out the issue of separating Yellow Book enhancements from ordinary uses of a network service. This issue is not addressed by the X25 enhancement specification. Much of the US Internetwork Group is likewise unfamiliar with the concepts and details of the Yellow Book Transport Service. A summary of these concepts will be made available in a later IEN. For them, the document will be of interest in that it shows how to coordinate two very different approaches to internetworking. The Catenet, based on TCP, can be described as a strongly connected internetwork system, with common transport protocols and a common address space. The UK Transport Service takes an approach based on providing a common service interface, which leads to a weakly connected system with common service protocols and no common address space. Within this approach, the entire Internet system appears as a single component Bennett 11 INDRA 965 Yellow Book above TCP network, as delimited by the TCP and its address space. 6. References [1] - PSS User Forum Study Group Three: "A Network Independent Transport Service" SG3/CP(80)2. February 1980. [2] - Information Sciences Institute: "Transmission Control Protocol" IEN 129.January 1980. Bennett 12 INDRA 965