S. Deering (Xerox PARC)
                                                   P. Francis (Bellcore)
                                                  R. Govindan (Bellcore)
                                                            October 1993


                 Simple Internet Protocol Plus (SIPP):
          Overview of Routing and Addressing Extensions to SIP


Status of the Memo:

This document is an Internet Draft.  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. 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.


1.  INTRODUCTION

   The Simple Internet Protocol Plus (SIPP) retains most of the simpli-
   city of SIP [1], while adding some of the features provided by Pip
   [2].  Specifically, SIPP uses the same syntax as SIP, but the use of
   the SIP Routing Header (an option similar to the loose source route
   option of IP) has been enhanced to enable the features provided by
   the Pip FTIF Chain style of routing.

   This document primarily describes the additions to SIP that enable
   provider selection, mobility, auto-configuration, and variable-length
   addressing.  Thus, this document targets those people who already
   understand SIP, and wish to understand what additional features come
   with SIPP.  A future document will provide a complete description of
   SIPP routing and addressing.

   The authors would like to acknowledge the contributions of Bob Gilli-
   gan (Sun), Bob Hinden (Sun), Christian Huitema (INRIA), and Erik
   Nordmark (Sun).


1.1.  Terminology

   The terminology defined in the SIPP Specification [8] applies to this
   document.  The first three terms below are copied from [8] for clar-
   ity.  The following additional terminology is defined below that:

   address: A 64-bit SIPP layer identifier for a node or set of nodes.
            An address can be used for both routing and identification
            purposes.

   uniqueness scope: The topologically defined region over which an
            address may be assigned to no more than one node or set
            of nodes.

   routing scope: The topologically defined region over which hosts
            and routers have sufficient routing information to forward



SIP WG, Expires April 1, 1994                                  [Page 1]


                    draft-ietf-sip-overview-00.txt         October 1993


            a packet toward the node(s) identified by that address.

   route sequence: The sequence of addresses consisting of the source
            address, the destination address, and the addresses encoded
            in the optional Routing Header of the SIPP packet.

   address sequence: A sequence of addresses that forms part of the
            route sequence.  The address sequence is used for the
            purpose of routing to a node in the case where a single
            (64-bit) address has insufficient routing scope.

   identifying address: The low-order address in an address sequence.
            Of the addresses in an address sequence, only the
            identifying address is used to identify the source and
            destination of a packet (for instance, by the transport
            protocol).


2.  SIPP ADDRESSING

   A SIPP address serves two purposes.  One is to uniquely identify the
   node (or set of nodes) to which the address belongs.  The other is to
   specify the location of the addressed node(s) in the internet topol-
   ogy, to facilitate routing.

   SIPP addresses are unlike IP addresses (and similar to OSI NSAP [9]
   addresses) in that they identify nodes (i.e., hosts or routers)
   rather than interfaces.  This having been said, it is possible to
   assign SIPP address prefixes on a per-interface basis, with the
   result that packets to a node will tend to arrive over the interface
   from which the node's address was derived.

   A SIPP address is said to have a certain "routing scope", which is
   the topological region over which nodes have sufficient routing
   information to deliver a packet to the node(s) identified by that
   address.  Most SIPP addresses have global routing scope, meaning they
   are routable from anywhere in the internet.  However, some addresses
   have less than global routing scope.  For example, during bootstrap-
   ping a SIPP node may use an address derived from its link-level
   address (e.g., an Ethernet address) that is only locally routable.

   Every SIPP packet contains two Identifying Addresses (IADs), identi-
   fying the source and destination nodes of the packet.  The
   transport-layer pseudo-header checksum for the packet is calculated
   using the two IADs.

   The two IADs may or may not contain sufficient location information
   to route the packet to its destination(s) (or to route an error



SIP WG, Expires April 1, 1994                                  [Page 2]


                    draft-ietf-sip-overview-00.txt         October 1993


   message back to its source).  When they are insufficient, an optional
   SIPP Routing Header is included in the packet to carry the additional
   addressing information required for routing.  These additional
   addresses may be viewed as high-order extensions of the IADs.  The
   additional addresses and the IAD, taken together, are called an
   address sequence.

   For instance, an address sequence can be used for a mobile node that
   is attached to a place in the internet other than the location speci-
   fied by its IAD.  Or, an address sequence can be used if the routing
   scope of the IAD is not sufficient (as may happen if the internet
   grows too large to assign globally-routable addresses to all nodes).
   This way, the address sequence can be used to achieve the effect of a
   variable length address.  Even when the address sequence is used to
   extend the address length beyond 64 bits, however, the identification
   function uses only the "low order" 64 bits (the IAD).


