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