Internet Draft Lixia Zhang Expires: April 1994 Xerox PARC File: draft-braden-rsvp-00.txt Bob Braden USC-ISI Deborah Estrin USC/USC-ISI Shai Herzog USC-ISI Sugih 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. Internet-Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet- Drafts as reference material or to cite them other than as a "working draft" or "work in progress." 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. 1. Introduction This memo describes RSVP, a resource reservation setup protocol designed for an integrated services Internet [RSVP93,ISInt93]. A host 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 router along the path, RSVP passes a new resource reservation Zhang, Braden et al Expires: April 1994 [Page 1] Internet Draft RSVP Specification October 1993 request to an admission control routine, to determine whether there are sufficient resources available. If there are, the router reserve the resources and updates its packet scheduler and classifier control parameters to provide the requested QoS [ISInt93]. 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 is not itself a routing protocol, but it is designed to use the existing unicast and multicast routing protocols to determine the data path(s). o RSVP reserves resources for simplex data streams. o RSVP is receiver-oriented, i.e., the receiver of the data flow is responsible for the initiation and maintenance of the resource reservation. 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 styles" with different reservation models to fit a variety of applications. o RSVP provides transparent operation through routers that do not support it. There are two aspects to RSVP, its reservation model and its protocol mechanisms. 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 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: April 1994 [Page 2] Internet Draft RSVP Specification October 1993 RSVP will deliver this request to the routers along the reverse path(s) to the sender(s). 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 presents the host model, and Section 2.5 gives examples of both model and mechanism. 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 replicates each data packet from a sender Si and delivers a copy to every receiver Rj (whether a packet actually arrives at Rj depends on the specified QoS and perhaps upon congestion encountered along the path). Each sender Si and receiver Rj may correspond to a unique Internet host, or there may be multiple senders (e.g., multiple TV cameras) and/or receivers in a single host. The RSVP model for data distribution is simplex, i.e., it reserves resources in only one direction on a link, so that senders are logically distinct from receivers. However, the same host 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 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, and the receivers will have all "joined" this multicast Zhang, Braden et al Expires: April 1994 [Page 3] Internet Draft RSVP Specification October 1993 group. 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 destination stream id (DestSID). We use the term session socket for the (DestAddress, DestSID) 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. If a particular sender's flow arriving at a router has no corresponding reservation in place, the router will either drop the packets from the flow or send them using a best-effort QoS. This choice is controlled by each sender. Depending upon the reservation style and the state already in place for the session, a new or modified reservation request may result in a call to admission control. If an admission control call fails, the reservation is rejected and an RSVP error message is sent downstream 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 allowable delay, the average bandwidth, the maximum burstiness, etc [ISInt93,IServ93]. It is used to parametrize the packet scheduling mechanism in the router or host. The filterspec defines the set of data packets to receive this service. A flowspec is opaque to RSVP. However, given a pair of flowspecs Fls1 and Fls2, RSVP needs to be able to: (1) determine whether they are identical, (2) determine whether Fls1 ">" Fls2, or that they cannot be compared, and (3) find a third flowspec Fls3 that dominates both (Fls3 ">" Fls1 and Fls3 ">" Fls2), even if Fls1 and Fls2 cannot be compared. A flowspec may be a complex multi- dimensional vector; the relationship Fls1 ">" Fls2, when it is defined, indicates that Fls1 represents at least as strict a request (and hence represents at least as large a resource commitment) as Fls2. The data packets selected by a particular filterspec will presumably be all be addressed to DestAddress. The filterspec may also select data packets only from particular senders Si; the set of senders selected by a particular filter is referred to as the "scope". A filter may further reduce the data packet subset based on flow demultiplexing fields such as a UDP port, or perhaps on some hierarchical encoding bits within the application layer. Zhang, Braden et al Expires: April 1994 [Page 4] Internet Draft RSVP Specification October 1993 2.2 Reservation Styles RSVP has a number of distinct "reservation styles", which determine the precise reservation model for applications. The following reservation styles have been defined so far; others may be introduced in the future. 1. Wildcard-Filter Using the Wildcard-Filter (WF) style, a receiver creates a single reservation, or resource "pipe", along each link, shared among all senders for the given session. The size of this "pipe" is the maximum of the resource requests for that link from all receivers, independent of the number of senders using it. The term `wildcard' refers to a filter scope that implicitly selects all senders, inplicitly extending to new senders as soon as they start sending to the group. 2. Fixed-Filter Using the Fixed-Filter (FF) style, each receiver selects the particular sender whose data packets it wants to receive, and it specifies a corresponding flowspec for that sender. Receivers that select the same sender will share the reservation for that sender (indeed, due to multicasting there is only one stream of data packets from any Si in a particular router, regardless of the number of receivers Rj downstream). The shared reservation for Si will be greater than (in the sense of ">" as discussed earlier) or equal to all of the individual flowspecs from receivers Rj that selected Si. However, reservations for different senders are distinct; they do NOT share a common pipe. The total reservation on a link for a given session is the sum over the reservations for different senders. A Fixed-Filter reservation request from a particular receiver Rj generally contains a list of Flow Descriptors, each consisting of a filterspec (specifying some sender Si) and a corresponding flowspec. If a receiver using the FF reservation style changes its sender selection during the session, this is treated as a new reservation that is subject to admission control and may fail. The receiver may also modify the flowspecs, again subject to admission control. Zhang, Braden et al Expires: April 1994 [Page 5] Internet Draft RSVP Specification October 1993 3. Dynamic-Filter Using the Dynamic-Filter (DF) style, each receiver creates N distinct reservations to carry flows from up to N different senders. A DF style reservation also specifies a list of K filterspecs (0 <= K <= N), defining particular senders to use these reservations, as well as a common flowspec. Like the FF style, the DF style causes distinct reservations for different senders. A later DF reservation from the same receiver may specify the same value of N and the same common flowspec but a different selection of particular senders, without a new admission control check. This is known as channel switching, in analogy with a television set. Each DF style reservation may be said to be "owned" by the receiver that established it and is permitted to switch channels (change senders) used by that reservation. If a receiver using the DF reservation style changes the number of distinct reservations N or the common flowspec, this is treated as a new reservation that is subject to admission control and may fail. Those data packets for the same session socket but from senders that are not currently selected may either be dropped or simply sent best-effort. The essential difference between the FF and DF styles is that the latter allows dynamic channel switching without admission control. Once a DF-style reservation has been made, the receiver may switch channels without danger of an admission control failure due to limited resources (unless the route changes to a lower-capacity path or new senders appear). In order to provide admission-free channel switching, the DF style must cause the routers must reserve the requested bandwidth for all the possible senders Si, even though some of this bandwidth may be unused at any one time, or always. DF reservations may therefore have a significant cost to the Internet in under- utilized reservations. Wildcard-Filter reservations are appropriate when the total bandwidth required is independent of the number of senders. This is true for audio conferences, where a limited number of people talk at once. Thus, each receiver might issue a Wildcard-Filter reservation for twice one audio channel (to allow some over- speaking). On the other hand, the Fixed-Filter and Dynamic-Filter styles create independent reservations for the flows from different senders; this is required for video signals, whose Zhang, Braden et al Expires: April 1994 [Page 6] Internet Draft RSVP Specification October 1993 `silence' periods are typically uncoordinated among different senders. 2.3 RSVP Protocol Mechanisms 2.3.1 RSVP Messages RSVP messages are sent as IP datagrams; thus, RSVP occupies the place of a transport protocol in the protocol stack. However, like ICMP and IGMP, RSVP is really an Internet control protocol; it does not carry any application data, and its messages are processed by the routers in the path. Each receiver host sends RSVP reservation, or 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 send that lie within the scope of active reservations. These RESV messages are finally delivered to the sender hosts, so that the senders can set up appropriate Traffic Control parameters for the first hop. In order to route the RESV messages in the reverse direction from each receiver to all selected senders for a given session socket, each sender must transmit 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, effectively combining all the routing trees given by the routing protocol for the same DestAddress. Sender Receiver _____________________ Path --> ( ) Si =======> ( Multicast ) Path --> <-- Resv ( ) =========> Rj ( distribution ) <-- Resv (_____________________) Figure 2: RSVP Messages The minimum information content of a PATH message is a list of sender IP addresses, since this is required for routing RESV messages. However, PATH messages may carry the following additional information: Zhang, Braden et al Expires: April 1994 [Page 7] Internet Draft RSVP Specification October 1993 o A template describing the format of data packets that the sender will originate. This 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 validate the filters 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. 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 [RSVP93]. A (template, flowspec) pair in a PATH message is called a Sender Descriptor. 2.3.2 Soft State To maintain reservation state, RSVP uses "soft state" in the router and host nodes. RSVP soft state is created and maintained in two directions by PATH and RESV messages. It is periodically refreshed by messages that are identical to the message that established the state, and it is removed at each node by a timer-driven cleanup procedure if no refresh message is received within a cleanup timeout interval. If a route changes, the next copy of the message will initialize the state on the new route, while the state on the now-unused segment of the route will time out. Thus, whether a message is "new" or a "refresh" is determined separately for each message at each node, depending upon the 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 its messages as IP datagrams, without reliable delivery. If a reservation request fails, an RSVP error message is returned to the receiver; however, RSVP sends no positive acknowledgment messages to indicate success. Periodic transmission of refresh messages by hosts and routers should replace any lost RSVP messages. If the set of senders Si or receivers Rj changes, or if any of the reservation requests change, the RSVP state is adjusted Zhang, Braden et al Expires: April 1994 [Page 8] Internet Draft RSVP Specification October 1993 accordingly. To modify a reservation, a receiver simply starts sending the new values; it is not necessary to "close" the old reservation first. RSVP believes the latest PATH and RESV messages (ignoring the possibility of reordering). When a RESV message is received at a router or sender host, the RSVP module checks whether the message is a new or modifedi 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), using the path state. If the request is rejected, RSVP discards the Resv message and returns a RSVP error message to the receiver host that originated it. If the modification replaces some previous state, RSVP may immediately remove the old state, or it may simply let the old state time out since it is no longer being refreshed. Previous Incoming Outgoing Hops Interfaces Interfaces ______ _____________________ | | Path --> | | Path --> | |-----------| |--------------- |______| <-- Resv | | <-- Resv data --> | | data --> | Router | ______ | | | | Path --> | | Path --> | |-----------| |--------------- |______| <-- Resv | | <-- Resv data --> |_____________________| data --> Figure 3: Router Using RSVP Figure 3 illustrates the model of a router used by RSVP. The data arrives from a previous hop through a corresponding incoming interface and departs through an outgoing interface. The incoming interfaces shown in Figure 3 may be physical interfaces (e.g., to point-to-point links), or they may be logical interfaces, multiple paths using the same physical interface to a shared medium (e.g., an Ethernet). Output is designated by the outgoing interface rather than by a "next hop" address to be consistent with IP multicast routing. Since the same host may be both sender and receiver for a given Zhang, Braden et al Expires: April 1994 [Page 9] Internet Draft RSVP Specification October 1993 session, the same physical interface may act in both the incoming and outgoing roles. 2.3.3 Merging RSVP Messages To control its protocol overhead, RSVP supports merging of multiple PATH and RESV messages for the same session socket. Those messages that cause a state change are forwarded without delay, while the rest may be "merged" into fewer messages, perhaps only one. Merging requires synchronization among the messages being merged. This is accomplished by saving the state of received messages, dropping the messages, and periodically generating and forwarding cumulative messages in their place. Thus, refresh messages are created hop-by-hop, at a rate determined by the refresh period. Messages that modify the state in a node ("new" messages) must be forwarded without delay. Thus, the refresh period does not affect the rate at which new state propagates from end to end. For PATH messages, merging implies collecting together the Sender Descriptors from multiple incoming messages into a single outgoing PATH message. For RESV messages, merging generally implies that only the essential (e.g., the largest) refresh reservation messages need be forwarded once per refresh period; redundant messages can be dropped. A successful reservation request will propagate as far as the closest point 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 a larger reservation. As a result of merging, the number of RSVP control messages will increase less than linearly with the number of senders and receivers in a session. There is no merging across sessions, however, so the number of RSVP messages will increase linearly with the number of sessions. The refresh period and the cleanup timeout must obey some general principles. A. The cleanup timeout interval should be long enough to avoid reservation-flapping due to route-flapping. If route flapping does occur, persistent state will allow duplicate reservations to be created along the alternate paths. This duplication is desirable to prevent interruptions of service quality due to route Zhang, Braden et al Expires: April 1994 [Page 10] Internet Draft RSVP Specification October 1993 flapping. B. The refresh period should be short enough in order to adapt quickly to route changes. C. The refresh period must be long enough to control RSVP overhead. Applications may differ in their sensitivity to outages, and should be able to have some control over the refresh period for their session state. 2.4 Host Model Before a session can be created, the session socket (comprised of DestAddress and DestSID) 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 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., Zhang, Braden et al Expires: April 1994 [Page 11] Internet Draft RSVP Specification October 1993 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 the receiver starts sending RESV messages (H4) before any PATH messages have reached it, RSVP will return ERR messages. The receiver may simply choose to ignore such error messages, or it may avoid them in one of two ways. (1) It may synchronize in a higher-level protocol, e.g., a conference control protocol might ensures that RESV messages are not sent by any participant until all have started to send PATH messages. (2) The receiver may synchronize using RSVP messages, by waiting for PATH messages before sending RESV messages. The interface (API) between RSVP and an application 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. 2.5 Examples Figure 4 shows schematically a router with two previous hops (labeled a and b) and two outgoing interfaces (labeled c and d). 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). ________________ a | | c ( S1 ) ---------->| |----------> ( R1, R2) | Router | b | | d ( S2,S3 ) ------->| |----------> ( R3 ) |________________| Figure 4: Router Configuration We use the following notation for a RESV message sent by receiver Rj: 1. Wildcard-Filter WF( Rj; *{r}) Zhang, Braden et al Expires: April 1994 [Page 12] Internet Draft RSVP Specification October 1993 Here "*{r}" represents a Flow Descriptor with a "wildcard" filter (choosing all senders) and a flowspec of quantity r. For simplicity we imagine here that flowspecs are one- dimensional, defining for example the average bandwidth, and state them as a multiple of some unspecified base resource quantity B. 2. Fixed-Filter FF( Rj; S1{r1}, S2{r2}, ...) This message carries a list of sender, flowspec pairs, i.e., Flow Descriptors. 3. Dynamic-Filter DF( nB, Rj; ) or DF( nB, Rj; S1, ...) This message carries the number n of channels to be reserved, each channel having bandwidth B. It also has an list, perhaps empty, of senders. Since each channel must carry the same bandwidth B, we omit flowspecs after the semicolon. Figure 5 shows Wildcard-Filter reservations. The "Receive" column shows the RESV messages received over outgoing interfaces c and d, 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. When the flowspecs are equal, the message whose receiver IP address is numerically larger is sent. Here we assume that IPaddr(R1) > IPaddr(R3) so the R1 reservation is sent upstream. Merging will therefore delete the messages enclosed in square brackets. In the outgoing interface c, there is a common reserved channel shared by R1 and R2. Zhang, Braden et al Expires: April 1994 [Page 13] Internet Draft RSVP Specification October 1993 | Send | Reserve Receive | | ________ WF(R1; *{3B}) <- (a) | (c) | *{3B} | (c) <- WF(R1; *{3B}) | |________| [ WF(R2; *{B}) <- (a)] | [ (c) <- WF(R2; *{B}) ] | [ WF(R3; *{B}) <- (a)] | ------------------------|------------------------------------------ | _______ WF(R1; *{3B}) <- (b) | (d) | *{B} | (d) <- WF(R3; *{B}) | |_______| [ WF(R2; *{B}) <- (b)] | | [ WF(R3; *{B}) <- (b)] | Figure 5: Wildcard-Filter Reservation Example Figure 6 shows Fixed-Filter style reservations. Merging takes place among the flow descriptors (i.e., filter spec, flowspec pairs); the unmerged messages are not shown. 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(R2; S1{B}) and FF(R3; S1{3B}) are merged, the result is the single message FF(R3; S1{3B}) 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: April 1994 [Page 14] Internet Draft RSVP Specification October 1993 | Send | Reserve Receive | | ________ FF(R3; S1{3B}) <- (a) | (c) | S1{B} | (c) <- FF(R2; S1{B}, S2{5B}) | |________| | | S2{5B} | | |________| ------------------------|--------------------------------------------- | ________ <- (b) | (d) | S1{3B} | (d) <- FF(R3; S1{3B}, S3{B}) FF(R3; S2{5B}, S3{B}) | |________| | | S3{B} | | |________| Figure 6: Fixed-Filter Reservation Example Figure 7 shows an example of Dynamic-Filter reservations. Within the reservation boxes, the receiver that owns the reservation is shown followed by a colon. R2 and R3 have made reservations for which there is currently no filter, as indicated by a filter of `?'. | Send | Reserve Receive | | ___________ DF(2, R1; S1) <- (a) | (c) | R1: S1{B} | (c) <- DF(2, R1; S1, S2) | |___________| DF(2, R2; ) <- (a) | | R1: S2{B} | (c) <- DF(2, R2; S2) | |[R2: S2{B}]| DF(2, R3; S1) <- (a) | |___________| | | R2: ?{B} | | |___________| ------------------------|--------------------------------------------- | ___________ DF(2, R1; S2) <- (b) | (d) | R3: S1{B} | (d) <- DF(2, R3; S1) | |___________| DF(2, R2; S2) <- (b) | | R3: ?{B} | | |___________| DF(2, R3; ) <- (b) | Figure 7: Dynamic-Filter Reservation Example Zhang, Braden et al Expires: April 1994 [Page 15] Internet Draft RSVP Specification October 1993 Both R1 and R2 have requested reservations for S2. Since there is only one stream of packets from S2, only R1's reservation is actually made. However, the router keeps a record of R2's request as a "hidden reservation", shown in square brackets. If R1 removes its reservation for S2, the node must check for a hidden reservation for the same source, so that it can reassign the channel to R2 without waiting for R2's next refresh. This use of hidden reservations for Dynamic-Filter reservations is necessary to avoid new admission control decisions (which might fail) and to ensure continuity of service. A router should not reserve more Dynamic-Filter channels than the number of upstream sources. Thus, in Figure 7, both R1 and R2 request that admission control admit two channels worth of bandwidth. However, there are only 3 sources upstream from this point, so these requests are satisfied with a total of 3 channel reservations. Since there is only one source upstream from previous hop b, the first parameter of the DF message (the count of channels to be reserved) could be decreased to 1 in the forwarded reservations. However, this is unnecessary because the routers upstream will reserve only one channel, regardless. We note that Dynamic-Filter requests cannot be merged, since they tie each reservation to a particular owner. A node is permitted to include Flow Descriptors that are not relevant to the path (i.e., not upstream along that path). Thus, in Figure 7, the node could forward each of the three RESV messages exactly as received from c and d, to both previous hops a and b; the previous hop would ignore the irrelevant Flow Descriptors in each case. As another example of these concepts, Figure 8 shows the previous hop router on incoming interface (a) in Figure 7. Here there are two hidden reservations. Zhang, Braden et al Expires: April 1994 [Page 16] Internet Draft RSVP Specification October 1993 Send | Reserve Receive | ___________ DF(2, R1; S1) <- (a) | (c) | R1: S1{B} | (c) <- DF(2, R1; S1) | | | DF(2, R2; ) <- (a) | |[R2: ?{B}]| (c) <- DF(2, R2; ) | | | DF(2, R3; S1) <- (a) | |[R2: S1{B}]| (c) <- DF(2, R3; S1) | |___________| Figure 8: Previous Hop to Figure 7 interface (a). Zhang, Braden et al Expires: April 1994 [Page 17] Internet Draft RSVP Specification October 1993 3. Functional Specification There are currently three types of RSVP messages: Path, Resv, and ERR. A fourth type, TEARDOWN, is under consideration. 3.1 Message Formats 3.1.1 Path Message 0 1 2 3 +-------------+-------------+-------------+-------------+ | Vers | Type | Flags | RSVP Checksum | +-------------+-------------+-------------+-------------+ --- | DestAddress | Session +-------------+-------------+-------------+-------------+ | DestSID | Socket +-------------+-------------+-------------+-------------+ --- | Refresh Period | +-------------+-------------+-------------+-------------+ | State TTL Time | +-------------+-------------+-------------+-------------+ | Previous Hop Address | +-------------+-------------+-------------+-------------+ | /////////////// | SD Count | +-------------+-------------+-------------+-------------+ | 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). RSVP Fields: Vers Zhang, Braden et al Expires: April 1994 [Page 18] Internet Draft RSVP Specification October 1993 Version number. This is version 1. Type 1 = Path Message Flags 1 = No-Refresh A PATH message received with this flag bit on will be forwarded with no (further) merging, the path state TTL timer(s) will not be reset (as if no refresh message had been received), and a refresh message will not be generated during the current refresh period for the senders listed, However, if there is no path state a PATH message containing this flag bit will be ignored. For further discussion of the use of this bit, see Section 3.3 below. 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, DestSID 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. Zhang, Braden et al Expires: April 1994 [Page 19] Internet Draft RSVP Specification October 1993 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. 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. See Section 3.2 below. SD Count Count of Sender Descriptors that follow. 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. If an error is encountered while processing a PATH message, an RSVP ERR 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), Zhang, Braden et al Expires: April 1994 [Page 20] Internet Draft RSVP Specification October 1993 not the IP source address. This is necessary to prevent loops; see Section 3.2. Each Sender Descriptor consists of a sender template that defines the format of data packets and a corresponding Flowspec that describes the traffic characteristics. The template is composed of an explicit IP address plus a variable-length mask-and-value pair VF, in the following format: +-----------+-----------+-----------+-----------+ | Sender IP Address | +-----------+-----------+-----------+-----------+ | VFlength | VFoffset | +-----------+-----------+-----------+-----------+ --- | V: VF Value Part | 4*VFlength / / octets / / +-----------+-----------+-----------+-----------+ --- | M: VF Mask Part | 4*VFlength / / octets / / +-----------+-----------+-----------+-----------+ --- The value M and the mask V each have length 4*VFlength octets. M and V define a filter using a simple mask-and-match algorithm applied to the packet at 4*VFoffset octets from the beginning with the internet layer header. The VF part should not include the sender IP address or DestAddress; RSVP will effectively embed these explicit addresses into the template before using it to validate a filterspec. Zhang, Braden et al Expires: April 1994 [Page 21] Internet Draft RSVP Specification October 1993 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 | Session +-------------+-------------+-------------+-------------+ | DestSID | Socket +-------------+-------------+-------------+-------------+ --- | Refresh Period | +-------------+-------------+-------------+-------------+ | State TTL Time | +-------------+-------------+-------------+-------------+ | RecvAddress | +-------------+-------------+-------------+-------------+ | Dynamic Reservation Count | FD Count | +-------------+-------------+-------------+-------------+ | 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 host or router 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: Type 2 = Resv Message Flags Zhang, Braden et al Expires: April 1994 [Page 22] Internet Draft RSVP Specification October 1993 1 = No-Refresh A RESV message received with this flag bit on will be forwarded without (further) merging, the TTL timer for the reservation state to which it refers will not be reset (as if no refresh message had been received), and no hop-by-hop refresh message will be generated during the current refresh period for the receiver specified by RecvAddress. However, if there is no reservation state for this receiver or no path state for this session, a Resv message containing this flag bit will be ignored. For further discussion of the use of this bit, see Section 3.3 section below. The following flag bits indicate the reservation style. 2 = Fixed-Filter 4 = Dynamic-Filter RecvAddress The IP address of the receiver that originated 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 Filter Specs in the Flow Descriptor List. Flow Descriptor List A list of Flow Descriptors, i.e., (Filterspec, flowspec) pairs, to define individual reservations for Fixed-Filter and Dynamic-Filter styles. The Zhang, Braden et al Expires: April 1994 [Page 23] Internet Draft RSVP Specification October 1993 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 | Filter Spec ... | +-------------+-------------+-------------+----------//-+ | FlowSLen | ... Flow Spec ... | +-------------+-------------+-------------+----------//-+ Here FiltSLen and FlowSLen are one-octet fields specifying the lengths in octets (including the length byte) of the Filterspec and flowspec, respectively. A Wildcard-Filter style reservation is encoded as a special case of a Fixed-Filter reservation: a single Fixed-Filter channel in which the Filterspec specifies the wild-card filter, i.e., it selects packets from all senders Si to the given session socket. 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 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 Zhang, Braden et al Expires: April 1994 [Page 24] Internet Draft RSVP Specification October 1993 ignored. 3.1.3 Err Message 0 1 2 3 +-------------+-------------+-------------+-------------+ | Vers | Type | Flags | RSVP Checksum | +-------------+-------------+-------------+-------------+ --- | DestAddress | Session +-------------+-------------+-------------+-------------+ | DestSID | Socket +-------------+-------------+-------------+-------------+ --- | Error Code | Error Value | List Count | +-------------+-------------+-------------+-------------+ | Sender|Flow Descriptor List | +-------------+-------------+-------------+-- ... The fields are the same as in a PATH message, defined earlier, except for the following: RSVP Fields: RSVPType 4 = Err message Flags 0xxxxxxx = Towards receiver(s) 1xxxxxxx = Towards sender(s) Error Code A one-octet error description. 01 = No path information for this Resv (R) 02 = No Sender information for this Resv (R) There is path information, but it does not include the sender specified in one or more of the Filterspecs listed in the Resv messager. 03 = Insufficient memory (S,R) Zhang, Braden et al Expires: April 1994 [Page 25] Internet Draft RSVP Specification October 1993 04 = Incorrect Dynamic Reservation Count (R) Dynamic Reservation Count is zero or less than FD Count. 05 = Reservation problem (R) The Error Value octet an error code specific to a lower-level routine. Possible reasons include: not enough resource available, flowspec syntax error, flowspec value error (internal inconsistencies of values), or Flowspec feature not supported. 07 = Unknown RSVPType field. 08 = Unknown RSVP version. 09 = FD Count Wrong FD Count does not match length of message. Error Value Specific cause of the error described by the Error Code. Meanings are generally defined outside RSVP. Sender|Flow Descriptor List Optional list of Sender Descriptors (towards sender) or Flow Descriptors (towards receiver) indicating which message triggered the error. The message may include a list of one or more descriptors to which the same error applies. An acceptable implementation may send a single descriptor per ERR message, and may therefore send multiple ERR messages as the result of one PATH or RESV message. If an error is encountered while processing a RESV message, an RSVP ERR message must be sent to all receivers responsible for the reservation. However, in the case of shared Fixed-Filter reservations, the node that detects the error does not have a Zhang, Braden et al Expires: April 1994 [Page 26] Internet Draft RSVP Specification October 1993 record of all the responsible receivers; the merging process downstream will have dropped all but one of the receiver identities. Therefore, the Err message is addressed to the session DestAddress and uni-/multicast to all receivers downstream from the node detecting the error. This may deliver the ERR message to irrelevant receivers as well as all relevant ones. The API in the receiver hosts is therefore asked to filter such ERR messages, delivering them only to those applications that have made a reservation for the sender specified in the message. 3.1.4 Tear Message The TEARDOWN message is intended to force state to be deleted immediately, without waiting for the cleanup timeout period. It is an optimization, to allow resources to be freed more quickly. However, like the other RSVP messages, it is not reliably delivered. State can only be removed by TEARDOWN if it is not shared. In particular, Wildcard-Filter and Fixed-Filter reservations may be shared among multiple receivers, and due to merging RSVP does not keep track of all the responsible receivers; in these cases, teardown is not possible. A more complete definition of TEARDOWN messages is future work. 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. 1. When an RSVP message is received on through 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. Zhang, Braden et al Expires: April 1994 [Page 27] Internet Draft RSVP Specification October 1993 2. When a PATH message is received, 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, destination address) pairs. Each route consists of a list of outgoing interfaces; these lists (with the incoming interfaces deleted by rule (1)) 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. Since PATH messages don't loop, they create path state defining a loop-free path to each sender. As a result, RESV messages directed to particular senders cannot loop. However, this cannot protect against looping RESV messages that are directed towards all senders ("wildcard" sender). The following three rules are needed for this purpose. 3. A RESV message whose RecvAddress matches one of the IP addresses of the local node must be discarded without processing. 4. Each RESV message carries a receiver address. 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. 5. When a RESV message is received, the Reverse Path Forwarding rule is applied to the receiver address in the message: the message is discarded unless it arrived on the interface that is the preferred route to the receiver. Figure 9 illustrates the effect of the rule (1) 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: April 1994 [Page 28] Internet Draft RSVP Specification October 1993 ________________ a | | c ( R1, S1 ) <----->| Router |<-----> ( R2, S2 ) |________________| Send & Receive on (a) | Send & Receive on (c) | WF(R2; *{3B}) <-- (a) | (c) <-- WF(R2; *{3B}) | WF(R1; *{4B}) --> (a) | (c) --> WF(R1; *{4B}) | | Reserve on (a) | Reserve on (c) __________ | __________ | * {4B} | | | * {3B} | |__________| | |__________| | Figure 9: Example: Rule (1) for Preventing Loops. 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 values received in multiple control messages. 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 Zhang, Braden et al Expires: April 1994 [Page 29] Internet Draft RSVP Specification October 1993 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. When a sender or receiver stops sending refreshes or a route change isolates a part of the path, the state in the nodes times out. However, we wish to avoid delaying the timeout of each hop by approximately one refresh period from the timeout of the preceding hop, i.e., avoid making the timeout time for the last node in the path increase linearly with the number of hops. This is avoided by the No-Refresh bit in PATH and RESV messages. o When a node has received no refresh message at the end of its current refresh period, it sends a (non-)refresh message with the No-Refresh bit on. o A message with the No-Refresh bit is forwarded immediately hop-by-hop to the end of the path (unless it is lost). Zhang, Braden et al Expires: April 1994 [Page 30] Internet Draft RSVP Specification October 1993 o At each node, the receipt of a message with the No-Refresh bit on suppresses sending a refresh message at the end of the current refresh period. o Receipt of a message with the No-Refresh bit on does not reset the T timer for the corresponding element(s). In a perfect world these No-Refresh messages will cause all following nodes to time out at the same time. Due to small variations in timing, the actual behavior may be more complex, but all nodes should time out at approximately the same time. 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. When RESV messages are merged, the message that is forwarded will carry the largest flowspec and the corresponding RecvAddress from the merged messages. If the same largest flowspec occurs in two or more merged messages, the resulting message should carry the numerically largest RecvAddress. This choice will ensure success of loop detection using the RecvAddress field. 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 its delay 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. 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 Zhang, Braden et al Expires: April 1994 [Page 31] Internet Draft RSVP Specification October 1993 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 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 will still be possible. 3.6 Interfaces 3.6.1 Reservation Parameters The Flowspec format is currently specific to the CSZ packet scheduler [CSZ92]. The parameters are: o QoS Type (Guaranteed, Predictive, ...) o Max end-to-end delay Zhang, Braden et al Expires: April 1994 [Page 32] Internet Draft RSVP Specification October 1993 o Average data rate (bits/ms) o Token bucket depth (bits) o Global share id <---- ? Although a filterspec may be in part opaque, RSVP must be able to extract the sender IP address (or wildcard) from it, and to compare it with a sender template field in the path state. 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 a variable-length mask-and-value pair VF, in the following format: +-----------+-----------+-----------+-----------+ | Sender IP Address | +-----------+-----------+-----------+-----------+ | VFlength | VFoffset | +-----------+-----------+-----------+-----------+ --- | V: VF Value Part | 4*VFlength / / octets / / +-----------+-----------+-----------+-----------+ --- | M: VF Mask Part | 4*VFlength / / octets / / +-----------+-----------+-----------+-----------+ --- The value M and the mask V each have length 4*VFlength octets. M and V define a filter using a simple mask-and-match algorithm applied to the packet at 4*VFoffset octets from the beginning with the transport-layer header. VFlength can be zero, in which case VFoffset is ignored. A "wildcard" Filterspec that will match any sender or receiver has the IP address and the VFlength both zero. The contents of M and V are opaque to RSVP. The VF part may or may not include the sender IP address or DestAddress; RSVP will embed these explicit addresses into the filterspec before handing it to traffic control. In general, RSVP cannot interpret the contents of the V and M fields, since they may depend upon protocols above the Internet layer. There are many possible filters that cannot be expressed using a simple mask and value pair. A compact and general filter encoding is for further study. Zhang, Braden et al Expires: April 1994 [Page 33] Internet Draft RSVP Specification October 1993 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. In particular, 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. 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 be expected to 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. 1. Sender Call: SENDER( local socket, session socket, flowspec) -> sid This call is made by a sender host for each sender socket, to initiate RSVP processing. Wildcards may be inserted for the IP address and/or RSVP Id in the local socket, in which case the local system will choose appropriate values. The session socket consists of the uni-/multicast address of the receiving host(s) and the RSVP Id to use for this session. The SENDER call returns immediately with a local session identifier "sid", which may be used in subsequent calls. A local session control block is created and initialized, and the host begins sending periodic PATH messages. 2. Receiver Call: RECVER( local socket ) -> sid This call is made by a receiver host for each receiver socket, to initiate RSVP processing. The local socket consists of the uni-/multicast address for the desired session, and an RSVP Id. Zhang, Braden et al Expires: April 1994 [Page 34] Internet Draft RSVP Specification October 1993 The RECVER call returns immediately with a local session identifier "sid", which may be used in subsequent calls. A local session control block is created and initialized, and the host begins listening for a PATH message. Following this call, data may be returned asynchronously, containing the flowspecs and associated foreign sockets for sender hosts. Error message(s) may also be returned asynchronously. 3. Reserve Call: RESERVE( sid, style, Flowspec, Filterspec-list) A receiver uses this call to make a resource reservation. Style is an integer index indicating the reservation style. The first RESERVE call following a RECVER call will initiate the periodic transmission of RESV messages. A later RESV call may be given to modify the parameters of the earlier call; however, this may result in Admission Control failure. The RESERVE call returns immediately. Following this call, an error message or a data reply from the earlier RECVER call may be returned asynchronously. 4. Close Call: CLOSE( sid ) This call may be made by either sender or receiver to terminate RSVP state for the given session id. It will delete local state and cease sending refreshes, allowing distributed state to time out. 5. Teardown Call: TEARDOWN( sid ) This call sends TEARDOWN messages to actively remove state from the routers, and then issues a CLOSE. 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 Zhang, Braden et al Expires: April 1994 [Page 35] Internet Draft RSVP Specification October 1993 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. ((XXX Need some way to pass the Drop flag)) 1. Make a Reservation Call: Rhandle = TCAddFlow( Flowspec, Drop_flag, [Session-Filterspec [, Sender-Filterspec]] ) 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 Fixed-Filter reservation requests, RSVP knows about sharing and calls AddFlow only for distinct source pipes. For Dynamic-Filter 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 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. Zhang, Braden et al Expires: April 1994 [Page 36] Internet Draft RSVP Specification October 1993 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 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 sends different copies of outgoing path messages on different links, even though all of them use the same source and destination addresses. Zhang, Braden et al Expires: April 1994 [Page 37] Internet Draft RSVP Specification October 1993 o Discover (Virtual) Interface List RSVP must be able to learn what virtual interfaces exist. 4. ACKNOWLEDGMENTS Lixia Zhang, Scott Shenker, Deborah Estrin, Dave Clark, Sugih Jamin, Shai Herzog, Steve Deering, Bob Braden, and Daniel Zappala have all made contributions to the design of RSVP. We are grateful to Jamin and Herzog 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", working draft, October 1993. [IServ93] Shenker, S., Clark, D., and L. Zhang, "A Service Model for an Integrated Services Internet", working draft, October 1993. [RSVP93] Zhang, L., Deering, S., Estrin, D., Shenker, S., and D. Zappala, "RSVP: A New Resource ReSerVation Protocol", IEEE Network, September 1993. Zhang, Braden et al Expires: April 1994 [Page 38]