INTERNET-DRAFT                                                 S. Deering
February 21, 1993                                              Xerox PARC
Obsoletes: draft-deering-sip-00.txt




                   Simple Internet Protocol Plus (SIPP)
                               Specification

                          draft-ietf-sipp-spec-00.txt


Abstract

This document specifies a proposed new version of the Internet Protocol.
Changes from the previous specification (SIP) are listed in Appendix A.


Status of this Memo

Internet Drafts are working documents of the Internet Engineering Task
Force (IETF), its Areas, and its Working Groups.  Note that other groups
may also distribute working documents as Internet Drafts.

Internet Drafts are draft documents valid for a maximum of six months.
This Internet Draft expires on September 21, 1994.  Internet Drafts may be
updated, replaced, or obsoleted by other documents at any time. It is not
appropriate to use Internet Drafts as reference material or to cite them
other than as a "working draft" or "work in progress."

Please check the I-D abstract listing contained in each Internet Draft
directory to learn the current status of this or any other Internet Draft.

Distribution of this memo is unlimited.



















Expires: September 21, 1994                                        [Page 1]


INTERNET DRAFT              SIPP Specification            February 21, 1994


Contents

  Status of this Memo

  1. Introduction

  2. Terminology

  3. SIPP Header Format

  4. SIPP Options
       4.1 Fragment Header
       4.2 Routing Header
       4.3 Authentication Header
       4.4 Hop-by-Hop Options Header
       4.5 Option Header Order

  5. Packet Size Issues

  6. Flow Labels

  7. Transport-Layer Protocol Issues
       7.1 Transport-Layer Checksums
       7.2 Maximum Packet Lifetime

  Appendix A. Changes from the SIP Draft of November 10, 1992

  Security Considerations

  Acknowledgments

  Author's Address

  References




















Expires: September 21, 1994                                        [Page 2]


INTERNET DRAFT              SIPP Specification            February 21, 1994


1. Introduction

The Simple Internet Protocol Plus (SIPP) is a new version of the Internet
Protocol, designed as a successor to IP version 4 (IPv4) [RFC-791].  The
changes from IPv4 to SIPP fall primarily into the following categories:

  o  Expanded Addressing Capabilities

     SIPP increases the IP address size from 32 bits to 64 bits, to support
     more levels of addressing hierarchy and a much greater number of
     addressable nodes.  SIPP addressing can be further extended, in units
     of 64 bits, by a facility equivalent to IPv4's Loose Source and Record
     Route option, in combination with a new address type called "cluster
     addresses" which identify topological regions rather than individual
     nodes.  The scalability of multicast routing is improved by adding a
     "scope" field to multicast addresses.

  o  Header Format Simplification

     Some IPv4 header fields have been dropped or made optional, to reduce
     the common-case processing cost of packet handling and to keep the
     bandwidth cost of the SIPP header almost as low as that of IPv4,
     despite the increased size of the addresses.

  o  Improved Support for Options

     Changes in the way IP header options are encoded allows for more
     efficient forwarding, less stringent limits on the length of options,
     and greater flexibility for introducing new options in the future.

  o  Flow Labeling Capability

     A new capability is added to enable the labeling of packets belonging
     to particular traffic "flows" for which the sender requests special
     handling, such as non-default quality of service or "real-time"
     service.

This document specifies the basic SIPP header and the initially-defined
SIPP options.  It also discusses packet size issues, the semantics of Flow
Labels, and the effects of SIPP on transport-layer protocols.  Other
aspects of SIPP are specified in separate documents, including the
following:

  o  Simple Internet Protocol Plus (SIPP): Routing and Addressing [SIPP-
     ROAD]

  o  ICMP and IGMP for SIPP Specification [SIPP-ICMP]

  o  IPAE: The SIPP Interoperability and Transition Mechanism [IPAE]





Expires: September 21, 1994                                        [Page 3]


INTERNET DRAFT              SIPP Specification            February 21, 1994