2.1.  Unicast Addresses

   The SIPP unicast address or address sequence is contiguous bit-wise
   maskable, similar to IP addresses under CIDR [3].

   The use of the optional Routing Header mechanism as the means of
   hierarchically extending SIPP addresses puts some constraints on the
   assignment and use of SIPP unicast addresses.

   First, since the Routing Header mechanism only allows a route to
   examine 64 bits at a time, a single "hierarchy element" from a SIPP
   hierarchical unicast address sequence cannot straddle a 64-bit boun-
   dary.

   Second, when using a 128-bit address sequence, both the low and high
   order 64 bits must individually be globally unique.  (If the address
   sequence is greater than 128 bits, the middle 64-bit addresses may
   not have to be globally unique.  In the event that SIPP address
   sequences grow beyond 128 bits, this possibility can be considered.)

   Third, routing must be configured such that, once a given 64-bit seg-
   ment of an address sequence is examined by a router for the purpose
   of forwarding a packet, previous (higher order) 64-bit addresses can-
   not subsequently be used as part of the forwarding decision.  In
   other words, once the Routing Header is advanced to a certain 64-bit
   address, previous addresses cannot be examined.  This places a minor
   constraint on routing's ability to selectively "look into" other
   parts of the hierarchy.





SIP WG, Expires April 1, 1994                                  [Page 3]


                    draft-ietf-sip-overview-00.txt         October 1993


2.1.1.  Unicast Address Assignment

   There are several forms of unicast address assignment in SIPP,
   including the global hierarchical unicast address, the cluster
   address, and the local-use address.  The global unicast address is
   initially assigned as follows:

     |1|      n bits       |        m bits       |   p bits  | 63-n-m-p|
     +-+-------------------+---------------------+-----------+---------+
     |C|    provider ID    |    subscriber ID    | subnet ID | node ID |
     +-+-------------------+---------------------+-----------+---------+

   The first bit is the IP compatibility bit, or C-bit [6].  It indi-
   cates if the node represented by the address is IP-only or SIPP [8].

   SIPP addresses are provider-oriented.  That is, the high-order part
   of the address is assigned to providers, which then assign portions
   of the address space to subscribers, etc.  This is similar to assign-
   ment of IP addresses under the CIDR scheme [3].  The provider ID
   numbers are assigned in such a way that an additional layer of
   hierarchy can be added above or below the provider ID layer.  The
   node ID corresponds to IP's host number.

   Appendix A gives more details of the proposed approach to SIPP global
   unicast address assignment.

2.1.2.  Cluster Addresses

   Cluster addresses are a special form of unicast address that allows a
   packet to be sent to one of multiple destinations (this type of
   delivery service is sometimes called anycast).  Cluster addresses are
   of the form <prefix><zero>.  Cluster addresses allow a packet to be
   sent to the "nearest" node (according to unicast routing's notion of
   nearest) of a group of nodes.  The purpose of a cluster address is to
   be able to route a packet to one of a group of nodes characterized by
   sharing a certain prefix in the unicast global hierarchical address
   space.

   When the packet is being sent from "outside" the group of nodes (that
   is, being transmitted by a node that has no prefix in common with the
   cluster address), the resulting behaviour is that the packet is
   accepted by the first router whose own address prefix matches the
   prefix in the cluster address.  When the packet is being sent from
   "within" the group of nodes (that is, being transmitted by a node
   whose own address prefix matches that of the cluster address), the
   resulting behaviour is that the packet is transmitted up the hierar-
   chy until it reaches a router that is acting "at the hierarchy level"
   of the prefix.



SIP WG, Expires April 1, 1994                                  [Page 4]


                    draft-ietf-sip-overview-00.txt         October 1993


   The SIPP routing and addressing specification will contain a precise
   and general definition of which nodes get assigned which cluster
   addresses.  However, in the context of the initial format of SIPP
   hierarchical unicast address, the following cluster addresses are
   defined:

   Provider.0
        Routers that comprise the provider's network (that is, not
        comprising subscriber networks attached to the provider) identi-
        fied by the Provider ID are assigned these cluster addresses.

   Provider.Subscriber.0
        Routers whose addresses match with Provider.Subscriber, and that
        share a link with routers that have cluster address Provider.0
        are assigned these cluster addresses.

   Provider.Subscriber.Subnet.0
        Routers whose addresses match with Provider.Subscriber.Subnet,
        and that share a link with routers that have cluster address
        Provider.Subscriber.0 are assigned these cluster addresses.

   Packets with address Provider.0 will be accepted by the first router
   belonging to the indicated provider.  This cluster address is used
   for provider selection and for forming provider-level policy routes.

   Packets with address Provider.Subscriber.Subnet.0 will be accepted by
   the first router in the indicated subnet.  This cluster address is
   useful for auto-configuration and for mobile hosts where the scope of
   mobility is the subnet.  If the scope of mobility is the subscriber
   network, then the cluster address Provider.Subscriber.0 can be used.

   The routing and addressing specification will describe how a host
   learns the various cluster addresses.

