Internet Draft                                            Daniel Zappala
Expiration: May 1997                                             USC/ISI
File: draft-ietf-rsvp-routing-01.txt



                   RSRR: A Routing Interface For RSVP



                           November 26, 1996

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 learn the current status of any Internet-Draft, please check the
   "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
   Directories on ds.internic.net (US East Coast), nic.nordu.net
   (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
   Rim).

Abstract

   This memo describes a routing interface for RSVP.  The interface
   allows RSVP to request information and services from routing in the
   form of an asynchronous query-reply protocol.  The primary addition
   to this version of the document is the inclusion of extensions for
   shared trees appropriate to PIM and CBT.  Aside from these
   extensions, the rest of the interface described in this document is
   implemented in ISI's implementation of RSVP and Xerox PARC's
   distribution of DVMRP.











Zappala                   Expiration: May 1997                  [Page 1]


Internet Draft                    RSRR                     November 1996


1. Introduction

   This document describes an asynchronous routing interface by which
   RSVP [6] may request forwarding information at each router in the
   network.  We call this interface Routing Support for Resource
   Reservations (RSRR), because it may conceivably be used by other
   resource reservation protocols.  The primary addition to this version
   of the document is the inclusion of extensions for shared trees
   appropriate to PIM [3] and CBT [1].  Aside from these extensions, the
   rest of the interface described in this document is implemented in
   ISI's implementation of RSVP and Xerox PARC's distribution of DVMRP
   [4].

   This document is written from the perspective of multicast routing;
   however, the interface can also be used by RSVP to interact with a
   unicast routing protocol.  This document elaborates on the
   description contained in the RSVP spec [2].  Some familiarity with
   RSVP is assumed.

   Section 2 presents a brief overview of RSVP functionality and
   describes how RSVP uses route queries and route change notification.
   Section 3 details a general interface model that routing protocols
   can use to give configuration and forwarding information to RSVP.
   Section 4 outlines the particular queries and responses that comprise
   the routing interface, focusing on how RSVP uses this interface.
   Finally, Section 5 details the specification of the interface
   messages.

2. RSVP Overview

   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                   Expiration: May 1997                  [Page 2]


Internet Draft                    RSRR                     November 1996




         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


   RSVP does not use its own routing protocol; instead it uses
   underlying routing protocols to determine where it should carry
   resource reservations.  In keeping with this modularity, we have
   designed the RSR interface, by which RSVP requests routing services
   from various routing protocols (Figure 2).  Using this interface,
   RSVP may acquire routing entries to allow it to send control messages
   hop-by-hop, as well as request "route change notification".
















Zappala                   Expiration: May 1997                  [Page 3]


Internet Draft                    RSRR                     November 1996



                                    RSRR
                                  Interface
                        -----------       --------
                        | Routing |<----->| RSVP |
                        -----------       --------
                             ^               ^
                             |               |
                             |               |
                             v               v
                      ===============================>

                         Figure 2: RSRR Interface



   RSVP acquires multicast routing entries by sending "route queries" to
   the routing protocol.  RSVP uses the routing entries to simulate the
   multicast of "PATH" messages.  Normally, an IP multicast packet sent
   out one interface is looped back and sent out the other interfaces of
   a router.  However, RSVP needs to send a different copy of a "PATH"
   message out each outgoing interface.  Thus, rather than relying on IP
   multicast, RSVP simulates its own multicast forwarding so that it can
   specify a single interface to send a multicast packet, without any
   loop back.

   When RSVP acquires routing entries, it may also ask routing to notify
   it when a particular route changes.  RSVP uses route change
   notification so that it can quickly adapt its reservations to changes
   in the route between a source and destination.  For multicast
   destinations, a route change consists of any local change in the
   multicast tree for a source-group pair, including prunes and grafts
   as well as routing changes due to failed or recovered links.  In all
   of these cases, RSVP adapts to route changes by re-sending "Path" or
   "Resv" messages where needed.  If routing can not support route
   change notification, then RSVP must poll routing for route entries in
   order to adapt to route changes.

3. RSRR Interface Abstraction

   Because RSVP must learn about routing entries from a variety of
   different routing protocols, we have adopted portions of the DVMRP
   interface abstraction [4] as the means by which RSVP can communicate
   with all routing protocols.  A routing entry for a source-destination
   pair consists of an incoming virtual interface (or vif) and a set of
   outgoing virtual interfaces.  A virtual interface is simply a number
   that routing creates to refer to each of the interfaces (or virtual
   interfaces) it uses to send and receive packets on the router.  Note



Zappala                   Expiration: May 1997                  [Page 4]


