Source Demand Routing Working Group                          Peter Ford
INTERNET DRAFT                                                     LANL
                                                                Tony Li
                                                          cisco Systems
                                                          Yakov Rekhter
                                 T.J. Watson Research Center, IBM Corp.
                                                           October 1994


                Explicit Routing Protocol (ERP) for IPv6
                      <draft-ietf-sdr-erp-00.txt>



Status of this 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 1id-abstracts.txt listing contained in the
   internet-drafts Shadow Directories on nic.ddn.mil, nnsc.nsf.net,
   nic.nordu.net, ftp.nisc.sri.com, or munnari.oz.au to learn the
   current status of any Internet Draft.


1. Introduction


   This document specifies the format and processing of the IPv6
   Explicit Routing Protocol (ERP) Header. The purpose of this header is
   to provide IPv6 forwarding functionality comparable to SDRP [SDRP].
   The reader should be familiar with [IPv6].


2. Acknowledgments


   This document is based on "Source Demand Routing: Packet Format and
   Forwarding Specification (Version 1)" [SDRP] and "Source Demand
   Routing: Route Setup" [SDRP-SETUP].


3.  Model of Operation






Expiration Date April 1995                                      [Page 1]


INTERNET DRAFT                                              October 1994


   An Internet can be viewed as a collection of routing domains
   interconnected by means of common subnetworks, and Border Routers
   (BRs) attached to these subnetworks.  A routing domain itself may be
   composed of further subnetworks, routers interconnecting these
   subnetworks, and hosts.

   For the purposes of this document, a BR belongs to only one domain.
   A pair of BRs, each belonging to a different domain, but attached to
   a common subnetwork, form an inter-domain connection. By definition,
   packets that traverse multiple domains must traverse BRs of these
   domains.  Note that a single physical router may act as multiple BRs
   for the purposes of this model.

   A connected sets of Routing Domains may be grouped into Routing
   Domain Confederations. A domain may belong to more than one
   confederation. The confederations may be nested, disjoint, or
   overlapped.



3.1  Addressing Assumptions


   Each domain has a globally unique identifier, called a Routing Domain
   Identifier (RDI). All the BRs within a domain need to know the RDI
   assigned to the domain.  Likewise, each routing domain confederation
   has a globally unique identifier, called a Routing Domain
   Confederation Identifier (RDCI).

   This document assumes that RDIs and RDCIs are expressed as IPv6
   addresses, and assigned based on the unicast address prefixes
   assigned to domains and confederations.

   A subscriber RD should use as its RDI an address taken out of the
   unicast address prefix assigned to it.  A multihomed RD should use as
   its RDI an address taken out of one of the unicast address prefixes
   assigned to it.  A service provider should use as its RDI an address
   taken out of the unicast address prefix that the provider uses for
   assigning addresses to systems within the provider.  Finally, an RDI
   of a domain may be constructed by taking a unicast address out of any
   unicast address prefix assigned to the domain.

   If a service provider forms a Routing Domain Confederation with some
   of its subscribers and the subscribers take their addresses out of
   the provider, then an address taken out of the unicast address prefix
   assigned to the provider should be used as the RDCI of the
   confederation.  An RDCI of a confederation may  be also constructed
   by taking  a unicast address out of any unicast address prefix
   assigned to any domain within the confederation, provided that this
   unicast address is different from any other RDI or RDCI.

   The address taken out for RDI or RDCI can not be used for unicast
   address assignment.




Expiration Date April 1995                                      [Page 2]


INTERNET DRAFT                                              October 1994


   The assumptions made here, combined with the assumption that unicast
   addresses are globally unambiguous, guarantee that non-multicast IPv6
   addresses (except for the block allocated for private use) are
   globally unambiguous and that each assigned address can represent
   either (a) unicast address, or (b) RDI, or (c) RDCI.

   A router may have one or more unicast addresses, one RDI, one or more
   RDCIs associated with it.  It is assumed that at the minimum each
   router has to have at least one unicast address, but may also have at
   most one domain identifier and one or more confederation identifiers.

   For the rest of the document, when we refer to an address of a router
   this reference may include either a unicast address or RDI or RDCI
   associated with the router.


