IEN # 2                            Comments on Internet Protocol and TCP



IEN # 2                                                       Jon Postel
Supercedes: None                                                     ISI
Replaces: None                                            15 August 1977


             2.3.3.2  Comments on Internet Protocol and TCP

Introduction

This memo suggests an approach to protocols used in internetwork systems
somewhat different from the main thrust of the work on the Transmission
Control Protocol (TCP) [1].  The position taken here is that
internetwork communication should be view as having two components: the
hop by hop relaying of a message, and the end to end  control of the
conversation.  This leads to a proposal for a hop by hop oriented
internet protocol, an end to end oriented host level protocol, and the
interface between them.

Discussion

We are screwing up in our design of internet protocols by violating the
principle of layering. Specifically we are trying to use TCP to do two
things: serve as a host level end to end protocol, and to serve as an
internet packaging and routing protocol. These two things should be
provided in a layered and modular way. I suggest that a new distinct
internetwork protocol is needed, and that TCP be used strictly as a host
level end to end protocol. I also believe that if TCP is used only in
this cleaner way it can be simplified somewhat. A third item must be
specified as well -- the interface between the internet host to host
protocol and the internet hop by hop protocol.

  An analogy may be drawn between the internet situation and the
  ARPANET.  The endpoints of message transmissions are hosts in both
  cases, and they exchange messages conforming to a host to host
  protocol. In the ARPA subnet there is a IMP to IMP protocol that is
  primarily a hop by hop protocol, to parallel this the internet system
  should have a hop by hop internet protocol.  In the ARPANET a host and
  an IMP interact through an inteface, commonly called 1822, which
  specifies the format of messages crossing the boundary, an equivalent
  interface in needed in the internet system.

In the rest of this memo i outline first a possible internet host - hop
interface, second an internet hop by hop protocol, and third some
modifications to TCP so that it can serve as an internet host level
protocol.

Internet Host - Hop Interface





Section 2.3.3.2                                                 [page 1]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
Discussion
Internet Host - Hop Interface



  It is difficult to present a protocol and an interface separately.  In
  this section i present the fields and functions used in the internet
  host - hop interface.  The discussion will however explain some of the
  operation of the internet hop by hop protocol as well.

  I suggest an internet hop by hop protocol that provides only those
  functions needed to address and route messages in an arbitrarily
  structured network, to allow for fragmentation and reassembly of
  fragments, to provide various types of service, and a moderate level
  of error control.

  The internet host - hop interface is described by discussing the use
  made of each of the fields in the interface message header.

  Version

    As time goes by the internetwork system may evolve to a point where
    the interface format (or the protocol) must be changed. This field
    provides the handle for simultaneously supporting two (or more)
    versions of the protocol.

  Data Identifier and Acknowledgement Identifier

    When a message is sent from a host to a hop module, or between hop
    modules, or from a hop module to a host, it must be acknowledged.
    To allow several messages to be in transit simultaneously an
    identifier is used to associate data messages and acknowledgements.

  Type of Service

    Because different applications may call for different aspects of
    communication performance to be emphasised a type of service field
    is necessary.  For example one application may call for reliable
    delivery and be willing to suffer longer delays or lower throughput
    for it.  Another application may not be able to tolerate the
    slightest delay but be unconcerned about reliability.  The type of
    service field has the following assigned values:

      0 - reliable delivery requested

        This means that at each hop the message (or fragment) is
        retransmitted to the next hop until an acknowledgement is
        received.

      1 - no retransmission





Section 2.3.3.2                                                 [page 2]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
                                                              Discussion
