Internet Draft                                            Daniel Zappala
Expiration: January 1999                            University of Oregon
File: draft-ietf-rsvp-routing-02.txt                           Jeff Kann
                                                                 USC/ISI



                   RSRR: A Routing Interface For RSVP



                              1 July 1998

Status of 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
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   To view the entire list of current Internet-Drafts, please check
   the "1id-abstracts.txt" listing contained in the Internet-Drafts
   Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
   (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au
   (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu
   (US West Coast).

Abstract

   This memo describes version 2 of RSRR, a routing interface for RSVP.
   By using this interface, RSVP may obtain forwarding information from
   routers and use it to place reservation state within the network.
   Version 1 of this interface was designed primarily for RSVP
   interaction with IPv4 multicast routing protocols.  Version 2 adds
   support for IPv4 unicast as well as IPv6 unicast and multicast
   routing.  A backwards compatibility mechanism is provided.











Zappala, Kann           Expiration: January 1999                [Page 1]


Internet Draft                    RSRR                         June 1998


1. Introduction

   This document describes Routing Support for Resource Reservations
   (RSRR), an abstract interface by which RSVP [5] may obtain routing
   information.  RSVP is a resource reservation protocol used by hosts
   to request Quality of Service from the network.  RSVP does not
   include a routing protocol; instead it may use any underlying routing
   protocol(s) to determine where it should carry resource reservations.
   The RSRR interface provides RSVP with forwarding table entries and
   notifies it when those entries change.  This document elaborates on
   the routing support described in the RSVP spec [2].

   This document describes version 2 of RSRR.  In addition to IPv4
   multicast routing protocols, which were covered extensively in the
   version 1 document, version 2 explicitly addresses IPv4 unicast
   routing and adds support for IPv6 unicast and multicast routing.
   Version 2, like version 1, also provides RSVP with information on the
   interfaces known to RSRR.  Finally, version 2 includes a backwards-
   compatibility mechanism that allows RSVP to determine the version of
   RSRR that a routing daemon is using.

   Section 2 gives an overview of RSVP functionality and its
   requirements for routing and kernel support.  Section 3 describes
   RSRR as an abstract service interface.  Section 4 describes how this
   interface might typically be implemented within RSVP.  Appendix A
   gives a specification of RSRR used for communication between RSVP and
   routing daemons. Appendix B lists the RSRR version 1 specification,
   which version 2 implementations must also support.  This is included
   for reference, since some implementations may support multiple
   versions.  Appendix C lists the implementation status of RSRR.


2. RSVP Overview and RSRR Motivation

   Using RSVP, sources send "Path" messages hop-by-hop to the
   destination (Figure 1a).  Each router uses the "Path" message to
   create reverse-path routing state and forwards the message toward the
   destination.  Receivers send "Resv" messages toward sources,
   following the reverse-path routing state (Figure 1b).  Each router
   uses the "Resv" message to query admission control to accept or
   reject the embedded reservation request.  Reservation messages
   utilize various "styles" to allow sharing among different senders.
   For example, the shared-explicit style targets a reservation at a
   list of senders, and the wildcard style targets a reservation at all
   upstream senders (Figure 1c).






Zappala, Kann           Expiration: January 1999                [Page 2]


Internet Draft                    RSRR                         June 1998


         Sender                Sender               S2     S1    S3
           -                     -                  -      -     -
          | |                   | |                | |    | |   | |
           - P                   - R                -      -     -
           | P                   | R                R \   / R   / R
           - P                   - R                 R  -  R  -  R
          | |                   | |                    | |   | |
         P - P                 R - R                    -     -
        P / \ P               R /  \ R                 R \   / R
       P /    -              R /    -                   R  -  R
      P /    | |            R /    | |                    | |
     P /    P -  P         R /    R -  R                   - R
    P /    P / \  P       R /    R / \  R                  | R
    -      -     -         -      -   -                    - R
   | |    | |   | |       | |    | | | |                  | |
    -      -     -         -      -   -                    -
    R1     R2    R3        R1     R2  R3                Receiver


   (a) PATH message   (b) RESV message merged    (c) RESV message branches
       multicasted        as it follows path         as it travels toward
       downstream         state upstream             multiple senders

                          Figure 1: RSVP Overview


   With proper operating system support, a router could pull an RSVP "
   Path" message out of the forwarding engine, do RSVP processing, and
   then resume forwarding the message.  However, multicast "Path"
   messages have unique requirements.  After RSVP performs its
   processing, it may need to send a different copy of the "Path"
   message out each outgoing interface.  Normally, IP multicast
   replicates datagrams and sends identical copies out each of the
   outgoing interfaces.  Thus, RSVP does not use regular IP multicast
   forwarding and instead needs to replicate the "Path" messages on its
   own and simulate its own multicast forwarding.

   To accomplish this objective, RSVP needs to obtain forwarding table
   entries from the routing protocol; this is what the RSRR interface is
   for.  In addition, the operating system must support several basic
   functions for RSVP.  First, RSVP needs to know which interface a
   "Path" message arrives on.  This allows RSVP to suppress forwarding
   of multicast packets that routing has determined have arrived via the
   wrong incoming interface. It also needs to receive all multicast
   "Path" messages, even if they arrive on the wrong interface; this
   allows RSVP processing to occur for local receivers.  Second, RSVP
   must be allowed to insert the original source address of the "Path"
   message in its IP header This allows the "Path" message to be



Zappala, Kann           Expiration: January 1999                [Page 3]


Internet Draft                    RSRR                         June 1998


   processed by downstream routers as if it came from the original
   source.  Finally, when RSVP sends a multicast packet, it expects that
   it can tell the operating system to forward the packet directly over
   a particular interface, without performing any of the usual multicast
   routing checks and without looping the packet back to other
   interfaces.  These operating system functions, combined with RSRR,
   allow RSVP to forward distinct packets hop-by-hop over each link in a
   multicast path between a source and destination(s).

   When obtaining forwarding table entries from RSRR, RSVP also needs to
   know whether the multicast routing protocol is using sender-rooted
   (e.g shortest-path) trees or shared trees (e.g. with the PIM [3] or
   CBT [1] multicast routing protocols).  For shared trees, RSVP only
   needs to obtain and store one route for all senders to the group.  In
   addition, RSVP must mimic the IP multicast forwarding model.  This
   means that for bidirectional shared trees, a packet can be accepted
   over any interface and is forwarded over all other interfaces listed
   in the route.

   When running over shared trees, RSVP can also significantly decrease
   the size of the "scope" object in wildcard filter "Resv" messages.
   RSVP uses a "scope" object, listing all upstream senders, to prevent
   looping of wildcard filter "Resv" messages [4] (Figure 2a).  For
   shared trees, RSVP can use a " scope" object that includes a wildcard
   address, greatly reducing the size of the "Resv" message.  A "Resv"
   message with a wildcard address would follow shared tree state but
   never sender tree state (Figure 2b).
























Zappala, Kann           Expiration: January 1999                [Page 4]


Internet Draft                    RSRR                         June 1998


               S1     S2      S3               S1     S2      S3
               -      -       -                 -      -       -
              | |    | |     | |               | |    | |     | |
               -      -       -                 -      -       -
            R    \   / R     /  R            R    \   / R     /  R
             R[1]  -  R[2]  -  R[3]           R[*]  -  R[*]  -  R[3]
                  | |      | |                     | |      | |
                   -        -                       -        -
              R      \     / R                  R    \     / R
               R[1,2]   -   R[3]                 R[*]   -   R[3]
                       | |                             | |
                        - R                             - R
                        | R[1,2,3]                      | R[*,3]
                        - R                             - R
                       | |                             | |
                        -                               -
                     Receiver                        Receiver

           (a) wildcard RESV message       (b) wildcard RESV message with
               carrying scope objects          senders #1,2 on a shared tree

           Figure 2: The "Scope" Object in Wildcard Reservations




3. Abstract Service Interface

   We describe RSRR as an abstract service interface because it may be
   realized in several different ways.  For example, some
   implementations may use system calls if the operating system can
   supply the functionality of RSRR.  In a typical implementation, RSVP
   might use the RSRR abstraction as the basis of an interface to a
   routing support module (see Section 4), in addition to using the RSRR
   protocol (see Appendix A) to communicate with multicast routing
   protocol daemons.

   To achieve this generality, the following interface description uses
   the term "RSRR client" to indicate the entity requesting routes and
   the term "RSRR server" to indicate the responding entity.  The client
   is typically the RSVP daemon and the server is typically a routing
   protocol daemon or the operating system.

   The first thing an RSRR client must do is determine the set of
   network interfaces the RSRR server is using.  This allows the client
   to make sense of the routes it acquires from the server.  RSRR
   represents network interfaces -- which may be physical interfaces,
   tunnels, or any other operating system mechanism -- as "virtual



Zappala, Kann           Expiration: January 1999                [Page 5]


Internet Draft                    RSRR                         June 1998


   interfaces" or "vifs".  A vif has the following attributes:


     id             a unique identifier,

     threshold      a TTL threshold,

     prefix         a CIDR prefix,

     status         a bitmask status vector,

     family         the address family,

     length         the address length, and

     local_addr     a local address.


This information represents what the RSRR client (e.g. RSVP) needs to
simulate IP multicast forwarding.  IP multicast uses the "TTL threshold"
to control the scope of packets, checking it on a per-packet basis.  A
newer form of administrative scoping is enforced on a per-route basis,
so it is reflected in the routes themselves and is thus transparent to
the RSRR client.  The server may also define a "status" vector for any
other information it needs to pass to the client.

The RSRR client obtains the set of network interfaces by issuing an
Interface Query of the form:

      Interface_Query().

The server responds with an Interface Reply that includes the number of
vifs and a list of the vifs with their attributes as defined above:

      Interface_Reply(num, vif_list).

The RSRR server automatically notifies the client if the set of inter-
faces or their status changes.  Notification is in the form of a sponta-
neous Interface Reply.

Once the RSRR client has received the Initial Reply, it can begin
requesting routes by sending a Route Query for a source-destination
pair:

      Route_Query(source, destination, notification).

The RSRR server responds by sending a Route Reply:




Zappala, Kann           Expiration: January 1999                [Page 6]


Internet Draft                    RSRR                         June 1998


      Route_Reply(source, destination, notification, incoming_vif,
     outgoing_vif_bitmask, tree_type).

Multicast routes consist of an "incoming vif" and an "outgoing vif bit-
mask".  Unicast routes consist of a single bit set in the "outgoing vif
bitmask" to indicate the next hop; the "incoming vif" is always zero and
should be ignored by the client.  In addition, for unicast queries and
replies the "source" address is zero.

By setting the "notification" flag in the Route Query, the RSRR client
may ask the server to notify it when a route changes.  A multicast route
change is a change in the "incoming vif" or "outgoing vif bitmask", i.e.
joins, prunes, link failures and link recoveries are all included.  A
unicast route change is a change in the "outgoing vif bitmask".  If the
server is able to provide this service, it sets a corresponding "notifi-
cation" flag in the Route Reply, otherwise it clears the flag.  If the
client receives a Route Reply with the "notification" flag set, it can
assume that routing will notify it -- via a spontaneous Route Reply --
when the route for the source-destination pair changes.  In the mean-
time, the RSRR client can assume the route has not changed.  If the RSRR
server can not support route change notification, then the client must
poll routing for forwarding table entries in order to learn of route
changes.

The "tree type" flag in the Route Reply is used only for multicast
routes.  It has one of the following values:

o    sender

o    unidirectional shared

o    hybrid unidirectional shared

o    bidirectional shared

o    hybrid bidirectional shared

The tree type indicates how forwarding occurs on the tree and thus how
to interpret the route contained in the Route Reply.  The "sender" value
indicates that a separate multicast tree is constructed for each sender.
Typically this is a shortest-path tree, but it may also be built using
QoS routing, alternate paths, or other methods.  In this case, packets
must arrive via the "incoming vif" and are then sent on all of the vifs
listed in the "outgoing vif bitmask".  A " unidirectional shared" tree
is constructed for the entire group, but data flows in only one direc-
tion -- from the root of the tree down to all group members.  The for-
warding model for the "unidirectional shared" tree is the same as for a
sender tree; the difference is that senders transmit data to the root of



Zappala, Kann           Expiration: January 1999                [Page 7]


Internet Draft                    RSRR                         June 1998


the tree along separate branches. At routers where these branches are
located, a Route Reply with the "sender" tree type will be returned.  A
"bidirectional shared" tree allows data to be sent by any group member.
An incoming packet may arrive on any interface, and it is sent on all
remaining vifs listed in the "outgoing vif bitmask".  For this tree
type, the " incoming vif" is set to zero and should be ignored.

Hybrid multicast trees are those where some senders use a shared tree
and others use a sender tree.  If the tree type is set to one of the
hybrid types, this indicates that the sender listed in the Route Reply
is using the shared tree given by the route.  Senders that are using a
sender tree will have a "sender" tree type.  Note that for hybrid trees
the RSRR client must issue queries for each sender in case that sender
is using a separate tree.  This is in contrast to the case where all
senders use a shared tree, in which case the RSRR client does not need
to issue separate Route Queries for each of them.

Hybrid trees have the further consequence that senders can change tree
types over time.  Changes of this sort are handled by route change noti-
fication.  For example, if a sender on a hybrid shared tree later
switches to a sender-based tree, the RSRR server will send an updated
Route Reply with a new route and a new tree type.  Likewise, if all
senders are using a shared tree, but later one switches to a shortest-
path tree, the RSRR server will send two Route Replies -- one for the
shared tree that changes the tree type to hybrid, and one for the sender
that is now using a sender tree.


4. Implementing RSRR within RSVP

   A typical RSVP implementation could use the RSRR abstraction to build
   a routing support module that handles interface configuration and
   routing queries for IPv4 and IPv6 unicast and multicast routing
   information.  Figure 3 shows how the routing support module would
   interact with RSVP and other router components.  The module has three
   interfaces, all of which are modeled on the RSRR abstract service
   interface.  First, RSVP's core processing routines request interface
   configuration and forwarding table entries from the routing support
   module.  The module then collects this information from several
   sources.  It uses operating system calls when the kernel is able to
   provide the required information.  Otherwise, it uses the RSRR Proto-
   col to collect this information from a routing protocol daemon.
   Appendix A specifies the RSRR protocol for interprocess communica-
   tion.  For example, ISI's current implementation gets unicast inter-
   faces and routes from the kernel, while it gets multicast interfaces
   and routes using the RSRR protocol.





Zappala, Kann           Expiration: January 1999                [Page 8]


Internet Draft                    RSRR                         June 1998


              RSVP Daemon
              ___________
             | Core RSVP |
             | Processing|
             | Routines  |
             |-----------|
             |    ^ Routing Support       Routing Daemon
             |    | Interface       (IPv4/IPv6 Unicast/Multicast)
             |    v      |          ___________________________
             | --------- |  RSRR    | ______     |             |
             | |Routing|<---------->||      |    |  Core       |
             | |Support| | Protocol || RSRR |<-->|  Routing    |
             | |Module | |          || Task |    |  Routines   |
             | |_______| |          ||______|    |             |
             |___________|          |____________|_____________|
                   ^                                   ^
                   | Operating System Calls            |
                   |                                   |
                   v                                   v
           =======================================================
                  Kernel

                   Figure 3: RSVP Routing Support Module



5. Conclusion

   Using RSRR version 2 and the routing support module has made it eas-
   ier to upgrade RSVP to include IPv6 support by packaging interface
   configuration and route acquisition for IPv4 and IPv6 unicast and
   multicast routing into one module.

   The impact of RSRR on a routing daemon is low.  The daemon only has
   to handle RSRR protocol queries when an RSVP session is created and
   when a route for an RSVP session changes. The daemon incurs very lit-
   tle cost for providing route change notification; essentially it only
   has to tag the subset of its routes for which RSVP is interested in
   receiving notification.  This amounts to keeping an extra bit for
   each routing entry.  Furthermore, the RSRR services can be provided
   independently by each router, so its implementation is not subject to
   any interoperability constraints.


6. Acknowledgments

   We would like to thank Bob Braden, Deborah Estrin, Bill Fenner, Scott
   Shenker, and Lixia Zhang for their help with this work.



Zappala, Kann           Expiration: January 1999                [Page 9]


Internet Draft                    RSRR                         June 1998


References

[1] A. J. Ballardie, P.F. Francis, and J. Crowcroft, "Core Based Trees",
    In "ACM SIGCOMM", August 1993.

[2] R. Braden, L. Zhang, S. Berson, S. Herzog, and S. Jamin, "Resource
    ReSerVation Protocol (RSVP) - Version 1 Functional Specification",
    work in progress, March 1997.

[3] Stephen Deering, Deborah Estrin, Dino Farinacci, Van Jacobson,
    Ching-Gung Liu, and Liming Wei, "An Architecture for Wide-Area Mul-
    ticast Routing", In "ACM SIGCOMM", August 1994.

[4] Daniel Zappala, "RSVP Loop Prevention for Wildcard Reservations",
    Work in Progress, February 1996.

[5] Lixia Zhang, Steve Deering, Deborah Estrin, Scott Shenker, and
    Daniel Zappala, "RSVP: A New Resource ReSerVation Protocol", "IEEE
    Network", September 1993.
































Zappala, Kann           Expiration: January 1999               [Page 10]


Internet Draft                    RSRR                         June 1998


Appendices

A. RSRR Protocol Specification

   This section details the RSRR version 2 messages format to be
   exchanged between RSVP and a routing protocol.

   RSVP would like to use version 2 of RSRR to communicate with routing
   protocols, but fall back to version 1 if routing does not support
   version 2.  One way to do this would be to issue an Interface Query
   for version 2 and wait to see if routing responds.  If routing is
   using version 1 this message will be dropped and, after a timeout,
   RSVP could send a version 1 query.

   However, to avoid this delay, we have included a mechanism in RSRR
   for backwards compatibility.  RSVP issues an Interface Query using
   version 1, but sets the Num field to the maximum version of RSRR that
   RSVP supports.  The routing protocol, if it supports only version 1,
   will ignore this field and respond with an Interface Reply for ver-
   sion 1.  A routing protocol supporting version 2 and higher should
   examine this field and respond using a version equal to the minimum
   of Num and the maximum supported version of RSRR.  This mechanism
   allows RSVP and routing to communicate using the maximum version of
   RSRR that they both support.  Note that routing protocols implement-
   ing version 2 or higher should also be able to support queries for
   lower versions of RSRR.  For reference, the version 1 RSRR specifica-
   tion is listed in Appendix A.


A.1 RSRR message format

   An RSRR message consists of:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |...                                                            |
   |                                                               |

   Version
           Routing Support for Resource Reservations Version.  This
           document specifies version 2 of RSRR.

   Type
           This document defines four message codes for RSRR:

                   1 = Interface Query
                   2 = Interface Reply



Zappala, Kann           Expiration: January 1999               [Page 11]


Internet Draft                    RSRR                         June 1998


                   3 = Route Query
                   4 = Route Reply

   The rest of the message is defined separately for each RSRR code.


A.2 Interface Query

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version
           1   For compatibility reasons.

   Type
           1 = Interface Query

   Flags
           A bit vector that specifies what RSVP requests, currently
           only Notification bit is defined.

           +-+-+-+-+-+-+-+-+
           |             |N|
           +-+-+-+-+-+-+-+-+

           N = 1 if RSVP requests notification of interfaces changes

   Num
           Maximum supported RSRR version





















Zappala, Kann           Expiration: January 1999               [Page 12]


Internet Draft                    RSRR                         June 1998


A.3 Interface Reply

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif ID-1      |Vif Threshold-1| Prefix        | Vif Status-1  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Address Family                | Address Length                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif Local Address-1                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |...                                                            |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif ID-N      |Vif Threshold-N| Prefix        | Vif Status-N  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Address Family                | Address Length                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif Local Address-N                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version
           2

   Type
           2 = Interface Reply

   Flags
           1 = Error occurred during initial query, 0 otherwise

   Num
           Number of vifs being reported

   Vif ID-N
           ID for the Nth vif

   Vif Threshold-N
           The threshold ttl for the vif; an outgoing message must have a
           ttl greater than the threshold to be sent

   Prefix
           The CIDR prefix for the address

   Vif Status-N
           A bit vector representing the vif status:

           +-+-+-+-+-+-+-+-+
           |       |N|P|U|M|



Zappala, Kann           Expiration: January 1999               [Page 13]


Internet Draft                    RSRR                         June 1998


           +-+-+-+-+-+-+-+-+

           N = 1 if notification will be made in case of vif changes.
           P = 1 if vif is physical interface, 0 if it is virtual.
           U = 1 if vif is unicast-disabled, 0 if it is enabled.
           M = 1 if vif is multicast-disabled, 0 if it is enabled.

           The rest of the field is transmitted as zeroes.

   Address Family
           The address family of the following address.

   Address Length
           The length of the following address in octets.

   Vif Local Address-N
           The local address of the physical interface corresponding to the
           vif


A.4 Route Query

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Address Family                | Address Length                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Destination Address                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Source Address                                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Query Identifier                                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version
           2

   Type
           3 = Route Query

   Flags
           Currently only the Notification Bit is defined:

           +-+-+-+-+-+-+-+-+
           |             |N|
           +-+-+-+-+-+-+-+-+

           N = 1 if RSVP requests route change notification for this query,



Zappala, Kann           Expiration: January 1999               [Page 14]


Internet Draft                    RSRR                         June 1998


           0 otherwise.

           The rest of the field is transmitted as zeroes.

   Num
           0

   Address Family
           The address family of the following address.

   Address Length
           The length of the following address in octets.

   Destination Address
           Destination address being queried (unicast or multicast)

   Source Address
           Source address being queried (null for unicast)

   Query Identifier
           Identifier used by reservation protocol






























Zappala, Kann           Expiration: January 1999               [Page 15]


Internet Draft                    RSRR                         June 1998


A.5 Route Reply

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Address Family                | Address Length                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Destination Address                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Source Address                                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Query Identifier                                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Incoming Vif  | Tree Type     | Reserved                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                                                               +
   |                                                               |
   +                                                               +
   |                Outgoing Vif Bitmask                           |
   +                                                               +
   |                                                               |
   +                                                               +
   |                                                               |
   +                                                               +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version
           2

   Type
           4 = Route Reply

   Flags
           The currently defined flags are:

           +-+-+-+-+-+-+-+-+
           |           |E|N|
           +-+-+-+-+-+-+-+-+

           N is set if N is set in the corresponding route query and the
           router can perform route change notification for the query.
           Otherwise N is cleared.



Zappala, Kann           Expiration: January 1999               [Page 16]


Internet Draft                    RSRR                         June 1998


           E is set if routing is unable to obtain routing information for
           the route query.  Otherwise E is cleared.

           The rest of the field is transmitted as zeroes.

   Address Family
           The address family of the following address.

   Address Length
           The length of the following address in octets.

   Destination Address
           destination address of query = destination address of reply

   Source Address
           source address of query = source address of reply (null if unicast)

   Query Identifier
           identifier used by reservation protocol, copied from query message

   Incoming Vif
           incoming Vif for (S,G) or default (S,*) if no group-specific
           state; invalid if E bit is set

   Tree Type
           the currently defined values are:

           0       sender tree
           1       unidirectional shared tree
           2       hybrid unidirectional shared tree
           3       bidirectional shared tree
           4       hybrid bidirectional shared tree

   Reserved
           transmitted as 0

   Outgoing Vif Bitmask
           bitmask of outgoing Vifs for (S,G) or default (S,*) if no
           group-specific state; invalid if E bit is set; RSVP
        should handle entire bitmask size or otherwise warn
        user that some routing information may be lost


B. RSRR V1 Protocol Specification







Zappala, Kann           Expiration: January 1999               [Page 17]


Internet Draft                    RSRR                         June 1998


B.1 RSRR V1 Message Format

   An RSRR v1 message consists of:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |...                                                            |
   |                                                               |

   Version
           Routing Support for Resource Reservations Version.  This
           appendix specifies version 1 of RSRR.

   Type
           This appendix defines four message codes for RSRR:

                   1 = Initial Query
                   2 = Initial Reply
                   3 = Route Query
                   4 = Route Reply

   The rest of the message is defined separately for each RSRR code.


B.2 Initial Query

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version as defined above.

   Type
           1 = Initial Query

   Flags, Num
           0













Zappala, Kann           Expiration: January 1999               [Page 18]


Internet Draft                    RSRR                         June 1998


B.3 Initial Reply

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif ID-1      |Vif Threshold-1| Vif Status-1                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif Local Address-1                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |...                                                            |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif ID-N      |Vif Threshold-N| Vif Status-N                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vif Local Address-N                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version as defined above.

   Type
           2 = Initial Reply

   Flags
           0

   Num
           Number of vifs being reported

   Vif ID-N
           ID for the Nth vif

   Vif Threshold-N
           The threshold ttl for the vif; an outgoing message must have a
           ttl greater than the threshold to be sent

   Vif Status-N
           A bit vector representing the vif status.  Currently only
           the Disabled bit is defined:

           +-+-+-+-+-+-+-+-+
           |             |D|
           +-+-+-+-+-+-+-+-+

           D = 1 if vif is administratively disabled, 0 otherwise.

           The rest of the field is transmitted as zeroes.

   Vif Local Address-N



Zappala, Kann           Expiration: January 1999               [Page 19]


Internet Draft                    RSRR                         June 1998


           The local address of the physical interface corresponding to the
           vif


B.4 Route Query

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Destination Address                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Source Address                                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Query Identifier                                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version as defined above

   Type
           3 = Route Query

   Flags
           Currently only the Notification Bit is defined:

           +-+-+-+-+-+-+-+-+
           |             |N|
           +-+-+-+-+-+-+-+-+

           N = 1 if RSVP requests route change notification for this query,
           0 otherwise.

           The rest of the field is transmitted as zeroes.

   Num
           0

   Destination Address
           Group address being queried

   Source Address
           Source address being queried

   Query Identifier
           Identifier used by reservation protocol







Zappala, Kann           Expiration: January 1999               [Page 20]


Internet Draft                    RSRR                         June 1998


B.5 Route Reply

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Version       | Type          | Flags         | Num           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Destination Address                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Source Address                                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Query Identifier                                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Incoming Vif                  |        Reserved               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Outgoing Vif Bitmask                                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Version as defined above.

   Type
           4 = Route Reply

   Flags
           The currently defined flags are:

           +-+-+-+-+-+-+-+-+
           |       | S |E|N|
           +-+-+-+-+-+-+-+-+

           N is set if N is set in the corresponding route query and the
           router can perform route change notification for the query.
           Otherwise N is cleared.

           E is set if routing is unable to obtain routing information for
           the route query.  Otherwise E is cleared.

           S has the binary value 01 if the listed sender is using a shared
           tree, but some other senders for the same destination use sender
           trees.  S has the binary value 10 if all senders for the
           destination use shared trees.  Otherwise, S has the value 00.

           The rest of the field is transmitted as zeroes.

   Destination Address
           group address of query = group address of reply

   Source Address
           source address of query = source address of reply




Zappala, Kann           Expiration: January 1999               [Page 21]


Internet Draft                    RSRR                         June 1998


   Query Identifier
           identifier used by reservation protocol, copied from query message

   Incoming Vif
           incoming Vif for (S,G) or default (S,*) if no group-specific
           state; invalid if E bit is set

   Reserved
           transmitted as 0

   Outgoing Vif Bitmask
           bitmask of outgoing Vifs for (S,G) or default (S,*) if no
           group-specific state; invalid if E bit is set


C. Implementations

   Code supporting RSRR that has been and is being developed includes:

o    ISI's RSVP version 4.2 and Xerox PARC's distribution of
     DVMRP/mrouted version 3.8 support RSRR version 1, minus support for
     shared trees

o    ISI plans to release a future version of RSVP with support for RSRR
     version 2,

o    UO plans to add support for RSRR version 2 to Merit's GateD multi-
     cast version 5, specifically testing shared tree support with IPv4
     PIM sparse mode.  This code should be general enough to support
     other multicast protocols implemented within GateD.

Security Considerations

   Security considerations are not discussed in this memo.

Authors' Addresses

   Daniel Zappala
   Department of Computer and Information Science
   University of Oregon
   Eugene, OR 97403
   EMail: zappala@cs.uoregon.edu

   Jeff Kann
   USC Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, CA 90292
   EMail: kann@isi.edu



Zappala, Kann           Expiration: January 1999               [Page 22]


Internet Draft                    RSRR                         June 1998





















































Zappala, Kann           Expiration: January 1999               [Page 23]