2.1.3.  Local-Use Address

   A SIPP node can form a SIPP address from its own link address (for
   instance, its Ethernet address).  This address is only guaranteed to
   be unique on the local link (from which the link address was
   derived).  The link address can be used for local communication in a
   site, for instance for networks that are not connected to the inter-
   net, or temporarily for auto-configuration purposes.

   Local-Use Addresses have the following format:







SIP WG, Expires April 1, 1994                                  [Page 5]


                    draft-ietf-sip-overview-00.txt         October 1993


    | 8 bits | 8 bits  |                  48 bits                    |
    +--------+---------+---------------------------------------------+
    |01111101|subnet ID|                link address                 |
    +--------+---------+---------------------------------------------+

   If the link address is less than 48 bits, then it is positioned at
   the low-order portion of the link address field and padded with
   zeros.  If the subnet ID is unknown (for instance, because there is
   no router on the subnet), then the subnet ID is set to all zeros.


2.2.  Other Address Formats

   The other address formats described in [8] (Multicast, Unspecified,
   Loopback, Reserved Multicast, All Nodes, All Hosts, and All Routers
   Addresses) are as specified in [8].

3.  ADDRESS SEQUENCE HANDLING BY NODES

   For address sequences to be an effective means of extending SIPP
   addresses or enriching SIPP routing semantics for use in provider
   selection, mobility, auto-readdressing, etc., nodes must be able to
   manipulate address sequences appropriately.  A node must be able to
   recognize that its own addresses and other nodes' addresses may be
   represented as address sequences, for instance in transmitted and
   received packets and in DNS.  A node must also be able to reverse
   address sequences for sending return packets.

3.1.  Address Sequence Notation

   The SIPP mechanism for encoding address sequences is the optional
   Routing Header.  With this mechanism, the active address of the
   optional Routing Header is in the destination address field of the
   SIPP header, and the remaining addresses in the address sequence
   (those that were previously active and those that will be active) are
   in the Routing Header.  Thus, the fields of the Routing Header rotate
   through the destination address field as each becomes active.

   Notated literally, the mechanism would look like this:

                source address   dest address   Routing Header
                --------------   ------------   ------------
     initial          S               A          >B  D
        next          S               B           A >D
       final          S               D           A  B >

   This shows a packet from S, routed through A and B on its way to D.
   The '>' symbol indicates which field is next in the Routing Header



SIP WG, Expires April 1, 1994                                  [Page 6]


                    draft-ietf-sip-overview-00.txt         October 1993


   (i.e., the field pointed to by the Next Addr field of the Routing
   Header).  While this notation accurately depicts what happens in the
   packet header, it is unwieldy, so the following equivalent notation
   is used instead:

     initial     S,*A, B, D
        next     S, A,*B, D
       final     S, A, B,*D

   In this notation, the first element is in the source address field of
   the SIPP header.  The '*' denotes the active element of the Routing
   Header, which is in the destination address field.  The remaining
   elements are in the Routing Header, with the Next Addr field pointing
   to the element after the active one.  This notation is easier to
   read, and not incidentally very similar to the Pip notation, thus
   illustrating that the original SIP Source Routing Header is semanti-
   cally similar to the Pip FTIF Chain.

3.2.  Node Formation of Address Sequences

   This section describes a simple set of rules for the handling of
   address sequences.  These rules allow nodes to form and transmit SIPP
   packets with traditional IP address semantics.  More importantly,
   they allow nodes to receive and "reverse" SIPP packets with advanced
   routing and addressing semantics, such as policy routing.  Thus nodes
   that do not understand advanced routing semantics can still operate
   appropriately when receiving packets from a node that does.

   Every node has a set of address sequences that it considers its own.
   These address sequences are a series of 64-bit addresses of the form
   <Si, Si-1, Si-2, ..., S0>, where S0 is the low-order address and also
   the IAD, and Si is the high-order address.  Note that the terms low-
   order and high-order do not necessarily indicate that the high-order
   terms are hierarchically above the low-order terms.  Rather, the
   implication is that the high-order terms must come first in an
   address sequence.

      [ Note that, for the purpose of allowing simple implementations,
      an address sequence of three addresses is considered sufficient to
      encode a node's source address for any reasonable forseeable
      requirement. ]

   An address sequence of a node constitutes the sum total of informa-
   tion needed in the packet header to route the packet to that node.
   Only the low-order address is required to identify the node.  Some of
   a node's address sequences are source-capable and others are not.  A
   source-capable address sequence is one that can validly be used as a
   "source address" in a transmitted packet.  For instance, unicast