Internet Host - Hop Interface



        This means that at each hop the message (or fragment) is
        transmitted exactly once to the next hop, if it is afflicted
        with errors, too bad.

  Addresses

    Addresses are variable length strings of 4 bit chunks prefixed by a
    length.  As address chunks are processed they are removed from their
    position at the head of the address chunk string and placed at the
    end of the string.  This chunk by chunk circular shifting of the
    address allows each node in the hop by hop processing of a message
    to examine the part of the address it consumes with out knowing how
    much address preceeds or follows that part.

  Fragmentation

    Fragmentation is an internet protocol problem rather than a host
    level problem. Fragmentation is necessary because of the differing
    sizes of maximum message allowed by the various networks making up
    the internetwork system. The possibility of a large message being
    routed or delivered in a network with a smaller maximum message size
    requires that the internet protocols provide for fragmentation.

    Any where along the transmission path an internet protocol node may
    fragment a message (which already may be a fragment). Only at a
    point where all fragments must pass can reassembly of the fragments
    be done. Usually the only point that meets this constraint is the
    destination host.

    To understand a little about the fragmentation information carried
    in the internet protocol header we examine the information needed to
    reassemble fragments and the possible ways to provide that
    information.

      What does the reassembler need to know?

        What message is this a fragment of?  - Message Identifier

        Where in the message does this fragment go?  - Fragment Number
        and Size

        Are all the fragments of this message here?  - Number of
        Fragments or Last Fragment Flag

      What can the fragmenter (original or intermeadiate) provide?





Section 2.3.3.2                                                 [page 3]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
Discussion
Internet Host - Hop Interface



        It may be easier to say what it can not do:

          It can't keep a count of total fragments carried in each
          fragment because some fragments may get split while others do
          not in a alternate routing environment.

          It can't know what fragment identifiers have already been
          used.

        It can do these things:

          It can pass on a last fragment flag.

          It can pass on fragment numbers that are hierarchial or based
          of data length such as data sequence numbers.

          It can pass on a message identifier.

          It can pass on a data length.

      The difficult issue is how best to identify where this fragment
      fits with respect to other fragments when trying to reassemble a
      message. Two schemes seem workable: a hierachial fragment naming
      scheme, and a sequence number scheme.

        The hierachial scheme would call for a fragment name to be
        composed of a variable number of chunks. Each time a fragment
        was split each new fragment would get a copy of the old fragment
        name with an added chunk specifing the order between the just
        created fragments. These fragment names would then be equivalent
        to the names of the leaves of a tree. At the destination the
        reassembly would proceed by combining sibling leaves and
        replacing the mother node by the combined fragment. This scheme
        would require a last fragment flag for each set of siblings
        unless the degree of branching were fixed. The variable length
        fragment names are a complexity it would be nice to avoid.

        The sequence number scheme would call for each fragment to carry
        a fragment sequence number and a data length. Each original
        message could start with the fragment sequence number zero. When
        it was necessary to fragment a message the first fragment would
        carry the original fragment sequence number, while the second
        fragment would carry a fragment sequence number equal to the
        fragment sequence number of the first fragment plus the data
        length of the first fragment, and so on.  The last fragment





Section 2.3.3.2                                                 [page 4]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
                                                              Discussion
Internet Host - Hop Interface



        would have to carry a last fragment flag. At the reassembly
        point adjacent fragments could be combined until the message was
        complete. Two messages are adjacent when the fragment sequence
        number of the second is equal to the fragment sequence number of
        the first plus the data length of the first.

    Message Identifier

      Each message to be fragmented must have an identifier unique to
      this end to end address pair, so that the fragments of one message
      may be distinguished from the fragments of another message.

      There is no need to coordinate the choice of this identifier
      between the source and destination.  The source should choose the
      identifiers on messages it sends so as to avoid having two
      distinct messages to the same destination concurrently in
      circulation with the same identifier.

      The choice of message identifier could be clock based or a simple
      sequence and the same sequence could be spread across all outgoing
      messages or separate sequences could be used for each destination
      address.

  Data

    Ah the data, at last a space for the reason we are going through all
    this nonsense.  There is a data length field, and then that much
    data.

  Error Control

    Only hop to hop error control should be attempted in the internet
    protocol. Specific host level protocols such as TCP can provide for
    end to end error control. The same checksum field is used to protect
    the communication between the source host and the first hop, and
    between the last hop and the destination host, as is used between
    hops.













