Internet Draft                                                  L. Zhang
Expires: January 1995                                               PARC
File: draft-ietf-rsvp-spec-03.txt                              R. Braden
                                                                     ISI
                                                               D. Estrin
                                                                     ISI
                                                               S. Herzog
                                                                     ISI
                                                                S. Jamin
                                                                     USC

                Resource ReSerVation Protocol (RSVP) --

                   Version 1 Functional Specification




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 version 1 of RSVP, a resource reservation setup
   protocol designed for an integrated services Internet.  RSVP provides
   receiver-initiated setup of resource reservations for multicast or
   unicast data flows, with good scaling and robustness properties.









Zhang, Braden et al      Expires: January 1995                  [Page 1]


Internet Draft             RSVP Specification                  July 1994


What's Changed Since Seattle IETF


   o    Redesign generic RSVP API (section 3.6.2)

   o    Change encoding of style in RESV messages (section 3.1.2)

   o    Clarify filterspec functions (section 2.1)

   o    Simplify definition of DF style (sections 2.2, 2.4).

   o    Revise discussion of flowspec merging (section 2.3.3).

   o    Change format of variable-length filterspecs and flowspecs
        (section 3.1 and 3.6.1).

   o    Add a user authentication field in all RSVP messages (Section
        3).

   o    Add short discussion of local repair (Section 3.3.3).

   o    Editorial nits.


1. Introduction

   This memo describes RSVP, a resource reservation setup protocol
   designed for an integrated services Internet [RSVP93,ISInt93].  An
   application invokes RSVP to request a specific quality of service
   (QoS) for a data stream.  Hosts and routers use RSVP to deliver these
   requests to the routers along the path(s) of the data stream and to
   maintain router and host state to provide the requested service.
   This generally requires reserving resources in those nodes.

   At each "node" (i.e., router or host) along the path, RSVP passes a
   new resource reservation request to an admission control routine, to
   determine whether there are sufficient resources available.  If there
   are, the node reserves the resources and updates its packet scheduler
   and classifier control parameters to provide the requested QoS
   [ISInt93].  It is expected that RSVP implementations will execute in
   user space in a host, and in background in a router.  On the other
   hand, the packet scheduler and classifier are expected to execute in
   the kernel of a host operating system, and in the high-speed packet
   forwarding path of a router.

   RSVP messages are sent as IP datagrams; thus, RSVP occupies the place
   of a transport protocol in the protocol stack.  However, like ICMP,
   IGMP, and routing protocols, RSVP is really an Internet control



Zhang, Braden et al      Expires: January 1995                  [Page 2]


Internet Draft             RSVP Specification                  July 1994


   protocol; it does not carry any application data, and its messages
   are processed by the routers in the path.

   RSVP is not itself a routing protocol, but rather it is designed to
   operate with existing and future unicast and multicast routing
   protocols.  Thus, a host sends IGMP messages to join a multicast
   group, and then it sends RSVP messages to reserve resources along the
   deliver path(s) from that group.  Unlike a routing protocol, RSVP is
   explicitly invoked by applications, to obtain a special QoS.

   The objectives and general justification for RSVP design are
   presented in [RSVP93,ISInt93].  In summary, RSVP has the following
   attributes:

   o    RSVP supports multicast or unicast data delivery and adapts to
        changing group membership as well as changing routes.

   o    RSVP reserves resources for simplex data streams.

   o    RSVP is receiver-oriented, i.e., the receiver of a data flow is
        responsible for the initiation and maintenance of the resource
        reservation used for that flow.

   o    RSVP maintains "soft state" in the routers, enabling it to
        gracefully support dynamic membership changes and automatically
        adapt to routing changes.

   o    RSVP provides several reservation models or "styles" (defined
        below) to fit a variety of applications.

   o    RSVP provides transparent operation through routers that do not
        support it.

   The RSVP protocol mechanisms provide a general facility for creating
   and maintaining distributed reservation state across a mesh of
   multicast delivery paths.  These mechanisms treat the reservation
   parameters as opaque data, except for certain well-defined
   operations, and simply pass them to the traffic control modules
   (admission control, packet scheduler, and classifier) for
   interpretation.  Although the RSVP protocol mechanisms are largely
   independent of the encoding of these parameters, the encodings must
   be defined in the reservation model that is presented to an
   application (see section 3.6.1).

   In order to efficiently accommodate heterogeneous receivers and
   dynamic group membership, RSVP makes the receivers responsible for
   requesting resource reservations [RSVP93].  Each receiver can request
   a reservation that is tailored to its particular requirement, and



Zhang, Braden et al      Expires: January 1995                  [Page 3]


Internet Draft             RSVP Specification                  July 1994


   RSVP will deliver this request to the routers along the reverse
   path(s) to the sender(s).

   There are two aspects to RSVP, its reservation model and its protocol
   mechanisms.  Sections 2.1 and 2.2 of this memo summarize the RSVP
   reservation model, while Sections 2.3 describes the protocol
   mechanisms.  Sections 2.4 gives examples of both model and mechanism,
   and Section 2.5 summarizes the model of RSVP seen by a host.  Section
   3 presents the functional specification for RSVP.

2. RSVP Overview

   2.1 RSVP Reservation Model

      Figure 1 illustrates a single multicast distribution session.  The
      arrows indicate data flowing from senders S1 and S2 to receivers
      R1, R2, and R3, and the cloud represents the distribution mesh
      created by the multicast routing protocol.  Multicast distribution
      forwards a copy of each data packet from a sender Si to every
      receiver Rj.  Each sender Si and receiver Rj may correspond to a
      unique Internet host, or there may be multiple logical senders
      (e.g., multiple TV cameras) and/or receivers in a single host.

      RSVP reserves resources for simplex data streams, i.e., it
      reserves resources in only one direction on a link, so that a
      sender is logically distinct from a receiver.  However, the same
      application may act as both sender and receiver.


                 Senders                              Receivers
                             _____________________
                            (                     ) ===> R1
                    S1 ===> (    Multicast        )
                            (                     ) ===> R2
                            (    distribution     )
                    S2 ===> (                     )
                            (    by Internet      ) ===> R3
                            (_____________________)

                   Figure 1: Multicast Distribution Session


      All data packets in a given session are addressed to the same IP
      destination address DestAddress.  For multicast delivery,
      DestAddress is the multicast group address to which the data is
      addressed.  For unicast delivery, DestAddress is simply the
      unicast address of the single receiver.  RSVP identifies a session
      by DestAddress plus a 32-bit stream identifier called the



Zhang, Braden et al      Expires: January 1995                  [Page 4]


Internet Draft             RSVP Specification                  July 1994


      "reservation id" (ResvID).  We use the term "session socket" for
      the (DestAddress, ResvID) pair that defines a session.  RSVP
      treats each session independently.  In the rest of this document,
      a particular session (hence, session socket) is always implied
      even if not stated.

      Depending upon the reservation style and the session state already
      in place, a new or modified reservation request may or may not
      result in a call to admission control at each node [ISInt93].  If
      an admission control call fails, the reservation is rejected and
      an RSVP error message is sent to the receiver(s) responsible for
      it.

      A single RSVP resource reservation request is defined by a
      "flowspec" together with a "filterspec"; this pair is called a
      "Flow Descriptor".  The flowspec specifies the desired QoS in a
      quantitative manner, e.g., the tolerable delay, the average
      throughput, the maximum burstiness, etc [Partridge92, ISInt93,
      IServ93]; it is used to set parameters to the packet scheduling
      mechanism in the node (router or host).  The filterspec (plus the
      DestAddress) defines the set of data packets to receive this
      service; it is used to set parameters in the packet classifier
      component of the node.  For all packets that are addressed to a
      particular session, only those that can match the filter spec(s)
      of that session will be forwarded according to the flowspec; the
      rest will be either dropped or sent as best-effort traffic.

      More specifically, a filterspec may have two distinct functions.

      o    Sender Selection

           A filterspec may select packets that originate from a
           particular sender Si, from the entire stream of packets
           destined to a given DestAddress.  The sender is selected
           using its IP source address and optionally a "generalized
           source port", i.e., multiplexing field(s) at the transport
           layer (e.g., a UDP destination port) and/or the application
           layer (e.g., a particular subset of a hierarchically encoded
           video stream).

      o    Receiver Sub-selection

           A filterspec may distinguish different sessions with the same
           DestAddress by selecting a subset of the packets destined to
           that address.  This subset is defined by a "generalized
           destination port", which again may include transport-layer
           (e.g., UDP destination port) and/or application-layer
           demultiplexing information.  An RSVP receiver Rj is defined



Zhang, Braden et al      Expires: January 1995                  [Page 5]


Internet Draft             RSVP Specification                  July 1994


           by the pair (Hj, Pj), where Hj is the IP host address and Pj
           is the generalized destination port.

      RSVP needs to distinguish different sessions.  It is difficult to
      do this by matching generalized destination ports buried within
      the filterspecs, since the part of the filterspec that defines the
      generalized destination port should be opaque to an RSVP module in
      a router, which does not not know the structure of transport or
      application layer protocol headers.  Therefore, RSVP identifies a
      session by the pair (DestAddress, ResvID), where the ResvID's form
      a simple space of identifiers that RSVP can use to distinguish
      different sessions with the same DestAddress.  The ResvID's need
      not themselves be (generalized) ports, but the the ResvID values
      that are used must have a one-to-one correspondence with the
      generalized ports in use for the given DestAddress.

      All reservation requests for a given session must use filterspecs
      that specify the same DestAddress and the same generalized
      destination port (since receivers of the same substream,
      downstream of a given node, must share a common resource
      reservation in that node).

   2.2 Reservation Styles

      In addition to the Flow Descriptors, each RSVP reservation request
      specifies a "reservation style".  The following reservation styles
      have been defined so far.

      1.   Wildcard-Filter (WF) Style

           A Wildcard-Filter (WF) style reservation creates a single
           resource "pipe" along each link, shared by data packets from
           all senders for the given session.  The "size" of this pipe
           is the largest of the resource requests for that link from
           all receivers, independent of the number of senders using it.
           (The concept of a "largest" flowspec is discussed later).

           The term "wildcard" implies a filterspec that selects all
           senders.  A WF reservation automatically extends to new
           senders to the session, as they appear.

      2.   Fixed-Filter (FF) Style

           A Fixed-Filter (FF) style reservation request creates
           reservation(s) for data packets from particular sender(s).  A
           FF reservation request from a particular receiver Rj contains
           a list of one or more Flow Descriptors, each consisting of a
           filterspec, which specifies some sender Si, and a