2. Terminology

   node                - a protocol module that implements SIPP.

   router              - a node that forwards SIPP packets not explicitly
                         addressed to itself.

   host                - any node that is not a router.

   address             - a SIPP-layer identifier for a node or set of
                         nodes.

   subnet              - in the SIPP unicast addressing hierarchy, a
                         lowest-level (finest-grain) aggregation of
                         addresses sharing a common prefix, i.e., high-
                         order address bits.

   link                - a communication facility or medium over which
                         nodes can communicate at the link layer, i.e., the
                         layer immediately below SIPP.

   interface           - a node's attachment to a link.

   neighbors           - nodes attached to the same link.

   link MTU            - the maximum transmission unit, i.e., maximum
                         packet size in octets, that can be conveyed in one
                         piece over a link (where a packet is a SIPP header
                         plus payload).

   path MTU            - the minimum link MTU of all the links in a path
                         between a source node and a destination node.

   packetization layer - any protocol layer above SIPP that is responsible
                         for packetizing data to fit within outgoing SIPP
                         packets.  Typically, transport-layer protocols,
                         such as TCP, are packetization protocols, but
                         there may also be higher- layer packetization
                         protocols, such as protocols implemented on top of
                         UDP.














Expires: September 21, 1994                                        [Page 4]


INTERNET DRAFT              SIPP Specification            February 21, 1994


3. SIPP Header Format

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|                       Flow Label                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Payload Type |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Version              4-bit Internet Protocol version number = 6.

   Flow Label           28-bit field.  See "Flow Labels" section, below.

   Payload Length       16-bit unsigned integer.  Length of payload,
                        i.e., the rest of the packet following the
                        SIPP header, in octets.

   Payload Type         8-bit selector.  Identifies the type of header
                        immediately following the SIPP header.  Uses
                        the same values as the IPv4 Protocol field
                        [RFC-1340].

   Hop Limit            8-bit unsigned integer.  Decremented by 1
                        by each node that forwards the packet.
                        The packet is discarded if Hop Limit is
                        decremented to zero.

   Source Address       64 bits.  An address of the initial sender of
                        the packet.  See [SIPP-ROAD] for details.

   Destination Address  64 bits.  An address of the intended recipient
                        of the packet (possibly not the ultimate
                        recipient, if an optional Routing Header is
                        present).  See section 4.2 and [SIPP-ROAD]
                        for details.


4. SIPP Options

In SIPP, optional internet-layer information is encoded in separate headers
that may be placed between the SIPP header and the transport- layer header
in a packet.  There are a small number of such optional headers, each
identified by a distinct Payload Type.  As illustrated in these examples, a



Expires: September 21, 1994                                        [Page 5]


INTERNET DRAFT              SIPP Specification            February 21, 1994


SIPP packet may carry zero, one, or more optional headers, each identified
by the Payload Type field of the preceding header:

   +-------------+------------------------
   | SIPP header | TCP header + data
   |             |
   | Pyld Type = |
   |         TCP |
   +-------------+------------------------


   +-------------+----------------+------------------------
   | SIPP header | Routing header | TCP header + data
   |             |                |
   | Pyld Type = | Payload Type = |
   |     Routing |            TCP |
   +-------------+----------------+------------------------


   +-------------+----------------+-----------------+-----------------
   | SIPP header | Routing header | Fragment header | fragment of TCP
   |             |                |                 |  header + data
   | Pyld Type = | Payload Type = | Payload Type =  |
   |     Routing |       Fragment |            TCP  |
   +-------------+----------------+-----------------+-----------------

With one exception, optional headers are not examined or processed by any
node along a packet's delivery path, until the packet reaches the node (or
set of nodes, in the case of multicast) identified in the Destination
Address field of the SIPP header.  There, normal demultiplexing on the
Payload Type field of the SIPP header invokes the module to process the
first optional header, or the transport header if no optional header is
present.  The contents and semantics of each header determine whether or
not to proceed to the next header.

The one exception is the Hop-by-Hop Options header, which carries options
that must be examined by every node along a packet's delivery path.  The
Hop-by-Hop options header, when present, must immediately follow the SIPP
header.  Its presence is indicated by the special value zero in the Payload
Type field of the SIPP header.

Each optional header is an integer multiple of 8 octets long, in order to
retain 8-octet alignment for subsequent headers.  Multi-octet fields within
each optional header are aligned on their natural boundaries, i.e., fields
of width n octets are placed at an integer multiple of n octets from the
start of the header.