Section 2.3.3.2                                                 [page 5]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
Discussion
Internet Host - Hop Interface



  Message Format

    The internet protocol message format has the following fields:

      Version
      Flags
      Data Identifier
      Acknowledgement Identifier
      Type of Service
      Destination Address
      Fragment Information
        Message Identifier
        Fragment Sequence Number
        Last Fragment Flag
      Data Length
      Data
      Checksum

    The Version field is a 4 bit field which indicates the version of
    the internet protocol the remainder of the message conforms to. This
    proposal describes version 0.

    The Type of Service field is  a 4 bit field specifing which handling
    type is desired.

    The Flags are a set of bits which specify the presence or absence of
    values in certain fields, in particular there is a data flag which
    indicates the data identifier field is meaningful (and that the data
    length is nonzero), and a acknowledgement flag which indicates the
    acknowledgement identifier field is meaningful.

    The Data Identifier is a 16 bit field that distinguishes this
    message from other active messages on this host to hop, hop to hop,
    or hop to host, link.

    The Acknowledgement Identifier is a 16 bit field that specifies
    which message among the active messages on this host to hop, hop to
    hop, or hop to host, link this acknowledgement pertains to.

    The Destination Address field is a variable length extensible
    address composed of 4 bit chunks. The first chunk is the length of
    the address in chunks, except that the value 0 indicates that the
    next two chunks as a 8 bit number indicate the length.

      This address extension scheme actually goes on indefinitely: we





Section 2.3.3.2                                                 [page 6]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
                                                              Discussion
Internet Host - Hop Interface



      start with the length of the length equal to one, ll=1, if the
      value of the length is zero, l=0, then the next  two chunks,
      ll_ll+1, are taken to be the length, if that length value is zero,
      l=0, then the next ll_ll+1 chunks are taken to be the length, and
      so on.

    The Fragmentation Information consists of three things: the message
    identifier which is a 16 bit field, the fragment sequence number
    which is a 16 bit field, and the last fragment flag which requires
    one bit.

    The Data Length is a 16 bit field whose value is the number of
    octets in the Data field.

    The Data field is as many octets of arbitrary data as specified in
    the data length field.

    The Checksum is a 16 bit field whose value is a hop by hop computed
    checksum that covers the entire message.

Internet Hop Protocol

  The internet hop by hop protocol has nearly been described, at least
  by implication, in the preceeding section.  In this section i will try
  to add a few details about the use of the fields in the hop by hop
  protocol.

  The Type of Service field specifies the handling type is desired. The
  intent here is for the hop module to tailor its treatment of this
  messages according to the value of this field.  As previously
  indicated one kind of tailoring is a trade off between delay and
  reliability.  I expect substantially more thought will be needed
  before a reasonable set of cases can be established for type of
  service.

  The Flags are bits which specify the presence or absence of values in
  certain fields:

    data flag - indicates the data identifier is meaningful

    acknowledgement flag - indicates the acknowledgement identifier is
    meaningful.

  The Data Identifier field distinguishes this message from other active
  messages on this host to hop, hop to hop, or hop to host, link.





Section 2.3.3.2                                                 [page 7]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
Discussion
Internet Hop Protocol



    The intention is that for each hop module to select its own data
    identifier to put on a messages for transmission to the next hop
    module.  That each hop modules should choose identifiers to avoid
    having two active messages on this link with the same identifier
    should be obvious.

  The Acknowledgement Identifier specifies which message among the
  active messages on this host to hop, hop to hop, or hop to host, link
  this acknowledgement pertains to.

    The hop module copies the data identifier of a message, lets call it
    A, it receives into the acknowledgement identifier field and sets
    the acknowledgement identifier flag in a message, lets call it B,
    traveling to the sender of message A to acknowledge correct receipt
    and take responsibility for message A.

  The Destination Address field is processed by the hop module and the
  portion of the address consumed by the hop module is (chunk by chunk)
  circular shifted to the end of the address, bring the part of the
  address to be processed by the next hop to the beginning of the
  address string.

  Fragmentation is performed if nesessary.  Reassembly is left for the
  destination host.

    Fragment Handling Procedures

      Necessary Fragment Information Fields

        Message Identifier
        Data Length
        Fragment Sequence Number
          (initially zero in each new message)
        Last Fragment Flag
          (initially set in each new message)

      Fragmentation Procedure

        Split the data.

        Copy the internet header from original message (or fragment) to
        each fragment.

        Replace the data length field of each fragment by the new data
        length.





Section 2.3.3.2                                                 [page 8]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
                                                              Discussion