Zhang, Braden et al      Expires: January 1995                  [Page 6]


Internet Draft             RSVP Specification                  July 1994


           corresponding flowspec.

           FF reservations requested by different receivers Rj but
           selecting the same sender Si must necessarily share a single
           reservation in a given node.  This is simply the result of
           multicast distribution, which creates a single stream of data
           packets in a particular router from any Si, regardless of the
           number of receivers downstream.  The reservation for Si will
           be the maximum of the individual flowspecs from different
           downstream receivers Rj (see Section 2.3.3).

           FF reservations for different senders are distinct; they do
           NOT share a common pipe.  The total reservation on a link for
           a given session is therefore the cumulative total of the
           reservations for each requested sender.  A receiver that has
           established a FF style reservation may modify, add, or delete
           a flow descriptor at any time.  However, any additional or
           modified reservations are subject to admission control and
           may fail.


      3.   Dynamic-Filter (DF) Style

           A Dynamic-Filter (DF) style reservation decouples
           reservations from filters.  Each DF reservation request
           specifies a number D of distinct reservations to be made
           using the same specified flowspec.  The number of
           reservations that are actually made in a particular node is
           D' = min(D,Ns), where Ns is the total number of senders
           upstream of the node.

           In addition to D and the flowspec, a DF style reservation may
           also specify a list of K filterspecs, for some K in the
           range: 0 <= K <= D'.  These filterspecs define particular
           senders to use the D' reservations.  Once a DF reservation
           has been established, the receiver may change the set of
           filterspecs to specify a different selection of senders,
           without a new admission control check (assuming D' and the
           common flowspec remain unchanged).  This is known as "channel
           switching", in analogy with a television set.

           In order to provide assured channel switching, each node
           along the path must reserve enough bandwidth for all D'
           channels, even though some of this bandwidth may be unused at
           any one time.  If D' changes (because the receiver changed D
           or because the number Ns of upstream sources changed), or if
           the common flowspec changes, the refresh message is treated
           as a new reservation that is subject to admission control and



Zhang, Braden et al      Expires: January 1995                  [Page 7]