4.1 Routing Header

The Routing header is used by a SIPP source to list one or more



Expires: September 21, 1994                                        [Page 6]


INTERNET DRAFT              SIPP Specification            February 21, 1994


intermediate nodes (or topological clusters) to be "visited" on the way to
a packet's destination.  This function is very similar to IPv4's Loose
Source and Record Route option.  The Routing header is identified by a
Payload Type of 43 in the immediately preceding header, and has the
following format:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Payload Type |   Num Addrs   |   Next Addr   |               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +
   |                            Reserved                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                           Address[0]                          +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                           Address[1]                          +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                               .                               .
   .                               .                               .
   .                               .                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                     Address[Num Addrs - 1]                    +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Payload Type         8-bit selector.  Identifies the type of header
                        immediately following the Routing header.
                        Uses the same values as the IPv4 Protocol field
                        [RFC-1340].

   Num Addrs            8-bit unsigned integer.  Number of addresses in
                        the Routing header.

   Next Addr            8-bit unsigned integer.  Index of next address to
                        be processed; initialized to 0 by the originating
                        node.

   Reserved             40-bit field.  Initialized to zero for
                        transmission; ignored on reception.

A Routing header is not examined or processed until it reaches the node
identified in the Destination Address field of the SIPP header.  In that
node, dispatching on the Payload Type of the immediately preceding header
causes the Routing module to be invoked, which performs the following
algorithm:

  o  If Next Addr < Num Addrs, swap the SIPP Destination Address and
     Address[Next Addr], increment Next Addr by one, and re-submit the



Expires: September 21, 1994                                        [Page 7]


INTERNET DRAFT              SIPP Specification            February 21, 1994


     packet to the SIPP module for forwarding to the next destination.

  o  If Next Addr = Num Addrs, dispatch to the local protocol module
     identified by the Payload Type field in the Routing header.

  o  If Next Addr > Num Addrs, send an ICMP Parameter Problem message to
     the Source Address, pointing to the Num Addrs field.

Multicast addresses may not appear in a Routing header.


4.2 Fragment Header