SIP WG, Expires April 1, 1994                                  [Page 7]


                    draft-ietf-sip-overview-00.txt         October 1993


   address sequences are source-capable and multicast address sequences
   are not, though both can be considered by the node to be its own
   address sequences.

   A route sequence may contain a number of components, such as a source
   address sequence, a destination address sequence, a policy route, a
   mobile host base station, or a multicast tree core address.  From the
   perspective of a "simple" node, however, a route sequence contains
   only two parts, the source address sequence and the destination
   address sequence:

           <S0, S1, ..., Si, Dj, Dj-1, ..., D0>

   For a transmitted packet, the source address sequence is one of the
   node's own source-capable address sequences, and the destination
   address sequence is everything else.  For a received packet, the des-
   tination address sequence is (or at least should be) any of the
   node's own address sequences, and the source address sequence is
   everything else.

   In an address sequence, the addresses of the source address sequence
   are ordered with the "low order" parts first, while the addresses of
   the destination address sequence are ordered in the opposite direc-
   tion, with the "high-order" parts first.  Thus the first and last
   addresses are always the identifying addresses--the "low order" parts
   of the source and destination address sequences.

   In the common case with a single-component source and destination
   address, the complete route sequence simply has the form: <S0, D0>.
   Such packets contain no Routing Header.

   When a node has an "association" with another node (that is, a tran-
   sport connection or an application "connection" running over UDP), it
   must maintain the following information with respect to the
   correspondent node (the node with which it has the association):

   1.   The source and destination IADs for the entire association.

   2.   The source and destination address sequences currently in use.

   The low-order parts of the source and destination address sequences
   must match the IADs.

   When a node initiates an association, it will normally learn the des-
   tination address sequence through DNS or from local means (for
   instance, the user typing it in).  It extracts the destination IAD
   for the association from the low-order part of the destination
   address sequence.  It chooses from among its source-capable address



SIP WG, Expires April 1, 1994                                  [Page 8]


                    draft-ietf-sip-overview-00.txt         October 1993


   sequences for the source address sequence, and forms the header as
   indicated above.

   When a node is not the initiator of an association, it must extract
   the appropriate information from the received packet.  A node can
   isolate its own address sequence from the received route sequence by
   matching the tail of the route sequence against its own address
   sequences.  (Note that the multicast groups that the node belongs to
   are included in its list of address sequences for this isolation pro-
   cess.) Once the node isolates its own address sequence from the route
   sequence, what remains is the address sequence of the correspondent
   node.

   Thus, to return a received packet to the correspondent node, the
   node:

   1.   strips off and stores its own address sequence from the tail of
        the route sequence of the received packet,

   2.   reverses the order of the remaining elements of the route
        sequence, and places them on the tail of the route sequence of
        the returned packet,

   3.   prepends a valid source-capable address sequence to the route
        sequence, and

   4.   sets the active address (that is, the address to which the Next
        Addr field of the Routing Header points) to be the first address
        of the destination address sequence.

   If the node's own address sequence in the received packet is source-
   capable, then the transmitted (source) IAD must match that of the
   received (destination) IAD, and the transmitted address sequence
   should match that of the received address sequence.

   Every node must implement these reversal rules.  Even if a node has
   no notion of, say, provider selection, it will successfully return
   packets to a node that does if it implements these rules.

3.3.  Application Handling of SIPP Addresses

   The exact nature of the interface between the SIPP layer and higher
   layer protocols is still an open issue.  At a minimum, an application
   interface that requires only the source and destination IAD must
   exist.  This allows for a simple interface, but limits the control
   that the application has over routing.

   It should also be possible for an application to control the complete



SIP WG, Expires April 1, 1994                                  [Page 9]


                    draft-ietf-sip-overview-00.txt         October 1993


   route sequence if desired.  The details of such an interface are
   under study.

4.  ROUTING ALGORITHMS

   Initially, SIPP routing algorithms will be virtually identical to
   those used with the CIDR version of IP, except that the address used
   will be 64 bits rather than 32.  Over the near term, cluster
   addresses can be configured into routers along with their native
   addresses, and advertised in the normal way.  Eventually it would be
   desirable to have routers automatically determine their own cluster
   addresses.

   If it ever becomes necessary to extend SIPP addresses beyond 64 bits,
   then the routing algorithms can be modified if necessary to reflect
   that change.  (Note that it is not clear that routing algorithms
   would have to be modified for this.)

5.  UNICAST EXAMPLES

   In this section, we give several typical unicast examples that demon-
   strate the use of the Routing Header mechanism for provider selection
   and address extension.  Later sections give typical examples for
   mobility, multicast, and auto-configuration.  A forthcoming full
   specification of SIPP routing and addressing will describe the use of
   the Routing Header mechanism more thoroughly.

   The examples assume the following topology.  Domain D contains node
   H.  Domain E contains node I.  Domain D is attached to providers P
   and Q.  Domain E is attached to providers Q and R.