Internet Draft             RSVP Specification                  July 1994


           may fail.

           Like a FF style request, a DF style request causes distinct
           reservations for different senders.

           As noted earlier, those data packets from senders that are
           not currently selected may either be dropped or sent best-
           effort.

      WF reservations are appropriate for those multicast applications
      whose application-level constraints prohibit all data sources from
      transmitting simultaneously; one example is audio conferencing,
      where a limited number of people talk at once.  Thus, each
      receiver might issue a WF reservation request for twice one audio
      channel (to allow some over-speaking).  On the other hand, the FF
      and DF styles create independent reservations for the flows from
      different senders; this is required for video signals, whose
      `silence' periods, if any, are uncoordinated among different
      senders.

      The essential difference between the FF and DF styles is that the
      DF style allows a receiver to switch channels without danger of an
      admission denial due to limited resources (unless a topology
      change reroutes traffic along a lower-capacity path or new senders
      appear), once the initial reservations have been made.

      Other reservation styles may be defined in the future.

   2.3 RSVP Protocol Mechanisms

      2.3.1 RSVP Messages

         Each receiver host sends RSVP reservation (RESV) messages into
         the Internet, carrying Flow Descriptors requesting the desired
         reservation; see Figure 2.  These reservation messages must
         follow the reverse of the routes the data packets will use, all
         the way upstream to all the senders.  If a reservation request
         fails at any node, an RSVP error message is returned to the
         receiver; however, RSVP sends no positive acknowledgment
         messages to indicate success.  RESV messages are finally
         delivered to the sender hosts, so that the hosts can set up
         appropriate traffic control parameters for the first hop.









Zhang, Braden et al      Expires: January 1995                  [Page 8]


Internet Draft             RSVP Specification                  July 1994



               Sender                                       Receiver
                             _____________________
                  Path -->  (                     )
                Si =======> (    Multicast        ) Path -->
                  <-- Resv  (                     ) =========> Rj
                            (    distribution     ) <-- Resv
                            (_____________________)

                             Figure 2: RSVP Messages


         Each sender transmits RSVP PATH messages forward along the
         uni-/multicast routes provided by the routing protocol(s).
         These "Path" messages store path state in all the intermediate
         routers.

         The path state is currently used by RSVP to route the RESV
         messages in the reverse direction from each receiver to all
         selected senders for a given session.  In the future, this
         function may be assumed by routing protocols.  PATH messages
         have other functions; they carry the following additional
         information:

         o    A sender template, which describes the format of data
              packets that the sender will originate.

              The sender template takes the form of two bitstrings
              forming a (value, mask) pair.  Zero mask bits represent
              "don't care" (variable) bits in data packets.  If present,
              this template is used by RSVP to match the filterspecs in
              a RESV message.  Without such a template in the path
              state, there will be no feedback (except poor service) to
              the receiver that sets an impossible filter by mistake.

              ISSUE:

                 Should sender templates be defined to be precisely
                 filterspecs, or should templates and filterspecs be
                 allowed to use different syntax?

         o    A flowspec defining an upper bound on the traffic that
              will be generated.

              This flowspec can be used by RSVP to prevent over-
              reservation on the non-shared links starting at the
              sender.




Zhang, Braden et al      Expires: January 1995                  [Page 9]


Internet Draft             RSVP Specification                  July 1994


         A (template, flowspec) pair in a PATH message is called a
         Sender Descriptor.

      2.3.2 Soft State

         To maintain reservation state, RSVP keeps "soft state" in
         router and host nodes.  RSVP soft state is created and
         periodically refreshed by PATH and RESV messages, and it can be
         removed at each node by explicit "Teardown" messages.  RSVP
         also has a timer-driven cleanup procedure if no message is
         received within a cleanup timeout interval.

         When the route changes, the next PATH message will initialize
         the path state on the new route, and future RESV messages will
         establish reservation state while the state on the now-unused
         segment of the route times out.  Thus, whether a message is
         "new" or a "refresh" is determined separately at each node,
         depending upon the existence of state at that node.  (This
         document will use the term "refresh message" in this effective
         sense, to indicate an RSVP message that does not modify the
         existing state at the node in question.)

         RSVP sends all its messages as IP datagrams without any
         reliability enhancement.  Periodic transmission of refresh
         messages by hosts and routers is expected to replace any lost
         RSVP messages.  However, the traffic control mechanism should
         be statically configured to grant high-reliability service to
         RSVP messages, to protect RSVP messages from severe congestion.

         If the set of senders Si or receivers Rj changes, or if any of
         the receivers' reservation requests change, the RSVP state is
         adjusted accordingly.   RSVP believes the latest PATH and RESV
         messages (ignoring the possibility of reordering).  To modify a
         reservation, a receiver simply starts sending the new values.
         It is not necessary (although it may sometimes be desirable,
         when the resources being consumed are "valuable"), to tear down
         the old reservation explicitly.

         When a RESV message is received at a router or sender host, the
         RSVP module checks whether the message is a new or a modified
         reservation request, or whether it simply refreshes an existing
         reservation.  A new or modified request is passed to the
         admission control module for a decision.  If the reservation is
         accepted, RSVP sets up (or modifies) the reservation and filter
         state.  It also forwards the RESV message to the next reverse-
         hop router(s) or sender host(s), as determined by the path (or
         routing) state.  If RSVP on the node rejects the reservation
         request due to admission control failure or to some processing



Zhang, Braden et al      Expires: January 1995                 [Page 10]


Internet Draft             RSVP Specification                  July 1994


         error, it discards the RESV message and returns a RSVP error
         message to the originating receiver host.  If the request
         modifies a previous reservation, RSVP may immediately remove
         the old state, or it may simply let the old state time out
         since it is no longer being refreshed; the details depend upon
         the style and the implementation.


          Previous    Incoming               Outgoing         Next
          Hops        Interfaces             Interfaces       Hops

          _____             _____________________              _____
         |     | data -->  |                     |  data -->  |     |
         |     |-----------|                     |------------|     |
         |_____|  <-- Resv |                     |   <-- Resv |_____|
                 Path -->  |                     |  Path -->
                           |       Router        |
          _____            |                     |             _____
         |     | data -->  |                     |   data --> |     |
         |     |-----------|                     |------------|     |
         |_____|  <-- Resv |                     |   <-- Resv |_____|
                 Path -->  |_____________________|   Path -->

                           Figure 3: Router Using RSVP


         Figure 3 illustrates RSVP's model of a router node.  Each data
         stream arrives from a previous hop through a corresponding
         incoming interface and departs through one or more outgoing
         interface(s).  Since the same host may be hosting both sender
         and receiver applications for a given session, the same
         physical interface may act in both the incoming and outgoing
         roles (for different data streams).

         The interfaces shown in Figure 3 may be physical interfaces
         (e.g., to point-to-point links), or they may be logical
         interfaces that reach multiple nodes through the same physical
         interface.  Multiple previous hops and/or next hops through a
         given physical interface can result from either the connected
         network being a shared medium (e.g., an Ethernet), or from the
         existence of non-RSVP routers in the path to the next RSVP hop
         (see Section 3.5).  It is generally necessary for RSVP to track
         both logical and physical interfaces on both the incoming and
         outgoing sides.







Zhang, Braden et al      Expires: January 1995                 [Page 11]


Internet Draft             RSVP Specification                  July 1994


      2.3.3 Merging RSVP Messages

         Whenever possible, the control information arriving in RSVP
         messages for a given session is combined into fewer outgoing
         messages; this is known generically as "merging".  Those
         messages that cause a state change are forwarded without delay,
         while the refresh messages may be merged into fewer messages,
         perhaps only one per session.

         For PATH messages, merging implies collecting together the
         Sender Descriptors from multiple incoming messages into a
         single outgoing PATH message.  For RESV messages, merging
         implies that only the essential (e.g., the largest) reservation
         requests need be forwarded, once per refresh period; redundant
         messages are "purged".  A successful reservation request will
         propagate as far as the closest point(s) along the sink tree to
         the sender(s) where a reservation level equal or greater than
         that being requested has been made.  At that point, the merging
         process will drop it in favor of another, equal or larger,
         reservation request.

         To allow merging, each node must save the state from received
         messages and then periodically generate cumulative PATH and
         RESV messages from the saved state, to be forwarded in place of
         the received messages.  Thus, new refresh messages are created
         hop-by-hop inside the network, at a rate determined by a
         "refresh period".  Since messages that modify the state in a
         node ("new" messages) are forwarded without delay, the refresh
         period does not affect the rate at which new state propagates
         from end to end (when packets are not lost).

         Although flowspecs are opaque to RSVP, merging requires the
         ability to determine which of two flowspecs is "larger", i.e.
         whether one represents a stricter request (and hence represents
         a larger resource commitment) than the other.  However, a
         flowspec may be a complex multi-dimensional vector, so the
         "larger-than" relationship may not be defined for a given pair
         of flowspecs.  For example, consider two flowspecs Fls1 and
         Fls2, where Fls2 asks for a lower throughput but shorter delay
         that Fls1.  It is not clear which is "larger", so we say they
         are "incompatible".

         There are several possible solutions to merging incompatible
         flowspecs.

              (1)  Compare on a single dimension, e.g., compare the
                   throughput requirement (average bit rate) only.




Zhang, Braden et al      Expires: January 1995                 [Page 12]


Internet Draft             RSVP Specification                  July 1994


              (2)  Construct a third flowspec that is greater than each
                   of the two being compared.  In the example above, we
                   could construct a third flowspec Fls3 by combining
                   the higher throughput from Fls1 with the lower delay
                   from Fls2.

              (3)  Treat the compatibility as an error that should be
                   avoided by applications.

         The choice of one of these approaches should be governed by
         flags in the flowspec itself, not by RSVP.

         Note that this problem cannot be avoided by refraining from
         merging flowspecs.  If incompatible flowspecs were not merged
         at a particular node A, then they would arrive at the next node
         upstream, say B, in separate RESV messages.  This may also
         happen if there are multiple next hops across the same outgoing
         interface.  Node B would have to make a reservation for the
         largest flowspec, if that is defined, or one that dominates all
         the given flowspecs; that is, it must merge the unmerged
         reservations.  Thus, failing to merge simply moves the problem
         one node upstream.

         This mechanism, reserving for the highest demand at each node,
         allows an application to increase an existing reservation
         request immediately (assuming admission control does not fail
         for the larger flowspec).  Decreasing a reservation has to be
         handled more cautiously, however.  The arrival of a RESV
         message with an apparently decreased reservation might be
         caused by the loss of a merged RESV message downstream.
         Therefore, an RSVP should not "believe" a reservation decrease
         until the cleanup timeout has passed.

         The refresh period and the cleanup timeout must obey the
         following general principles:

              A.   The refresh period must be long enough to keep RSVP
                   overhead at an acceptable level.

              B.   The refresh period should be short enough to allow
                   quick adaptation to route and multicast membership
                   changes.

                   Applications may differ in their sensitivity to
                   service outages, and therefore they should be able to
                   adjust the refresh period for their session state.
                   However, the technique of "local repair" (see Section
                   3.3.3) can provide rapid adaptation despite a long



Zhang, Braden et al      Expires: January 1995                 [Page 13]


Internet Draft             RSVP Specification                  July 1994


                   refresh period.

              C.   The timeout period must be long enough to allow for
                   loss of individual RSVP messages.

      2.3.4 Teardown

         As an optimization to release resources quickly, RSVP teardown
         messages remove path and reservation state without waiting for
         the cleanup timeout period.  RSVP messages are not delivered
         reliably, but the state will eventually time out even if a
         teardown message is lost.

         Teardown may be initiated either by an end system (sender or
         receiver), or by a router as the result of state timeout.  A
         router may also initiate a teardown message as the result of
         router or link failures detected by the routing protocol.  A
         teardown, once initiated, will be forwarded hop-by-hop without
         delay.

         There are two types of RSVP Teardown message, PTEAR and RTEAR.
         A PTEAR message travels towards all receivers downstream from
         its point of initiation and tears down path state along the
         way, while an RTEAR message tears down reservation state and
         travels towards all senders upstream from its point of
         initiation.

         A particular reservation on a node may be shared among multiple
         senders and/or receivers, but it must apply to a unique next
         hop (and outgoing interface).  The receipt of an RTEAR message
         implies that the corresponding reservation state has been
         removed downstream, so that the reservation can safely be
         deleted locally.  Again, the local node will only forward the
         teardown message upstream when the state named in the message
         has been entirely removed locally.  As a result, an RTEAR
         message will prune the reservation state back (only) as far as
         possible.  Note that the RTEAR message will cease to be
         forwarded at the same node where merging suppresses forwarding
         of the corresponding RESV messages.

         Consider the router configuration shown in Figure 4 below.
         Assume that there are reservations for source S1 on both
         outgoing interfaces (c) and (d), and that the receiver R1 wants
         to tear down its reservation state for S1.  R1's RTEAR message
         arriving through interface (c) indicates that all reservation
         state for (this session and) sender S1 has been removed
         downstream.  The current node therefore removes the S1
         reservation state from interface (c).  However, since there



Zhang, Braden et al      Expires: January 1995                 [Page 14]


Internet Draft             RSVP Specification                  July 1994


         will still be an S1 reservation on interface (d), the RTEAR
         message will not be forwarded any further.

         However, if the outgoing interface connects to a shared medium
         or if there is a non-RSVP router immediately downstream, then
         there may be multiple next-hop RSVP nodes downstream that are
         reached through the same outgoing interface, say (c).  Then a
         single reservation may be shared among multiple next hops.
         RSVP must tag each reservation with the next hop(s) from which
         the RESV messages came, for use by teardown to avoid deleting
         shared state.

         Deletion of path state, whether as the result of a teardown
         message or because of timeout, may force adjustments in related
         reservation state to maintain consistency in the local node.
         Consider the path state for a sender S; the related reservation
         state would be as follows.

         o    Wildcard-Filter style: If S is the only sender to the
              session, delete the reservation.

         o    Fixed-Filter style: Delete reservations made for S.

         o    Dynamic-Filter style: Reduce total reservation if it now
              exceeds the total number of remaining senders.


   2.4 Examples

      We use the following notation for a RESV message:

      1.   Wildcard-Filter

           WF( *{r})

           Here "*{r}" represents a Flow Descriptor with a "wildcard"
           filter (choosing all senders) and a flowspec of quantity r.
           For simplicity we assume here that flowspecs are one-
           dimensional, defining for example the average throughput, and
           state them as a multiple of some unspecified base resource
           quantity B.

      2.   Fixed-Filter

           FF( S1{r1}, S2{r2}, ...)

           This message carries a list of (sender, flowspec) pairs,
           i.e., Flow Descriptors.



Zhang, Braden et al      Expires: January 1995                 [Page 15]


Internet Draft             RSVP Specification                  July 1994


      3.   Dynamic-Filter

           DF( n, {r} ; ) or DF( n, {r} ; S1, S2, ...)

           This message carries the count n of channels to be reserved,
           each using common flowspec r.  It also carries a list,
           perhaps empty, of filterspecs defining senders.

      Figure 4 shows schematically a router with two previous hops
      labeled (a) and (b) and two outgoing interfaces labeled (c) and
      (d).  This topology will be assumed in the examples that follow.
      There are three upstream senders; packets from sender S1 (S2 and
      S3) arrive through previous hop (a) ((b), respectively).  There
      are also three downstream receivers; packets bound for R1 and R2
      (R3) are routed via outgoing interface (c) ((d) respectively).

      In addition to the connectivity shown in 4, we must also specify
      the multicast routing within this node.  Assume first that data
      packets (hence, PATH messages) from each Si shown in Figure 4 is
      routed to both outgoing interfaces.  Under this assumption,
      Figures 5, 6, and 7 illustrate Wildcard-Filter reservations,
      Fixed-Filter reservations, and Dynamic-Filter reservations,
      respectively.

                         ________________
                     (a)|                | (c)
      ( S1 ) ---------->|                |----------> ( R1, R2)
                        |     Router     |
                     (b)|                | (d)
      ( S2,S3 ) ------->|                |----------> ( R3 )
                        |________________|

                        Figure 4: Router Configuration


      In Figure 5, the "Receive" column shows the RESV messages received
      over outgoing interfaces (c) and () and the "Reserve" column shows
      the resulting reservation state for each interface.   The "Send"
      column shows the RESV messages forwarded to previous hops (a) and
      (b).  In the "Reserve" column, each box represents one reservation
      "channel", with the corresponding filter.  As a result of merging,
      only the message with the largest flowspec is forwarded upstream
      to each previous hop.








Zhang, Braden et al      Expires: January 1995                 [Page 16]


Internet Draft             RSVP Specification                  July 1994



                             |
               Send          |       Reserve              Receive
                             |
                             |       _______
         WF( *{3B} ) <- (a)  |  (c) | * {3B}|    (c) <- WF( *{B} )
                             |      |_______|
                             |
      -----------------------|----------------------------------------
                             |       _______
         WF( *{3B} ) <- (b)  |  (d) | * {B} |    (d) <- WF( *{3B} )
                             |      |_______|

               Figure 5: Wildcard-Filter Reservation Example 1



      Figure 6 shows Fixed-Filter style reservations.  Merging takes
      place among the flow descriptors (i.e., filter spec, flowspec
      pairs).  For example, the message forwarded to previous hop b,
      towards S2 and S3, contains flow descriptors received from
      outgoing interfaces (c) and (d).  Similarly, when FF( S1{B} ) and
      FF( S1{3B} ) are merged, the single message FF( S1{3B} ) is sent
      to previous hop (a), towards S1.

      For each outgoing interface, there is a private reservation for
      each source that has been requested, but this private reservation
      is shared among the receivers that made the request.























Zhang, Braden et al      Expires: January 1995                 [Page 17]


Internet Draft             RSVP Specification                  July 1994



                       |
         Send          |       Reserve              Receive
                       |
                       |       ________
  FF( S1{3B} ) <- (a)  |  (c) | S1{B}  |   (c) <- FF( S1{B}, S2{5B} )
                       |      |________|
                       |      | S2{5B} |
                       |      |________|
-----------------------|---------------------------------------------
                       |       ________
               <- (b)  |  (d) | S1{3B} |   (d) <- FF( S1{3B}, S3{B} )
  FF( S2{5B}, S3{B} )  |      |________|
                       |      | S3{B}  |
                       |      |________|

               Figure 6: Fixed-Filter Reservation Example



      Figure 7 shows an example of Dynamic-Filter reservations.  The
      receivers downstream from interface (d) have requested two
      reserved channels, but selected only one sender, S1.  The node
      reserves min(2,3) = 2 channels of size B on interface (d), and it
      then applies any specified filters to these channels.  Since only
      one sender was specified, one channel has no corresponding filter,
      as shown by `?'.

      Similarly, the receivers downstream of interface (c) have
      requested two channels and selected senders S1 and S2.  The two
      channels might have been one channel each from R1 and R2, or two
      channels requested by one of them, for example.



















