IEN-114                                                        J. Postel
                                                                     ISI
                                                             August 1979



                            PROTOCOL OPTIONS
                            ----------------

Introduction
------------

This memo collectes  the definition  of the various  options used in the
Internet   protocols,   in  particular   the   options   from   Internet
Protocol (IP) [1] and Transmission Control Protocol (TCP) [2].

Internet Protocol Options
-------------------------

The option  field is variable  in length.   The format is an option-type
octet, an option-length octet, and the actual option-data octets.  There
are two special case options which have only the option-type octet.

The option-length  octet,  which follows, includes the option-type octet
and the option-length octet in the octet count of the option length.

The option-type octet can be viewed as having 3 fields:

  1 bit   reserved, must be zero
  2 bits  option class,
  5 bits  option number.

The option classes are:

  0 = control
  1 = internet error
  2 = experimental debugging and measurement
  3 = reserved for future use
















Postel                                                          [page 1]


                                                             August 1979
Protocol Options                                                 IEN 114



The following internet options are defined:

  CLASS NUMBER LENGTH DESCRIPTION
  ----- ------ ------ -----------
    0     0      -    End of Option list.  This option occupies only 1
                      octet; it has no length octet.
    0     1      -    No Operation.  This option occupies only 1 octet;
                      it has no length octet.
    0     2      4    S/P/T.  Used to carry Security, Precedence, and
                      user group (TCC) information compatible with
                      AUTODIN II requirements.
    0     3     var.  Source Routing.  Used to route the internet packet
                      based on information supplied by the source.
    0     4     var.  BCR Open.
    0     5     var.  BCR Close.
    0     6     var.  BCR other.
    0     7     var.  Return Route.  Used to record the route taken by
                      an internet packet.
    0     8      2    Stream ID.  Used to carry the stream identifier.
    1     1     var.  General Error Report.  Used to report errors in
                      internet packet processing.
    2     4      4    Internet Timestamp.  Used to carry timestamping
                      information.
    2     5      4    Satellite Timestamp.  Used as above for special
                      satellite network testing.

Specific Option Definitions

  End of Option List

    +--------+
    |00000000|
    +--------+
      Type=0

    This option indicates the end of the option list.  This might not
    coincide with the end of the internet header according to the
    internet header length.  This is used at the end of all options, not
    the end of each option, and need only be used if the end of the
    options would not otherwise coincide with the end of the internet
    header.








[page 2]                                                          Postel


August 1979
IEN 114                                                 Protocol Options



  No Operation

    +--------+
    |00000001|
    +--------+
      Type=1

    This option may be used between options, for example, to align the
    beginning of a subsequent option on a 32 bit boundary.

  S/P/T

    This option provides a way for AUTODIN II hosts to send security,
    precedence, and TCC (closed user groups) parameters through networks
    whose transport leader does not contain fields for this information.
    The format for this option is as follows:

      +--------+--------+---------+--------+
      |00000010|00000100|Prec|Sec |  TCC   |
      +--------+--------+---------+--------+
        Type=2  Length=4

    Precedence:  4 bits

      Specifies one of 16 levels of precedence

    Security:  4 bits

      Specifies one of 16 levels of security

    Transmission Control Code:  8 bits

      Provides a means to compartmentalize traffic and define controlled
      communities of interest among subscribers.

    This option might be used between hosts on the AUTODIN II network
    and other networks, such as the EDN at DCEC.












Postel                                                          [page 3]


                                                             August 1979
Protocol Options                                                 IEN 114



  Source Route

    +--------+--------+--------+---------//--------+
    |00000011| length |        source route        |
    +--------+--------+--------+---------//--------+
    Option=3

    The source route option provides a means for the source of an
    internet datagram to supply routing information to be used by the
    gateways in forwarding the datagram to the destination.

    The option begins with the option type code.  The second octet is
    the option length which includes the option type code and the length
    octet, as well as length-2 octets of source route data.

    A source route is composed of a series of internet addresses.  Each
    internet address is 32 bits or 4 octets.  The length defaults to
    two, which indicates the source route is empty and the remaining
    routing is to be based on the destination address field.

    If the address in destination address field has been reached and
    this option's length is not two, the next address in the source
    route replaces the address in the destination address field, and is
    deleted from the source route and this option's length is reduced by
    four.  (The Internet Header Length Field must be changed also.)

  Return Route

    +--------+--------+--------+---------//--------+
    |00000111| length |        return route        |
    +--------+--------+--------+---------//--------+
    Option=7

    The return route option provides a means to record the route of an
    internet datagram.

    The option begins with the option type code.  The second octet is
    the option length which includes the option type code and the length
    octet, as well as length-2 octets of return route data.

    A return route is composed of a series of internet addresses.  The
    length defaults to two, which indicates the return route is empty.

    When an internet module routes a datagram it checks to see if the
    return route option is present.  If it is, it inserts its own
    internet address as known in the environment into which this