5.1.  Simple (Non-Extended) Addresses

   Assume that the addresses of node H are P.D.H and Q.D.H, and the
   addresses of node I are Q.E.I and R.E.I, where the notation "a.b.c"
   represents a 64-bit SIPP address.  (Note that the 'D' of P.D.H and
   Q.D.H are subscriber numbers assigned by P and Q respectively, and
   are therefore in general not the same value.) H initiates an associa-
   tion with I by querying DNS and learning the two addresses for I.
   Assume that H chooses Q.E.I, since it has the best "match" with its
   own addresses.  H forms the following packet:

        Route sequence at sender H: Q.D.H, *Q.E.I

   I receives this packet, reverses the (in this case simple) route
   sequence, and returns:

        Reversed route sequence at receiver I: Q.E.I, *Q.D.H



SIP WG, Expires April 1, 1994                                 [Page 10]


                    draft-ietf-sip-overview-00.txt         October 1993


5.2.  Simple Addresses with Provider Selection

   The previous example is in fact a form of provider selection, but it
   is simple in that both ends have the same provider, so nothing expli-
   cit has to be done.  Assume in this case, however, that H wishes to
   send its packet through provider P.  Since I is not attached to pro-
   vider P, H must explicitly indicate that it wants its packet to go
   through provider P, and therefore forms the following packet:

        Route sequence at sender H: P.D.H, *P.0, Q.E.I

   The active element of the route sequence is the cluster address of
   provider P.  This causes routers in domain D to route the packet to
   provider P.  When the first router in provider P receives this
   packet, it recognizes the packet as being for "itself", and advances
   the Routing Header, producing:

        Advanced route sequence at provider P router: P.D.H, P.0, *Q.E.I

   which causes the packet to be routed to I.  Upon receiving this
   packet, I uses the reversing rules stated above, producing the fol-
   lowing packet:

        Reversed route sequence at receiver I: Q.E.I, *P.0, P.D.H

   This packet has a couple of noteworthy characteristics.  First, the
   packet may exit domain E via either provider Q or R, depending on
   what routing considers the best path to provider P.  Second, the P.0
   element is redundant, since the destination address P.D.H will also
   cause the packet to be routed to P.  However, without knowing the
   provider mask of P, I has know way of knowing that P.0 is redundant
   with P.D.H, and so includes both elements.  In the future, it may be
   possible for I to learn H's cluster address and optimize the header
   accordingly.

   To continue this example, assume that I does care which exit provider
   is used to reach H, and further that I chooses provider Q.  In this
   case, I would insert the following "policy route" (actually, one
   address) to force the packet to go through Q outgoing:

        Alternative reversed route sequence:  Q.E.I, *Q.0, P.0, P.D.H

   Note that this example describes a node that is more sophisticated
   than the simple one described previously.  In particular, the node in
   this example understands three components of the source route (the
   source and destination addresses and a provider) rather than just two
   (the source and destination addresses).  The node further understands
   that when it inserts the provider selector in the route sequence, it



SIP WG, Expires April 1, 1994                                 [Page 11]


                    draft-ietf-sip-overview-00.txt         October 1993


   sets the active element to be that of the provider selector on
   transmitted packets.


5.3.  Extended Address (Address Sequence)

   Now assume that at some point 64 bits become inadequate and addresses
   are extended to an address sequence of two 64-bit addresses.  In this
   case, H's address sequences are P.D:S.H and Q.D:S.H, where the colon
   ':' indicates a 64-bit boundary, and S represents a subnet inside
   domain D.  I's address sequences are Q.E:S.I and R.E:S.I.

   For H to send a packet to I, it could form:

        Route sequence at sender H: S.H, Q.D, *Q.E, S.I

   The active element Q.E would cause the packet to be routed to domain
   E, where the Routing Header would be advanced to:

        Advanced route sequence at router in Domain E: S.H, Q.D, Q.E,
        *S.I

   and delivered to I.

   The above reversing rules executed by I would produce:

        Reversed route sequence at receiver I: S.I, Q.E, *Q.D, S.H

   thus returning the packet to I.

6.  MULTICASTING IN SIPP

   This section describes how traditional multicast [5] works using SIPP
   route sequences.  As with unicast, SIPP multicast address sequences
   are described using a series of 64-bit address elements.  Thus, the
   node's notion of multicast addressing is extended such that a "multi-
   cast address" is seen as an address sequence rather than a single
   multicast address as is the case with IP.  The final element of the
   multicast address sequence is the group ID.

   When a node joins a multicast group, it considers the multicast
   address sequence to be one of its own address sequences for the sake
   of packet reception and reversal.  The multicast address sequence is
   not source-capable.

   In traditional multicast (also known as Deering multicast or source-
   based multicast), a packet from a sender to a multicast group is sent
   on the shortest-path delivery tree (rooted at the sender) to members