Zhang, Braden et al      Expires: January 1995                 [Page 18]


Internet Draft             RSVP Specification                  July 1994


                        |
         Send           |      Reserve              Receive
                        |
                        |       ________
 DF( 1,{B}; S1) <- (a)  |  (c) |  S1{B} |  (c) <- DF( 2,{B}; S1, S2)
                        |      |________|
                        |      |  S2{B} |
                        |      |________|
                        |
------------------------|-------------------------------------------
                        |       ________
 DF( 2,{B}; S2) <- (b)  |  (d) |  S1{B} |   (d) <- DF( 2,{B}; S1)
                        |      |________|
                        |      |   ?{B} |
                        |      |________|


              Figure 7: Dynamic-Filter Reservation Example



      A router should not reserve more Dynamic-Filter channels than the
      number of upstream sources (three, in the router of Figure 7).
      Since there is only one source upstream from previous hop (a), the
      first parameter of the DF message (the count of channels to be
      reserved) was decreased to 1 in the forwarded reservations.
      However, this is unnecessary, because the routers upstream will
      reserve only one channel, regardless.

      When a DF reservation is received, it is labeled with the IP
      address of the next hop (RSVP-capable) router, downstream from the
      current node.  Since the outgoing interface may be directly
      connected to a shared medium network or to a non-RSVP-capable
      router, there may be more than one next-hop node downstream; if
      so, each sends independent DF RESV messages for a given session.
      The number N' of DF channels reserved on an outgoing interface is
      given by the formula:

      N' = min( D1+D2+...Dn, Ns),

      where Di is the D value (channel reservation count) in a RESV from
      the ith next-hop node.

      The three examples just shown assume full routing, i.e., data
      packets from S1, S2, and S3 are routed to both outgoing
      interfaces.  Assume the routing shown in Figure 8, in which data
      packets from S1 are not forwarded to interface (d) (because the
      mesh topology provides a shorter path for S1->R3 that does not



Zhang, Braden et al      Expires: January 1995                 [Page 19]


Internet Draft             RSVP Specification                  July 1994


      traverse this node).

                         _______________
                     (a)|               | (c)
      ( S1 ) ---------->| --------->--> |----------> ( R1, R2)
                        |        /      |
                        |      /        |
                     (b)|    /          | (d)
      ( S2,S3 ) ------->| ->----------> |----------> ( R3 )
                        |_______________|

                        Figure 8: Router Configuration



      Under this assumption, Figure 9 shows Wildcard-Filter
      reservations.  Since there is no route from (a) to (d), the
      reservation forwarded out interface (a) considers only the
      reservation on interface (c), so no merging takes place in this
      case.


                             |
               Send          |       Reserve              Receive
                             |
                             |       _______
          WF( *{B} ) <- (a)  |  (c) | * {3B}|    (c) <- WF( *{B} )
                             |      |_______|
                             |
      -----------------------|----------------------------------------
                             |       _______
         WF( *{3B} ) <- (b)  |  (d) | * {B} |    (d) <- WF( * {3B} )
                             |      |_______|

       Figure 9: Wildcard-Filter Reservation Example -- Partial Routing




   2.5 Host Model

      Before a session can be created, the session socket, comprised of
      DestAddress and ResvID, must be assigned and communicated to all
      the senders and receivers by some out-of-band mechanism.  In order
      to join an RSVP session, the end systems perform the following
      actions.

           H1   A receiver joins the multicast group specified by



Zhang, Braden et al      Expires: January 1995                 [Page 20]


Internet Draft             RSVP Specification                  July 1994


                DestAddress.

           H2   A potential sender starts sending RSVP PATH messages to
                the DestAddress.

           H3   A receiver listens for PATH messages.

           H4   A receiver starts sending appropriate RESV messages,
                specifying the desired Flow Descriptors.

      There are several synchronization issues.

      o    Suppose that a new sender starts sending data but there are
           no receivers.  There will be no multicast routes beyond the
           host (or beyond the first RSVP-capable router) along the
           path; the data will be dropped at the first hop until
           receivers(s) do appear (assuming a multicast routing protocol
           that "prunes off" or otherwise avoids unnecessary paths).

      o    Suppose that a new sender starts sending PATH messages (H2)
           and immediately starts sending data, and there are receivers
           but no RESV messages have reached the sender yet (e.g.,
           because its PATH messages have not yet propagated to the
           receiver(s)).  Then the initial data may arrive at receivers
           without the desired QoS.

      o    If a receiver starts sending RESV messages (H4) before any
           PATH messages have reached it (and if path state is being
           used to route RESV messages), RSVP will return error messages
           to the receiver.

           The receiver may simply choose to ignore such error messages,
           or it may avoid them by waiting for PATH messages before
           sending RESV messages.

      A specific application program interface (API) for RSVP is not
      defined in this protocol spec, as it may be host system dependent.
      However, Section 3.6.2 discusses the general requirements and
      presents a generic API.












Zhang, Braden et al      Expires: January 1995                 [Page 21]


Internet Draft             RSVP Specification                  July 1994


3. Functional Specification

   There are currently 6 types of RSVP messages: PATH, RESV, PTEAR,
   RTEAR, PERR, and RERR.

   3.1 Message Formats

      3.1.1 Path Message

                0             1              2             3
         +-------------+-------------+-------------+-------------+
         | Vers | Type |    Flags    |       RSVP Checksum       |
         +-------------+-------------+-------------+-------------+
         |                      DestAddress                      |
         +-------------+-------------+-------------+-------------+
         |                        ResvID                         |
         +-------------+-------------+-------------+-------------+
         |                    Refresh Period                     |
         +-------------+-------------+-------------+-------------+
         |                    State TTL Time                     |
         +-------------+-------------+-------------+-------------+
         |                Previous Hop Address                   |
         +-------------+-------------+-------------+-------------+
         |       ///////////////     |         SD Count          |
         +-------------+-------------+-------------+-------------+
         |                 Authentication Field                  |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+
         |               Sender Descriptor List                  |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+



         IP Fields:

              Protocol

                   46

              IP Source Address

                   The IP address of the host or router sending this
                   message.

              IP Destination Address

                   The IP address of the data destination (DestAddress).



Zhang, Braden et al      Expires: January 1995                 [Page 22]


Internet Draft             RSVP Specification                  July 1994


         RSVP Fields:

              Vers

                   Version number.  This is version 1.

              Type

                   1  = Path Message

              Flags

                   8 = Drop

                        If this flag bit is on then data packets will be
                        dropped when they are destined to this session
                        but their sender is not currently selected by
                        any filter.  If this flag bit is off, such data
                        packets will still be forwarded but without a
                        reservation, i.e., using a best-effort class.

              RSVP Checksum

                   A standard TCP/UDP checksum, over the contents of the
                   RSVP message with the checksum field replaced by
                   zero.

              DestAddress, ResvID

                   The IP address and stream Id identifying the session,
                   i.e., the session socket.

              Previous Hop Address

                   The IP address of the interface through which the
                   host or router last forwarded this message.

                   The Previous Hop Address is used to support reverse-
                   path forwarding of RESV messages.  This field is
                   initialized by a sender to its IP address (see IP
                   Source Address above) and must be updated at each
                   router hop as the PATH message is forwarded.

              Refresh Period

                   This field specifies the refresh timeout period in
                   milliseconds.  See Section 3.3 below.




Zhang, Braden et al      Expires: January 1995                 [Page 23]


Internet Draft             RSVP Specification                  July 1994


              State TTL Time

                   This field specifies the time-to-live for soft state,
                   in milliseconds.  It determines the cleanup timeout
                   period; see Section 3.3 below.

              SD Count

                   Count of Sender Descriptors that follow.


              Authentication Field

                   A variable-length authentication field to identify
                   and perhaps authenticate the principal making this
                   reservation request.  The field has the following
                   form:


             +-------------+-------------+-------------+-------------+
             |  AuthLen    |   AuthType  |                           |
             +-------------+-------------+                           +
             //                  Authentication Info                 //
             +-------------+-------------+-------------+-------------+

                   The AuthLen octet contains the integer length of the
                   field in fullwords, and AuthType specifies the format
                   of the field.  See Section 3.6.1 for currently
                   defined authentication field formats.  If there is no
                   authentication information, AuthLen will be zero, but
                   the Authentication Field will still occupy one
                   fullword in the message.

              Sender Descriptor List

                   A list of Sender Descriptors (see below).  The order
                   of entries in this list is irrelevant.


         Each sender must periodically send a PATH message containing a
         single Sender Descriptor describing its own data stream.  These
         messages are addressed to the uni-/multicast destination
         address for the session, and they are forwarded to all
         receivers, following the same paths as a data packet from the
         same sender.  PATH messages are received and processed locally
         to create path state at each intermediate router along the
         path.




Zhang, Braden et al      Expires: January 1995                 [Page 24]