The Fragment header is used by a SIPP source to send payloads larger than
would fit in the path MTU to their destinations.  (Note: unlike IPv4,
fragmentation in SIPP is performed only by source nodes, not by routers
along a packet's delivery path -- see section 5.)  The Fragment header is
identified by a Payload Type of 44 in the immediately preceding header, and
has the following format:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Payload Type |       Reserved    |M|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Identification                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Payload Type         8-bit selector.  Identifies the type of header
                        immediately following the Fragment header.
                        Uses the same values as the IPv4 Protocol field
                        [RFC-1340].

   Reserved             10-bit field.  Initialized to zero for
                        transmission; ignored on reception.

   M flag               1 = more fragments; 0 = last fragment.

   Fragment Offset      13-bit unsigned integer.  The offset, in 8-octet
                        units, of the following payload, relative to the
                        start of the original, unfragmented payload.

   Identification       32 bits.  See description below.

The fragmentation algorithm is as follows:  The payload (including any
optional headers that need be processed only by the destination node(s)) is
divided into fragments, each, except possibly the last, being an integer
multiple of 8 octets long.  Each fragment is prepended with a Fragment
header and sent in a separate SIPP packet.  The M ("more") flag is set to 1
on all fragments of the same payload except the last.  The original payload
is assigned an Identification value that is different than that of any
other fragmented payload sent recently* with the same SIPP Source Address,
SIPP Destination Address, and Fragment Payload Type.  (If an optional



Expires: September 21, 1994                                        [Page 8]


INTERNET DRAFT              SIPP Specification            February 21, 1994


Routing header is present, the SIPP Destination Address is that of the
final destination.)  The Identification value is carried in the Fragment
header of all of the original payload's fragments, and is used by the
destination to identify all fragments belonging to the same original
payload.

   * "recently" means within the maximum likely lifetime of a packet,
     including transit time from source to destination and time spent
     awaiting reassembly with other fragments of the same payload.
     However, it is not required that a source node know the maximum packet
     lifetime.  Rather, it is assumed that the requirement can be met by
     maintaining the Identification value as a simple, 32-bit, "wrap-
     around" counter, incremented each time a payload must be fragmented.
     It is an implementation choice whether to maintain a single counter
     for the node or multiple counters, e.g., one for each of the node's
     possible source addresses, or one for each active (source address,
     destination address, payload type) combination.

In a packet with a Fragment header, the Payload Length field of the SIPP
header contains the length of that packet only (excluding the SIPP header
itself), not the length of the original, unfragmented payload.


4.3 Authentication Header

The Authentication header is used to provide authentication and integrity
assurance for SIPP packets.  Non-repudiation may be provided by an
authentication algorithm used with the Authentication header, but it is not
provided with all authentication algorithms that might be used with this
header.  Privacy of the payload following the Authentication header may
optionally be provided by encryption, using an algorithm and keying
information that has been pre-established as part of a security
association.  The Authentication header is identified by a Payload Type of
TBD in the immediately preceding header, and has the following format:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Payload Type | Auth Data Len |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Security Association ID                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                      Authentication Data                      .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Payload Type         8-bit selector.  Identifies the type of header
                        immediately following the Authentication header.
                        Uses the same values as the IPv4 Protocol field
                        [RFC-1340].



Expires: September 21, 1994                                        [Page 9]


INTERNET DRAFT              SIPP Specification            February 21, 1994


   Auth Data Len        8-bit unsigned integer.  Length of the
                        Authentication Data field in 8-octet units.

   Sequence Number      16-bit wrap-around counter.  The sequence number
                        of this packet, relative to other packets sent
                        in the same security association.

   Security Assoc. ID   32 bits.  When combined with the SIPP Source
                        Address, identifies to the receiver(s) the
                        pre-established security association to which
                        this packet belongs.

   Authentication Data  Variable-length field, an integer multiple of
                        8 octets long.  Algorithm-specific information
                        required authenticate the source of the packet
                        and assure its integrity, as specified for the
                        pre-established security association.

The usage of the Authentication header is specified in [SIPP_AUTH].  All
SIPP nodes are required to support the keyed MD5 algorithm used used with
the Authentication header as described in that document.


4.4 Hop-by-Hop Options Header

The Hop-by-Hop (HBH) Options header is used to carry optional information
that must be examined by every node along a packet's delivery path.  The
HBH Options header is identified by a Payload Type of 0 in the SIPP header,
and has the following format:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Payload Type |  Hdr Ext Len  |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                                                               |
   .                            Options                            .
   .                                                               .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Payload Type         8-bit selector.  Identifies the type of header
                        immediately following the HBH Options header.
                        Uses the same values as the IPv4 Protocol field
                        [RFC-1340].

   Hdr Ext Len          8-bit unsigned integer.  Length of the HBH
                        Options header in 8-octet units, not including
                        the first 8 octets.

   Options              Variable-length field, an integer multiple of
                        8 octets long.  One or more individual TLV-



Expires: September 21, 1994                                       [Page 10]


INTERNET DRAFT              SIPP Specification            February 21, 1994


                        encoded options, as described below.

The individual options within the Options area are each encoded in a Type-
Length-Value (TLV) format, as follows:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
   |  Option Type  |  Opt Data Len |  Option Data
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

   Option Type          8-bit identifier of the type of option.

   Opt Data Len         8-bit unsigned integer.  Length of the Option
                        Data field of this option, in octets.

   Option Data          Variable-length field.  Option-Type-specific
                        data.

The Option Type identifiers are internally encoded such that their
highest-order two bits specify the action that must be taken if the
processing SIPP node does not recognize the Option Type:

   00 - skip over this option and continue processing the HBH Options
        header.

   01 - discard the packet.

   10 - discard the packet and send an ICMP Parameter Problem message to
        the packet's Source Address, pointing to the unrecognized Option
        Type.

   11 - discard the packet and, only if the packet's Destination Address is
        not a multicast address, send an ICMP Parameter Problem message to
        the packet's Source Address, pointing to the unrecognized Option
        Type.

The third-highest-order bit of the Option Type specifies whether or not the
Option Data of this option shall be included in the integrity assurance
computation performed when an Authentication header is present.  Option
data that changes en route must be excluded from that computation.

   0 - include in integrity computation

   1 - exclude from integrity computation

Individual options may have alignment requirements, to ensure that multi-
octet values within Option Data fields fall on natural boundaries.  The
alignment requirement of an option is specified using the notation xn+y,
meaning the Option Type must appear at an integer multiple of x octets from
the start of the HBH Options header, plus y octets.  For example:

  2n    means any 2-octet offset from the start of the header.



Expires: September 21, 1994                                       [Page 11]


INTERNET DRAFT              SIPP Specification            February 21, 1994


  8n+2  means any 8-octet offset from the start of the header, plus 2
        octets.

The only hop-by-hop options initially defined are padding options, which
are used when necessary to align subsequent options and to pad out the
Options area of the header to a multiple of 8 octets in length.  These
padding options must be recognized by all SIPP implementations:


    Pad1 option  (alignment requirement: none)

        +-+-+-+-+-+-+-+-+
        |       0       |
        +-+-+-+-+-+-+-+-+

        NOTE! the format of the Pad1 option is a special case -- it does
              not have length and value fields.

        The Pad1 option is used to insert one octet of padding into the
        Options area of an HBH Options header.  If more than one octet
        of padding is required, the PadN option, described next, should
        be used, rather than multiple Pad1 options.


    PadN option  (alignment requirement: none)

        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
        |       1       |  Opt Data Len |  Option Data
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

        The PadN option is used to insert two or more octets of padding
        into the Options area of an HBH Options header.  For N octets of
        padding, the Opt Data Len field contains the value N-2, and the
        Option Data consists of N-2 zero-valued octets.


4.5 Option Header Order

When more than one optional header is used in the same packet, they should
appear in the following order:

     SIPP header
     Hop-by-Hop Options header
     Routing header
     Fragment header
     Authentication header

If and when other optional headers are defined, their ordering constraints
relative to the above listed headers must be specified.

SIPP nodes are not required to verify that the order of headers in received



Expires: September 21, 1994                                       [Page 12]


INTERNET DRAFT              SIPP Specification            February 21, 1994


packets satifies the above order; sending packets with optional headers in
some other order may or may not achieve useful effects.


5. Packet Size Issues

SIPP requires that every link in the internet have an MTU of 576 octets or
greater.  On any link that cannot convey a 576-octet packet in one piece,
link-specific fragmentation and reassembly must be provided at a layer
below SIPP.

     (Note: this minimum link MTU is NOT the same as the one in IPv4.  In
     IPv4, the minimum link MTU is 68 octets [RFC-791, page 25]; 576 octets
     is the minimum reassembly buffer size required in an IPv4 node, which
     has nothing to do with link MTUs.)

From each link to which a node is directly attached, the node must be able
to accept packets as large as that link's MTU.  Links that have a
configurable MTU, such as PPP links [RFC-1548], should be configured with
an MTU of 600 octets or greater.

SIPP nodes are expected to implement Path MTU Discovery [RFC-1191], in
order to discover and take advantage of paths with MTU greater than 576
octets.  However, a minimal SIPP implementation (e.g., in a boot ROM) may
simply restrict itself to sending packets no larger than 576 octets, and
omit implementation of Path MTU Discovery.

In order to send a packet larger than a path's MTU, a node may use the
optional SIPP Fragment Header to fragment the packet at the source and have
it reassembled at the destination(s).  However, the use of such
fragmentation is discouraged in any application that is able to adapt its
packets to fit the measured path MTU (i.e., down to 576 octets).  A node
must not send a packet larger than the path MTU (i.e., fragments that
reassemble to a size larger than the path MTU) unless it has explicit
knowledge that the destination(s) can reassemble a packet of that size.

In response to a SIPP packet that is sent to an IPv4 destination (i.e., a
packet that undergoes translation from SIPP to IPv4), the originating SIPP
node may receive an ICMP Packet Too Big message reporting a Next-Hop MTU
less than 576.  In that case, the SIPP node is not required to reduce the
size of subsequent packets to less than 576, but must include a Fragment
Header in those packets so that the SIPP-to-IPv4 translating router can
obtain a suitable Identification value to use in resulting IPv4 fragments.
Note that this means the payload may have to be reduced to 544 octets (576
minus 24 for the SIPP Header and 8 for the Fragment Header), and smaller
still if additional optional SIPP headers are used.

     Note: Since SIPP allows a subnet to span more than one link, Path MTU
     Discovery must be performed even between nodes on the same subnet.

     Note: Unlike IPv4, it is unnecessary in SIPP to set a "Don't Fragment"



Expires: September 21, 1994                                       [Page 13]


INTERNET DRAFT              SIPP Specification            February 21, 1994


     flag in the packet header in order to perform Path MTU Discovery; that
     is an implicit attribute of every SIPP packet.  Also, those parts of
     the RFC-1191 procedures that involve use of a table of MTU "plateaus"
     do not apply to SIPP, because the SIPP version of the "Datagram Too
     Big" message always identifies the exact MTU to be used.


6. Flow Label

The Flow Label field in the SIPP header may be used by a source to label
those packets for which it requests special handling by the SIPP routers,
such as non-default quality of service or "real-time" service.  This aspect
of SIPP is, at the time of writing, still experimental and subject to
change as the requirements for flow support in the Internet become clearer.
Hosts or routers that do not support the functions of the Flow Label field
are required to set the field to zero when originating a packet, and to
ignore the field when receiving a packet.

The Flow Label is a 28-bit field, internally structured into two subfields
as follows:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |TClass |                    Flow ID                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   TClass               4-bit traffic class, described below.

   Flow ID              24-bit flow identifier, described below.

A flow is a sequence of packets sent from a particular source to a
particular (unicast or multicast) destination for which the source desires
special handling by the intervening routers.  The nature of that special
handling might be conveyed to the routers by a control protocol, such as a
resource reservation protocol, or by information within the flow's packets
themselves, e.g., in a hop-by-hop option.  The details of such control
protocols or options are beyond the scope of this document.

There may be multiple active flows from a source to a destination, as well
as traffic that is not associated with any flow.  A flow is identified by
the combination of a Source Address and a non-zero Flow ID.  Packets that
do not belong to a flow carry a Flow ID of zero.

A Flow ID is assigned to a flow by the flow's source node.  New Flow IDs
must be chosen (pseudo-)randomly and uniformly from the range 1 to FFFFFF
hex.  The purpose of the random allocation is to make any set of bits
within the Flow ID suitable for use as a hash key by the routers, for
looking up the special-handling state associated with the flow.  A Flow ID
must not be re-used by a source for a new flow while any state associated
with the previous usage still exists in any router.  The lifetime of flow
state in routers depends on the method by which that state is created, and
is beyond the scope of this document.



Expires: September 21, 1994                                       [Page 14]


INTERNET DRAFT              SIPP Specification            February 21, 1994


All packets sent with the same Source Address and same non-zero Flow ID
must also carry the same Destination Address, same Hop-by-Hop Options
header contents (if present), and same Routing header contents (if
present).  The routers or destinations are permitted, but not required, to
verify that this condition is satisfied.  If a violation is detected, it
should be reported to the source by an ICMP Parameter Problem message,
pointing to any one of the invalid fields.

The TClass subfield provides a means separate from the Flow ID for a source
to identify the desired delivery priority of its packets, relative to other
packets from the same source.  The TClass values are divided into two
ranges: values 0 through 7 are used to label flow-controlled packets, e.g.,
packets that belong to a TCP connection, and values 8 through 15 are used
to label non-flow-controlled packets, e.g., "real-time" packets being sent
without any flow-control feedback from the receivers.

For flow-controlled traffic, the following TClass values are recommended
for particular application categories:

   0 - uncharacterized traffic
   1 - "filler" traffic (e.g., netnews)
   2 - unattended data transfer (e.g., email)
   3 -
   4 - attended bulk transfer (e.g., FTP, NFS)
   5 -
   6 - interactive traffic (e.g., telnet, X)
   7 - internet control traffic (e.g., routing protocols, SNMP)

For non-flow-controlled traffic, the lowest TClass value (8) should be used
for those packets that the sender is most willing to have discarded under
conditions of congestion (e.g., high-fidelity video traffic), and the
highest value (15) should be used for those packets that the sender is
least willing to have discarded (e.g., low-fidelity audio traffic).  There
is no relative ordering implied between the flow-controlled classes and the
non-flow-controlled classes.

For packets bearing non-zero Flow IDs, the method by which the flow
requirements are conveyed (e.g., a control protocol or a hop-by-hop option)
may include the ability to redefine the semantics of the TClass subfield,
for example, to define it as a priority relative to packets belonging to
the same flow or set of related flows.


7. Transport-Layer Protocol Issues

7.1 Transport-Layer Checksums

When TCP, UDP, ICMP, or IGMP (subsequently referred to as "transport"
protocols) is used between two or more SIPP systems, the transport checksum
computation includes a "pseudo-header" of the following form:




Expires: September 21, 1994                                       [Page 15]


INTERNET DRAFT              SIPP Specification            February 21, 1994


   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      zero     |  Payload Type |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     o  If the packet contains a Routing header, the Destination
        Address used in the pseudo-header is that of the final destination.
        At the originating system, that address will be in the last element
        of the Routing header; at the recipient(s), that address
        will be in the Destination Address field of the SIP header.

     o  The Payload Type used in the pseudo-header is that of the transport
        protocol (6 for TCP, 17 for UDP, 1 for ICMP, or 2 for IGMP).
        It will differ from the Payload Type in the SIPP header if there
        are additional headers between the SIPP header and the transport
        header.

     o  The Payload Length used in the pseudo-header is the length of the
        transport packet, incluing the transport header.  It will be less
        than the Payload Length in the SIPP header if there are additional
        headers between the SIP header and the transport header.

     o  The UDP checksum is not optional when UDP is used between SIPP
        systems.  At a recipient, a UDP checksum value of zero is
        considered valid only if the checksum computation across the
        the pseudo-header, UDP header, and UDP data yields a result of
        either zero or hex FFFF (which are equal values in ones-complement
        arithmetic).

For TCP or UDP, if the remote address (i.e., the Source Address in an
incoming packet, or the Destination Address in an outgoing packet) is that
of an IPv4 system, i.e., has a C-bit value of 1, then the following
pseudo-header is used, instead of the one shown above:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              low-order 32 bits of Source Address              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            low-order 32 bits of Destination Address           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      zero     |  Payload Type |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

When the remote address is that of an IPv4 system, a UDP Checksum field of
zero in an incoming packet indicates the absence of a UDP checksum.  Such



Expires: September 21, 1994                                       [Page 16]


INTERNET DRAFT              SIPP Specification            February 21, 1994


packets shall be accepted as is.  However, a SIPP system must always
compute a checksum for outgoing UDP outgoing packets, and it must be non-
zero if the remote address is that of an IPv4 system (i.e., if the result
of the checksum computation is zero, the value hex FFFF must be sent in the
UDP Checksum field).

For ICMP or IGMP, if the remote address is that of an IPv4 system, then the
following pseudo-header is used, instead of the one shown above:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      zero     |  Payload Type |              zero             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

It is different from the TCP and UDP case because IPv4 systems do not
include a pseudo-header in the ICMP or IGMP checksums, and therefore those
checksums have to be adjusted when translating between SIPP and IPv4.  The
Payload Length is omitted because, otherwise, translating gateways would
not be able to adjust the checksum properly when translating between a SIPP
fragment and an IPv4 fragment, since the Payload Length would not be known
to the translating gateway.  Note that this makes ICMP and IGMP packets
between SIPP and IPv4 systems vulnerable to undetected padding or
truncation, if the SIPP Payload Length field is corrupted en route.
Truncation would be undetected only if the missing original octets were all
zero; padding would be undetected only if the added octets were all zero.


7.2 Maximum Packet Lifetime

SIPP does not enforce maximum packet lifetime.  Any transport protocol that
relies on IPv4 to limit packet lifetime must take this change into account,
for example, by providing its own mechanisms for detecting and discarding
obsolete packets.














Expires: September 21, 1994                                       [Page 17]


INTERNET DRAFT              SIPP Specification            February 21, 1994


Appendix A.  Changes from the SIP Draft of November 10, 1992

  o  Changed name from "SIP" to "SIPP" as part of merger with Pip.

  o  Revised Introduction section.

  o  Changed the term "system" to "node", in the terminology section.

  o  Changed Reserved field in SIP header to Flow Label.

  o  In the section on packet size issues, added reference to possible use
     of the Fragment Header, described handling of path MTUs less than 576
     (due to SIPP-to-IPv4 translation), and specified that PMTU Discovery
     must be performed even between nodes on the same subnet.

  o  Added discussion of general structure of option headers and the
     ordering constraints on option headers.

  o  Changed "Source Routing Header" to "Routing Header", and changed the
     field layout.

  o  Changed "Fragmentation Header" to "Fragment Header", changed the field
     layout, and changed the text describing the option, including dropping
     the requirement that all nodes be able to reassemble packets up to
     1024 octets in length.

  o  Added the Authentication header.

  o  Added the Hop-by-Hop Options header.

  o  Added section on Flow Labels.

  o  Addresses section moved to a separate SIPP Routing and Addressing
     Specification, in which the following changes were made:

       -  Addresses now identify nodes, not interfaces.

       -  Added some introductory text to the Addressing section,
          discussing the binding of addresses to interfaces, and the
          independence of subnets from physical links.

       -  Changed text representation of SIPP addresses.

       -  Eliminated discussion of address masks; changed to refer to
          prefix lengths instead.

       -  Added definition of local-use addresses.

       -  Changed the term "anyone address" to "cluster address", and
          changed definition to include only boundary routers of a cluster,
          not internal nodes.



Expires: September 21, 1994                                       [Page 18]


INTERNET DRAFT              SIPP Specification            February 21, 1994


       -  Added specification of "C-bit = 1" unicast addresses.

       -  Changed the names of some of the multicast scope levels from
          geographic terms (metro, country) to administrative terms
          (organization, community).

  o  Subsections on ICMP and IGMP changes moved to a separate document.

  o  Deleted subsection on Changes to Link-Layer Protocols, and revised
     subsection on Changes to Transport-Layer Protocols (renamed
     Transport-Layer Protocol Issues).

  o  Deleted appendix on SIP Design Rationale.

  o  Deleted appendix on Future Directions.

Important differences from the SIP paper that appeared in the May 1993
issue of IEEE Network Magazine:

  o  First 32 values of Flow Label field no longer correspond to IPv4 TOS
     values.

  o  Change in the way Hop-by-Hop Options are encoded.































Expires: September 21, 1994                                       [Page 19]


INTERNET DRAFT              SIPP Specification            February 21, 1994


Security Considerations

<to be done>


Acknowledgments

The author gratefully acknowledges the many helpful suggestions of the
members of the SIPP working group (formerly the SIP, IPAE, and Pip working
groups), the End-to-End Protocols research group, and the Internet
Community At Large.


Author's Address

Steve Deering
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, CA  94304
phone: (415) 812-4839
email: deering@parc.xerox.com

































Expires: September 21, 1994                                       [Page 20]


INTERNET DRAFT              SIPP Specification            February 21, 1994


References

[RFC-791]   J. Postel.  Internet Protocol.  RFC-791, September, 1981.

[RFC-1191]  J. Mogul and S. Deering.  Path MTU Discovery.  RFC-1191,
            November 1990.

[RFC-1340]  J. Reynolds and J. Postel.  Assigned Numbers. RFC-1340, July
            1992.

[RFC-1548]  W. Simpson.  The Point-to-Point Protocol (PPP).  RFC-1548,
            December, 1993.

[SIPP-AUTH] R. Atkinson.  SIPP Authentication Header.  Internet Draft,
            December 1993.

[SIPP-ICMP] R. Govindan and S. Deering.  ICMP and IGMP for SIPP
            Specification.  Internet Draft, February 1994.

[SIPP-ROAD] S. Deering, P. Francis, and R. Govindan.  Simple Internet
            Protocol Plus (SIPP): Routing and Addressing.  Internet Draft,
            January 1994.

[IPAE]      R. Gilligan, E. Nordmark, and B. Hinden.  IPAE: The SIPP
            Interoperability and Transition Mechanism.  Internet Draft,
            October 1993.




























Expires: September 21, 1994                                       [Page 21]