SIP WG, Expires April 1, 1994                                 [Page 12]


                    draft-ietf-sip-overview-00.txt         October 1993


   of the group.  The traditional SIPP multicast address sequence con-
   tains only one address--the group ID.  This section describes the
   Routing Header that is formed by the sender, the reversed Routing
   Header formed by the receiver and the necessary extensions to the
   multicast forwarding algorithm.

6.0.1.  Example

   Assume the same scenario as described above (with nodes H and I),
   further assuming that H and I have extended addresses as described
   above.  (We do an extended address example here because the simple
   address example is the same as with current IP.) Assume further that
   H is transmitting a traditional multicast with multicast address M,
   and that I is a member of group M.  H forms the following header:

        Route sequence at sender H: S.H, Q.D, *M

   The route sequence is received unchanged at each of the receivers.

   If I wishes to respond unicast to H, it executes the reversing rules
   described above in the following way.  First, it isolates its own
   address from the route sequence.  Since this is multicast, and since
   I is a member of the multicast group M, I considers M to be one of
   its "own" addresses, and strips it.  Reversing what remains produces
   <Q.D, P.H>.  Since a multicast address cannot be used as a source
   address, I knows to prepend its own unicast address sequence to the
   route sequence, producing:

        Reversed route sequence at receiver I: S.I, Q.E, *Q.D, S.H


6.0.2.  Multicast Forwarding Extensions

   With traditional multicast, each router's next hops are dependent
   both on the multicast group address and the sender address.  When the
   sender's address is an address sequence next hop determination is
   potentially influenced by all of the addresses in the sequence.

   In the header formed by the sender, the SIPP Routing Header part con-
   tains all but the low-order address.  Therefore, each multicast
   router will need to parse SIPP options for every packet containing a
   multicast destination address.  For instance, in the above example,
   the routers would need to look at the destination address to deter-
   mine that it is multicast, then look in the Routing Header at "Q.D",
   then if necessary (for instance, because the packet is still inside
   domain D) look at "S.H" in the source address field.

   While this represents additional overhead, routers will not need to



SIP WG, Expires April 1, 1994                                 [Page 13]


                    draft-ietf-sip-overview-00.txt         October 1993


   incur this "peek-behind" overhead until 64-bit addresses are insuffi-
   cient for global routability of Internet nodes.

7.  MOBILITY IN SIPP

   This section shows how SIPP source routing and SIPP route sequences
   might be used for mobile communication.  Note that the Mobile IP
   group of IETF is deliberating on various solutions for mobility, and
   may choose a different approach than the one outlined here.  At the
   same time, more approaches are possible with SIPP than with IP, so
   the Mobile IP group may choose a different solution for use with
   SIPP.  First, we introduce some terminology.

   Mobile Host (MH)
      A node that is able to maintain its network connections even after
      being physically moved.

   Correspondent Host (CH)
      A node that has a network connection open to an MH. A CH may
      itself be mobile.

   Base Station (BS)
      The SIPP router to which the MH is attached after it moves.

   Home Station (HS)
      A SIPP node that is aware of the MH's current location. Each MH
      has a preconfigured home station.


7.1.  Mobility Example

   Assume that H is an MH and that I is the CH, both with the (extended)
   address sequences from above.  Initially, a packet from the CH to the
   MH carries the following route sequence as in the above example:

        Route sequence from CH to MH: S.I, Q.E, *Q.D, S.H

   Now suppose the MH moves to the vicinity of a BS with an address D.d.
   MH discovers D.d through SIPP "I-Am-Here" advertisements.  These are
   multicast by the BS to the SIPP All Nodes address (similar to an IS
   hello advertisement in ES-IS).  MHs also periodically multicast SIPP
   "I-Am-Here" advertisements to the SIPP All Routers multicast address
   (similar to the ES hello advertisement in ES-IS).  This latter adver-
   tisement contains the MH's identifying address.

   Through a mechanism beyond the scope of this document, the MH informs
   the HS of its new base station.  Packets carrying the old route
   sequence from the CH are intercepted by the HS.  The HS tunnels them



SIP WG, Expires April 1, 1994                                 [Page 14]


                    draft-ietf-sip-overview-00.txt         October 1993


   to the BS, which forwards it to the MH.

   After the MH has discovered D.d, all subsequent packets to the CH
   carry the following route sequence:

        Route sequence from MH to CH after move: S.H, D.d, *Q.E, S.I

   It is sufficient to include only MH's identifying address in the
   route sequence; we assume that the BS is within I's IADs (S.I) rout-
   ing scope.  When the CH reverses the incoming route sequence from the
   MH, it created the following route sequence:

        Reversed route sequence from CH to MH after move: S.I, Q.E,
        *D.d, S.H

   This causes packet to the MH to be routed through the BS at D.d, pro-
   ducing the desired behavior.