Internet Hop Protocol



        Replace the fragment sequence number in each fragment by the
        correct value.

          The correct value of the fragment sequence number for fragment
          N+1 is the fragment sequence number of fragment N plus the
          data length of fragment N.

        Reset the last fragment flag in all but the last fragment.

      Reassembly Procedure

        If two fragments are of the same message and adjacent assemble
        them.

        If a fragment has fragment sequence number zero and the last
        fragment flag set then it is a whole message.

        Where assemble means form one fragment with

          fragment sequence number set to the fragment sequence number
          of the first fragment

          the data length set to the data length of the first fragment
          plus the data length of the second fragment

          last fragment flag set to the last fragment flag of the second
          fragment

        Where adjacent means the fragment sequence number plus the data
        length of the first fragment equals the fragment sequence number
        of the second fragment.

  The Data Length is only modified if fragmentation is done.

  The Data field is not examined at all.

  The Checksum must be checked as the first step in processing each
  message.  If the checksum is not correct the message is discarded.
  When a message is forwarded to the next hop the checksum is recomputed
  if any change has been made.  Since almost always the destination
  address is changed the checksum must be recomputed.  And, of course,
  if a message has been fragmented a new checksum is necessary for each
  fragment.







Section 2.3.3.2                                                 [page 9]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
Discussion
Internet Hop Protocol



  To review, the internet hop by hop protocol message format has the
  following fields:

    FIELD                                                           BITS
    Version                                                            4
    Flags
      Data Identifier                                                  1
      Acknowledgement Identifier                                       1
    Data Identifier                                                   16
    Acknowledgement Identifier                                        16
    Type of Service                                                    4
    Destination Address                                         variable
    Fragment Information
      Message Identifier                                              16
      Fragment Sequence Number                                        16
      Last Fragment Flag                                               1
    Data Length                                                       16
    Data                                                        variable
    Checksum                                                          16

Internet Host Protocol

  The internet host protocol is a slightly simplified TCP. The principal
  simplifications are that TCP no longer concerns itself with
  fragmentation, and that the addresses are of the same form as used in
  the internet hop protocol.

  The TCP should use the extensible addresses used in the hop by hop
  protocol.  This means that the TCP need not carry a distinct copy of
  the destination address since it can be reconstructed from the
  internet host - hop message format.  However since the TCP needs both
  the source and destination addresses in each message it may be useful
  to carry both in the host level header (which is treated as part of
  the data by the internet hop by hop protocol).

  Since TCP is no longer concerned about fragmentation the End of Letter
  flag is not necessary to any part of the TCPs internal workings.  It
  may be a desirable feature for purposes of the TCP - user interface
  though.

Model of Communication

  To pull all this together perhaps it would be helpful to have a
  scenario of a message transversing this system.






Section 2.3.3.2                                                [page 10]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
                                                              Discussion
Model of Communication



    First a source process turns some data over to a source host
    protocol module.  The host protocol module packages the data up in
    the host level protocol.  Then that package is wrapped up in the
    internet interface format and forwarded to an intenet hop module.
    The internet hop module then forwards the message according to the
    address processing rules.

    At any hop along the way the message may be fragmented, and the
    fragments separately forwarded toward the destination.

    When the message arrives at the destination it is first verified
    according to the internet hop by hop protocol (i.e. is the checksum
    correct?).  Next the address is checked to be sure this really is
    the destination.  Once this initial checking is done, the next step
    is to reassemble the fragments if that is necessary.  Once the whole
    message is assembled it can be turned over to the host protocol
    module for processing.  The host protocol module unpackages the data
    and passes it to the destination process.

Summary

A model of internetwork commuication has been presented that is based on
components that separate and modularize the distinct functions of the
host to host interaction controls and the hop by hop addressing and
routing functions.  An interface between these functional modules has
been specified.  It is argued that this approach is more appropriate
than the attempts to make a single protocol cover both functions.























Section 2.3.3.2                                                [page 11]


                                                               15 Aug 77
IEN # 2                            Comments on Internet Protocol and TCP
References



References

[1]     Cerf, V. "Specification of TCP version 2," March 1977.
















































Section 2.3.3.2                                                [page 12]