Internet Draft             RSVP Specification                  July 1994


         If an error is encountered while processing a PATH message, an
         RSVP error message is sent to all the sender hosts listed in
         the Sender Descriptor List.

         PATH messages are distributed from senders to receivers along
         the exact paths that the data will traverse, using uni-
         /multicast routing.  This distribution actually takes place
         hop-by-hop, allowing RSVP in each router along the path to
         observe and modify the message.  Routing of PATH messages is
         based on the sender address(es) from the Sender Descriptor(s),
         not the IP source address.  This is necessary to prevent loops;
         see Section 3.2.

         Each Sender Descriptor consists of two variable-length fields:
         a sender template that defines the format of data packets and a
         corresponding Flowspec that describes the traffic
         characteristics.  The sender template has the form of a
         filterspec, and a Sender Descriptor has the form defined below
         for a Flow Descriptor (see also Section 3.6.1).  The flowspec
         may be omitted, in which case its length field will be zero
         (but it will still occupy one fullword in the Sender
         Descriptor).

         The Sender template is retained in the Path state in order to
         validate filterspecs in RESV messages.  Suppose that a
         filterspec consisted of a simple (value,mask) pair (Vf,Mf) to
         be applied to the headers of the data packets (the actual
         format is slightly more complex; see Section 3.6.1).  Then the
         corresponding template would be a (value,mask) pair defining
         those bits of the data packet headers that are fixed.  While
         processing a reservation using filterspec (Vf,Mf) for the
         sender with template (Vs,Ms), RSVP can then test whether
         Vf&(Mf&Ms) = Vs&(M&Ms).  If not, this filterspec cannot
         possibly match the data stream from this sender at any node
         upstream, and the reservation can be rejected with an error
         message back to the receiver.















Zhang, Braden et al      Expires: January 1995                 [Page 25]


Internet Draft             RSVP Specification                  July 1994


      3.1.2 Resv Message

         RESV messages are sent from receivers to senders along reverse
         paths established by PATH messages.

                0             1              2             3
         +-------------+-------------+-------------+-------------+
         | Vers | Type |    Flags    |       RSVP Checksum       |
         +-------------+-------------+-------------+-------------+
         |                      DestAddress                      |
         +-------------+-------------+-------------+-------------+
         |                        ResvID                         |
         +-------------+-------------+-------------+-------------+
         |                    Refresh Period                     |
         +-------------+-------------+-------------+-------------+
         |                    State TTL Time                     |
         +-------------+-------------+-------------+-------------+
         |                   Next Hop Address                    |
         +-------------+-------------+-------------+-------------+
         |                     RecvAddress                       |
         +-------------+-------------+-------------+-------------+
         | Dynamic Reservation Count |         FD Count          |
         +-------------+-------------+-------------+-------------+
         |                 Authentication Field                  |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+
         |                Flow Descriptor List                   |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+


         The fields are the same as defined earlier for a PATH message,
         except for the following:


         IP Fields:

              IP Source Address

                   The IP address of the node sending this message.

              IP Destination Address

                   The IP address of the next-hop router or host to
                   which this message is being sent.


         RSVP Fields:



Zhang, Braden et al      Expires: January 1995                 [Page 26]


Internet Draft             RSVP Specification                  July 1994


              Type

                   2 = Resv Message

              Flags

                   The following flag bit combinations define the
                   reservation style:

                   001xxxxx = Wildcard-Filter

                   010xxxxx = Fixed-Filter

                   011xxxxx = Dynamic-Filter


              Next Hop Address

                   The IP address of the interface through which the
                   last forwarded this message.

                   The Next Hop Address is used to support teardown.
                   This field is initialized by a receiver to its IP
                   address and must be updated at each router hop as the
                   RESV message is forwarded.

              RecvAddress

                   The IP address of (one of the) receiver(s) that
                   originated this message, or one of the RESV messages
                   that was merged to form this message.

              Dynamic Reservation Count

                   The number of channels to be reserved, for a
                   Dynamic-Filter style reservation.

                   If the ResvStyle is Dynamic-Filter, this integer
                   value must be constant and equal or greater than (FD
                   Count).  For other ResvStyles, this field must be
                   zero.

              FD Count

                   Count of Flow Descriptors in the Flow Descriptor
                   List.

              Flow Descriptor List



Zhang, Braden et al      Expires: January 1995                 [Page 27]


Internet Draft             RSVP Specification                  July 1994


                   A list of Flow Descriptors, i.e., (Filterspec,
                   flowspec) pairs, to define individual reservation
                   requests.  The first entry in the list may have
                   special meaning (see below); the order of later
                   entries is irrelevant.

                   Each Flow Descriptor has the following form:


             +-------------+-------------+-------------+-------------+
             |  FiltSLen   |  FiltSType  |                           |
             +-------------+-------------+                           +
             //                    Filter Spec ...                   //
             +-------------+-------------+-------------+-------------+
             |  FlowSLen   |  FlowSType  |                           |
             +-------------+-------------+                           +
             //                    Flow Spec ...                     //
             +-------------+-------------+-------------+-------------+

                   Here FiltSLen and FlowSLen are one-octet fields
                   specifying the lengths in fullwords (including the
                   length byte) of the filterspec and flowspec,
                   respectively, and FiltSType and FlowSType are one-
                   octet fields defining the corresponding field
                   formats.  See Section 3.6.1 for currently defined
                   formats.


         The following specific rules hold for different reservation
         styles.

         o    Wildcard-Filter

              To obtain Wildcard-Filter service, set FD Count = 1 and
              include a single Flow Descriptor whose Filterspec part is
              a wild card, i.e., selects all senders.  and whose
              flowspec part defines the desired flow parameters.

         o    Fixed-Filter

              Include a list of FD Count >= 1 Flow Descriptors, each
              defining a sender Filterspec and a corresponding flowspec.

         o    Dynamic-Filter

              Include max(1, FD Count) Flow Descriptors in the message.
              Here the FD Count specifies the number of sender
              Filterspecs that are included.  If DC is the Dynamic



Zhang, Braden et al      Expires: January 1995                 [Page 28]


Internet Draft             RSVP Specification                  July 1994


              Reservation Count, then DC >= FD Count >= 0.

              The Flowspec part of the first Flow Descriptor defines the
              desired size of all the DC channels that are reserved.
              The Flowspec parts of later Flow Descriptors (if any) are
              ignored.













































Zhang, Braden et al      Expires: January 1995                 [Page 29]


Internet Draft             RSVP Specification                  July 1994


      3.1.3 Error Messages

         There are two types of RSVP error messages: PERR messages
         result from PATH messages and travel towards senders, while
         RERR messages result from RESV messages and travel towards
         receivers.  RSVP error messages are triggered only by
         processing of PATH and RESV messages; errors encountered while
         processing error or teardown messages must not create error
         messages.

         A PERR message has the following form:

                0             1              2             3
         +-------------+-------------+-------------+-------------+
         | Vers | Type |    Flags    |       RSVP Checksum       |
         +-------------+-------------+-------------+-------------+
         |                      DestAddress                      |
         +-------------+-------------+-------------+-------------+
         |                        ResvID                         |
         +-------------+-------------+-------------+-------------+
         |  Error Code | Error Index |        Error Value        |
         +-------------+-------------+-------------+-------------+
         |       ////////////// (ignored) //////////////////     |
         +-------------+-------------+-------------+-------------+
         |       ////////////// (ignored) //////////////////     |
         +-------------+-------------+-------------+-------------+
         |     /// Reserved ///      |         SD Count          |
         +-------------+-------------+-------------+-------------+
         |                 Authentication Field                  |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+
         |                Sender Descriptor List                 |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+



         The fields are the same as in a PATH message, defined earlier,
         except for the following:


         RSVP Fields:

              RSVPType

                   3 = PERR message

              Error Code



Zhang, Braden et al      Expires: January 1995                 [Page 30]


Internet Draft             RSVP Specification                  July 1994


                   A one-octet error description.

                        01 = Insufficient memory

                        02 = Count Wrong

                             The SD Count field does not match length of
                             message.



              Error Index

                   Position of Sender Descriptor that caused the error
                   within
                        Sender Descriptor List.  An integer between zero
                        and SD Count - 1.


              Error Value

                   (Unused)



         A RERR message has the following form:

























Zhang, Braden et al      Expires: January 1995                 [Page 31]


Internet Draft             RSVP Specification                  July 1994


                0             1              2             3
         +-------------+-------------+-------------+-------------+
         | Vers | Type |    Flags    |       RSVP Checksum       |
         +-------------+-------------+-------------+-------------+
         |                      DestAddress                      |
         +-------------+-------------+-------------+-------------+
         |                        ResvID                         |
         +-------------+-------------+-------------+-------------+
         |  Error Code | Error Index |        Error Value        |
         +-------------+-------------+-------------+-------------+
         |       ////////////// (ignored) //////////////////     |
         +-------------+-------------+-------------+-------------+
         |       ////////////// (ignored) //////////////////     |
         +-------------+-------------+-------------+-------------+
         |                     RecvAddress                       |
         +-------------+-------------+-------------+-------------+
         | Dynamic Reservation Count |         FD Count          |
         +-------------+-------------+-------------+-------------+
         |                 Authentication Field                  |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+
         |                Flow Descriptor List                   |
         //                         ...                          //
         +-------------+-------------+-------------+-------------+


         The fields are the same as in a RESV message, defined earlier,
         except for the following:


         RSVP Fields:

              RSVPType

                   4 = RERR message

              Error Code

                   A one-octet error description.

                        DEFINE THESE VALUES IN AN APPENDIX??

                        01 = Insufficient memory

                        02 = Count Wrong

                             The FD Count field does not match length of
                             message.



Zhang, Braden et al      Expires: January 1995                 [Page 32]


Internet Draft             RSVP Specification                  July 1994


                        03 = No path information for this Resv

                        04 = No Sender information for this Resv

                             There is path information, but it does not
                             include the sender specified in any of the
                             Filterspecs listed in the Resv messager.

                        05 = Incorrect Dynamic Reservation Count

                             Dynamic Reservation Count is zero or less
                             than FD Count.

                        06 = Filterspec error

                        07 = Flowspec syntax error

                        08 = Flowspec value error

                             Internal inconsistency of values.

                             [What should be done with Flowspec Feature
                             Not Supported?]

                        09 = Resources unavailable

                             [Sub-reasons?  Depend upon traffic control
                             and admission control algorithms?]



              Error Index

                   Position of Flow Descriptor that caused the error
                   within
                        Flow Descriptor List.  An integer between zero
                        and FD Count - 1.


              Error Value

                   Specific cause of the error described by the Error
                   Code.

                        DEFINE THESE VALUES IN AN APPENDIX??