3.2  ERP Route Definition


   An ERP route is defined as a sequence of elements (called forwarding
   hops), where each hop may depict a router, a domain, or a
   confederation.  Each hop is syntactically expressed as a unicast
   address. Thus, an ERP route is syntactically expressed as a sequence
   of unicast addresses.  Semantically an ERP route is defined as an
   arbitrary intermix of routers, domains, and confederations.

   A hop within an ERP route can either be "strict" or "loose".
   Forwarding to a strict next hop requires that the next hop be
   adjacent to the current hop.  Forwarding to a loose next hop doesn't
   impose this requirement.

   The definition of what constitute an "adjacent" hop depends on the
   type (i.e., unicast address, RDI, RDCI) of the current and the next
   hop, and is defined as follows.

   A hop with unicast address A is adjacent to a hop with unicast
   address B, if there are elements N and M, N with unicast addresses A
   and X, and M with unicast addresses B and Y, and addresses X and Y
   share a common subnetwork.

   A hop with unicast address A is adjacent to a hop with domain
   identifier B, if there is an element N with domain identifier B and
   unicast address X, so that A is adjacent to X (as defined above).  In
   this case any element with domain identifier B is adjacent to A.

   A hop with a unicast address A is adjacent to a hop with
   confederation identifier B if there is an element N with
   confederation identifier B and unicast address X, so that A is
   adjacent to X (as defined above).

   A hop with domain identifier A is adjacent to a hop with domain
   identifier B if there exist two elements, M and N, M with domain
   identifier A and unicast address X, and N with domain identifier B
   and unicast address Y, such that X is adjacent to Y (as defined



Expiration Date April 1995                                      [Page 3]


INTERNET DRAFT                                              October 1994


   above).

   A hop with domain identifier A is adjacent to a hop with
   confederation identifier B if there exist two elements, M and N, M
   with domain identifier A and unicast address X, and N with
   confederation identifier B and unicast address Y, such that X is
   adjacent to Y (as defined above).

   A hop with confederation identifier A is adjacent to a hop with
   confederation identifier B if there exist two elements, M and N, M
   with confederation identifier A and unicast address X, and N with
   confederation identifier B and unicast address Y, such that X is
   adjacent to Y (as defined above).

   Note that the notion of "adjacent" is reflexive. That is, if A is
   adjacent to B, then B is adjacent to A.



3.3  Setup


   In some cases, commonly known as "flows", where the duration of a
   packet stream is significantly longer than the end-to-end round-trip
   delay, and particularly where the amount of payload in the packet is
   small, it may be worthwhile to "set up" the ERP route by saving state
   information in routers that have to process the route, instead of
   carrying the full ERP route in every packet.  Once this state is
   established, the originator of the ERP route can use a combination of
   Source Address and Flow Label carried in the fixed header to refer to
   the ERP route rather than carrying the full route in each data
   packet, thereby reducing the ERP Header size and transmission time.

   It is important to the protocol that it does not impose setup on
   routers that are short on state space or that otherwise restrict
   setup.  Therefore, the desire for setup is simply flagged by the the
   originator of the ERP route, and the routers that have to process the
   ERP route may choose to accept or reject the request.  If all of the
   routers that have to process the ERP route accept, then the
   originator can begin using a route identifier (as carried by the Flow
   Label field of the Fixed Header) to refer to the saved state.  If any
   router refuses setup, the originator must continue including the full
   ERP route in each data packet or else try a different route.

   When a router rejects a setup request, it sends an ICMP message
   containing the route identifier to the originator of the request.
   ICMP messages are also used in this manner if a router loses or is
   missing state for a particular route identifier.  When a router
   accepts a setup request, it continues forwarding the request along
   the ERP route.  Successful route setup is indicated when the final
   router on the ERP route sends an ICMP message containing Flow Label
   to the originator of the route.





Expiration Date April 1995                                      [Page 4]


INTERNET DRAFT                                              October 1994


