INDRA
Working
Paper
INDRA Note 959
TSIG 4.0
IEN 153
29th July 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).
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 959
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 TCP letter 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
There are several ways a TCP connection providing a
Yellow Book service could be distinguished from a
normal TCP connection. These are as follows:
(i) A single TCP port could be reserved for Yellow
Book service. Additional multiplexing could
then be provided using the lines proposed in
Annex III of the Yellow Book.
(ii) A number of TCP ports could be reserved for the
different higher level services required, each
one of which would be defined as including the
enhancement defined within this document.
Bennett 2 INDRA 959
Yellow Book above TCP
(iii) A TCP option could be defined which when
associated with a SYN would denote the
'enhanced TCP service' option - i.e. the data
stream would be governed by this document.
The first of these possibilities leads to unnecessary
duplication of multiplexing facilities - perfectly
adequate multiplexing is already done within the TCP.
The second is potentially restrictive in that it limits
the growth of future services, and would probably
eventually lead to the informal adoption of the first
solution. This notes supports the third course, subject
to approval by the DARPA Internet Group. Proposed text
defining the TCP option, using the format of the TCP
specification, is as follows:
Enhanced TCP Service
+--------+
|00000010|
+--------+
Kind = 2
This option specifies that the TCP connection
is providing the data formats and command
messages necessary to support the enhanced
services offered by the UK standard Network
Independent Transport Service. This option
may only be specified in the header of a
packet which has the SYN bit set to 1. If
the receiving process is unable to support
this option, the connection should be aborted
via a RESET.
The adoption of this option does not imply that a TCP
itself is required to understand the structures of this
document. It does allow such TCPs to be built. For TCPs
which do not support these structures directly, the
option is effectively a null option, whose presence
should be indicated to the receiving process.
Failing the adoption of this facility, the first
choice (of a single reserved port) is supported here.
4.2 Identification of TCP Command Messages
Once the connection is identified as providing a
Yellow Book TCP service, the next problem is how to
identify TCP Command Messages within the data stream.
The X25 enhancement made use of the X25 Q-bit for this
Bennett 3 INDRA 959
Yellow Book above TCP
purpose, but there is no corresponding function within
TCP. The choices are as follows:
(i) Provision of a TCP Q-bit facility. This is
unlikely to occur, not least because the
example of XXX shows that it is liable to
misuse.
(ii) Further definition of the 'Enhanced Service'
option, so that the occurrence of this option
with a letter specifies that the letter is a
Command Message.
(iii) Structuring the data stream itself.
Despite the marginally greater data efficiency of the
second choice, the last choice is supported here, as it
requires no modification of the TCP user interface. It
does, however, require the transmission of a data octet
which will require a fairly clever user interface if
extensive buffer copying is to be avoided.
The structure proposed is as illustrated in Figure 1.
Each TCP letter is prefaced by a single octet, known as
the TYPE octet. This takes a value of 0 for data
letters and a value of 1 for command messages. All
other values are undefined.
+------+----- - - - - - ------+
| TYPE | LETTER BODY |
+------+----- - - - - - ------+
|
| /
| | 0 = DATA
|-------<
| 1 = COMMAND
\
Figure 1: Letter Structure in Yellow Book TCP
4.3 Structure of TCP Command Messages
A TCP Command Message is a Yellow Book TCP Letter of
TYPE 1.
Bennett 4 INDRA 959
Yellow Book above TCP
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; thus no intermediate parameter may be omitted,
though it may have a null value. Parameters, however,
may be omitted if they and all succeeding parameters
have null values.
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.
Bennett 5 INDRA 959
Yellow Book above TCP
This structure is summarised in Figure 2.
+-------- - - - - - - - - --------+
| 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
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.
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
Bennett 6 INDRA 959
Yellow Book above TCP
unfortunate in the DARPA context through its specific
association with the Internet Datagram Protocol.
4.4 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
/<NET ID>+<INTERNET HOST ID>+<PORT NO>/, where
the bracketed fields are the character strings
of the octal representations of those TCP
fields, except where otherwise noted. Thus,
the NIFTP port (octal 10651) at ISIE (net 12,
host 1, logical host 0, IMP 64) will be denoted
by the string:
/12+200064+10651/
4.4.1 CONNECT
The CONNECT command message is defined by the
following code and parameters:
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.4.2 ACCEPT
The ACCEPT command message is defined by the
Bennett 7 INDRA 959
Yellow Book above TCP
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). If
the recall address and the quality of service do not
differ from those specified in the CONNECT, the ACCEPT
will normally consist of the code octet only.
4.4.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).
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.
Bennett 8 INDRA 959
Yellow Book above TCP
(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.4.4 DATA
DATA is sent as a sequence of Yellow Book TCP data
letters, as defined above.
4.4.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.
4.4.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 letter.
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. As
noted above, TCP has no direct equivalent of a priority
data channel, but the mechanism described allows the
preservation of EXPEDITED data so that it may be passed
as such in subsequent networks.
Bennett 9 INDRA 959
Yellow Book above TCP
4.4.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
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.4.8 ADDRESS
The ADDRESS command message is defined by the
following code and parameters:
Code = 20
Parameter 1: Address
Parameter 2: Address Qualifier
Bennett 10 INDRA 959
Yellow Book above TCP
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.
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
Bennett 11 INDRA 959
Yellow Book above TCP
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.
The US Internetwork Group is likewise unfamiliar with
the concepts and details of the Yellow Book Transport
Service. 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 network, as
delimited by the TCP and its address space.
Beyond this the document proposes a new TCP option.
For most existing TCPs this option will effectively be
a null option which must be signalled to the user at
call setup time. However, there is no reason why a TCP
could not be built which contained the features of this
note as optional enhancements selectable by choosing
the option.
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 112. August 1979.
Bennett 12 INDRA 959