Zhang, Braden et al      Expires: January 1995                 [Page 33]


Internet Draft             RSVP Specification                  July 1994


         An error message may be duplicated and forwarded unchanged.
         Since PATH and RESV messages may be merged, an error condition
         must be disseminated to all RSVP client applications whose
         requests may have contributed to the error situation.
         Therefore, RSVP error messages must be propagated and perhaps
         duplicated hop-by-hop.  For this purpose, an error message must
         include all the information used to route the original message
         that caused the error: the Sender Descriptor List, Flags,
         RecvAddress, and Flow Descriptor List fields, as appropriate.
         In particular, a RERR message carries the same style flags as
         the RESV message that caused the error.

         To ease implementation, the error message formats are chosen to
         match the formats of the messages whose processing caused the
         error.  In particular, a PATH or RESV message that encounters
         an error can be simply converted to the corresponding error
         message by overwriting the Type and the Refresh Period fields.

         A PERR message is forwarded to all previous hops for all
         senders listed in the Sender Descriptor List.  The routing of a
         RERR message is more complex.

         o    An error in a filterspec should be detected at the first
              RSVP hop from the receiver application, normally within
              the receiver host.  However, an error caused by a
              flowspec, normally an admission control failure, may be
              detected somewhere along the path(s) to the sender(s).

         o    The router that creates a RERR message as the result of
              processing a RESV message should send the RERR message out
              the interface through which the RESV arrived.

         o    In succeeding hops, the routing of a RERR message depends
              upon its style.  In general, a RERR message is sent on a
              pruned version of the multicast distribution tree for the
              session; those branches that do not have reservations for
              any of the specified senders are pruned off.

              A DF-style or WF-style RERR message is forwarded on all
              outgoing interfaces for which there is already a
              reservation of the corresponding style.

              A FF-style RERR message is forwarded on all outgoing
              interfaces for which there is already a FF-style
              reservation for the sender (filterspec) corresponding to
              the error.

         At the end host, RSVP delivers a copy of every relevant error



Zhang, Braden et al      Expires: January 1995                 [Page 34]


Internet Draft             RSVP Specification                  July 1994


         message to its local application clients.  It examines the set
         of RSVP requests that local clients have made through the API,
         and notifies every client that contributed to the error
         message.  A match is required between the session, filters
         (senders), and reservation styles of the error message and the
         corresponding state in the latest API requests.  A particular
         notification should include only the information (e.g.,
         filters) relevant to that application.

      3.1.4 Teardown Messages

         There are two types of RSVP Teardown message, PTEAR and RTEAR.
         A PTEAR message tears down path state and travels towards all
         receivers downstream from its point of initiation.  A RTEAR
         message tears down reservation state and travels towards all
         senders upstream from its point of initiation.

         A PTEAR message has the same format as a PATH message, except
         that in a PTEAR message:

         o    Type field = 5

         o    Refresh Period and State TTL Time fields are ignored.

         A RTEAR message has the same format as a RESV message, except
         that in a RTEAR message:

         o    Type field = 6

         o    Refresh Period and State TTL Time fields are ignored.

         Any Flowspec components of Flow Descriptors in a RTEAR or PTEAR
         message are ignored.

         Teardown messages are processed in the following way.

         o    PTEAR

              Processing a PTEAR  message is straightforward.  For each
              sender S in the message, the node removes path state for S
              and also deletes all related reservations.  Finally, the
              node forwards the original PTEAR message to all outgoing
              interfaces through which data packets from some S in the
              packet would be routed.  That is, PTEAR forwarding rules
              are the same as those for PATH messages.

         o    RTEAR




Zhang, Braden et al      Expires: January 1995                 [Page 35]


Internet Draft             RSVP Specification                  July 1994


              Processing an RTEAR  message is more complex.  Suppose a
              RTEAR message arrives through outgoing interface OI from
              next hop NH.  For each sender S listed in the RTEAR
              message, the node checks the reservation, if any, for S on
              OI.  If there is a reservation and if this reservation is
              shared among more than one next hop, then the only action
              is to remove NH from the list of next hops sharing this
              reservation.  If there is only a single next hop, then the
              reservation is deleted.  Finally, the node forwards the
              original RTEAR message to all incoming interfaces for
              senders listed in the message.  That is, RTEAR forwarding
              rules are the same as those for RESV messages.

   3.2 Avoiding Message Loops

      RSVP routes its control messages, and every routing procedure must
      avoid looping packets.  The merging of RSVP messages delays
      forwarding at each node for up to one refresh period.  This may
      avoid high-speed loop, but there can still be "slow" loops,
      clocked by the refresh period; the effect of such slow loops is to
      keep state active forever, even if the end nodes have ceased
      refreshing it.  RSVP uses the following rules to prevent looping
      messages.


           L1:  When an RSVP message is received through a particular
                incoming interface F, the message must not be forwarded
                out F as an outgoing interface.  This implies that RSVP
                must keep track of the interface through which each
                message is received, to avoid forwarding it out that
                interface.  Note that, although RSVP distinguishes
                incoming from outgoing interfaces, in many cases the
                same physical interface will play both roles.


           L2:  Upon receipt of a PATH message in particular, a route
                must be computed for each of its sender Flow
                Descriptors.  These routes, obtained from the
                uni/multicast routing table, generally depend upon the
                (sender host address, DestAddress) pairs.  Each route
                consists of a list of outgoing interfaces; these lists
                (with the incoming interfaces deleted by rule L1) are
                used to create merged PATH messages to be forwarded
                through the outgoing interfaces.

      Assuming that multicast routing is free of loops, PATH messages
      cannot loop even in a topology with cycles.




Zhang, Braden et al      Expires: January 1995                 [Page 36]


Internet Draft             RSVP Specification                  July 1994


      Since PATH messages don't loop, they create path state defining a
      loop-free path to each sender.  Similarly, RESV messages directed
      to particular senders cannot loop.  However, rules L1 and L2
      cannot protect against looping RESV messages that are directed
      towards all senders (WF or DF styles).  The following three rules
      are needed for this purpose.


           L3:  Each RESV message carries a receiver address in the
                RecvAddress field.  When the choice of address to place
                in a merged RESV message is otherwise arbitrary, RSVP
                must use the IP address that is numerically largest.


           L4:  When a RESV message is received, the Reverse Path
                Forwarding rule is applied to the receiver address in
                the message; that is, the message must be discarded
                unless it arrives on the interface that is the preferred
                route to the receiver.


           L5:  A RESV message whose RecvAddress matches one of the IP
                addresses of the local node must be discarded without
                processing.

      Figure 10 illustrates the effect of the rule L1 applied to RESV
      messages.  It shows a transit router, with one sender and one
      receiver on each side; interfaces a and c therefore are both
      outgoing interfaces and physical previous hops.  Both receivers
      are making a Wildcard-Filter style reservation, in which the RESV
      message is to be forwarded to all previous hops for senders in the
      group, with the exception of the interface through which it
      arrived.


















Zhang, Braden et al      Expires: January 1995                 [Page 37]


Internet Draft             RSVP Specification                  July 1994


                         ________________
                      a |                | c
      ( R1, S1 ) <----->|     Router     |<-----> ( R2, S2 )
                        |________________|

        Send & Receive on (a)    |     Send & Receive on (c)
                                 |
        WF( *{3B}) <-- (a)       |      (c) <-- WF( *{3B})
                                 |
        WF( *{4B}) --> (a)       |      (c) --> WF( *{4B})
                                 |
                                 |
            Reserve on (a)       |      Reserve on (c)
              __________         |        __________
             |  * {4B}  |        |       |   * {3B} |
             |__________|        |       |__________|
                                 |

              Figure 10: Example: Rule (1) for Preventing Loops.



      The loop-suppression rules for RESV messages also prevent looping
      of RTEAR messages.  Note that RTEAR messages are otherwise subject
      to fast loops, since they are not delayed by a refresh timeout
      period.

      PERR messages are routed upstream by the same rules used for FF
      and DF RESV messages (there is no equivalent of wildcard-filter
      for routing a PERR message).  Similarly, RERR messages are routed
      by the rules for PATH messages.  For reasons explained above, no
      special loop-suppression rules are required in either case.

   3.3 Soft State Management

      The RSVP state associated with a session in a particular node is
      divided into atomic elements that are created, refreshed, and
      timed out independently.  The atomicity is determined by the
      requirement that any sender or receiver may enter or leave the
      session at any time, and its state should be created and timed out
      independently.

      Management of RSVP state is complex because there is not generally
      a one-to-one correspondence between state carried in RSVP control
      messages and the resulting state in nodes.  Due to merging, a
      single message contain state referring to multiple stored
      elements.  Conversely, due to reservation sharing, a single stored
      state element may depend upon (typically, the maximum of) state



Zhang, Braden et al      Expires: January 1995                 [Page 38]