3.4  Forwarding Information Base (FIB) Model


   It is assumed that each router maintains a conventional unicast
   Forwarding Information Base (FIB), where each entry in the FIB is
   represented as a tuple <address prefix, next hop>.

   It is assumed that if a router shares a common subnetwork with a BR,
   then the router has information about all the RDIs and RDCIs the BR
   belongs to.  The mechanisms by which this information is acquired are
   outside the scope of this document.  This information is represented
   in the FIB as a set of tuples, where the address prefix component of
   each tuple specifies a particular RDI or RDCI (expressed as a 16
   octets IPv6 address) of the BR and the next hop component specifies
   the IPv6 unicast address of the BR. This also applies to the case
   where the router is a BR itself.

   If the next hop depicts a router that is not directly connected to
   the local system (doesn't share a common subnetwork), then it is
   assumed that the FIB contains an entry that allows to derive the
   immediate next hop (the next hop on a common subnetwork).

   In addition to conventional FIB a router may maintain a Flow Label
   cache.  This cache is used to support setups.  Each entry in the
   cache is a triplet <Source Address, Flow Label, ERP Header>.  An
   entry in the cache is uniquely identified by its the first two
   components of the triplet (Source Address and Flow Label). Each entry
   in the cache can be timed out at any time, and should be timed out
   periodically. The particular policy used for timing out cache entries
   is a local matter.



4. Explicit Forwarding Header format


   An ERP Header is a type of an IPv6 Routing Header. The value of the
   Routing Type field of the IPv6 Routing Header is set to 1 for an ERP
   Header.  The ERP Header format is defined as following:



          0                   1                   2                   3
          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         | Next Header   |Routing Type=1 | Flags   |NestL|    FwdDirLen  |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         | NextHopPtr    |            Strict/Loose Bit Mask              |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |        Forwarding Directions, a list of IPv6 addresses        |
         |        (integral multiple of 16 octets)                       |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+





Expiration Date April 1995                                      [Page 5]


INTERNET DRAFT                                              October 1994


      Next Header - 8-bit selector.

          Identifies the type of the header immediately following the
          Routing header.  Uses the same values as the IPv4 Protocol
          field [RFC-1340] plus new types defined for IPv6.

      Routing Type - 1.

      Flags (5 bits):

          MRE, Must Report Errors (bit 0).

              If this bit is set to 1, and a router can not further
              forward a packet, the router must generate an ICMP error
              message. If this bit is set to 0, and a router can not
              further forward a packet the router should not generate an
              ICMP error message.

          FFD, Behavior on Failure of Forwarding Directions (bit 1).

              If this bit it set to 1, it indicates that if a router can
              not further forward a packet the router must abort the ERP
              route (as specified in Section 7).

          SAS, Source Address Swap (bit 2).

              If this bit is set to 1, it indicates that the entity that
              added the current ERP Header to a packet placed the source
              address from the fixed header as the first element in the
              Forwarding Directions, and placed its own unicast address
              as the source address in the fixed header.

              '''.in 14

          FLS, Flow Label Saved (bit 4)

              If this bit is set to 1, then the low-order 28 bits of the
              second element in the Forwarding Directions field contain
              a Flow Label.

      Nesting Level (3 bits).

              The Nesting Level field is used to control the number of
              ERP Headers carried by a packet. The maximum number of ERP
              Headers that can be carried by a packet is 8.

      Forwarding Directions Length (1 octet unsigned integer).

              The Forwarding Directions Length field contains the number
              of Forwarding Directions hops in the header.  Length of
              the header can be calculated from this value (length =
              FwdDirLen * 16 + 8) The value of this field shall not
              exceed 24.




Expiration Date April 1995                                      [Page 6]


INTERNET DRAFT                                              October 1994


      Next Hop Pointer (1 octet unsigned integer).

              The Next Hop Pointer field contains the index of next hop
              to be processed. The first element in the Forwarding
              Directions has index 0.  The value of this field shall not
              exceed 24.

      Strict/Loose Bit Mask (24 bits).

              The Strict/Loose Bit Mask is used when making a forwarding
              decision.  If the N-th bit (N not equal 1) in the
              Strict/Loose Bit Mask field is set to 1, it indicates that
              the N-th element in the Forwarding Directions is a Strict
              Hop (with respect to the (N-1) element). If this bit is
              set to 0, it indicates that the N-th element in the
              Forwarding Directions is a Loose Hop (with respect to the
              (N-1) element).  The value of the first bit in the
              Strict/Loose Bit Mask field specifies whether the first
              element in the Forwarding Directions is a Strict or a
              Loose Hop with respect to the entity that originated an
              ERP route.

      Forwarding Directions (variable length, multiple of 16 octets).

              The elements of the Forwarding Directions (hops) are
              syntactically IPv6 addresses. Semantically Forwarding
              Directions can contain an arbitrary intermix of unicast
              addresses, RDIs, and RDCIs.


5. Originating ERP Routes


   This document assumes that an entity that attaches an ERP Header to a
   packet is preconfigured with a set of ERP routes.  Procedures for
   constructing these routes are outside the scope of this document.
   Use of ERP capabilities may be deployed initially without additional
   routing information exchange protocol support.

   An entity that is capable of attaching ERP Headers is expected to use
   information carried in a packet combined with the local criteria to
   determine whether the packet should be forwarding along a particular
   ERP route.  Associated with each set of criteria is a set of one or
   more ERP routes that should be used to route matching packets.  The
   exact nature of the criteria is a local matter.

   An ERP Header may be attached to a packet by either an entity that
   originated the packet or by an entity that forwards the packet.  For
   example, either a host that originates a packet, or any router that
   forwards the packet may attached an ERP Header to the packet. An ERP
   Header is attached to a packet by placing the Header immediately
   after the fixed header.

   A packet may carry more than one ERP Headers. Each such header is



Expiration Date April 1995                                      [Page 7]


INTERNET DRAFT                                              October 1994


   referred to by its nesting level (as carried in the Nesting Level
   field of the header). The first Header attached to a packet is
   referred to as the level 1 ERP Header. The level 1 ERP Header is
   identified by the Next Header field in the ERP Header (the value of
   the field is other than Routing Header). The outermost ERP Header
   (the one that immediately follows the fixed header) is referred to as
   the "current" ERP Header.

   When an entity attaches the level 1 ERP Header to a packet, the
   entity must put the destination address, as specified in the
   destination address field of the fixed header of the packet, as the
   last element in the Forwarding Directions of the ERP Header.  Thus,
   the last element in the Forwarding Directions field of the level 1
   ERP Header is the destination address of the packet.

   Any router may attach a level 1 ERP Header to a packet that the
   router has to forward. Only a router that is identified by the
   current element in the Forwarding Directions field of the current ERP
   Header can attach a non-level 1 ERP Header to the packet, and only
   when the next element in the Forwarding Directions is specified as a
   Loose Hop.

   The entity that attaches the level 1 ERP Header to a packet specifies
   the maximum allowed number of nested ERP Headers.  When a router
   wants to attach an ERP Header to a packet that already has one or
   more ERP Headers the router decrements the Nesting Level from the
   current ERP Header by 1 and places it in the Nesting Level field of
   the ERP Header it wants to attach.  No further ERP Headers can be
   attached to a packet whose current ERP Header carries zero as the
   value of the Nesting Level field.

   When an entity other than the one that originates a packet, attaches
   an ERP Header to the packet, the entity places the source address
   from the fixed header as the first element in the Forwarding
   Directions field, places its own unicast address in the source
   address field of the fixed header,  and sets the Source Address Swap
   flag to 1.  If the value of the Flow Label field in the fixed header
   is non-zero, then this value is placed in the low-order 28 bits of
   the second element in the Forwarding Directions field, the Flow Label
   Save flag is set to 1, and the value of the NextHopPtr field is set
   to 2. Otherwise (the value of the Flow Label field is zero), the
   value of the NextHopPtr field is set to 1.  If the Flow Label is
   zero, then the actual ERP route starts from the second element of the
   Forwarding Directions, otherwise the route starts from the third
   element of the Forwarding Directions.


   If an entity that originates a packet attaches an ERP Header to the
   packet, then the entity must set the Source Address Swap flag to 0,
   Flow Label Save flag to 0, and set the value of the NextHopPtr to 0.

   We say that a packer carries an implicit ERP Header if the packet's
   forwarding is done using the setup capabilities, and the actual ERP
   Header that was used during the setup is omitted.  Otherwise, ''we



Expiration Date April 1995                                      [Page 8]


INTERNET DRAFT                                              October 1994


   say that the Header is explicit.

   An entity originating an ERP route (the originator) may request an
   ERP setup by setting the appropriate bits in the Flow Label field,
   and setting all other fields as described above.  It is suggested to
   set the Must Report Errors flag to 1.

   The originator may wait a full round-trip time (provided that this
   time is know by the originator) for a response to the setup request,
   in the meantime sending subsequent packets with an explicit ERP
   Header.  There is no limit, however, to the number or frequency of
   setup requests, thus the entity may repeat the setup. Once the
   originator receives a response indicating that the setup is
   successfully completed the originator may start sending packets with
   an implicit ERP Header.  The originator may choose to send packets
   with the implicit ERP Header immediately after sending the setup
   request.  This may be useful if the packets will be useless after
   waiting a full round-trip time.  In this case, the packets will be
   delivered if the setup is successful, but may be dropped otherwise.


6. Processing packets with ERP routes


   We say that a router receives a packet with an ERP route if the
   destination address in the fixed header of the packet that arrives at
   the router depicts one of the addresses of the router and the packet
   carries at least one ERP Header.

   In the case where a router receives a packet with an explicit ERP
   Header we say that the packet carries a completed ERP route if either
   (a) the Header is Level 1 and the value of the NextHopPtr field in
   the Header is one less than the value of the FwdDirLen field, or (b)
   the Header is other than Level 1 and the value of the NextHopPtr
   field in the Header is equal to the value of the FwdDirLen field.
   Otherwise, we say that the received packet carries an incomplete
   (non-empty) ERP route.

   In the case where a router receives a packet with an implicit ERP
   Header the router checks for a presence of an entry in its Flow Label
   cache whose Source Address is equal to the Source Address field of
   the fixed header of the packet, and whose Flow Label is equal to the
   Flow Label field of the fixed header. If no such entry is found, the
   packet is processed as described in Section 7. If such an entry is
   found, then we say that the packet carries a completed ERP route if
   the ERP Header associated with the entry is either (a) a Level 1 and
   the value of the NextHopPtr field in the Header is one less than the
   value of the FwdDirLen field, or (b) is other than Level 1 and the
   value of the NextHopPtr field in the Header is equal to the value of
   the FwdDirLen field. If such an entry is found, but neither (a) nor
   (b) are satisfied, then we say that the received packet carries an
   incomplete (empty) ERP route.





Expiration Date April 1995                                      [Page 9]


INTERNET DRAFT                                              October 1994


6.1 Processing packets with a completed ERP route


   When a router receives a packet with an explicit ERP Header and the
   ERP route is completed then the packet is processed as follows.

   If the current ERP Header is a Level 1 header, then the last element
   in the Forwarding Directions is placed in the Destination Address
   field of the fixed header.  If the Source Address Swap flag in the
   current ERP Header is set to 1, then the first element in the
   Forwarding Directions field is swapped with the Source Address field
   of the fixed header. If the Flow Label Save flag in the current ERP
   Header is set to 1, then the low-order 28 bits of the second element
   in the Forwarding Directions field is placed in the Flow Label field
   of the fixed header.  If the current ERP Header is not a Level 1
   header, then the current header must be removed from the packet.  If
   the current ERP Header is a Level 1 header, then it may be removed
   from the packet.  In addition, if the Flow Setup Request flag in the
   Header is set to 1, and the router is willing to accommodate the
   setup request (as described in Section 6.4) the router generates an
   ICMP message to the entity depicted by the source address in the
   fixed header indicating that the setup request has been successfully
   completed.

   When a router receives a packet with an  implicit ERP Header and the
   ERP route is completed then the packet is processed as described in
   the previous paragraph, except that instead of the current ERP Header
   the router uses the ERP Header associated with the entry in the Flow
   Label cache identified by the Source Address and Flow Label fields of
   the packet's fixed header.

   After the above procedures are completed the packet is submitted for
   normal forwarding procedure.


6.2 Processing packets with an incomplete ERP route and explicit ERP
Header


   If a router receives a packet with an incomplete ERP route, and the
   destination address in the fixed header is one of the unicast
   addresses associated with the router, the router must check whether
   the current element in the Forwarding Directions of the current ERP
   Header, as pointed by the NextHopPtr, specifies an address associated
   with the router. If this condition isn't satisfied, then further
   handling of the packet is done as described in Section 7.  If this
   condition is satisfied, then the packet is processed as follows.

   If the current ERP Header is a Level 1 header and the value of the
   NextHopPtr field is two less than the value of the FwdDirLen field,
   or if the current ERP Header is not a Level 1 header and the value of
   the NextHopPtr field is one less than the value of the FwdDirLen
   field, the router increments the value of the NextHopPtr field by 1,
   and then follows the procedures specified in Section 6.1.



Expiration Date April 1995                                     [Page 10]


INTERNET DRAFT                                              October 1994


   Otherwise, the router extracts the next element from the Forwarding
   Directions (the next element is the element that immediately follows
   the current element in the Forwarding Directions) and the
   strict/loose indicator associated with the next element (the
   indicator is extracted from the Strict/Loose Bit Mask field). Further
   processing depends on whether the next element specifies a Loose Hop
   (see Section 6.2.1) or a Strict Hop (see Section 6.2.2).


6.2.1 Loose Next Hop


   If the next element in the Forwarding Directions is a Loose Hop, then
   the router places the address, as specified in the next element, in
   the destination address field of the fixed header, increments the
   value of the Next Hop Pointer by 1, and submits the packet for normal
   forwarding procedure. If the forwarding procedure can not forward the
   packet (based on the destination address specified in the fixed
   header), then further handling of the packet is done as described in
   Section 7.


6.2.2 Strict Next Hop


   If the next element in the Forwarding Directions is a Strict Hop,
   then the router performs a lookup in its FIB (using the "longest
   match" algorithm) using the address specified in the next element as
   an index.  If no matching tuple is found, then further handling of
   the packet is done as described in Section 7.

   If the next hop component of the found tuple specifies an entity that
   shares a common subnetwork with the router, then the router checks
   whether any of the addresses associated with that entity are equal to
   the address specified by the next element in the Forwarding
   Directions.  If that is the case, then the value of the Next Hop
   Pointer field is incremented by 1.

   The address specified by the next hop component of the found tuple is
   placed in the destination address field of the fixed header and the
   packet is then submitted for normal forwarding procedure. If the
   forwarding procedure can not forward the packet (based on the
   destination address specified in the fixed header), then further
   handling of the packet is done as described in Section 7.




6.3 Processing packets with an incomplete ERP route and implicit ERP
Header


   If a router receives a packet with an implicit ERP Header that carry
   an incomplete ERP route, and the destination address in the fixed



Expiration Date April 1995                                     [Page 11]


INTERNET DRAFT                                              October 1994


   header is one of the unicast addresses associated with the router,
   the router extracts from its Flow Label cache an entry identified by
   the Source Address and Flow Label fields of the packet's fixed
   header.

   If the ERP Header associated with the extracted entry is a Level 1
   header and the value of the NextHopPtr field is two less than the
   value of the FwdDirLen field, or if the Header is not a Level 1
   header and the value of the NextHopPtr field is one less than the
   value of the FwdDirLen field, the router follows the procedures
   specified in Section 6.1.

   Otherwise, the router extracts the next element from the Forwarding
   Directions (the next element is the element that immediately follows
   the current element in the Forwarding Directions) and the
   strict/loose indicator associated with the next element (the
   indicator is extracted from the Strict/Loose Bit Mask field). Further
   processing depends on whether the next element specifies a Loose Hop
   (see Section 6.3.1) or a Strict Hop (see Section 6.3.2).


6.3.1 Loose Next Hop


   If the next element in the Forwarding Directions is a Loose Hop, then
   the router places the address, as specified in the next element, in
   the destination address field of the fixed header, and submits the
   packet for normal forwarding procedure. If the forwarding procedure
   can not forward the packet (based on the destination address
   specified in the fixed header), then further handling of the packet
   is done as described in Section 7.


6.3.2 Strict Next Hop


   If the next element in the Forwarding Directions is a Strict Hop,
   then the router performs a lookup in its FIB (using the "longest
   match" algorithm) using the address specified in the next element as
   an index.  If no matching tuple is found, then further handling of
   the packet is done as described in Section 7.

   If the next hop component of the found tuple specifies an entity that
   shares a common subnetwork with the router, then the router checks
   whether any of the addresses associated with that entity are equal to
   the address specified by the next element in the Forwarding
   Directions.

   The address specified by the next hop component of the found tuple is
   placed in the destination address field of the fixed header and the
   packet is then submitted for normal forwarding procedure. If the
   forwarding procedure can not forward the packet (based on the
   destination address specified in the fixed header), then further
   handling of the packet is done as described in Section 7.



Expiration Date April 1995                                     [Page 12]


INTERNET DRAFT                                              October 1994


6.4 Processing packets with Setup Request


   If a router receives a packet with an ERP route and the packet
   carries a setup request, then in addition to the procedures described
   in Sections 6.1 and 6.2 (including 6.2.1 and 6.2.2), the router
   performs the following procedures.

   If the router is willing to accommodate the setup request, then the
   router constructs a triplet <Source Address, Flow Label, ERP Header>,
   where the value of the first element (Source Address) is set to the
   value of the Source Address from the fixed header, the value of the
   second element (Flow Label) is set to the value of the Flow Label
   field of the fixed header, and the value of the third element is set
   to the value of all the ERP Headers carried by the packet.  The
   router then checks whether the triplet is present in its Flow Label
   cache, and if not then adds to the cache an entry that contains the
   triplet.

   If the router is unwilling to accommodate the setup request, and Must
   Report Error flag is set to 1, then the router generates an ICMP
   message to the entity depicted by the source address in the fixed
   header indicating that the setup request can not be accommodated.

   The rules by which a router decides whether to accommodate a setup
   request are outside the scope of this document.


7 Error Handling


   If the MRE is set to 1, then the router generates an ICMP error
   message back to the entity specified in the source address of the
   fixed header.  If the MRE is set to 0, then no ICMP error messages
   should be generated.

   If the Behavior on Failure of Forwarding Directions bit in the
   current ERP Header of a packet is set to 1, and the Header carries a
   non-empty ERP route then the packet is processed as follows.  If the
   current ERP Header is a Level 1 header, then the value of the
   NextHopPtr field is set to one less than the value of the FwdDirLen
   field.  Otherwise, the value of the NextHopPtr field is set to the
   value of the FwdDirLen field. The packet is then processed as
   described in Section 6.1.

   If the Behavior on Failure of Forwarding Directions bit in the
   current ERP Header of a packet is set to 1, the Header carries an
   empty ERP route, and the Header is not a level 1 Header, then the
   packet is processed as described in Section 6.1.  If the Behavior on
   Failure of Forwarding Directions bit in the current ERP Header of a
   packet is set to 1, the Header carries an empty ERP route, and the
   Header is a level 1 Header, then the packet is discarded.

   If the Behavior on Failure of Forwarding Directions bit in the



Expiration Date April 1995                                     [Page 13]


INTERNET DRAFT                                              October 1994


   current ERP Header of a packet is set to 0, then the packet is
   discarded.


8 Path MTU Handling



9. ERP ICMP Message Format


   [Need to define format of an ICMP message associated with ERP.  The
   message should be able to carry one of the following indications:

   (a) Setup Request completed

   (b) Setup Request refused

   (c) Can't satisfy Forwarding Directions

   (d) No Flow Label cache entry found

   In addition to the indication the message should carry as much of the
   original packet as possible, but at the minimum the fixed header and
   all the ERP Headers.]



10. Authors' Address


   Peter Ford
   Los Alamos National Laboratory
   Los Alamos
   Phone: (505) 665-0058
   e-mail: peter@goshawk.lanl.gov

   Tony Li
   cisco Systems, Inc.
   1525 O'Brien Drive
   Menlo Park, CA 94025
   email: tli@cisco.com

   Yakov Rekhter
   T.J. Watson Research Center IBM Corporation
   P.O. Box 704
   Yorktown Heights, NY 10598
   Phone:  (914) 784-7361
   email:  yakov@watson.ibm.com


7. References





Expiration Date April 1995                                     [Page 14]


INTERNET DRAFT                                              October 1994


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


[SDRP] Estrin, D., Li, T. , Rekhter, Y., and Varadhan K., "Source Demand
Routing: Packet Format and Forwarding Specification (Version 1)"   22
March, 1994. Internet Draft.



[SDRP-SETUP] Estrin, D., Zappala, D., Li, T., "Source Demand Routing:
Route Setup", June 1993, Internet Draft.


[SIPP-16] Deering, S., "Simple Internet Protocol Plus (SIPP)
Specification (128 bit address version)". 17 July 1994. Internet Draft.









































Expiration Date April 1995                                     [Page 15]