8.  HOST AUTO-CONFIGURATION

   This section describes how a host constructs a temporary IAD when it
   boots and uses that to contact DNS or some configuration server to
   obtain host configuration information.  We are interested in the four
   scenarios comprised of the combinations whereby 1) either a router is
   or is not on the host's local link, and 2) either the host can or
   cannot contact a configuration server.

   When a host boots up, it assigns itself a temporary local-use IAD
   formed from its link address.  This IAD is routable only within the
   link on which the host is located.

   The host then sends out a small number of SIPP "Where-Are-You" soli-
   citations with the local-use IAD as the source address.  If it
   receives no advertisements, the host assumes that there is no router
   on the link and uses the temporary IAD to communicate with other
   nodes on the link.  If, using this IAD, the host is able to contact a
   configuration server on the link, then it may obtain a different,
   possibly global, address at this time.

   Once it hears a router advertisement, a host can use one of the
   advertised prefixes to form an address with greater routing scope.
   This address can be used to contact the configuration server.  (The
   address of the configuration server could be a well-known multicast
   address.) If any of the prefixes advertised by the router is small
   enough to accommodate the host's link address (e.g., in the case of a
   multi-link domain not connected to the Internet), the host can con-
   catenate that prefix with its link address to form its address.  Oth-
   erwise, the host can assign itself the address sequence <C, T>, where



SIP WG, Expires April 1, 1994                                 [Page 15]


                    draft-ietf-sip-overview-00.txt         October 1993


   T is the host's local-use IAD, and C is the cluster address of the
   subnet learned from the router advertisement.

   If a configuration server responds with a new address, the host uses
   that address.  Otherwise, the host continues to use the previous
   address to communicate with other nodes (either in its domain or glo-
   bally).  Note that the design of a configuration server is an open
   issue.



References


[1]  S. Deering, "Simple Internet Protocol (SIP) Specification", Inter-
     net Draft, work in progress.

[2]  P. Francis, "Pip Near-term Architecture", Internet Draft, work in
     progress.

[3]  V. Fuller, T. Li, K. Varadhan, J. Yu, "Supernetting: an Address
     Assignment and Aggregation Strategy", RFC 1338.

[4]  P. Tsuchiya, "On the Assignment of Subnet Numbers", RFC 1219.

[5]  S. Deering, "Host Extensions for IP multicasting", RFC 1112.

[6]  R. Gilligan et al, "SIPP Transition Mechinisms", Internet Draft,
     work in progress.

[7]  P. Francis, "On the Assignment of Provider Rooted Addresses",
     Internet Draft, work in progress.

[8]  S. Deering, "Simple Internet Protocol Plus (SIPP) Specification",
     Internet Draft, work in progress.

[9]  R. Colellea, E. Gardner, R. Callon, "Guidelines for OSI NSAP Allo-
     cation in the Internet", RFC1237.













SIP WG, Expires April 1, 1994                                 [Page 16]


                    draft-ietf-sip-overview-00.txt         October 1993


APPENDIX A: PROPOSED UNICAST GLOBAL SIPP ADDRESS ASSIGNMENT

   This appendix proposes an initial assignment scheme for SIPP global
   hierarchical unicast addresses that has the following characteris-
   tics:

   1.   it accommodates existing IP addresses,

   2.   it is an extension of the CIDR address assignment scheme,

   3.   it leaves address space open for several avenues of future
        growth.

   The initial assignment scheme for SIPP unicast addresses is
   provider-based, as follows:


     |1|      n bits       |        m bits       |   p bits  | 63-n-m-p|
     +-+-------------------+---------------------+-----------+---------+
     |C|    provider ID    |    subscriber ID    | subnet ID | node ID |
     +-+-------------------+---------------------+-----------+---------+
                           |                                           |
                           |     corresponds to current IP address     |

C-bit

   The left-most bit is the IPv4 compatibility flag [6], known as the
   C-bit.  Both SIPP and IPv4 hosts can be assigned SIPP addresses in
   the SIPP unicast address space.  Even though IPv4 hosts may be listed
   in the DNS with 64-bit SIPP addresses, they only "know" the low-order
   32-bit part of their address.  The C-bit is used by SIPP nodes to
   differentiate SIPP systems from IPv4 systems.  SIPP systems are
   always assigned addresses with the C-bit set to 0.  IPv4 systems are
   always given addresses with the C-bit set to 1.


Provider Assignments

   Initially, the provider ID will be 31 bits in length.  The provider
   mask is 32 bits in length (covering the provider ID and the C-bit).
   Provider IDs initially have the following format:

     | 8 bits |     24 bits           |
     +--------+-----------------------+
     |C0000000| provider ID, assigned |
     |        | "from the left" [4]   |
     +--------+-----------------------+