[page 4]                                                          Postel


August 1979
IEN 114                                                 Protocol Options



    datagram is being forwarded into the return route at the front of
    the address string and increments the length by four.

  BCR Options

    BCR OPEN

    +--------+--------+------
    |00000100| length | data
    +--------+--------+------
      Type=4

    BCR CLOSE

    +--------+--------+------
    |00000101| length | data
    +--------+--------+------
      Type=5

    BCR OTHER

    +--------+--------+------
    |00000110| length | data
    +--------+--------+------
      Type=6

    These options are used with the BCR.

  Stream Identifier

    +--------+--------+---------+--------+
    |00001000|00000010|     Stream ID    |
    +--------+--------+---------+--------+
      Type=8  Length=2

    This option provides a way for the 16-bit SATNET stream identifier
    to be carried through networks that do not support the stream
    concept.

  General Error Report

    +--------+--------+--------+--------+--------//--------+
    |00100001| length |err code|   id   |                  |
    +--------+--------+--------+--------+--------//--------+
     Type=33




Postel                                                          [page 5]


                                                             August 1979
Protocol Options                                                 IEN 114



    The general error report is used to report an error detected in
    processing an internet packet to the originator of that packet.  The
    "err code" indicates the type of error detected and the "id" is
    copied from the identification field of the packet in error,
    additional octets of error information may be present depending on
    the err code.

    ERR CODE:

      0 - Undetermined Error, used when no information is available
      about the type of error or the error does not fit any defined
      class.  Following the id should be as much of the datagram as fits
      in the option space.

      No err codes have been defined for specific classes as yet.

  Internet Timestamp

    +--------+--------+--------+--------+--------+--------+
    |01000100|00000100|        time in milliseconds       |
    +--------+--------+--------+--------+--------+--------+
     Type=68  Length=4

    The data of the timestamp is a 32 bit time measured in milliseconds.

  Satellite Timestamp

    +--------+--------+--------+--------+--------+--------+
    |01000101|00000100|        time in milliseconds       |
    +--------+--------+--------+--------+--------+--------+
     Type=69  Length=4

    The data of the timestamp is a 32 bit time measured in milliseconds.

The options are just that, optional.  That is, the presence or absence
of an option is the choice of the sender, but each internet module must
understand how to process every option.












[page 6]                                                          Postel


August 1979
IEN 114                                                 Protocol Options



Transmission Control Protocol Options
-------------------------------------

Options may occupy space at the end of the TCP header and are a multiple
of 8 bits in length.  All options are included in the checksum.  An
option may begin on any octet boundary.  All options have the same basic
format:

  Option kind:  8 bits

  Option length:  8 bits

    Length in octets (including the two octets of length and kind
    information)

  There are two special cases for options.

    The first is the End-of-Options option.  Only one octet is
    associated with this option, the kind octet itself.

    The second is the No-Operation option and is also one octet long.

  Note that the list of options may be shorter than the data offset
  field might imply.  The content of the header beyond the End-of-Option
  option should be header padding (i.e., zero).

Currently defined options include (kind indicated in octal):

  Kind     Length    Meaning
  ----     ------    -------
   0         -       End of option list.
   1         -       No-Operation.
  100        -       Reserved.
  105        4       Buffer Size.















Postel                                                          [page 7]


                                                             August 1979
Protocol Options                                                 IEN 114



Specific Option Definitions

  End of Option List

    +--------+
    |00000000|
    +--------+
     Kind=0

    This option code indicates the end of the option list.  This might
    not coincide with the end of the TCP header according to the Data
    Offset field.  This is used at the end of all options, not the end
    of each option, and need only be used if the end of the options
    would not otherwise coincide with the end of the TCP header.

  No-Operation

    +--------+
    |00000001|
    +--------+
     Kind=1

    This option code may be used between options, for example, to align
    the beginning of a subsequent option on a word boundary.  There is
    no guarantee that senders will use this option, so receivers must be
    prepared to process options even if they do not begin on a word
    boundary.

  Buffer Size

    +--------+--------+---------+--------+
    |01000101|00000100|    buffer size   |
    +--------+--------+---------+--------+
     Kind=105 Length=4

    Buffer Size Option Data:  16 bits

      If this option is present, then it communicates the receive buffer
      size at the TCP which sends this segment.  This field should only
      be sent in segments with the SYN control bit set.  If this option
      is not used, the default buffer size of one octet is assumed.








[page 8]                                                          Postel


August 1979
IEN 114                                                 Protocol Options
                                                              References



References
----------

[1]     Postel, J., "Internetwork Protocol," IEN 111, USC/Information
        Sciences Institute, August 1979.

[2]     Postel, J., "Transmission Control Protocol," IEN 112,
        USC/Information Sciences Institute, August 1979.








































Postel                                                          [page 9]