Internet Draft                    RSRR                     November 1996


   that the implementation of the virtual interface is hidden from RSVP;
   whether the interface is a real interface, a pseudo-device, or a
   tunnel is irrelevant.

   When RSVP receives a packet, it expects the forwarding engine to tell
   it which virtual interface the packet arrived on.  This allows RSVP
   to suppress forwarding of packets that routing has determined have
   arrived via the wrong incoming virtual interface, while still
   allowing local processing. When RSVP sends a packet, it expects that
   it can tell the forwarding engine to forward the packet directly over
   a particular vif, without performing any of the forwarding engine's
   usual routing checks or lookups.  Together, these functions allow
   RSVP to forward distinct packets hop-by-hop over each link in a
   unicast or multicast path between a source and destination(s).

   The RSVP routing model defines a virtual interface using the
   following attributes:

   id             a unique identifier,

   threshold      a TTL threshold,

   status         a bitmask status vector, and

   local_addr     a local address.

   RSVP uses the TTL threshold to control the scope of a control
   message.  The use of administrative scoping (as with DVMRP) by a
   routing protocol will affect the forwarding information given to
   RSVP, but its implementation is transparent to RSVP.  The status
   vector currently only defines whether the virtual interface has been
   administratively disabled.

4. RSRR Messages

   Before RSVP can obtain routing entries, it must first discover which
   virtual interfaces (vifs) routing is using.  It does this by issuing
   an Initial Query:

                             Initial_Query().

   Routing responds with an Initial Reply that includes the number of
   vifs and a list of vifs and their attributes as defined by the RSVP
   routing model:

                       Initial_Reply(num,vif_list).

   Once RSVP has received the Initial Reply, it can begin requesting



Zappala                   Expiration: May 1997                  [Page 5]


Internet Draft                    RSRR                     November 1996


   routing entries by sending a Route Query for a source-destination
   pair:

                     Route_Query(source,destination).

   Routing responds by sending a Route Reply that includes the incoming
   vif and an outgoing vif bitmask:

    Route_Reply(source,destination,incoming_vif,outgoing_vif_bitmask).


   RSVP can request notification of route changes by sending a Route
   Query with an additional notification flag:

              Route_Query(source,destination,notification).

   By setting the notification flag in the query, RSVP requests that
   routing provide route change notification.  If routing is able to
   provide this service, it sets a corresponding notification flag in
   the Route Reply, otherwise it clears the flag.  If RSVP receives a
   Route Reply with the notification bit set, it can assume that routing
   will notify it -- via a spontaneous Route Reply -- when the routing
   entry for the source-destination pair changes.  In the meantime, RSVP
   can use the routing entry indefinitely.

   Routing incurs very little cost for providing route change
   notification; essentially it only has to tag the subset of its
   routing entries for which RSVP is interested in receiving
   notification.  This amounts to keeping an extra bit for each routing
   entry.  Since this service can be provided independently by each
   router, its implementation is not subject to any interoperability
   constraints.

   A routing protocol that uses shared trees (such as PIM[3] or CBT[1])
   can help RSVP to 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 [5]
   (Figure 3a).  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 3b).  Routing can
   indicate a particular sender is using a shared tree by setting the
   shared flag in a Route Reply:

   Route_Reply(source,destination,incoming_vif,outgoing_vif_bitmask,shared).

   If at some later point this sender switches to a sender-based tree,
   routing can send an updated Route Reply with this flag cleared.



Zappala                   Expiration: May 1997                  [Page 6]


Internet Draft                    RSRR                     November 1996




               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 3: The Scope Object in Wildcard Reservations



   A routing protocol that uses shared trees can also help reduce the
   amount of message passing between RSVP and routing.  RSVP normally
   sends a separate Route Query for every active source in a group.  For
   a shared tree, RSVP only needs to send one query, since all the
   routing entries for a given destination will be the same.  Routing
   can indicate that "all" senders are using a shared tree by setting
   the all-shared flag:

   Route_Reply(source,destination,incoming_vif,outgoing_vif_bitmask,all_shared).

   If, at some later point, a sender switches to a sender-based tree
   (i.e. with PIM), then routing can send an updated Route Reply with
   this flag cleared.

5. RSRR Specification

   This section details the format of RSRR messages received and sent by
   a routing protocol.






Zappala                   Expiration: May 1997                  [Page 7]


Internet Draft                    RSRR                     November 1996


   5.1 RSRR message format

      An RSRR message consists of:

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

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

      Type
              This document 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.

   5.2 Initial Query

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

      Version as defined above.

      Type
              1 = Initial Query

      Flags, Num
              0














Zappala                   Expiration: May 1997                  [Page 8]


Internet Draft                    RSRR                     November 1996


   5.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                   Expiration: May 1997                  [Page 9]


Internet Draft                    RSRR                     November 1996


              The local address of the physical interface corresponding to the
              vif

   5.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                   Expiration: May 1997                 [Page 10]


Internet Draft                    RSRR                     November 1996


   5.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                   Expiration: May 1997                 [Page 11]


Internet Draft                    RSRR                     November 1996


      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

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                   Expiration: May 1997                 [Page 12]


Internet Draft                    RSRR                     November 1996


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, May 1996.

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

[4] D. Waitzman, C. Partridge, and S. Deering, "Distance Vector
    Multicast Routing Protocol", RFC 1075, November 1988.

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

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



Security Considerations

   Security considerations are not discussed in this memo.

Author's Address

   Daniel Zappala
   USC Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, CA 90292
   EMail: daniel@isi.edu















Zappala                   Expiration: May 1997                 [Page 13]