SIP WG, Expires April 1, 1994                                 [Page 17]


                    draft-ietf-sip-overview-00.txt         October 1993


   The leftmost 7 bits of the provider ID (not including the C-bit) are
   assigned as 0.  The subsequent 24 bits are assigned values according
   to the technique of assigning IP subnet numbers outlined in RFC 1219
   [4].  That is, the "1" bits of the values are filled in from left-
   to-right rather than from right-to-left.  This style of assignment
   reserves 0's on the right side of the provider ID, thus allowing the
   mask of a given provider to shrink in the future, if it is found that
   the provider needs more bits, for instance to identify its sub-
   scribers.

   For example, initial provider ID assignment would proceed as follows:
         first provider:  C0000000 10000000 00000000 00000000
        second provider:  C0000000 01000000 00000000 00000000
         third provider:  C0000000 11000000 00000000 00000000
        fourth provider:  C0000000 00100000 00000000 00000000
         fifth provider:  C0000000 10100000 00000000 00000000
                          ....
         tenth provider:  C0000000 01010000 00000000 00000000

   This initial assignment of the provider ID space (zeros to both the
   left and right of the assigned bits) allows for several avenues of
   growth.

   For instance, if internet growth results in a small number of very
   large providers, then the masks of the providers can be shrunk, thus
   giving each provider more space, which could be used to add another
   level of hierarchy within the provider.  If providers grew so large
   that they required even more space, they could be allocated codes in
   the most significant byte of the provider ID space.

   The reserved space in the most significant byte could also be used
   for different kinds of number assignments, such as geographical or
   organizational, if that becomes desirable in the future.  (Strictly
   speaking it wouldn't be necessary for such different number assign-
   ments to have their own contiguous number spaces.  For instance, the
   geographical codes could come from a portion of the provider space.
   However, having separate contiguous number spaces for different types
   of addresses simplifies address administration within each space.)

   If internet growth results in a large number of small providers, then
   it might be necessary for the zero bits in the most significant byte
   to be used as an additional layer of hierarchy above the provider
   level.


Assignment of Lower 32 Bits

   The lower 32-bits of the SIPP address is initially nothing more than



SIP WG, Expires April 1, 1994                                 [Page 18]


                    draft-ietf-sip-overview-00.txt         October 1993


   the current IP address.  After the IP address space expires (is no
   longer globally unique), then the lower 32 bits of the SIPP address
   will no longer by itself be globally unique, and will be assigned by
   the addressing authority identified by the higher 32 bits of the SIPP
   address (rather than being assigned by the current IP top-level
   address assignment authority).

   IP addresses currently exist under two formats, class-based (pre-
   CIDR) and class-less (CIDR) [3].  Pre-CIDR assignments have the fol-
   lowing format:

     |    m bits    | p bits  | 32-m-p |
     +--------------+---------+--------+
     |   network    | subnet  |  host  |
     +--------------+---------+--------+

   The IP network number corresponds to the SIPP subscriber ID.  The
   SIPP subnet ID and node ID correspond to the IP subnet and host
   numbers respectively.  The network number is globally unique among
   network numbers.  Thus, providers have no control over the assignment
   of subscriber IDs derived from pre-CIDR IP addresses.

   CIDR assignments have the following format:

     |  n bits     |    m bits    | p bits  |32-n-m-p|
     +-------------+--------------+---------+--------+
     | provider ID |subscriber ID | subnet  |  host  |
     +-------------+--------------+---------+--------+

   Under CIDR, providers have control of subscriber assignments.  After
   IP addresses are no longer unique, providers will also have control
   over the top n bits of the "IP address" (the lower 32 bits).  These
   bits can be used either to assign directly to more subscribers, or to
   create a level of hierarchy above the subscriber level, resulting in:

     |1|   31 bits   |    n bits      |    m bits    | p bits  |32-n-m-p|
     +-+-------------+----------------+--------------+---------+--------+
     |C| provider ID |sub-provider ID |subscriber ID |subnet ID|node ID |
     +-+-------------+----------------+--------------+---------+--------+

   As mentioned above, it will also be possible for the sub-provider ID
   to grow into the provider ID space, by shrinking the provider mask
   for the provider.  In general, as the internet grows, the structure
   of the SIPP global address may evolve to accommodate the growth.  In
   the extreme case, the SIPP global address can expand to greater than
   64 bits.

   Note that the use of provider-based addresses results in multiple



SIP WG, Expires April 1, 1994                                 [Page 19]


                    draft-ietf-sip-overview-00.txt         October 1993


   address prefixes for subscriber domains that are attached to multiple
   providers [7].  While this has the advantage of giving nodes a pro-
   vider selection feature, it has the disadvantage of added complexity
   in nodes, DNS, and address administration.















































SIP WG, Expires April 1, 1994                                 [Page 20]