Internet Draft             RSVP Specification                  July 1994


      values received in multiple control messages.

      3.3.1 Time Parameters

         For each element, there are two time parameters controlling the
         maintenance of soft state: the refresh period R and the TTL
         (time-to-live) value T.  R specifies the period between
         successive refresh messages over the same link.  T controls how
         long state will be retained after refreshes stop appearing.

         PATH and RESV messages specify both R and T.  When messages are
         merged and forwarded to the next hop, R should be the minimum R
         that has been received, and T should be the maximum T that has
         been received.   Thus, the largest T determines how long state
         is retained, and the smallest R determines the responsiveness
         of RSVP to route changes.  In the first hop, they are expected
         to be equal.  The RSVP API should set a configurable default
         value, which can be overridden by an application for a
         particular session.

         To avoid gaps in user service due to lost RSVP messages, RSVP
         should be forgiving about missing refresh messages.  A node
         should not discard an RSVP state element until K * Tmax has
         elapsed without a refresh message, where Tmax is the maximum of
         the T values it has received.  K is some small integer; K-1
         successive messages may be lost before state is deleted.
         Currently K = 3 is suggested.

         Let X indicate a particular message type (either "Path" or
         "Resv") and a particular session.  Then each X message from
         node a to node b carries refresh period Rab and TTL time Tab.

         o    As X messages arrive at node b, the node computes and
              saves both the min over the Rab values (min(Rab)) and the
              max over the Tab values (max(Tab)) from these messages.

         o    The node uses K * max(Tab) as its cleanup timeout
              interval.

         o    The node uses min(Rab's) as the refresh period.

         o    Each refresh message forwarded by node b to node c has Tbc
              = max(Tab) and Rbc = min(Rab)

         o    A node may impose an upper bound Tmax and a lower bound
              Rmin, set by configuration information, and enforce: Rmin
              <= R <= T <= Tmax.




Zhang, Braden et al      Expires: January 1995                 [Page 39]


Internet Draft             RSVP Specification                  July 1994


         The receiver should be conservative about reacting to certain
         error messages.  For example, during a route change a receiver
         may get back "No Path" error messages until Path messages have
         propagated along the new route.

      3.3.2 Teardown

         Teardown messages, like other RSVP messages, are sent as
         datagrams and may be lost (although a QoS is used that should
         minimize the chances of congestive loss of RSVP messages).  To
         increase the reliability of teardown, Q copies of any given
         teardown message can be sent.  Note that if the iteration count
         Q on initiating teardown messages is > 1, then the state cannot
         actually be deleted until Q teardowns have been sent.  The
         state would be placed in a "moribund" status meanwhile.

         The appropriate value of Q is an engineering issue.  Q = 1
         would be the simplest and may be adequate, since unrefreshed
         state will time out anyway; teardown is an optimization.  Note
         that if one or more teardown hops are lost, the router that
         failed to receive a teardown message will time out its state
         and initiate a new teardown message beyond the loss point.
         Assuming that RSVP message loss probability is small (but non-
         zero), the longest time to delete state will seldom exceed one
         state timeout time K*Tab.

         Here is an example.  Here G1, G2, G3, and G4 are routers
         between a sender S and a receiver R.  S initiates a PTEAR
         message (denoted by "PT"), but this message is lost between
         routers G2 and G3.  Since G2 has deleted its state for S, G2
         will cease refreshing G3 (though G3 is still refreshing G4,
         etc.)

                   PT      PT      PT
                 S ---> G1 ---> G2 -->x   G3       G4        R

         After a time K*Tab, G3's state will time out, and G3 will
         initiate a teardown for S path state:

                                             PT       PT
                                          G3 ----> G4 ---->  R

         If some hop of this chain is lost, there will again be state
         timeout to continue the teardown.  This process should
         terminate in a few timeout periods.






Zhang, Braden et al      Expires: January 1995                 [Page 40]


Internet Draft             RSVP Specification                  July 1994


      3.3.3 Local Repair

         To accommodate merging, RSVP uses hop-by-hop refreshing of
         state, where each node sends refreshes to its next/previous
         hops periodically.  However, as an optimization, local events
         could be used to trigger the RSVP module to send such refreshes
         to any time.  For example, suppose that the local routing
         protocol module were able to notify the RSVP module that a
         route has changed for particular destinations.  The RSVP module
         could use this information to trigger an immediate refresh of
         state for these destinations along the new route.  This would
         allow fast adaptation to routing changes without the overhead
         of a short refresh period.

   3.4 Sending RSVP Messages

      Under overload conditions, lost RSVP control messages could cause
      the loss of resource reservations.  It recommended that routers be
      configured to give a preferred class of service to RSVP packets.
      RSVP should not use significant bandwidth, but the delay of RSVP
      packets needs to be controlled.

      An RSVP PATH or RESV message consists of a small root segment (24
      or 28 bytes) followed by a list of descriptors.  The descriptors
      are bulky and there could be a large number of them, resulting in
      potentially very large messages.  IP fragmentation is inadvisable,
      since it has bad error characteristics.  Instead, RSVP-level
      fragmentation should be used.  That is, a message with a long list
      of descriptors will be divided into segments that will fit into
      individual datagrams, each carrying the same root fields.  Each of
      these messages will be processed at the receiving node, with a
      cumulative effect on the local state.  No explicit reassembly is
      needed.

      The largest RSVP message is 556 bytes.

   3.5 Automatic Tunneling

      It is impractical to deploy RSVP (or any protocol) at the same
      moment throughout the Internet, and RSVP may never be deployed
      everywhere.  RSVP must therefore provide correct protocol
      operation even when two RSVP-capable routers are joined by an
      arbitrary "cloud" of non-RSVP routers.

      RSVP will automatically tunnel through such a non-RSVP cloud.
      Both RSVP and non-RSVP routers forward PATH messages towards the
      destination address using their local uni-/multicast routing
      table.  Therefore, the routing of  Path messages will be



Zhang, Braden et al      Expires: January 1995                 [Page 41]


Internet Draft             RSVP Specification                  July 1994


      unaffected by non-RSVP routers in the path.  When a PATH message
      traverses a non-RSVP cloud, the copies that emerge will carry as a
      Previous Hop address the IP address of the last RSVP-capable
      router before entering the cloud.  This will cause effectively
      construct a tunnel through the cloud for RESV messages, which will
      be forwarded directly to the next RSVP-capable router on the
      path(s) back towards the source.

      This automatic tunneling capability of RSVP has a cost: a PATH
      message must carry the session DestAddress as its IP destination
      address; it cannot be addressed hop-by-hop.  As a result, each
      RSVP router must have a small change in its multicast forwarding
      path to recognize RSVP messages (by the IP protocol number) and
      intercept them for local processing.  See Section 3.6.5 below.

      (There is a potential defect in tunneling.  Merged PATH messages
      can carry information for a list of senders, and since multicast
      routing depends in general upon the sender, it is not possible to
      ensure that all the non-RSVP routers along the tunnel will be able
      to route the packet properly.  The effect turns out to be that
      tunnels may distribute path information to RSVP routers where it
      should not go, which may in turn lead to unused reservations at
      these routers.  This is hoped to be an acceptable defect.)

      Of course, if an intermediate cloud does not support RSVP, it is
      unable to perform resource reservation.  In this case, firm end-
      to-end service guarantees cannot be made.  However, if there is
      sufficient excess capacity through such a cloud, acceptable and
      useful realtime service may still be possible.

   3.6 Interfaces

      3.6.1 Reservation Parameters

         All variable-length RSVP parameters use the same general
         format.  They begin with a length octet followed by a type
         octet, and occupy an integral number of fullwords.  The length
         octet specifies the total length of the parameter in fullwords
         or zero to indicate no parameter.  An RSVP implementation can
         store and pass such parameters as opaque objects.


         o    Flowspec Format

              Flowspec type 1 is specific to the CSZ packet scheduler
              [CSZ92].  It has the following format:





Zhang, Braden et al      Expires: January 1995                 [Page 42]


Internet Draft             RSVP Specification                  July 1994


               +-----------+-----------+-----------+-----------+
               | FlowSLen=6|FlowSType=1|      VFoffset         |
               +-----------+-----------+-----------+-----------+
               |    QoS Type (Guaranteed, Predictive, ...)     |
               +-----------+-----------+-----------+-----------+
               |           Max end-to-end delay (ms)           |
               +-----------+-----------+-----------+-----------+
               |           Average data rate (bits/ms)         |
               +-----------+-----------+-----------+-----------+
               |           Token Bucket Depth (bits)           |
               +-----------+-----------+-----------+-----------+
               |           Global Share Handle                 |
               +-----------+-----------+-----------+-----------+


              Flowspec format 2 is defined in RFC-1363 [Partridge92].

         o    Filterspec Format

              For compactness and simplicity of processing, this version
              of the RSVP specification defines an RSVP Filterspec to be
              composed of an explicit IP address plus an optional
              variable-length mask-and-value pair VF, in the following
              format:

               +-----------+-----------+-----------+-----------+
               |  FiltSLen |FiltSType=1|      VFoffset         |
               +-----------+-----------+-----------+-----------+
               |                Sender IP Address              |
               +-----------+-----------+-----------+-----------+  ---
               |                   V: VF Value Part            |   Nf
               /                                               / octets
               /                                               /
               +-----------+-----------+-----------+-----------+  ---
               |                   M: VF Mask Part             |   Nf
               /                                               / octets
               /                                               /
               +-----------+-----------+-----------+-----------+  ---


              The value M and the mask V each have length:


                 Nf = (4*FiltSLen - 8)/2 octets.

              M and V define a filter that uses a mask-and-match
              algorithm applied to the packet at VFoffset octets from
              the beginning of the IP header.  The minimum length of



Zhang, Braden et al      Expires: January 1995                 [Page 43]


Internet Draft             RSVP Specification                  July 1994


              this format of sender template is 7 octets (FiltSLen = 2).

              A wildcard Filterspec, which will match any sender host,
              has zero for the Sender IP Address [If VM part zero also,
              could shorten to FiltSLen = 2].

              To speed RSVP processing, a filterspec that appears in an
              RSVP message use the following "canonical form".

              o    The high-order octet of the mask M must be non-zero
                   (this can always be achieved by adjusting VFoffset).

              o    The (V,M) part must not include either the sender or
                   receiver address of the IP header; these are carried
                   explicitly.

              ISSUE:

                 There are many possible filter rules that cannot be
                 expressed using a simple mask and value pair.  A
                 compact and general filter encoding is for further
                 study.

         o    Authenticator Format

              The following simple form of authenticator is defined:

               +-----------+-----------+-----------+-----------+
               |   AuthLen | AuthType=1|                       |
               +-----------+-----------+                       +
               |               Mailbox name: user@domain       |
               //                                              //
               +-----------+-----------+-----------+-----------+

              The rules for merging and interpreting this field require
              further study.


      3.6.2 Application/RSVP Interface

         This section describes a generic API from an application to an
         RSVP control process.  The details of a real interface may be
         operating-system dependent; the following can only suggest the
         basic functions to be performed.  Some of these calls cause
         information to be returned asynchronously.

         An application could directly send and receive RSVP messages,
         just as an application can do file transfer using UDP.



Zhang, Braden et al      Expires: January 1995                 [Page 44]


Internet Draft             RSVP Specification                  July 1994


         However, we envision that many applications will not want to
         know the details of RSVP operation, nor to provide the timing
         services necessary to keep the state refreshed, any more than
         an application wants to handle TCP retransmission timeouts.
         Therefore, a host using RSVP may have an RSVP control process
         to handle these functions.  Using local IPC, applications will
         register or modify resource requests with this process and
         receive notifications of success or change of conditions.


         Register

              Call: REGISTER( DestAddress, ResvID, SND-flag, RCV-flag,
                          [, DROP-flag] [, rsvpTTL] [, SenderTemplate] [, flowspec]
                                      [, UserCredentials] )  -> session-id

              This call initiates RSVP processing for the session
              (DestAddress, ResvID).  If successful, the call returns
              immediately with a local session identifier "session-id",
              which may be used in subsequent calls.  Following this
              call, an asynchronous ERROR or EVENT call (see below) may
              occur at any time.

              SND-flag should be set true if the host will send data,
              and RCV-flag should be set true if the host will receive
              data.  Setting neither true is an error.  The optional
              parameters DROP-flag, rsvpTTL, SenderTemplate, and
              Flowspec should be supplied only if SND-flag is true.

              DROP-flag indicates that session data packets that do not
              match any active filter in some node should be dropped at
              that node; otherwise, such packets will be forwarded using
              a best-effort QoS.  The rsvp-TTL parameter specifies the
              IP Time-to-Live field that will be used in PATH messages.
              The value of rsvp-TTL should match the TTL field to be
              sent in data packets, so they will have the same multicast
              scope.

              A REGISTER call with SND-flag equals TRUE will initiate
              the transmission of PATH messages.

         Reserve

              Call: RESERVE( session-id, style [, DF-chan-count]
                               Flowspec-list, Filterspec-list)

              A receiver uses this call to make a resource reservation
              for the session registered as `session-id'.  The style



Zhang, Braden et al      Expires: January 1995                 [Page 45]


Internet Draft             RSVP Specification                  July 1994


              parameter is an integer index indicating the reservation
              style.  The DF-chan-count parameter, indicating the number
              of Dynamic Filter channels to be reserved, should only be
              included if the style is DF.

              The first RESERVE call will initiate the periodic
              transmission of RESV messages.  A later RESERVE call may
              be given to modify the parameters of the earlier call (but
              note that changing the reservations may result in
              admission control failure, depending upon the style).

              The RESERVE call returns immediately.  Following this
              call, an asynchronous ERROR or EVENT call may come at any
              time.

         Release

              Call: RELEASE( session-id )

              This call will terminate RSVP state for the session
              specified by session-id.  It will send appropriate
              "Teardown" messages and cease sending refreshes.

         Error Upcall

              Call: ERROR( ) -> session-id, error-type, error-code
                                      [, flowspec] [, filterspec]

              This upcall may occur asynchronously at any time after a
              REGISTER call and before a RELEASE call, to indicate an
              error.  The allowed values of error-type and error-code
              depend on whether the node is sending, receiving, or both.

              The ERROR upcall reporting an admission control failure to
              a receiver will specify in `flowspec' the flowspec that
              actually failed.  This may differ from the flowspec
              specified by this application in a RESERVE call, due to
              upstream merging with reservation requests from other
              receivers.

         Event Upcall

              Call: EVENT( ) -> session-id, info-type,
                                [, flowspec-list] [, filterspec-list]

              This upcall may occur asynchronously at any time after a
              REGISTER call and before a RELEASE call, to signal an
              event and to pass information to the application.



Zhang, Braden et al      Expires: January 1995                 [Page 46]


Internet Draft             RSVP Specification                  July 1994


              The `info-type' field indicates one of two possible event
              types.  A Path event indicates the receipt of a PATH
              message, indicating to the application that there is at
              least one active sender.  A Reservation event indicates
              the receipt of a RESV message, indicating to the
              application that there is at least one receiver.  Although
              these messages are repeatedly received, the API should
              make the corresponding asynchronous upcall to the
              application only on the first event, or when the
              information to be reported changes.

              ISSUE:

                 The precise form and function of the flowspec-list and
                 filterspec-list parameters are to be determined.


      3.6.3 RSVP/Traffic Control Interface

         In each router and host, enhanced QoS is achieved by a group of
         inter-related functions:  a packet Classifier, an admission
         control module, and a packet scheduler.  We group these
         functions together under the heading traffic control.  RSVP
         uses the interfaces in this section to invoke the traffic
         control functions.


         1.   Make a Reservation

              Call: Rhandle =  TCAddFlow( Flowspec, DropFlag,
              [SessionFilterspec [, SenderFilterspec]] )

              Returns an internal handle Rhandle for subsequent
              references to this reservation.

              This call passes Flowspec to admission control and returns
              an error code if Flowspec is malformed or if the requested
              resources are unavailable.  Otherwise, it establishes a
              new reservation channel corresponding to Rhandle, and if
              Filterspecs are supplied, installs a corresponding filter
              in the classifier.

              For FF reservation requests, RSVP knows about sharing and
              calls AddFlow only for distinct source pipes.

              For DF reservation requests: suppose that the RESV message
              specifies a Dynamic Reservation Count = D, and F flow
              descriptors, where 0 <= F <= D.  Then RSVP calls AddFlow D



Zhang, Braden et al      Expires: January 1995                 [Page 47]


Internet Draft             RSVP Specification                  July 1994


              times, and D - F of those calls have null filterspecs.

         2.   Switch a Channel

              Call: TCModFilter( Rhandle, [new Filterspec])

              This call replaces the filter without calling admission
              control.  It may replace an existing filter with no
              filter, modify an existing filter, or replace no filter by
              a filter.

         3.   Modify Flowspec

              Call: TCModFlowspec( Rhandle, oldFlowspec, newFlowspec)

              Here newFlowspec may be larger or smaller than
              oldFlowspec.

         4.   Delete Flow

              Call:  TCDeleteFlow( Rhandle )

              This call kills the reservation and reduces the reference
              count of, and deletes if the count is zero, any filter
              associated with this handle.

         5.   Initialize

              Call: TCInitialize( )

              This call is used when RSVP initializes its state, to
              clear out all existing classifier and/or packet scheduler
              state.

      3.6.4 RSVP/Routing Interface

         An RSVP implementation needs the following support from the
         packet forwarding and routing mechanism of the node.


         o    Promiscuous receive mode for RSVP messages

              Any datagram received for IP protocol 46 is to be diverted
              to the RSVP program for processing, without being
              forwarded.

         o    Route discovery




Zhang, Braden et al      Expires: January 1995                 [Page 48]


Internet Draft             RSVP Specification                  July 1994


              RSVP must be able to discover the route(s) that the
              routing algorithm would have used for forwarding a
              specific datagram.

              GetUCRoute( DestAddress ) -> NextHop, Interface

              GetMCRoute( SrcAddress, DestAddress ) -> Interface

         o    Outgoing Link Specification

              RSVP must be able to force a (multicast) datagram to be
              sent on a specific outgoing virtual link, bypassing the
              normal routing mechanism.  A virtual link may be a real
              outgoing link or a multicast tunnel.

              This is necessary because RSVP may send different versions
              of outgoing PATH messages on different interfaces, for the
              same source and destination addresses.

         o    Discover (Virtual) Interface List

              RSVP must be able to learn what real and virtual
              interfaces exist.


4. ACKNOWLEDGMENTS

   Lixia Zhang, Scott Shenker, Deborah Estrin, Dave Clark, Sugih Jamin,
   Shai Herzog, Steve Berson, Steve Deering, Bob Braden, and Daniel
   Zappala have all made contributions to the design of RSVP.  We are
   grateful to Jamin, Herzog, and Berson for prototype implementations.
   The original protocol concepts for RSVP arose out of discussions in
   meetings of the End-to-End Research Group.

REFERENCES

[CSZ92]  Clark, D., Shenker, S., and L. Zhang, "Supporting Real-Time
    Applications in an Integrated Services Packet Network: Architecture
    and Mechanisms", Proc. SIGCOMM '92, Baltimore, MD, August 1992.

[ISInt93]  Braden, R., Clark, D., and S. Shenker, "Integrated Services
    in the Internet Architecture: an Overview", RFC 1633, ISI, MIT, and
    PARC, June 1994.

[IServ93]  Shenker, S., Clark, D., and L. Zhang, "A Service Model for an
    Integrated Services Internet", Work in Progress, October 1993.

[Partridge92]  Partridge, C., "A Proposed Flow Specification", RFC 1363,



Zhang, Braden et al      Expires: January 1995                 [Page 49]


Internet Draft             RSVP Specification                  July 1994


    BBN, September 1992.

[RSVP93]  Zhang, L., Deering, S., Estrin, D., Shenker, S., and D.
    Zappala, "RSVP: A New Resource ReSerVation Protocol", IEEE Network,
    September 1993.



Security Considerations

   As noted in Section 2.1, the ability to reserve resources will create
   a requirement for authentication of users who request reservations.
   An authentication field has been included in this version of the
   protocol spec, but further study on its format and usage will be
   required.

Authors' Addresses

   Lixia Zhang
   Xerox Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, CA 94304

   Phone: (415) 812-4415
   EMail: Lixia@PARC.XEROX.COM


   Bob Braden
   USC Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, CA 90292

   Phone: (310) 822-1511
   EMail: Braden@ISI.EDU


   Deborah Estrin
   Computer Science Department
   University of Southern California
   Los Angeles, CA 90089-0871

   Phone: (213) 740-4524
   EMail: estrin@USC.EDU








Zhang, Braden et al      Expires: January 1995                 [Page 50]


Internet Draft             RSVP Specification                  July 1994


   Shai Herzog

   USC Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, CA 90292
   Palo Alto, CA 94304

   Phone: (310) 822 1511
   EMail: Herzog@ISI.EDU


   Sugih Jamin
   Computer Science Department
   University of Southern California
   Los Angeles, CA 90089-0871

   Phone: (213) 740-6578
   EMail: jamin@catarina.usc.edu

































Zhang, Braden et al      Expires: January 1995                 [Page 51]