view Side-By-Side changes
Internet Draft R. Braden, Ed. Expiration:MayAugust 1996 ISI File:draft-ietf-rsvp-spec-08.txtdraft-ietf-rsvp-spec-09.txt L. Zhang PARC S. Berson ISI S. Herzog ISIJ. Wroclaswki MITS. Jamin USC Resource ReSerVation Protocol (RSVP) -- Version 1 Functional SpecificationNovember 22, 1995February 12, 1996 Status of Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To learn the current status of any Internet-Draft, please check the linebreak "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. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 1] Internet Draft RSVP SpecificationNovember 1995February 1996 Table of Contents 1. Introduction........................................................5........................................................4 1.1 Data Flows......................................................8......................................................7 1.2 Reservation Model...............................................9...............................................8 1.3 Reservation Styles..............................................11..............................................10 1.4 Examples of Styles..............................................14..............................................13 2. RSVP Protocol Mechanisms ............................................18 2.1 RSVP Messages ...................................................18 2.2 Port Usage ......................................................20 2.3 Merging Flowspecs ...............................................21 2.4 Soft State ......................................................22 2.5 Teardown ........................................................24 2.6 Errorsand Acknowledgments ......................................25..........................................................25 2.7 Confirmation ....................................................27 2.8 Policy and Security .............................................272.82.9 Automatic RSVP Tunneling ........................................282.92.10 Host Model......................................................28.....................................................29 3. RSVP Functional Specification.......................................30.......................................31 3.1 RSVP Message Formats............................................30............................................31 3.2 Sending RSVP Messages...........................................42...........................................44 3.3 Avoiding RSVP Message Loops.....................................44.....................................45 3.4 Blockade State ..................................................49 3.5 Local Repair....................................................48 3.5....................................................51 3.6 Time Parameters.................................................48 3.6.................................................52 3.7 Traffic Policing andTTL ........................................50 3.7Non-Integrated Service Hops ................53 3.8 Multihomed Hosts................................................51 3.8................................................54 3.9 Future Compatibility............................................52 3.9............................................56 3.10 RSVP Interfaces.................................................55................................................58 4. Message Processing Rules............................................65............................................70 5. Acknowledgments .....................................................89 APPENDIX A. Object Definitions.........................................82.........................................90 APPENDIX B. Error Codes and Values.....................................97.....................................106 APPENDIX C. UDP Encapsulation..........................................101 APPENDIX D. Experimental and Open Issues ...............................103..........................................111 Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 2] Internet Draft RSVP SpecificationNovember 1995February 1996 What's Changed The most important changes in this document from thersvp-spec-07rsvp-spec-08 draft are: o Therole and interpretationhandling of reservation errors has been fundamentally changed, to prevent theIP Protocol Id is changed. The Protocol Id"second killer reservation problem". A new kind of state has been introduced into a node, "blockade state", which isnowcreated by arequired part of the session definition,RERR message with Error Code = 01, andfilter specswhich controls the merging process for generating reservation refresh messages [Sections 2.6 andsender templates3.4]. o RSVP nowassumecarries two flag bits in theProtocol Id fromSESSION object to indicate to a receiver whether there are non-RSVP-capable nodes along thesession rather than stating it explicitly.path to a given sender [Sections 2.9 and 3.7]. oA "soft" reservation confirmation messageThe optional INTEGRITY object isadded.now specified to immediately follow the common header and to appear in every fragment [Section 3.1]. o There are now two flag bits in an ERROR_SPEC object: InPlace and NotGuilty [Section 3.10]. o The text now statesexplicitlythatan erroneous reservationimplementations should be as permissive as possible in accepting objects in any order within a message (and required ordering isnot forwarded. A mechanism to allowspecified), but they should follow the BNF-implied order in creating areceiver more flexible control over forwardingmessage. o The text now states that IP fragmentation ofits messages after an admission control failure has not been designed anddata packets isthereforegenerally notincludedpossible when RSVP is inthis version ofuse, since theprotocol.TCP/UDP port fields may be required for classification [Section 1.2]. oA terminology confusion is eliminated.Theterm "scope" was used both for a set of senders and for a set of sender hosts. A new term "sender selection" is introduced for the first, leaving "scope"rules forthe second. o The FILTER_SPEChandling an unrecognized objectis dropped from a wildcard sender selection (WF) style reservation, which now selects "all senders" without qualification. o The StyleID byte is dropped from a STYLE object, as redundant. o An SE style flow descriptor is simplifiedclass are changed to include asingle flowspec. o The IP Router Alert option is now required in PATH, PTEAR, and RACK messages. o The TIME_VALUES object is now required in RESVthird possibility: ignore andPATH messages; there is no default. o Policing at branch points is now defined in a new section on policing (3.6). o A 2-second delay is inserted into local repair. o Merging of SE with WF objects is no longer allowed. Braden, Zhang, et al. Expiration: May 1996 [Page 3] Internet Draft RSVP Specification November 1995 o The Rmax end-to-end bound ondo not forward therefresh rate R is removed, since its utility was unclear. o A rule for randomizing refresh timeouts is included. o The suggestion that TCP could be used for carrying RSVP state through a congested non-RSVP cloud is removed. o SENDER_TSPECS are now required in PATH| messages.object [Section 3.9]. oThereAll generic Traffic Control calls arenew sections on multihomed hosts (3.7) and future compatibility (3.8). The latter section makes clear that a message containingmodified to include anobject with unknown C-Type shouldinterface specification, allowing the Thandle to berejected. Any more forgiving treatment seems too complex.interface-specific [Section 3.10.2]. oAppendix C on UDP encapsulationDisabling an interface for RSVP iscompletely changed. o Some text was rearranged in Sections 1 and 2.allowed [Section 3.10.3]. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page4]3] Internet Draft RSVP SpecificationNovember 1995February 1996 1. Introduction This document defines RSVP, a resource reservation setup protocol designed for an integrated services Internet [RSVP93,ISInt93].On behalf ofThe RSVP protocol is used by a host, on behalf of an application data stream,a host uses the RSVP protocolto request a specific quality of service (QoS) from the network. The RSVPdeliversprotocol is also used by routers to deliver QoS requests toroutersall nodes along the path(s) of the data stream andmaintains routerto establish andhostmaintain state to provide the requested service. RSVP requests will generally, although not necessarily, result in resources being reserved along the data path. RSVP requests resources for simplex data streams, i.e., it requests resources in only one direction. Therefore, RSVP treats a senderisas logically distinct from a receiver, although the same application process may act as both a sender and a receiver at the same time. RSVP operates on top of IP (either IPv4 or IP6), occupying the place of a transport protocol in the protocol stack. However,like ICMP, IGMP, and routing protocols,RSVP does not transport application data but is rather an Internet controlprotocol.protocol, like ICMP, IGMP, or routing protocols. Like the implementations of routing and management protocols, an implementation of RSVP will typically execute in the background, not in the data forwarding path, as shown in Figure 1. RSVP is not itself a routing protocol; RSVP is designed to operate with current and future unicast and multicast routing protocols.TheAn RSVP daemon consults the local routingprotocol(s)database(s) to obtain routes. In the multicast case, for example, a host sends IGMP messages to join a multicast group and then sends RSVP messages to reserve resources along the delivery path(s) of that group. Routing protocols determine where packets get forwarded; RSVP is onlyconcernsconcerned with the QoS of those packets that are forwardedbyin accordance with routing. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page5]4] Internet Draft RSVP SpecificationNovember 1995February 1996 HOST ROUTER _________________________ RSVP _____________________________ | | .--------------. | | _______ ______ | / | ________ . ______ | | | | | | | / || | . | | | RSVP | |Applic-| | RSVP <----/ ||Routing | -> RSVP <----------> | | App <----->daemon| | ||Protocol| |daemon| _____ | | | | | | | || daemon <---->| |>|Polcy|| | |_______| |___.__| | ||_ ._____||__.__.| ||__.__.||Cntrl|| | | | | | | |. |.|_____|| |===|===============|=====| |===|=============|====.======| | data .........| | | | ...........| .____ | | | ____V_ ____V____ | | _V__V_ _____V___| Adm.|||Admis|| | | |Class-| | || data | |Class-| | ||Cntrl|| | |=> ifier|=> Packet ============> ifier|==> Packet ||_____|| data | |______| |Scheduler|| | |______| |Scheduler|===========> | |_________|| | |_________| | |_________________________| |_____________________________| Figure 1: RSVP in Hosts and Routers Eachrouternode that is capable of resource reservation passes incoming data packets through apacket classifier and then queues them as necessary in a packet scheduler. The packet classifier"packet classifier", which determines the route and the QoS class for each packet.There isFor each outgoing interface, ascheduler" packet scheduler" then makes forwarding decisions for eachinterface,packet toallocate resources for transmissionachieve the promised QoS on the particular link-layer medium used by that interface. If thelink- layerlink-layer medium is QoS-active, i.e., if it has its own QoS management capability, then the packet scheduler is responsible for negotiation with the link layer to obtain the QoS requested by RSVP. This mapping to the link layer QoS may be accomplished in a number of possible ways; the details will be medium-dependent. On a QoS- passive medium such as a leased line, the scheduler itself allocates packet transmission capacity. The scheduler may also allocate other system resources such as CPU time or buffers. In order to efficiently accommodate heterogeneous receivers and dynamic group membership, RSVP makes receivers responsible for requestingresource reservationsQoS [RSVP93]. A QoS request, which typically originates from a receiver host application, is passed to the local RSVP implementation, shown as auserdaemon process in Figure 1. The RSVP protocol then carries the request to all the nodes (routers and hosts) along the reverse data path(s) to the data source(s).At each node, the RSVP daemon communicates with a local decisionBraden, Zhang, et al. Expiration:MayAugust 1996 [Page6]5] Internet Draft RSVP SpecificationNovember 1995 module, calledFebruary 1996 At each node, the RSVP daemon communicates with two local decision modules, "admissioncontrol", to determine ifcontrol" and "policy control". Admission control determines whether therouter cannode has sufficient available resources to supply the requested QoS.If the admissionPolicy controlcheckdetermines whether the user has administrative permission to make the reservation. If both checks succeeds, the RSVP daemon sets parameters in the packet classifier and scheduler to obtain the desired QoS. Ifthe admission controleither check fails, the RSVP programimmediatelyreturns an error notification to the application process that originated the request. We refer to the packet classifier, packet scheduler, and admission control components as" traffic"traffic control". RSVP is designed to scale well for very large multicast groups. Since both the membership of a large group and the topology of large multicast trees are likely to change with time, the RSVP design assumes that router state for traffic control will be built and destroyed incrementally. For this purpose, RSVP uses "soft state" in the routers. That is, RSVP sends periodic refresh messages to maintain the state along the reserved path(s); in absence of refreshes, the state will automatically time out and be deleted. RSVP protocol mechanisms provide a general facility for creating and maintaining distributed reservation state across a mesh of multicast or unicast delivery paths. RSVP transfers reservation parameters as opaque data (except for certain well-defined operations on the data), which it simply passes to traffic control 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 Appendix A for more details. In summary, RSVP has the following attributes: o RSVP makes resource reservations for both unicast and many-to- many multicast applications, adapting dynamically to changing group membership as well as changing routes. o RSVP is simplex, i.e., it reserves for a data flow in one direction only. o RSVP is receiver-oriented, i.e., the receiver of a data flow initiates and maintains the resource reservation used for that flow. o RSVP maintains "soft state" in the routers, providing graceful support for dynamic membership changes and automatic adaptation to routing changes. Braden, Zhang, et al. Expiration: August 1996 [Page 6] Internet Draft RSVP Specification February 1996 o RSVP provides several reservation models or "styles" (defined below) to fit a variety of applications.Braden, Zhang, et al. Expiration: May 1996 [Page 7] Internet Draft RSVP Specification November 1995o RSVP provides transparent operation through routers that do not support it. Further discussion on the objectives and general justification for RSVP design are presented in [RSVP93,ISInt93]. The remainder of this section describes the RSVP reservation services. Section 2 presents an overview of the RSVP protocol mechanisms. Section 3 contains the functional specification of RSVP, while Section 4 presents explicit message processing rules. Appendix A defines the variable-length typed data objects used in the RSVP protocol. Appendix B defines error codes and values. Appendix C defines an extension for UDP encapsulation of RSVP messages. Finally, some experimental RSVP features are documented in Appendix D for future reference. 1.1 Data Flows RSVP defines a "session" as a data flow with a particular destination and transport-layer protocol. The destinationforof aparticularsession is generally defined by DestAddress, the IP destination address of the data packets, and perhaps by DstPort, a" generalized"generalized destination port", i.e., some further demultiplexing point in the transport or application protocol layer. RSVP treats each session independently, and this document often assumes the qualification "for the same session". DestAddress is a group address for multicast delivery or the unicast address of a single receiver. DstPort could be defined by a UDP/TCP destination port field, by an equivalent field in another transport protocol, or by some application-specific information. Although the RSVP protocol is designed to be easilyextendibleextensible for greater generality, the present version supports only UDP/TCP ports as generalized ports.Figure 2 illustrates the flow of data packetsNote that it is not strictly necessary to include ports ina single RSVPthe sessionassuming multicast data distribution. The arrows indicate data flowing from sendersdefinition when DestAddress is multicast, since different sessions can always have different multicast addresses. However, destination ports are necessary to allow more than one unicast session to the same receiver host. Figure 2 illustrates the flow of data packets in a single RSVP session, assuming multicast data distribution. 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 Braden, Zhang, et al. Expiration: August 1996 [Page 7] Internet Draft RSVP Specification February 1996 multicast routing. Multicast distribution forwards a copy of each data packet from a sender Si to every receiver Rj; a unicast distribution session has a single receiver R. Each sender Siand each receiver Rjmay be running in a unique Internet host, or a single host may contain multiplesenders and/or receivers,senders, distinguished by generalized source ports.Braden, Zhang, et al. Expiration: May 1996 [Page 8] Internet Draft RSVP Specification November 1995Senders Receivers _____________________ ( ) ===> R1 S1 ===> ( Multicast ) ( ) ===> R2 ( distribution ) S2 ===> ( ) ( by Internet ) ===> R3 (_____________________) Figure 2: Multicast Distribution Session For unicast transmission, there will be a single destination host but there may be multiple senders; RSVP can set up reservations for multipoint-to-single-point transmission. 1.2 Reservation Model An elementary RSVP reservation request consists of a "flowspec" together with a "filter spec"; this pair is called a "flow descriptor". The flowspec specifies a desired QoS. The filter spec, together with a sessiondefinition, specifiesspecification, defines the set of data packets -- the "flow" -- to receive the QoS defined by the flowspec. The flowspec is used to set parameters to the node's packet scheduler (assuming that admission control succeeds), while the filter spec is used to set parameters in the packet classifier. Data packets that are addressed to a particular session but do not match any of the filter specs for that session are handled as best-effort traffic. Note that the action to control QoS occurs at the place where the data enters the medium, i.e., at the upstream end of the link, although an RSVP reservation request originates from receiver(s) downstream. In this document, we define the directional terms "upstream" vs. "downstream", "previous hop" vs. "next hop", and "incoming interface" vs "outgoing interface" with respect to the direction of dataflows.flow. The flowspec in a reservation request will generally include a Braden, Zhang, et al. Expiration: August 1996 [Page 8] Internet Draft RSVP Specification February 1996 service class and two sets of numeric parameters: (1) an "Rspec" (R for `reserve') that defines the desired QoS, and (2) a "Tspec" (T for `traffic') that describes the data flow. The formats and contents of Tspecs and Rspecs are determined by the integrated service model [ServTempl95a], and are generally opaque to RSVP.Braden, Zhang, et al. Expiration: May 1996 [Page 9] Internet Draft RSVP Specification November 1995In the most general approach [RSVP93], filter specs may select arbitrary subsets of the packets in a given session. Such subsets might be defined in terms of senders (i.e., sender IP address and generalized source port), in terms of a higher-level protocol, or generally in terms of any fields in any protocol headers in the packet. For example, filter specs might be used to select different subflows in a hierarchically-encoded signal by selecting on fields in an application-layer header.However, inIn the interest of simplicity (and to minimize layer violation), the present RSVP version uses a much more restricted form of filter spec, consisting of sender IP address and optionally the UDP/TCP port number SrcPort. Because the UDP/TCP port numbers are used for packet classification, each router must be able to examine these fields. As a result, it is generally necessary to avoid IP fragmentation of a data stream for which a resource reservation is desired. RSVP reservation request messages originate at receivers and are passed upstream towards the sender(s).When a reservation request is received at aAt each intermediate node, two general actions aretaken.taken on the request. 1. Make a reservation Theflowspec and the filter spec arerequest is passed totraffic control. Admissionadmission controldetermines the admissibility of the request (if it's new); if thisand policy control. If either test fails, the reservation is rejected and RSVP returns an error message to the appropriate receiver(s). Ifadmission control succeeds,both succeed, the node uses the flowspec to set up the packet scheduler for the desired QoS and the filter spec to set the packet classifier to select the appropriate data packets. 2. Forward the request upstream The reservation request is propagated upstream towards the appropriate senders. The set of sender hosts to which a given reservation request is propagated is called the "scope" of that request. The reservation request that a node forwards upstream may differ from the request that it received from downstream, for two reasons. First, it is possible in theory for the traffic control Braden, Zhang, et al. Expiration: August 1996 [Page 9] Internet Draft RSVP Specification February 1996 mechanism to modify the flowspec hop-by-hop, although none of the currently defined services does so. Second, reservations for the same sender, or the same set of senders, from different downstream branches of the multicast tree(s) are "merged" as reservations travel upstream;that is,a node forwards upstream only the reservation request with the "maximum" flowspec. When a receiver originates a reservation request, it can also request a confirmation message to indicate that its request was (probably) installed in the network. A successful reservationBraden, Zhang, et al. Expiration: May 1996 [Page 10] Internet Draft RSVP Specification November 1995request propagatesas far as the closest point(s)upstream along thesinkmulticast treeto the sender(s)until it reaches a point wherethere isan existing reservationlevelis equal or greater than that being requested. At that point, the arriving requestwill be dropped in favor ofis merged with theequal or largerreservation inplace;place, and need not be forwarded further, and the node may then send a reservation confirmation message back to the receiver. Note that the receipt of a confirmation is only a high-probability indication, not aguaranteeguarantee, that the requested service is in place all the way to the sender(s), as explained in Section2.6.2.7. The basic RSVP reservation model is "one pass": a receiver sends a reservation request upstream, and each node in the path either accepts or rejects the request. This scheme provides no easy way for a receiver to find out the resulting end-to-end service. Therefore, RSVP supports an enhancement to one-pass service known as "One Pass With Advertising" (OPWA) [Shenker94]. With OPWA, RSVP control packets are sent downstream, following the data paths, to gather information that may be used to predict the end- to-end QoS. The results ("advertisements") are delivered by RSVP to the receiver hosts and perhaps to the receiver applications. The advertisements may then be used by the receiver to construct, or to dynamically adjust, an appropriate reservation request. 1.3 Reservation Styles A reservation request includes a set ofcontroloptions, which are collectively called the reservation "style". One reservation option concerns the treatment of reservations for different senders within the same session: establish a "distinct" reservation for each upstream sender, or else make a single reservation that is" shared""shared" among all packets of selected senders. Another reservation option controls the selection of senders: an"explicit"" explicit" list of all selected senders, or a "wildcard" that implicitly selects all the senders to the session. In anexplicit-selectionexplicit sender-selection reservation, each filter spec must match exactlyone sender, while in a wildcard-selection no filter spec is needed.Braden, Zhang, et al. Expiration:MayAugust 1996 [Page11]10] Internet Draft RSVP SpecificationNovember 1995February 1996 one sender, while in a wildcard sender-selection no filter spec is needed. Sender || Reservations: Selection || Distinct | Shared _________||__________________|____________________ || | | Explicit || Fixed-Filter | Shared-Explicit | || (FF) style | (SE) Style | __________||__________________|____________________| || | | Wildcard || (None defined) | Wildcard-Filter | || | (WF) Style | __________||__________________|____________________| Figure 3: Reservation Attributes and Styles The styles currently defined are as follows (see Figure 3): o Wildcard-Filter (WF) Style The WF style implies the options: "shared" reservation and " wildcard" sender selection. Thus, a WF-style reservation creates a single reservation into which flows from all upstream senders aremixed; thismixed. This reservation may be thought of as a shared "pipe", whose "size" is the largest of the resource requests from all receivers, independent of the number of senders using it. A WF-style reservation is propagated upstream towards all sender hosts, and automatically extends to new senders as they appear. Symbolically, we can represent a WF-style reservation request by: WF( * {Q}) where the asterisk represents wildcard sender selection and Q represents the flowspec. o Fixed-Filter (FF) Style The FF style implies the options: "distinct" reservations and "explicit" sender selection. Thus, an elementary FF-style Braden, Zhang, et al. Expiration: August 1996 [Page 11] Internet Draft RSVP Specification February 1996 reservation request creates a distinct reservation for data packets from a particular sender, not sharing them with other senders' packets for the same session.Braden, Zhang, et al. Expiration: May 1996 [Page 12] Internet Draft RSVP Specification November 1995The total reservation on a link for a given session is the total of the FF reservations for all requested senders. On the other hand, FF reservations requested by different receivers Rj but selecting the same sender Si must be merged to share a single reservation. Symbolically, we can represent an elementary FF reservation request by: FF( S{Q}) where S is the selected sender and Q is the corresponding flowspec; the pair forms a flow descriptor. RSVP allows multiple elementary FF-style reservations to be requested at the same time, using a list of flow descriptors: FF( S1{Q1}, S2{Q2}, ...) o Shared Explicit (SE) Style The SE style implies the options: "shared" reservation and " explicit" sender selection. Thus, an SE-style reservation creates a single reservation into which flows from all upstream senders are mixed. However, like the FF style, the SE style allows a receiver to explicitly specify the set of senders. Symbolically, we can represent an SE reservation request by: SE( (S1,S2,...){Q} ), i.e., a flow descriptor composed of a flowspec Q and a list of senders S1, S2, etc. Both WF and SEarestyles create shared reservations, appropriate for those multicast applications whoseapplication-specific constraintsproperties make it unlikely that multiple data sources will transmit simultaneously. Packetized audio is an example of an application suitable for shared reservations; since a limited number of people talk at once, each receiver might issue a WF or SE reservation request for twice the bandwidth required for one sender (to allow someover-speaking).over- Braden, Zhang, et al. Expiration: August 1996 [Page 12] Internet Draft RSVP Specification February 1996 speaking). On the other hand, the FF style, which creates independent reservations for the flows from different senders, is appropriate for video signals.Braden, Zhang, et al. Expiration: May 1996 [Page 13] Internet Draft RSVP Specification November 1995The RSVP rules disallow merging of shared reservations with distinct reservations, since these modes are fundamentally incompatible. They also disallow mergingexplictexplicit sender selection with wildcard sender selection, since this might produce an unexpected service for a receiver that specified explicit selection. As a result of these prohibitions, WF, SE, and FF styles are all mutually incompatible. It would seem possible to simulate the effect of a WF reservation using the SE style. When an application asked for WF, the RSVP daemon on the receiver host could use local path state to create an equivalent SE reservation that explicitly listed all senders. However, an SE reservation forces the packet classifier in each node to explicitly select each sender in the list, while a WF allows the packet classifier to simply "wild card" the sender address and port. When there is a large list of senders, a WF style reservation can therefore result in considerably less overhead than an equivalent SE style reservation. For this reason, both SE and WF are included in the protocol. Other reservation options and styles may be defined in thefuture (see Appendix D.4, for example).future. 1.4 Examples of Styles This section presents examples of each of the reservation styles andshowshows the effects of merging. Figure 4shows schematicallyillustrates a router with two incoming interfaces through which data streams will arrive, labeled (a) and (b), and two outgoing interfaces through which data will be forwarded, 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 (R2 and R3) are routed via outgoing interface (c) ((d), respectively). We furthermore assume that R2 and R3 arrive via different next hops, e.g., via the two routers D and D' in Figure 9. This illustrates the effect of a non-RSVP cloud or a broadcast LAN on interface (d). In addition to the connectivity shown in 4, we must also specify the multicast routes within this node. Assume first that data packets from each Si shown in Figure 4 is routed to both outgoing interfaces. Under this assumption, Figures 5, 6, and 7 illustrate Braden, Zhang, et al. Expiration: August 1996 [Page 13] Internet Draft RSVP Specification February 1996 Wildcard-Filter, Fixed-Filter, and Shared-Explicit reservations, respectively. ________________ (a)| | (c) ( S1 ) ---------->| |----------> ( R1 ) | Router | (b)| | (d) ( S2,S3 ) ------->| |----------> ( R2, R3 ) |________________| Figure 4: Router ConfigurationBraden, Zhang, et al. Expiration: May 1996 [Page 14] Internet Draft RSVP Specification November 1995For simplicity, these examples show flowspecs as one-dimensional multiples of some base resource quantity B. The "Receive" column shows the RSVP reservation requests received over outgoing interfaces (c) and (d), and the "Reserve" column shows the resulting reservation state for each interface. The "Send" column shows the reservation requests that are sent upstream to previous hops (a) and (b). In the "Reserve" column, each box represents one reserved "pipe" on the outgoing link, with the corresponding flow descriptor. Figure 5, showing the WF style, illustrates the two possible merging situations. Each of the two next hops on interface (d) results in a separate RSVP reservation request, as shown. These two requests are merged into the effective flowspec 3B, which is used to make the reservation on interface (d). To forward the reservation requests upstream, the reservations on the interfaces (c) and (d) are merged; as a result, the larger flowspec 4B is forwarded upstream to each previous hop. Braden, Zhang, et al. Expiration: August 1996 [Page 14] Internet Draft RSVP Specification February 1996 | Send | Reserve Receive | | _______ WF( *{4B} ) <- (a) | (c) | * {4B}| (c) <- WF( *{4B} ) | |_______| | -----------------------|---------------------------------------- | _______ WF( *{4B} ) <- (b) | (d) | * {3B}| (d) <- WF( *{3B} ) | |_______| <- WF( *{2B} ) Figure 5: Wildcard-Filter (WF) Reservation Example Figure 6 shows Fixed-Filter (FF) style reservations. The flow descriptors for senders S2 and S3, received from outgoing interfaces (c) and (d), are packed into the request forwarded to previous hop (b). On the other hand, the three different flow descriptors for sender S1 are merged into the single request FF( S1{4B} ), which is sent to previous hop (a). For each outgoing interface, there is a separate reservation for each source that has been requested, but this reservation is shared among all the receivers that made the request.Braden, Zhang, et al. Expiration: May 1996 [Page 15] Internet Draft RSVP Specification November 1995| Send | Reserve Receive | | ________ FF( S1{4B} ) <- (a) | (c) | S1{4B} | (c) <- FF( S1{4B}, S2{5B} ) | |________| | | S2{5B} | | |________| ---------------------|--------------------------------------------- | ________ <- (b) | (d) | S1{3B} | (d) <- FF( S1{3B}, S3{B} ) FF( S2{5B}, S3{B} ) | |________| <- FF( S1{B} ) | | S3{B} | | |________| Figure 6: Fixed-Filter (FF) Reservation Example Figure 7 shows an example of Shared-Explicit (SE) style Braden, Zhang, et al. Expiration: August 1996 [Page 15] Internet Draft RSVP Specification February 1996 reservations. When SE-style reservations are merged, the resulting filter spec is the union of the original filter specs. | Send | Reserve Receive | | ________ SE( S1{3B} ) <- (a) | (c) |(S1,S2) | (c) <- SE( (S1,S2){B} ) | | {B} | | |________| ---------------------|--------------------------------------------- | __________ <- (b) | (d) |(S1,S2,S3)| (d) <- SE( (S1,S3){3B} ) SE( (S2,S3){3B} ) | | {3B} | <- SE( S2{2B} ) | |__________| Figure 7: Shared-Explicit (SE) Reservation Example The three examples just shown assume that data packets from S1, S2, and S3 are routed to both outgoing interfaces. The top part of Figure 8 shows another routing assumption: data packets from S2 and S3 are not forwarded to interface (c), e.g., because the network topology provides a shorter path for these senders towards R1, not traversing this node. The bottom part of Figure 8 showsBraden, Zhang, et al. Expiration: May 1996 [Page 16] Internet Draft RSVP Specification November 1995WF style reservations under this assumption. Since there is no route from (b) to (c), the reservation forwarded out interface (b) considers only the reservation on interface (d). Braden, Zhang, et al. Expiration: August 1996 [Page 16] Internet Draft RSVP Specification February 1996 _______________ (a)| | (c) ( S1 ) ---------->| >-----------> |----------> ( R1 ) | - | | - | (b)| - | (d) ( S2,S3 ) ------->| >-------->--> |----------> ( R2, R3 ) |_______________| Router Configuration | Send | Reserve Receive | | _______ WF(*{rB}*{4B} ) <- (a) | (c) | *{B} |{4B}| (c) <- WF( *{4B} ) | |_______| | -----------------------|---------------------------------------- | _______ WF( *{3B} ) <- (b) | (d) | * {3B}| (d) <- WF( * {3B} ) | |_______| <- WF( * {2B} Figure 8: WF Reservation Example -- Partial Routing Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 17] Internet Draft RSVP SpecificationNovember 1995February 1996 2. RSVP Protocol Mechanisms 2.1 RSVP Messages Previous Incoming Outgoing Next Hops Interfaces Interfaces Hops _____ _____________________ _____ | | data --> | | data --> | | | A |-----------| a c |--------------| C | |_____| Path --> | | Path --> |_____| <-- Resv | | <-- Resv _____ _____ | ROUTER | | | | | | | | | |--| D | | B |--| data-->| | data --> | |_____| |_____| |--------| b d |-----------| | Path-->| | Path --> | _____ _____ | <--Resv|_____________________| <-- Resv | | | | | | |--| D' | | B' |--| | |_____| |_____| | | Figure 9: Router Using RSVP Figure 9 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 "outgoinginterface(s)".interface"(s). The same physical interface may act in both the incoming and outgoing roles for different data flows in the same session. Multiple previous hops and/or next hops may be reached through a given physical interface, as a result of the connected network being a shared medium, or the existence of non-RSVP routers in the path to the next RSVP hop (see Section2.8).2.9). An RSVP daemon preserves the next and previous hop addresses in its reservation and path state, respectively. There are two fundamental RSVP message types: RESV and PATH. Each receiver host sends RSVP reservation request (RESV) messages upstream towards the senders. These reservation messages must follow exactly the reverse of the routes the data packets will use, upstream to all the sender hosts included in the sender selection. RESV messagesmust beare delivered to the sender hosts themselves so that the hosts can set up appropriate traffic control parameters for the first hop. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 18] Internet Draft RSVP SpecificationNovember 1995February 1996 Each RSVP sender host transmits RSVP PATH messages downstream along the uni-/multicast routes provided by the routing protocol(s), following the paths of the data. These "Path" messages store" path"path state" in each node along the way. This path state includes at least the unicast IP address of the previous hop node, which is used to route the RESV messageshop- by-hophop-by-hop in the reverse direction. (In the future, some routing protocols may supply reverse path forwarding information directly, replacing the reverse-routing function of path state). A PATH message may carry the following information in addition to the previous hop address: o Sender Template A PATH message is required to carry a Sender Template, which describes the format of data packets that the sender will originate. This template is in the form of a filter spec that could be used to select this sender's packets from others in the same session on the same link. Like a filter spec, the Sender Template is less than fully general at present, specifying only the sender IP address and optionally the UDP/TCP sender port. It assumes the protocol Id specified for the session. o Sender Tspec A PATH message is required to carry a Sender Tspec, which defines the traffic characteristics of the data stream that the sender will generate. This Tspec is used by traffic control to prevent over-reservation (and perhaps unnecessary Admission Control failure) onall links on which the named sender is the only source sending to the session.upstream links. o Adspec A PATH message may optionally carry a package of OPWA advertising information, known as an "Adspec". An Adspec received in a PATH message is passed to the local traffic control, which returns an updated Adspec; the updated version is then forwarded in PATH messages sent downstream.For protocol efficiency, RSVP also allows multiple sets of reservation information for the same session to be "packed" into a single RESV message. Unlike merging, packing preserves information. For simplicity, however, the protocol currently prohibits packing reservations of different sessions into the same Braden, Zhang, et al. Expiration: May 1996 [Page 19] Internet Draft RSVP Specification November 1995 RSVP message.PATH messages are sent with the same source and destination addresses as the data, so that they will be routed correctly through non-RSVP clouds (see Section2.8).2.9). On the other hand, RESV messages are sent hop-by-hop; each RSVP-speaking node forwards a RESV message to the unicast address of a previous RSVP hop. Braden, Zhang, et al. Expiration: August 1996 [Page 19] Internet Draft RSVP Specification February 1996 2.2 Port Usage At present an RSVP session is defined by the triple: (DestAddress, ProtocolId, DstPort). Here DstPort is a UDP/TCP destination port field (i.e., a 16-bit quantity carried at octet offset +2 in the transport header). DstPort may be omitted (set to zero) if the ProtocolId specifies a protocol that does not have a destination port field in the format used by UDP and TCP. RSVP allows any value for ProtocolId. However, end-system implementations of RSVP may know about certain values for this field, and in particular must know about the values for UDP and TCP (17 and 6, respectively). An end system should give an error to an application that either: o specifies a non-zero DstPort for a protocol that does not have UDP/TCP-like ports, or o specifies a zero DstPort for a protocol that does have UDP/TCP-like ports. Filter specs and sender templatesare defined byspecify the pair: (SrcAddress, SrcPort), where SrcPort is a UDP/TCP source port field (i.e., a 16-bit quantity carried at octet offset +0 in the transport header). SrcPort may be omitted (set to zero) in certain cases. The following rules hold for the use of zero DstPort and/or SrcPort fields in RSVP. 1. Destination ports must be consistent. Path state and/or reservation state for the same DestAddress and ProtocolId must have DstPort values that are all zero or all non-zero. Violation of this condition in a node is a "Conflicting Dest Port" error. 2. Destination ports rule. If DstPort in a session definition is zero, all SrcPort fields used for that session must also be zero. TheBraden, Zhang, et al. Expiration: May 1996 [Page 20] Internet Draft RSVP Specification November 1995assumption here is that the protocol does not haveTCP/UDP-UDP/TCP- like ports. Violation of this condition in a node is a "Conflicting Src Port" error. 3. Source Ports must be consistent. A sender host must not send path state both with and without a zero SrcPort. Violation of this condition is an "Ambiguous Braden, Zhang, et al. Expiration: August 1996 [Page 20] Internet Draft RSVP Specification February 1996 Path" error. 2.3 Merging Flowspecs As noted earlier, a single physical interface may receive multiple reservationrequestrequests from different next hops for the same session and with the same filter spec, but RSVP should install only one reservation on that interface.ThisThe installed reservation should have an effective flowspec that is the"maximum""largest" of the flowspecs requested by the different next hops. Similarly, a RESV message forwarded to a previous hop should carry a flowspec that is the"maximum""largest" of the flowspecs requested by the different nexthops. Bothhops (however, in certain cases the "smallest" is taken rather than the largest, see Section 3.4). These cases all represent flowspec merging.Merging flowspecsFlowspec merging requirescalculatingcalculation of the "largest" of a set offlowspecs, whichflowspecs. However, since flowspecs areotherwise opaque to RSVP. Since flowspecs are multi-dimensionalgenerally multi- dimensional vectors (they may contain both Tspec and Rspec components, each of which may itself be multi-dimensional),generally speaking they cannotit may not be possible to strictlyordered. However, in many cases one can easily determine the "larger" oforder twoflowspecs, such as when both request the same bandwidth but one requests a tighter delay, or whenflowspecs. For example, if oneof the two requests bothrequest calls for a higher bandwidth and another calls for a tighter delaybound. When thebound, one is not "larger" than the other. In such a case, instead of taking thetwo cannot be determined,larger, RSVP must compute and use a third flowspec that is at least as large aseach, i.e., a "leasteach. Mathematically, RSVP merges flowspecs using the " least upper bound"(LUB). If(LUB) instead of thetwo flowspecsmaximum. Typically, the LUB is calculated by creating a new flowspec whose components areincomparable, their comparison will treated as an error.individually either the max or the min of corresponding components of the flowspecs being merged. For example, the LUB of Tspecs defined by token bucket parameters is computed by taking the maximums of the bucket size and the rate parameters. In several cases, the GLB (Greatest Lower Bound) is used instead of the LUB; this simply interchanges max and min operations. We can now give the complete rules for calculating the effective flowspec (Te, Re) to be installed on an interface. Here Te is the effective Tspec and Re is the effective Rspec. As an example, consider interface (d) in Figure 9. 1. Re is calculated as the largest (using an LUB if necessary) of the Rspecs in RESV messages from different next hops (e.g., D and D') but the same outgoing interface (d). 2. All Tspecs that were supplied in PATH messages from different previous hops (e.g., some or all of A, B, and B' in Figure 9) are summed; call this sum Path_Te. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 21] Internet Draft RSVP SpecificationNovember 1995February 1996 3. The maximum Tspec supplied in RESV messages from different next hops (e.g., D and D') is calculated; call this Resv_Te. 4. Te is the GLB (greatest lower bound) of Path_Te and Resv_Te.For Tspecs defined by token bucket parameters, this means to take the smaller of the bucket size and the rate parameters.Flowspecs, Tspecs, and Adspecs are opaque to RSVP. Therefore, the last of these steps is actually performed by traffic control. The definition and implementation of the rules for comparing flowspecs, calculatingLUB's,LUBs and GLBs, and summing Tspecs are outside the definition of RSVP [ServTempl95a]. Section3.9.43.10.4 shows generic calls that an RSVP daemon could use for these functions. 2.4 Soft State RSVP takes a "soft state" approach to managing the reservation state in routers and hosts. RSVP soft state is created and periodically refreshed by PATH and RESV messages. The state is deleted if no matching refresh messages arrive before the expiration of a "cleanup timeout" interval.ItState may also be deleted by an explicit "teardown" message, described in the next section. At the expiration of each "refresh timeout" period and after a state change, RSVP scans its state to build and forward PATH and RESV refresh messages to succeeding hops. PATH and RESV messages are idempotent. When a route changes, the next PATH message will initialize the path state on the new route, and future RESV messages will establish reservation state there; 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 at each node, depending upon the existing state at that node. RSVP sends its messages as IP datagrams with no reliability enhancement. Periodic transmission of refresh messages by hosts and routers is expected to handle the occasional loss of an RSVPmessages.message. If the effective cleanup timeout is set to K times the refresh timeout period, then RSVP can tolerate K-1 successive RSVP packet losses without falsely erasing a reservation. We recommend that the network traffic control mechanism be statically configured to grant some minimal bandwidth for RSVP messages to protect them from congestion losses. The state maintained by RSVP is dynamic; to change the set of senders Si or to change any QoS request, a host simply starts sending revised PATH and/or RESV messages. The resultshouldwill be an appropriate adjustment in the RSVP state in all nodes along the path. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 22] Internet Draft RSVP SpecificationNovember 1995 path.February 1996 In steady state, refreshing is performedhop-by-hophop-by-hop, to allow merging.IfWhen the received state differs from the stored state, the stored state is updated. If this update results in modification of state to be forwarded in refresh messages, these refresh messages must be generated and forwarded immediately, so that state changes can be propagated end-to-end without delay. However, propagation of a change stops when and if it reaches a point where merging causes no resulting state change. This minimizes RSVP control traffic due to changes and is essential for scaling to large multicast groups. State that is received through a particular interface I* should never be forwarded out the same interface. Conversely, state that is forwarded out interface I* must be computed using only state that arrived on interfaces different from I*. A trivial example of this rule is illustrated in Figure 10, which shows a transit router with one sender and one receiver on each interface (and assumes one next/previous hop per interface). Interfaces (a) and (c) serve as both outgoing and incoming interfaces for this session. Both receivers are making wildcard-scope reservations, in which the RESV messages are forwarded to all previous hops for senders in the group, with the exception of the next hop from which they came. The result is independent reservations in the two directions. There is an additional rule governing the forwarding of RESV messages: state from RESV messages received from outgoing interface Io should be forwarded to incoming interface Ii only if PATH messages from Ii are forwarded to Io. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 23] Internet Draft RSVP SpecificationNovember 1995February 1996 ________________ a | | c ( R1, S1 ) <----->| Router |<-----> ( R2, S2 ) |________________| Send | Receive | WF( *{3B}) <-- (a) | (c) <-- WF( *{3B}) | Receive | Send | WF( *{4B}) --> (a) | (c) --> WF( *{4B}) | Reserve on (a) | Reserve on (c) __________ | __________ | * {4B} | | | * {3B} | |__________| | |__________| | Figure 10: Independent Reservations 2.5 Teardown Upon arrival, RSVP "teardown" messages remove path and reservation state immediately. Although it is not necessary to explicitly tear down an old reservation, we recommend that all end hosts send a teardown request as soon as an application finishes. 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 deletes pathstatestate, as well as all dependent reservation state, along the way. An RTEAR message deletes reservation state and travels towards all senders upstream from its point of initiation. A PTEAR (RTEAR) message may be conceptualized as a reversed-sense Path message (Resv message, respectively). A teardown request may be initiated either by an application in an end system (sender or receiver), or by a router as the result of state timeout. Once initiated, a teardown request must be forwarded hop-by-hop without delay. A teardown message deletes the specified state in the node where it is received. As always, this state change will be propagated immediately to the next node, but only if there will be a net change after merging. As a result, an RTEAR message will prune the reservation state back (only) as far as possible.Like all other RSVP messages, teardown requests are not deliveredBraden, Zhang, et al. Expiration:MayAugust 1996 [Page 24] Internet Draft RSVP SpecificationNovember 1995February 1996 Like all other RSVP messages, teardown requests are not delivered reliably. The loss of a teardown request message will not cause a protocol failure because the unused state will eventually time out even though it is not explicitly deleted. If a teardown message is lost, the router that failed to receive that message will time out its state and initiate a new teardown message beyond the loss point. Assuming that RSVP message loss probability is small, the longest time to delete state will seldom exceed one refresh timeout period. 2.6 Errorsand AcknowledgmentsThere are two RSVP error messages, RERR andPERR, and a reservation confirmation message RACK. TherePERR. PERR messages area number of ways for a syntactically valid reservation request to fail at somevery simple. They are simply sent upstream to the sender that created the error, and they do not change path state in the nodes though which they pass. There are only a few possible causes of path errors. However, there are a number of ways for a syntactically valid reservation request to fail at some node along the path,triggering a RERR message:for example: 1. The effective flowspec that is computed using the new request may fail admission control. 2. Administrative policy may prevent the requested reservation. 3. There may be no matching path state, so that the request cannot be forwarded towards the sender(s). 4. A reservation style that requires the explicit selection of a unique sender may have a filter spec that is ambiguous, i.e., that matches more than one sender in the path state, due to the use of wildcard fields in the filter spec. 5. The requested style may be incompatible with the style(s) of existing reservations. The incompatibility may occur among reservations for the same session on the same outgoing interface, or among effective reservations on different outgoing interfaces.In any of these cases, a RERR message is returned to the receiver(s) responsible for the erroneous request.A node may also decide to preempt an established reservation.A preemption will trigger aThe handling of RERRmessagemessages is somewhat complex (Section 3.4). Since a request that fails may be the result of merging a number of requests, a reservation error must be reported to allaffected receivers. An error message does not modify state in the nodes through which it passes. Therefore, any reservations established downstreamof thenode where the failure occurred will persist until theresponsiblereceiver(s) explicitly tear down the state or allow it to time out.receivers. Inthis version of RSVP, detection of an error inaddition, merging heterogeneous requests creates areservationpotential difficulty known as the "killer Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 25] Internet Draft RSVP SpecificationNovember 1995 request not only generates a RERR message, it also prevents theFebruary 1996 reservation" problem, in which one requestfrom being forwarded further. This may not always be the desirable behavior; for example,could deny service to another. There are actually two killer-reservation problems. 1. The first killer reservation problem (KR-I) arises when there is already a reservation Q0 in place. If another receivermay wantnow makes a larger reservationrequest to propagate all the way to the sender despite an admission control failure at a particular link alongQ1 > Q0, thepath. However, designresult ofthe appropriate mechanism has proved difficult,merging Q0 andtherefore this version take the simplest approach. WhenQ1 may be rejected by admission control in some upstream node. This must not deny service to Q0. The solution to this problem is simple: when admission control fails for a reservation request, any existing reservation is left in place.This prevents a new, very large,2. The second killer reservationfrom disruptingproblem (KR-II) is theexisting QoS by merging with an existing reservation and then failing admission control (this has been calledconverse: the"killer reservation" problem). To requestreceiver making aconfirmation for itsreservationrequest,Q1 is persistent even though Admission Control is failing for Q1 in some node. This must not prevent a different receiverRj includes in the RESV messagefrom now establishing aconfirmation-request object containing its IP address. Atsmaller reservation Q0 that will succeed. To solve this problem, a RERR message establishes additional state, called "blockade state", in eachmerge point, onlynode through which it passes. Blockade state in a node modifies thelargestmerging procedure to omit the offending flowspecand any accompanying confirmation-request object is forwarded upstream. If(Q1 in thereservation requestexample) fromRj is equal to or smaller thanthereservation in place onmerge, allowing anode, its RESV are notsmaller request to be forwardedfurther,andif the RESV included an confirmation-request object, a RACK messageestablished. The Q1 reservation state issent backsaid toRj. This mechanism has the following consequences: obe "blockaded". Detailed rules are presented in Section 3.4. Anewreservation requestwith a flowspec larger than anythat fails Admission Control creates blockade state but is left in placefor a session will normally resultineither a RERR or a RACK message back tonodes downstream of thereceiverfailure point. It has been suggested that these reservations downstream fromeach sender. In this case,theRACK messagefailure represent "wasted" reservations and should be timed out if not actively deleted. However, in general the downstream reservations will not bean end-to-end confirmation."wasted". oThe receipt of a RACK gives no guarantees. Assume the first two reservation requests from receivers R1 and R2 arrive at the node where theyThere aremerged. R2, whose reservation was the second to arrive at that node, may receivetwo possible reasons for aRACK from that node while R1's request has not yet propagated allreceiver persisting in a failed reservation: (1) it is polling for resource availability along thewayentire path, or (2) it wants toa matching sender and may still fail. In thisobtain the desired QoS along as much of the path as possible. Certainly in the second case,R2 will receive a RACK although there is no end-to-end reservationand perhaps inplace. Furthermore, ifthetwo flowspecs are equal, R2 may receive a RACK followed by a RERR. However, if its flowspec is smaller, R2first case, the receiver willreceive onlywant to hold onto theRACK.reservations it has made downstream from the failure. oDespiteIf theseuncertainties, receiptdownstream reservations were not retained, the responsiveness of RSVP to certain transient failures would be impaired. For example, suppose aRACK indicates a high probabilityroute "flaps" to an alternate route thatthe reservationis congested, so an existing reservation suddenly fails, then quickly recovers to the original route. The blockade state inplace. o Finally, note that RERR and/or RACK messages may be lost.each downstream router must not remove Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 26] Internet Draft RSVP SpecificationNovember 1995 2.7 Policy and Security RSVP-mediated QoS requests will result in particular user(s) getting preferential access to network resources. ToFebruary 1996 the state or preventabuse, some form of back pressure on users is likelyits immediate refresh. o If we did not refresh the downstream reservations, they might time out, to berequired. This back pressure might take the form of administrative rules, or of some form of real or virtual billingrestored every Td seconds. Such on/off behavior might be very distressing forthe "cost" ofusers. 2.7 Confirmation To request areservation. The form and contents of such back pressure isconfirmation for its reservation request, amatter of administrative policy that may be determined independently by each administrative domainreceiver Rj includes in theInternet. Therefore, admission control atRESV message a confirmation-request object containing Rj's IP address. At eachnodemerge point, only the largest flowspec and any accompanying confirmation-request object islikely to contain a policy component in addition to a resourceforwarded upstream. If the reservationcomponent. As inputrequest from Rj is equal tothe policy-based admission decision, RSVP messages may carry policy data. This data may include credentials identifying usersoruser classes, account numbers, limits, quotas, etc. To protect the integrity of the policy-based admission control mechanisms, it may be necessary to ensuresmaller than theintegrity of RSVP messages against corruption or spoofing, hop by hop. For this purpose, RSVP messages may carry integrity objects that can be created and verified by neighbor RSVP-capable nodes. These objectsreservation in place on a node, its RESV areexpected to contain an encrypted partnot forwarded further, andto assumeif the RESV included ashared secret between neighbors. User policy data inconfirmation-request object, a RACK message is sent back to Rj. This mechanism has the following consequences: o A new reservation requestmessages presents a scaling problem. Whenwith amulticast group hasflowspec larger than any in place for alarge number of receivers, itsession willbe impossible or undesirable to carry all receivers' policy data upstreamnormally result in either a RERR or a RACK message back to thesender(s). The policy datareceiver from each sender. In this case, the RACK message willhave tobeadministratively mergedan end-to-end confirmation. o The receipt of a RACK gives no guarantees. Assume the first two reservation requests from receivers R1 and R2 arrive atplaces nearthereceivers, to avoid excessive policy data. Administrative merging implies checkingnode where they are merged. R2, whose reservation was theuser credentials and accounting data and then substitutingsecond to arrive at that node, may receive atoken indicating the checkRACK from that node while R1's request hassucceeded. A chain of trust established using an integrity field will allow upstream nodes to accept these tokens. In summary, different administrative domain innot yet propagated all theInternet may have different policies regarding their resource usageway to a matching sender andreservation. The role of RSVPmay still fail. Thus, R2 may receive a RACK although there isto carry policy data associated with eachno end-to-end reservation in place; furthermore, R2 may receive a RACK followed by a RERR. 2.8 Policy and Security RSVP-mediated QoS requests will result in particular user(s) getting preferential access tothenetworkas needed. Note that the merge points for policy data areresources. To prevent abuse, some form of back pressure on users is likely to beatrequired. This back pressure might take theboundariesform of administrativedomains. It may be necessary to carry accumulated and unmerged policy data upstream through multiple nodes before reaching onerules, or ofthese merge points. Braden,some form of real or virtual billing for the "cost" of a reservation. The form and contents of such back pressure is a matter of administrative policy that may be determined independently by each administrative domain in the Internet. Therefore, there will be policy control as well as admission Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 27] Internet Draft RSVP SpecificationNovember 1995 2.8 Automatic RSVP Tunneling It is impossible to deploy RSVP (or any new protocol) at the same moment throughoutFebruary 1996 control over theentire Internet. Furthermore,establishment of reservations. As input to policy control, RSVP messages maynevercarry policy data. Policy data may include credentials identifying users or user classes, account numbers, limits, quotas, etc. Like flowspecs, policy data will bedeployed everywhere. RSVP must therefore provide correct protocol operation even when two RSVP-capable routers are joined by an arbitrary "cloud" of non-RSVP routers. Of course, an intermediate cloud that does not support RSVP is unableopaque toperform resource reservation. However, if such a cloud has sufficient capacity,RSVP, which will simply pass itmay still provide acceptable realtime service. RSVP automatically tunnels through suchto anon-RSVP cloud. Both RSVP and non-RSVP routers forward PATH messages towards the destination address using their local uni-/multicast routing table. Therefore,"Local Policy Module" (LPM) for a decision. To protect theroutingintegrity ofPATH messages will be unaffected by non-RSVP routers inthepath. When a PATH message traverses a non-RSVP cloud,policy control mechanisms, itcarriesmay be necessary to ensure thenext RSVP-capable node the IP addressintegrity ofthe last RSVP-capable router before entering the cloud. This effectively constructs a tunnel through the cloud for RESV messages, which can thenRSVP messages against corruption or spoofing, hop by hop. For this purpose, RSVP messages may carry integrity objects that can beforwarded directlycreated and verified by neighbor RSVP-capable nodes. These objects use a keyed cryptographic digest technique and assume that RSVP neighbors share a secret [Baker96]. User policy data in reservation request messages presents a scaling problem. When a multicast group has a large number of receivers, it will be impossible or undesirable to carry all receivers' policy data upstream to thenext RSVP- capable router onsender(s). The policy data will have to be administratively merged at places near thepath(s) back towardsreceivers, to avoid excessive policy data. Administrative merging implies checking thesource. Some interconnection topologies of RSVPuser credentials andnon-RSVP routers can cause RESV messagesaccounting data and then substituting a token indicating the check has succeeded. A chain of trust established using integrity fields will allow upstream nodes toarrive ataccept these tokens. In summary, different administrative domains in thewrong RSVP-capable node, orInternet may have different policies regarding their resource usage and reservation. The role of RSVP is to carry policy data associated with each reservation toarrive atthewrong interface atnetwork as needed. Note that thecorrect node. An RSVP daemon must be preparedmerge points for policy data are likely tohandle either situation. When a RESV message arrives, its IP destination address should normallybe at theaddressboundaries of administrative domains. It may be necessary to carry accumulated and unmerged policy data upstream through multiple nodes before reaching one of these merge points. This document does not specify thelocal interfaces. If so,contents of policy data, thereservation shouldstructure of an LPM, or any generic policy models. These will bemade ondefined in theaddressed interface, even if itfuture. 2.9 Automatic RSVP Tunneling It isnot the one on which the message arrived. If the destination address does not matchimpossible to deploy RSVP (or anylocal interface and the message is not a PATH or PTEAR, it should be forwarded without further processing by this node. 2.9 Host Model Before a session can be created,new protocol) at thesession identification, comprised of DestAddress and perhapssame moment throughout thegeneralized destination port, mustentire Internet. Furthermore, RSVP may never beassigned and communicated to all the senders and receiversdeployed everywhere. RSVP must therefore provide correct protocol operation even when two RSVP-capable routers are joined bysome out-of-band mechanism. Whenan arbitrary "cloud" of non-RSVP routers. Of course, an intermediate cloud that does not support RSVPsessionisbeing set up, the following events happen at the end systems. H1 A receiver joins the multicast group specified by DestAddress, using IGMP. H2 A potential sender starts sending RSVP PATH messagesunable tothe DestAddress.perform resource reservation. However, if such a cloud has sufficient Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 28] Internet Draft RSVP SpecificationNovember 1995 H3 A receiver application receivesFebruary 1996 capacity, it may still provide acceptable realtime service. RSVP automatically tunnels through such a non-RSVP cloud. Both RSVP and non-RSVP routers forward PATHmessage. H4 A receiver starts sending appropriate RESV messages, specifyingmessages towards thedesired flow descriptors. H5 A sender application receives a RESV message. H6 A sender starts sending data packets. There are several synchronization considerations. o H1 and H2 may happendestination address using their local uni-/multicast routing table. Therefore, the routing of PATH messages will be unaffected by non-RSVP routers ineither order. o Suppose thatthe path. When anew sender starts sending data (H6) but there are no multicast routes because no receivers have joinedPATH message traverses a non-RSVP cloud, it carries to thegroup (H1). Thennext RSVP-capable node thedata will be dropped at someIP address of the last RSVP-capable routernode (which node depends uponbefore entering therouting protocol) until receivers(s) appear. o Suppose thatcloud. This effectively constructs anew sender starts sending PATH messages (H2) and data (H6) simultaneously, and there are receivers but no RESV messages have reachedtunnel through thesender yet (e.g., because its PATH messages have not yet propagatedcloud for RESV messages, which can then be forwarded directly to thereceiver(s)). Thennext RSVP- capable router on theinitial data may arrive at receivers withoutpath(s) back towards thedesired QoS. The sender could mitigate this problem by awaiting arrival ofsource. Even though RSVP operates correctly through a non-RSVP cloud, thefirst RESV message (H5); however, receivers that are farther away may not have reservationsnon-RSVP-capable nodes will inplace yet. o Ifgeneral perturb the QoS provided to areceiver starts sending RESV messages (H4) before receiving any PATH messages (H3),receiver. Therefore, RSVPwill return error messagestries to inform thereceiver. Thereceivermay simply choosewhen there are non-RSVP-capable hops in the path toignore such error messages, or it may avoid thema given sender, bywaiting for PATH messages before sending RESV messages. [LZ: should recommend thatmeans of two flag bits in the SESSION object of areceiver wait for at leastPATH message; see Section 3.7 and Appendix A. Some topologies of RSVP routers and non-RSVP routers can cause RESV messages to arrivebefore sending RESV messages.] A specific application programat the wrong RSVP-capable node, or to arrive at the wrong interface(API) forof the correct node. An RSVP daemon must be prepared to handle either situation. If the destination address does not match any local interface and the message is notdefined ina PATH or PTEAR, the message must be forwarded without further processing by thisprotocol spec, as it maynode. When a RESV message does arrive at the addessed node, the IP destination address (or the LIH, defined later) must behost system dependent. However, Section 3.9.1 discussesused to determine thegeneral requirementsinterface to receive the reservation. 2.10 Host Model Before a session can be created, the session identification, comprised of DestAddress and perhaps the generalized destination port, must be assigned and communicated to all the senders andpresenreceivers by some out-of-band mechanism. When an RSVP session is being set up, the following events happen at the end systems. H1 A receiver joins the multicast group specified by DestAddress, using IGMP. H2 A potential sender starts sending RSVP PATH messages to the DestAddress. H3 A receiver application receives a PATH message. H4 A receiver starts sending appropriate RESV messages, Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 29] Internet Draft RSVP SpecificationNovember 1995 3. RSVP Functional Specification 3.1 RSVP Message Formats An RSVP message consists of a common header followed by a variable number of variable-length, typed "objects". The subsectionsFebruary 1996 specifying the desired flow descriptors. H5 A sender application receives a RESV message. H6 A sender starts sending data packets. There are several synchronization considerations. o H1 and H2 may happen in either order. o Suppose thatfollow definea new sender starts sending data (H6) but there are no multicast routes because no receivers have joined theformats ofgroup (H1). Then thecommon header,data will be dropped at some router node (which node depends upon theobject structures,routing protocol) until receivers(s) appear. o Suppose that a new sender starts sending PATH messages (H2) andeachdata (H6) simultaneously, 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. The sender could mitigate this problem by awaiting arrival of theRSVP message types. For each RSVPfirst RESV messagetype, there is(H5); however, receivers that are farther away may not have reservations in place yet. o If aset of rulesreceiver starts sending RESV messages (H4) before receiving any PATH messages (H3), 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.10.1 discusses thepermissible choicegeneral requirements andordering of object types. These rulesoutlines a generic interface. Braden, Zhang, et al. Expiration: August 1996 [Page 30] Internet Draft RSVP Specification February 1996 3. RSVP Functional Specification 3.1 RSVP Message Formats An RSVP message or message fragment consists of a common header, an optional integrity-check data structure, and a body consisting of a variable number of variable-length, typed "objects". The integrity-check data structure is itself an object, of class INTEGRITY [Baker96]. In a fragmented message, INTEGRITY objects must occur either in every fragment or else in no fragment. Fragmentation of a message allows division of an object across two (or more) successive fragments. The following subsections define the formats of the common header, the object structures, and each of the RSVP message types. For each RSVP message type, there is a set of rules for the permissible choice of object types. These rules are specified using Backus-Naur Form (BNF) augmented with square brackets surrounding optional sub-sequences. The BNF implies an order for the objects in a message. However, in many (but not all) cases, object order makes no logical difference. An implementation should create messages with the objects in the order shown here, but accept the objects in any order except where the order is logically required (as noted in the following). 3.1.1 Common Header 0 1 2 3 +-------------+-------------+-------------+-------------+ | Vers | Flags| Type | RSVP Checksum | +-------------+-------------+-------------+-------------+ | RSVP Length | (Reserved) | Send_TTL | +-------------+-------------+-------------+-------------+ | Message ID | +----------+--+-------------+-------------+-------------+ |(Reserved)|MF| Fragment offset | +----------+--+-------------+-------------+-------------+ The fields in the common header are as follows: Vers: 4 bits Protocol version number. This is version 1. Flags: 4 bits(None defined yet)Braden, Zhang, et al. Expiration: August 1996 [Page 31] Internet Draft RSVP Specification February 1996 0x01 = INTEGRITY object present This flag indicates that an INTEGRITY object follows immediately after the common header. The use of the INTEGRITY object is described in [Baker96]. 0x02 = UDP': UDP encapsulation marker flag This flag is reserved for use by UDP encapsulation [Appendix C]. Type: 8 bits 1 = PATH 2 = RESV 3 = PERR 4 = RERRBraden, Zhang, et al. Expiration: May 1996 [Page 30] Internet Draft RSVP Specification November 19955 = PTEAR 6 = RTEAR 7 = RACK RSVP Checksum: 16 bitsA standard TCP/UDP checksum overThe one's complement of thecontentsone's complement sum of theRSVP message,message (fragment), with the checksum field replaced byzero.zero for the purpose of computing the checksum. An all- zero value means that no checksum was transmitted. RSVP Length: 16 bits The total length of this RSVP packet in bytes, including the common header and the variable-length objects that follow. If the MF flag is on or the Fragment Offset field is non-zero, this is the length of the current fragment of a larger message. Send_TTL: 8 bits The IP TTL value with which the message was sent. Message ID: 32 bits Braden, Zhang, et al. Expiration: August 1996 [Page 32] Internet Draft RSVP Specification February 1996 A label shared by all fragments of one message from a given next/previous RSVP hop. An RSVP implementation assigns a unique Message ID to each message it sends. MF: More Fragments Flag: 1 bit This flag is the low-order bit of a byte; the seven high- order bits are reserved. It is on for all but the last fragment of a message. Fragment Offset: 24 bits This field gives the byte offset of the current fragment in the complete message. 3.1.2 Object Formats Every object consists of one or more 32-bit words with a one- word header, in the following format: 0 1 2 3 +-------------+-------------+-------------+-------------+ | Length (bytes) | Class-Num | C-Type |Braden, Zhang, et al. Expiration: May 1996 [Page 31] Internet Draft RSVP Specification November 1995+-------------+-------------+-------------+-------------+ | | // (Object contents) // | | +-------------+-------------+-------------+-------------+ An object header has the following fields: Length A 16-bit field containing the total object length in bytes. Must always be a multiple of 4, and at least 4. Class-Num Identifies the object class; values of this field are defined in Appendix A. Each object class has a name, which is always capitalized in this document. An RSVP implementation must recognize the following classes: NULL A NULL object has a Class-Num of zero, and its C-Type is ignored. Its length must be at least 4, but can Braden, Zhang, et al. Expiration: August 1996 [Page 33] Internet Draft RSVP Specification February 1996 be any multiple of 4. A NULL object may appear anywhere in a sequence of objects, and its contents will be ignored by the receiver. SESSION Contains the IP destination address (DestAddress), the IP protocol id, and a generalized destination port, to define a specific session for the other objects that follow. Required in every RSVP message. RSVP_HOP Carries the IP address of the RSVP-capable node that sent this message. This document refers to a RSVP_HOP object as a PHOP ("previous hop") object for downstream messages or as a NHOP ("next hop") object for upstream messages. TIME_VALUES Contains the value for the refresh period R used by the creator of the message; see3.5.3.6. Required inBraden, Zhang, et al. Expiration: May 1996 [Page 32] Internet Draft RSVP Specification November 1995every PATH and RESV message. STYLE Defines the reservation style plus style-specific information that is not in FLOWSPEC or FILTER_SPEC objects. Required in every RESV message. FLOWSPEC Defines a desired QoS, in a RESV message. FILTER_SPEC Defines a subset of session data packets that should receive the desired QoS (specified by an FLOWSPEC object), in a RESV message. SENDER_TEMPLATE Contains a sender IP address and perhaps some additional demultiplexing information to identify a sender, in a PATH message. SENDER_TSPEC Braden, Zhang, et al. Expiration: August 1996 [Page 34] Internet Draft RSVP Specification February 1996 Defines the traffic characteristics of a sender's data stream, in a PATH message. ADSPEC Carries OPWA data, in a PATH message. ERROR_SPEC Specifies an error, in a PERR or RERR message. POLICY_DATA Carries information that will allow a local policy module to decide whether an associated reservation is administratively permitted. May appear in a PATH or RESV message. INTEGRITY Contains cryptographic data to authenticate the originatingnode,node andperhapsto verify thecontents, Braden, Zhang, et al. Expiration: May 1996 [Page 33] Internet Draft RSVP Specification November 1995contents of this RSVP message. See [Baker96]. SCOPE An explicit list of sender hosts towards which to forward a message. May appear in a RESV, RERR, or RTEAR message. RESV_CONFIRM Carries the IP address of a receiver that requested a confirmation. May appear in a RESV or RACK message. C-Type Object type, unique within Class-Num. Values are defined in Appendix A. The maximum object content length is 65528 bytes. The Class- Num and C-Type fields may be used together as a 16-bit number to define a unique type for each object. The high-orderbittwo bits of the Class-Num is used to determine what action a node should take if it does not recognize theClass- NumClass-Num of an object; see Section3.8.3.9. Braden, Zhang, et al. Expiration: August 1996 [Page 35] Internet Draft RSVP Specification February 1996 3.1.3 PathMessageMessages Each sender host periodically sends a PATH message containing a description of each data stream it originates. The PATH message travels from a sender to receiver(s) along the same path(s) used by the data packets. The IP source address of a PATH message is an address of the sender it describes, while the destination address is the DestAddress for the session. These addresses assure that the message will be correctly routed through a non-RSVP cloud. Each RSVP-capable node along the path(s) captures PATH messages and processes them to build local path state. The node then forwards the PATH messages towards the receiver(s), replicating it as dictated by multicast routing, while preserving the original IP source address. PATH messages eventually reach the applications on all receivers; however, they are not looped back to a receiver running in the same application process as the sender. The format of a PATH message is as follows:Braden, Zhang, et al. Expiration: May 1996 [Page 34] Internet Draft RSVP Specification November 1995<Path Message> ::= <Common Header><SESSION> <RSVP_HOP>[ <INTEGRITY> ] <SESSION> <RSVP_HOP> <TIME_VALUES> <sender descriptor> <sender descriptor> ::= <SENDER_TEMPLATE> <SENDER_TSPEC> [ <POLICY_DATA> ] [ <ADSPEC> ] If the INTEGRITY object is present, there must be an INTEGRITY object immediately following the common header in every fragment of the message, in this and all other messages. The objects included in the sender descriptor must occur after all other objects in the message. The PHOP (i.e., the RSVP_HOP) object of each PATH message contains the address of the interface through which the PATH message was most recently sent. The SENDER_TEMPLATE object defines the format of data packets from this sender, while the SENDER_TSPEC object specifies the traffic characteristics of the flow. Optionally, there may be a POLICY_DATA object specifying user credential and accounting information and/or an Braden, Zhang, et al. Expiration: August 1996 [Page 36] Internet Draft RSVP Specification February 1996 ADSPEC object carrying advertising (OPWA) data. A PATH message received at a node is processed to create path state for the sender defined by the SENDER_TEMPLATE and SESSION objects. Any POLICY_DATA, SENDER_TSPEC, and ADSPEC objects are also saved in the path state. If an error is encountered while processing a PATH message, a PERR message is sent to the originating sender of the PATH message. PATH messages must satisfy the rules on SrcPort and DstPort in Section 2.2. Periodically, the RSVP daemon at a node scans the path state to create new PATH messages to forward downstream. Each message contains a sender descriptor defining one sender. The RSVP daemon forwards these messages using routing information it obtains from the appropriate uni-/multicast routing daemon. The route depends upon the session DestAddress, and for some routing protocols also upon the source (sender's IP) address. The routing information generally includes the list of none or more outgoing interfaces to which the PATH message to be forwarded. Because each outgoing interface has a different IP address, the PATH messages sent out different interfaces contain different PHOP addresses. In addition, any ADSPEC or POLICY_DATA objects carried in PATH messages will also generally differ for different outgoing interfaces. Some IP multicast routing protocols (e.g., DVMRP, PIM, and MOSPF) also keep track of the expected incoming interface for each source host to a multicast group. Whenever this information is available, RSVP should check the incoming interface of each PATH message and immediately discard thoseBraden, Zhang, et al. Expiration: May 1996 [Page 35] Internet Draft RSVP Specification November 1995messages that have arrived on the wrong interface. 3.1.4 Resv Messages RESV messages carry reservation requests hop-by-hop from receivers to senders, along the reverse paths of data flows for the session. The IP destination address of a RESV message is the unicast address of a previous-hop node, obtained from the path state. The IP source address is an address of the node that sent the message. The RESV message format is as follows: <Resv Message> ::= <Common Header><SESSION> <RSVP_HOP>[ <INTEGRITY> ] <SESSION> <RSVP_HOP> <TIME_VALUES> [ <S_POLICY_DATA> ] Braden, Zhang, et al. Expiration: August 1996 [Page 37] Internet Draft RSVP Specification February 1996 [ <RESV_CONFIRM> ] [ <SCOPE> ] <STYLE> <flow descriptor list> <S_POLICY_DATA> ::= <POLICY_DATA> <flow descriptor list> ::= <flow descriptor> | <flow descriptor list> <flow descriptor> The NHOP (i.e., the RSVP_HOP) object contains the IP address of the(incoming)interface through which the RESV messageiswas sent. The appearance of a RESV_CONFIRM object signals a request for a reservation confirmation and carries the IP address of the receiver to which the RACK should be sent. The S_POLICY_DATA object is a POLICY_DATA object that is associated with the entire session. There may also be flow-specificPOLICY_DATAF_POLICY_DATA objects, as described below. TheBNF above defines aSTYLE object followed by the flow descriptor list must occur at the end of the message. The BNF above defines a flow descriptor list as simply a list of flow descriptors. The following style-dependent rules specify in more detail the composition of a valid flow descriptor list for each of the reservationstyles.styles; the order shown must be used. o WF Style: <flow descriptor list> ::= <WF flow descriptor>Braden, Zhang, et al. Expiration: May 1996 [Page 36] Internet Draft RSVP Specification November 1995<WF flow descriptor> ::= <FLOWSPEC> [ <F_POLICY_DATA> ] <F_POLICY_DATA> ::= <POLICY_DATA> o FF style: <flow descriptor list> ::= <First FF flow descriptor> | <flow descriptor list> <FF flow descriptor> <First FF flow descriptor> ::= <FLOWSPEC> [ <F_POLICY_DATA> ] <FILTER_SPEC> Braden, Zhang, et al. Expiration: August 1996 [Page 38] Internet Draft RSVP Specification February 1996 <FF flow descriptor> ::= [ <FLOWSPEC> ] [ <F_POLICY_DATA> ] <FILTER_SPEC> Each elementary FF style request is defined by a single (FLOWSPEC, FILTER_SPEC) pair, and multiple such requests may be packed into the flow descriptor list of a single RESV message. A FLOWSPEC object can be omitted if it is identical to the most recent such object that appeared in the list; the first FF flow descriptor must contain a FLOWSPEC. Each flow descriptor in the list must be processed independently, and a separate RERR message must be generated for each one that is in error. o SE style: <flow descriptor list> ::= <SE flow descriptor> <SE flow descriptor> ::= <FLOWSPEC> [ <F_POLICY_DATA> ] <filter spec list> <filter spec list> ::= <FILTER_SPEC> | <filter spec list> <FILTER_SPEC>Each elementary SE style request is defined by a single SE descriptor, which includes a FLOWSPEC defining the shared reservation, optionally a POLICY_DATA object, and a list of FILTER_SPEC objects.The reservation scope, i.e., the set of senders towards which aBraden, Zhang, et al. Expiration: May 1996 [Page 37] Internet Draft RSVP Specification November 1995particular reservation is to be forwarded, is determined as follows: o Explicit sender selectionMatchSelect a particular sender by matching each FILTER_SPEC object against the path state created from SENDER_TEMPLATEobjects to select a particular sender.objects. An ambiguous match, i.e., a FILTER_SPEC matching more than one SENDER_TEMPLATE (e.g. through use of a wildcard port), is an error.Any SCOPE object associated with the reservation should be ignored in this case.o Wildcard sender selection All senders that route to the given outgoing interface match this request. A SCOPE object, if present, contains an explicit list of sender IP addresses. If there is no Braden, Zhang, et al. Expiration: August 1996 [Page 39] Internet Draft RSVP Specification February 1996 SCOPE object, the scope is determined by the relevant set of senders in the path state. Whenever a RESV message with wildcard sender selection is forwarded to more than one previous hop, a SCOPE object must be included in the message. See Section 3.3 below. 3.1.5Error and ConfirmationTeardown Messages There arethreetwo types of RSVPerror/confirmation messages.Teardown message, PTEAR and RTEAR. oPERR messages result from PATH messagesA PTEAR message deletes path state (which in turn deletes any reservation state for that sender) andtraveltravels towardssenders. PERR messagesall receivers that arerouted hop-by-hop using the path state; at each hop,downstream from the initiating node. A PTEAR message is routed like a PATH message, and its IP destination address is DestAddress for theunicast address of a previous hop.session. oRERR messages result from RESV messagesA RTEAR message deletes reservation state andtraveltravels towards all matching senders upstream from theappropriate receivers. They are routed hop-by-hop using the reservation state; at each hop, the IP destination address is the unicast address of a next-hopinitiating node.o RACK messages are sent to (probabilistically) acknowledge reservation requests.ARACKRTEAR message issent as the result of the appearance of a RESV_CONFIRM objectrouted in the same way as a corresponding RESV message, andcontains a copy of that RESV_CONFIRM. The RACK messageits IP destination address issent tothe unicast address of areceiver host; the address is obtained from the RESV_CONFIRM object. A RACK message is forwarded to the receiver hop-by-hop by (to accommodate the hop-by-hop integrity check mechanism). Braden, Zhang, et al. Expiration: May 1996 [Page 38] Internet Draft RSVP Specification November 1995 Errors encountered while processing error messages must cause the error message to be discarded without creating further error messages; however, logging of such events may be useful. None of these messages modify the state of any node through which they pass; instead, they are only reported to the end application. <PathErr message>previous hop. <PathTear Message> ::= <Common Header> [<INTEGRITY>] <SESSION>[ <INTEGRITY> ] <ERROR_SPEC><RSVP_HOP> <sender descriptor> <sender descriptor> ::= (see earlier definition)<ResvErr<ResvTear Message> ::= <Common Header> [<INTEGRITY>] <SESSION>[ <INTEGRITY> ] <ERROR_SPEC> [S_POLICY_DATA]<RSVP_HOP> [ <SCOPE> ] <STYLE><error flow descriptor> <ResvConf Message> ::= <Common Header> <SESSION> [ <INTEGRITY> ] <ERROR_SPEC> <RESV_CONFIRM> <STYLE><flow descriptor list> <flow descriptor list> ::= (see earlier definition)The RESV_CONFIRM objectFLOWSPEC or POLICY_DATA objects ina RACK message is a copy of the object from the RESV message that triggered the confirmation. The following style-dependent rules definethecompositionflow descriptor list of avalid error flow descriptor: o WF Style: <error flow descriptor> ::= <WFRTEAR message will be ignored and may be omitted. The order requirements for sender descriptor, STYLE object, and flowdescriptor> Braden, Zhang, et al. Expiration: Maydescriptor list are as given earlier for PATH and RESV messages. Braden, Zhang, et al. Expiration: August 1996 [Page39]40] Internet Draft RSVP SpecificationNovember 1995 o FF style: <error flow descriptor> ::= <FF flow descriptor> o SE style: <error flow descriptor> ::= <SE flow descriptor> The ERROR_SPEC object specifies the error and includes the IP address of the node that detected the error (Error Node Address). POLICY_DATA objects are included in error messages in cases where they may provide relevant information (i.e., when an administrative failureFebruary 1996 Note that, unless it isbeing reported). Inaccidentally dropped along the way, aRACK message,PTEAR message will reach all receivers down stream from its origination. On theERROR_SPEC is used onlyother hand, a RTEAR message will cease tocarrybe forwarded at theIP addresssame node where merging suppresses forwarding of theoriginating node, incorresponding RESV messages. In each node N along theError Node Address;way, if theerror specification is a special value that indicates a confirmation. When a RESVRTEAR messagecontains a list of flow descriptors (e.g., FF style),causes theRSVP implementation should process each flow descritor independently and return a separate RERR messageremoval of all state foreach that is in error. Generally speaking,this session, N will create aRERRnew teardown messageshouldto beforwarded towards all receivers that may have causedpropagated further upstream; otherwise, theerror being reported. More specifically: o The node that detects an errorRTEAR message may result in the immediate forwarding of areservation request sendsmodified RESV refresh message. Deletion of path state as the result of aRERR message to the next hop from which the erroneous reservation came. ThePTEAR message or a timeout mustcontain the informationcause any adjustments in related reservation state required todefine the error and to routemaintain consistency in theerror message. Routing requires at least a STYLE object and one or more FILTER_SPEC object(s) fromlocal node. The adjustment in reservation state depends upon theerroneous RESV message.style. Foran admission control failure, forexample, suppose a PTEAR deletes theerroneous FLOWSPEC must be included. o Succeeding nodes forwardpath state for a sender S. If theRERR message using their localstyle specifies explicit sender selection (FF or SE), any reservationstate, to the next hops of reservations that match the FILTER_SPEC(s) in the message. For reservationswith a filter spec matching S should be deleted; if the style has wildcardscope, there is an additional limitation on forwarding RERR messages, to avoid loops; see Section 3.3. Whensender selection (WF), theerror is an admission control failure, a nodereservation should be deleted if S isallowed (but not required) to match the FLOWSPEC as well astheBraden, Zhang, et al. Expiration: May 1996 [Page 40] Internet Draft RSVP Specification November 1995 FILTER_SPEC object(s),last sender tolimitthedistribution of a RERR message to those receivers that `caused'session. These reservation changes should not trigger an immediate RESV refresh message, since theerror. Suppose that a RERRPTEAR messagecontains a FLOWSPEC Qerr that is being matched againsthave already made theFLOWSPEC Qlocal inrequired changes upstream. However, at thelocal reservation state innodeN. Qerr, which originatedin which anode upstream from N, resulted from merging of flowspecs that included Qlocal. Generally, a RERRRTEAR messagecan be forwarded to the receiver(s) that specified the `biggest' flowspec. The comparison of Qerr against a particular Qlocal to determine whether Qlocal qualifies as (one of) the `biggest', may be called `de-merging'. As with merging,stops, thedetailschange ofde- merging depend upon the service and the FLOWSPEC format, and are outside RSVP itself. A RERR message that is forwarded should carry the FILTER_SPEC from the correspondingreservation state(thus `de-merging' the filter spec). When a RERR or RACK message reachesmay trigger areceiver, the STYLE object, flow descriptor list, and ERROR_SPEC object (which contains the LUB-Used flag) should be delivered to the receiver application. In the case of an Admission Control error, the flow descriptor list will contain the FLOWSPEC objectRESV refresh starting at thatfailed. If the LUB-Used flag is off, this should be semantically equivalent (but not necessarily identical) to the FLOWSPEC originated by this application; otherwise, they may differ.node. 3.1.6TeardownError Messages There are two types of RSVPTeardown message, PTEAR and RTEAR.error messages. oA PTEAR message deletes path state (which in turn deletes the reservation state for that sender, if there is any) and travels towards all receivers that are downstreamPERR messages result fromthe point of initiation. A PTEAR message is routed like aPATHmessage, and its IP destination address is DestAddress for the session. o A RTEAR message deletes reservation statemessages andtravels towards all matching senderstravel upstreamfromtowards thepoint of teardown initiation. A RTEAR message issenders. PERR messages are routedinhop-by-hop using thesame way as a corresponding RESV message (usingpath state; at each hop, thesame scope rules). ItsIP destination address is the unicast address of a previous hop.<PathTear Message> ::= <Common Header> <SESSION> <RSVP_HOP> Braden, Zhang, et al. Expiration: May 1996 [Page 41] Internet Draft RSVP Specification November 1995 [ <INTEGRITY>PERR messages do not modify the state of any node through which they pass; instead, they are only reported to the sender application. o RERR messages result from RESV messages and travel downstream towards the appropriate receivers. They are routed hop-by-hop using the reservation state; at each hop, the IP destination address is the unicast address of a next-hop node. An error encountered while processing an error message must cause the error message to be discarded without creating further error messages; however, logging of such events may be useful. Braden, Zhang, et al. Expiration: August 1996 [Page 41] Internet Draft RSVP Specification February 1996 <PathErr message> ::= <Common Header> [ <INTEGRITY> ] <SESSION> <ERROR_SPEC> <sender descriptor> <sender descriptor> ::= (see earlier definition)<ResvTear<ResvErr Message> ::= <Common Header><SESSION> <RSVP_HOP>[ <INTEGRITY> ] <SESSION> <ERROR_SPEC> [S_POLICY_DATA] [ <SCOPE> ] <STYLE><flow descriptor list> <flow descriptor list> ::= (see earlier definition) FLOWSPEC or<error flow descriptor> The ERROR_SPEC object specifies the error and includes the IP address of the node that detected the error (Error Node Address). POLICY_DATA objects are included inthe flow descriptor list of a RTEAR message will be ignored anderror messages in cases where they maybe omitted. Note that, unless itprovide relevant information (i.e., when an administrative failure isaccidentally dropped alongbeing reported). The STYLE object is copied from theway, a PTEARRESV messagewill reach all the receivers down stream from its origination. Onin error. The use of theother hand,SCOPE object in aRTEARRERR messagewill cease to be forwarded atis defined below in Section 3.3. The following style-dependent rules define thesame node where merging suppresses forwardingcomposition of a valid error flow descriptor; thecorresponding RESV messages. In each node N along the way, if the RTEAR message causes the removal of all stateobject order requirements are as given earlier forthis session, N will create a new teardown message to be propagated further upstream; otherwise, the RTEAR message may result in the immediate forwarding ofamodifiedRESVrefreshmessage.Deletion of path state as the result ofo WF Style: <error flow descriptor> ::= <WF flow descriptor> o FF style: <error flow descriptor> ::= <FF flow descriptor> o SE style: <error flow descriptor> ::= <SE flow descriptor> Note that aPTEARRERR messageor a timeout may force adjustments in related reservation state, to maintain state consistency in the local node. The adjustment in reservation state depends upon the style. For example, suppose a PTEAR deletes the path state for a sender S. If the style specifies explicit sender selection (FF or SE), delete any reservation withcontains only one flow descriptor. Therefore, afilter spec matching S; otherwise, the style is wildcard sender selection (WF) and the reservation should be deleted if S is the last sender to the session. These reservation changes should not trigger an immediateRESVrefresh message, since the PTEAR message have already made the required changes upstream. However, at the node in which a RTEARmessagestops, the change of reservation state may trigger a RESV refresh starting atthatnode. 3.2 Sending RSVP Messages RSVP messages are sent hop-by-hop between RSVP-capable routers as "raw" IP packets with protocol number 46. Raw IP packets arecontains N > 1 flow descriptors Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 42] Internet Draft RSVP SpecificationNovember 1995 intendedFebruary 1996 (FF style) may create up to N separate RERR messages. Generally speaking, a RERR message should beused between an end system and the first/last hop router, although it is also possible to encapsulate RSVP messages as UDP datagrams for end-system communication, as described in Appendix C. UDP encapsulation is needed for systemsforwarded towards all receivers thatcannot do raw network I/O. PATH, PTEAR, and RACK messages must be sent with the Router Alert IP option [Katz95] in their IP headers. This optionmaybe used by inhave caused thefast forwarding path of a high-speed router to detect datagramserror being reported. More specifically: o The node thatrequire special processing. Upon the arrival ofdetects anRSVP message M that changes the state,error in anode must forward the modified state immediately. However, this must not trigger sending anreservation request sends a RERR messageoutto theinterface throughnext hop from whichM arrived (as could happen if the implementation simply triggered an immediate refresh of all state forthesession).erroneous reservation came. Thisrule is necessary to prevent packet storms on broadcast LANs. An RSVPmessage mustbe fragmented when necessary to fit intocontain theMTU ofinformation required to define theinterface through which it will be sent. All fragments oferror and to route the error messageshould carry the same unique valuein later hops. It therefore includes an ERROR_SPEC object, a copy of theMessage ID field, as well as appropriate Fragment OffsetSTYLE object, andMF bits, in their common headers. Whenthe appropriate error flow descriptor. If the error is anRSVP message arrives, it must be reassembled before it can be processed. The refresh period R canadmission control failure, any reservation already in place will beused as an appropriate reassembly timeout time. Since RSVP messages are normally generatedleft in place, andsent hop-by-hop, usingtheRSVP-level fragmentation mechanism should avoid further fragmentation atInPlace flag bit must be on in theIP level. However, IP fragmentation may still occur when RSVP messages travel through a non-RSVP cloud. In caseERROR_SPEC ofIP6, which does not support IP fragmentation at routers, an RSVP implementation must use Path MTU Discovery or hand configurationthe RERR message. o Succeeding nodes forward the RERR message toobtainnext hops that have local reservation state. For reservations with wildcard scope, there is anappropriate MTU between adjacent RSVP neighbors. RSVP recovers from occasional packet losses by its periodic refresh mechanism. Under network overload, however, substantial lossesadditional limitation on forwarding RERR messages, to avoid loops; see Section 3.3. There is also a rule restricting the forwarding ofRSVPRESV messagescould causefor Admission Control failures; see Section 3.4. A RERR message that is forwarded should carry the FILTER_SPEC from the corresponding reservation state. o When afailure of resource reservations. To controlRERR message reaches a receiver, thequeueing delaySTYLE object, flow descriptor list, anddropping of RSVP packets, routersERROR_SPEC object (including its flags) should beconfigureddelivered tooffer them a preferred class of service. If RSVP packets experience noticeable losses when crossing a congested non-RSVP cloud, a larger value can be used forthetimeout factor K (see section 3.5 below). Some multicast routing protocols provide for "multicast tunnels", which encapsulate multicast packets for transmission through routers that do not have multicast capability.receiver application. 3.1.7 Confirmation Messages RACK messages are sent to (probabilistically) acknowledge reservation requests. Amulticast tunnel looks likeRACK message is sent as the result of the appearance of alogical outgoing interface thatRESV_CONFIRM object in a RESV message. A RACK message ismapped into somesent to the unicast address of a receiver host; the address is obtained from the RESV_CONFIRM object. However, a RACK message is forwarded to the receiver hop-by- hop, to accommodate the hop-by-hop integrity check mechanism. <ResvConf Message> ::= <Common Header> <SESSION> <ERROR_SPEC> Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 43] Internet Draft RSVP SpecificationNovember 1995 physical interface. A multicast routing protocol that supports tunnels will describe a route usingFebruary 1996 <RESV_CONFIRM> <STYLE> <flow descriptor list> <flow descriptor list> ::= (see earlier definition) The RESV_CONFIRM object is alistcopy oflogical rather than physical interfaces. RSVP can run through multicast tunnelsthat object in thefollowing manner: 1. When a node N forwards a PATHRESV messageout a logical outgoing interface L, it includes inthat triggered themessage some encoding ofconfirmation. The ERROR_SPEC is used only to carry theidentityIP address ofL, calledthe"logical interface handle" or LIH. The LIH value is carriedoriginating node, in theRSVP_HOP object. 2. The next hop node N' storesError Node Address; theLIH value in its path state. 3. When N' sends a RESV messageError Code and Value are zero toN, it includesindicate a confirmation. The object order requirements within theLIH value from the path state (again, in the RSVP_HOP object). 4. Whenflow descriptor list are the same as those given earlier for a RESVmessage arrives at N, its LIH value provides the information necessary to attach the reservationmessage. 3.2 Sending RSVP Messages RSVP messages are sent hop-by-hop between RSVP-capable routers as "raw" IP packets with protocol number 46. Raw IP packets are intended tothe appropriate logical interface. Note that N createsbe used between an end system andinterpretstheLIH;first/last hop router, although it isan opaque valuealso possible toN'. 3.3 Avoiding RSVP Message Loops Forwarding ofencapsulate RSVP messagesmust avoid looping. In steady state, PATHas UDP datagrams for end-system communication, as described in Appendix C. UDP encapsulation is needed for systems that cannot do raw network I/O. PATH, PTEAR, andRESVRACK messagesare forwarded only once per refresh period on each hop.must be sent with the Router Alert IP option [Katz95] in their IP headers. Thisavoids looping packets, but there is stilloption may be used in thepossibilityfast forwarding path ofan " auto-refresh" loop, clocked bya high-speed router to detect datagrams that require special processing. Upon therefresh period. Such auto-refresh loops keep state active "forever", even ifarrival of an RSVP message M that changes theend nodes have ceased refreshing it, until eitherstate, a node must forward thereceivers leavemodified state immediately. However, this must not trigger sending an message out themulticast group and/orinterface through which M arrived (as could happen if thesenders stop sending PATH messages. Onimplementation simply triggered an immediate refresh of all state for theother hand, error and teardown messages are forwarded immediately and are therefore subjectsession). This rule is necessary tolooping. Consider eachprevent packet storms on broadcast LANs. An RSVP messagetype. o PATH Messages PATH messages are forwarded in exactlymust be fragmented when necessary to fit into thesame way as IP data packets. Therefore there shouldMTU of the interface through which it will beno loopssent. All fragments ofPATH messages, even in a topology with cycles. o PTEAR Messages PTEAR messages usethe message should carry the sameroutingunique value of the Message ID field, asPATH messageswell as appropriate Fragment Offset andtherefore cannot loop. o PERR MessagesMF bits, in their common headers. When an RSVP message arrives, it must be reassembled before it can be processed. The refresh period R can be used as an appropriate reassembly timeout time. Between adjacent RSVP-capable routers, RSVP-level fragmentation mechanism should normally be used in lieu of fragmentation at the IP level. However, IP-level fragmentation may still occur when Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 44] Internet Draft RSVP SpecificationNovember 1995 Since PATHFebruary 1996 RSVP messagesdo not loop, they create path state definingtravel through aloop-free reverse pathnon-RSVP cloud. In case of IP6, which does not support IP fragmentation at routers, an RSVP implementation must use Path MTU Discovery or hand configuration toeach sender. PERR messages are always directedobtain an appropriate MTU between adjacent RSVP neighbors. RSVP uses its periodic refresh mechanisms toparticular senders and therefore cannot loop. o RESV Messages RESVrecover from occasional packet losses. Under network overload, however, substantial losses of RSVP messagesdirected to particular senders (i.e., with explicit sender selection) cannot loop. However, RESV messages with wildcard sender selection (WF style) havecould cause apotential for auto-refresh looping. o RTEAR Messages Although RTEAR messages are routed the same as RESV messages, duringfailure of resource reservations. To control thesecond pass around a loop there will be no state so any RTEAR message willqueueing delay and dropping of RSVP packets, routers should bedropped. Hence there is no looping problem here. o RERR Messages RERR messages for WF style reservations may loop for essentially the same reasons that RESV messages loop. o RACK Messages RACK messages are forwarded towardsconfigured to offer them afixed unicast receiver address and cannot loop. If the topology has no loops, then loopingpreferred class of"wildcard" RESV and RERR messages, i.e., messages with wildcard sender selection,service. If RSVP packets experience noticeable losses when crossing a congested non-RSVP cloud, a larger value can beavoided by simply enforcingused for therule given earlier: statetimeout factor K (see section 3.6 below). Some multicast routing protocols provide for "multicast tunnels", which encapsulate multicast packets for transmission through routers that do not have multicast capability. A multicast tunnel looks like a logical outgoing interface that isreceivedmapped into some physical interface. A multicast routing protocol that supports tunnels will describe a route using a list of logical rather than physical interfaces. RSVP can run through multicast tunnels in the following manner: 1. When aparticular interface must never be forwardednode N forwards a PATH message out a logical outgoing interface L, it includes in thesame interface. However, when the topology does have cycles, further effort is needed to prevent auto-refresh loopsmessage some encoding ofwildcard RESV messages and fast loopsthe identity ofwildcard RERR messages.L, called the "logical interface handle" or LIH. Thesolution to this problem adopted by this protocol specificationLIH value isfor such messages to carry an explicit sender address listcarried ina SCOPEthe RSVP_HOP object. 2. The next hop node N' stores the LIH value in its path state. 3. When N' sends a RESV messagewith WF style is to be forwardedtoa particular previous hop, a new SCOPE object is computedN, it includes the LIH value from theSCOPE objects that were receivedpath state (again, inmatching RESV messages. Ifthecomputed SCOPE object is empty,RSVP_HOP object). 4. When the RESV messageis not forwardedarrives at N, its LIH value provides the information necessary to attach theprevious hop; otherwise,reservation to themessage is sent containingappropriate logical interface. Note that N creates and interprets thenew SCOPE object. The rules for computing a new SCOPE object for aLIH; it is an opaque value to N'. 3.3 Avoiding RSVP Message Loops Forwarding of RSVP messages must avoid looping. In steady state, PATH and RESVmessagemessages areas follows: Braden, Zhang, et al. Expiration: May 1996 [Page 45] Internet Draft RSVP Specification November 1995 1. The unionforwarded only once per refresh period on each hop. This avoids looping packets, but there isformed ofstill thesetspossibility ofsender IP addresses listed in all SCOPE objects inan "auto-refresh" loop, clocked by thereservationrefresh period. Such auto-refresh loops keep statefor the given session. If reservation state from some NHOP does not contain a SCOPE object, a substitute sender list must be created and included in the union. For a message that arrived on outgoing interface OI,active "forever", even if thesubstitute list isend nodes have ceased refreshing it, until either theset of senders that route to OI. 2. Any local senders (i.e., any sender applications on this node) are removed from this set. 3. Ifreceivers leave theSCOPE object is to be sent to PHOP, remove frommulticast group and/or theset anysendersthat did not come from PHOP. Figure 11 shows an example of wildcard-scoped (WF style) RESVstop sending PATH messages.The address lists within SCOPE objects are shown in square brackets. Note that there may be additional connections amongOn thenodes, creating looping topology that is not shown.other hand, error and teardown Braden, Zhang, et al. Expiration:MayAugust 1996 [Page46]45] Internet Draft RSVP SpecificationNovember 1995 ________________ a | | c R4, S4<----->| Router |<-----> R2, S2, S3 | | b | | R1, S1<----->| | |________________| Send on (a): | Receive on (c): | <-- WF( [S4] ) | <-- WF( [S4, S1]) | Send on (b): | | <-- WF( [S1] ) | | Receive on (a): | Send on (c): | WF( [S1,S2,S3]) --> | WF( [S2, S3]) --> | Receive on (b): | | WF( [S2,S3,S4]) --> | | Figure 11: SCOPE Objects in Wildcard-Scope Reservations SCOPE objectsFebruary 1996 messages arenot necessary if the multicast routing uses shared trees or if the reservation style has explicit sender selection. Furthermore, attaching a SCOPE object to a reservation may be deferredforwarded immediately and are therefore subject toa node which has more than one previous hop upstream. The following ruleslooping. Consider each message type. o PATH Messages PATH messages areused for SCOPE objectsforwarded inRERR messages with WF style: 1. The node that detectedexactly theerror initiates an RERR message containing a copysame way as IP data packets. Therefore there should be no loops ofthe SCOPE object associatedPATH messages, even in a topology with cycles. o PTEAR Messages PTEAR messages use thereservationsame routing as PATH messages and therefore cannot loop. o PERR Messages Since PATH messages do not loop, they create path stateor message in error. 2. Suppose a wildcard-scoped RERR message arrives atdefining anodeloop-free reverse path to each sender. PERR messages are always directed to particular senders and therefore cannot loop. o RESV Messages RESV messages directed to particular senders (i.e., with explicit sender selection) cannot loop. However, RESV messages with wildcard sender selection (WF style) have aSCOPE object containingpotential for auto-refresh looping. o RTEAR Messages Although RTEAR messages are routed thesender host address list L. The node forwardssame as RESV messages, during theRERRsecond pass around a loop there will be no state so any RTEAR messageusing the rules of Section 3.1.5. However, thewill be dropped. Hence there is no looping problem here. o RERRmessageMessages RERR messages for WF style reservations may loop for essentially the same reasons that RESV messages loop. o RACK Messages RACK messages are forwardedout OI must containtowards aSCOPE object derived from L by including only those senders that route to OI.fixed unicast receiver address and cannot loop. Ifthis SCOPE object is empty,the topology has no loops, then looping of RESV and RERR Braden, Zhang, et al. Expiration:MayAugust 1996 [Page47]46] Internet Draft RSVP SpecificationNovember 1995 RERR message should notFebruary 1996 messages with wildcard sender selection can besent out OI. 3.4 Local Repair When a route changes,avoided by simply enforcing thenext PATH or RESV refresh message will establish path or reservationrule given earlier: state(respectively) alongthat is received through a particular interface must never be forwarded out thenew route. To provide fast adaptation to routing changes withoutsame interface. However, when theoverheadtopology does have cycles, further effort is needed to prevent auto-refresh loops ofshort refresh periods, the local routing protocol module can notify the RSVP daemonwildcard RESV messages and fast loops ofroute changes for particular destinations.wildcard RERR messages. TheRSVP daemon should usesolution to thisinformationproblem adopted by this protocol specification is for such messages totriggercarry an explicit sender address list in aquick refresh of state for these destinations, using the new route. More specifically, the rules are as follows: oSCOPE object. Whenrouting detects a change of the set of outgoing interfaces for destination G, RSVP should wait forashort period W, and then send PATH refreshes for all sessions G/* (i.e., for any sessionRESV message withdestination G, regardless of destination port). The short wait period before sending PATH refreshesWF style is toallow the routing protocol getting settled with the new change(s), and the exact value for W should be chosen accordingly. Currently W = 2 sec is suggested; however, this value shouldbeconfigurable per interface. o Whenforwarded to aPATH message arrives withparticular previous hop, aPrevious Hop address that differsnew SCOPE object is computed from theone storedSCOPE objects that were received inthe path state, RSVP should send immediatematching RESVrefreshesmessages. If the computed SCOPE object is empty, the message is not forwarded to the previous hop; otherwise, the message is sent containing the new SCOPE object. The rules forthat session. 3.5 Time Parameters Therecomputing a new SCOPE object for a RESV message aretwo time parameters relevant to each elementas follows: 1. The union is formed ofRSVP path or reservation state in a node:therefresh period R between generationsets ofsuccessive refreshes forsender IP addresses listed in all SCOPE objects in the reservation statebyfor theneighbor node,given session. If reservation state from some NHOP does not contain a SCOPE object, a substitute sender list must be created and included in thelocal state's lifetime L. Each RSVP RESV or PATH message may containunion. For aTIME_VALUES object specifyingmessage that arrived on outgoing interface OI, theR valuesubstitute list is the set of senders thatwas usedroute togenerateOI. 2. Any local senders (i.e., any sender applications on this(refresh) message. This R valuenode) are removed from this set. 3. If the SCOPE object isthen usedtodetermine the value for L whenbe sent to PHOP, remove from thestate is received and stored. The values for R and L may varyset any senders that did not come fromhop to hop. In more detail: 1. Floyd and Jacobson [FJ94] havePHOP. Figure 11 shows an example of wildcard-scoped (WF style) RESV messages. The address lists within SCOPE objects are shownthat periodic messages generated by independent network nodes can become synchronized. This can lead to disruptioninnetwork services assquare brackets. Note that there may be additional connections among theperiodic messages contend with other networknodes, creating looping topology that is not shown. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page48]47] Internet Draft RSVP SpecificationNovember 1995 traffic for link and forwarding resources. Since RSVP sends periodic refresh messages, it must avoid message synchronization and ensure that any synchronization that may occur isFebruary 1996 ________________ a | | c R4, S4<----->| Router |<-----> R2, S2, S3 | | b | | R1, S1<----->| | |________________| Send on (a): | Receive on (c): | <-- WF( [S4] ) | <-- WF( [S4, S1]) | Send on (b): | | <-- WF( [S1] ) | | Receive on (a): | Send on (c): | WF( [S1,S2,S3]) --> | WF( [S2, S3]) --> | Receive on (b): | | WF( [S2,S3,S4]) --> | | Figure 11: SCOPE Objects in Wildcard-Scope Reservations SCOPE objects are notstable. For this reason,necessary if therefresh timer shouldmulticast routing uses shared trees or if the reservation style has explicit sender selection. Furthermore, attaching a SCOPE object to a reservation may berandomly setdeferred to avalue in the range [0.5R, 1.5R]. 2. To avoid premature loss of state, L must satisfy L >= (K + 0.5)*1.5*R, where K is a small integer. Thennode which has more than one previous hop upstream. The following rules are used for SCOPE objects inthe worst case, K-1 successiveRERR messagesmay be lost without state being deleted. To compute a lifetime L for a collection of statewithdifferent R values R0, R1, ..., replace R by max(Ri). Currently K = 3 is suggested asWF style: 1. The node that detected thedefault. However, it may be necessary to seterror initiates an RERR message containing alarger K value for hopscopy of the SCOPE object associated withhigh loss rate. K may be set either by manual configuration per interface, or by some adaptive technique that has not yet been specified. 3. Each message that createsthe reservation state(PATHorRESV message) carriesmessage in error. 2. Suppose aTIME_VALUESwildcard-scoped RERR message arrives at a node with a SCOPE object containing theR used to generate refreshes; the recipientsender host address list L. The nodeuses this R to determine L offorwards thestored state. 4. R is chosen locally by each node. IfRERR message using thenode does not implement local repairrules ofreservations disruptedSection 3.1.6. However, the RERR message forwarded out OI must contain a SCOPE object derived from L by including only those senders that routechanges, a smaller R speeds up adaptationtorouting changes, while increasingOI. If this SCOPE object is empty, the Braden, Zhang, et al. Expiration: August 1996 [Page 48] Internet Draft RSVPoverhead. With local repair, a router canSpecification February 1996 RERR message should not bemore relaxed about R since the periodic refresh becomes onlysent out OI. 3.4 Blockade State The basic rule for creating abackstop robustness mechanism. A node may therefore adjust the effective R dynamicallyRESV refresh message is tocontrolmerge theamountflowspecs ofoverhead duethe reservation requests in place in the node, by computing their LUB. However, this rule is modified by the existence of "blockade state" resulting from RERR messages, torefresh messages.solve the KR-II problem (Section 2.6). Thecurrent suggested default for R is 30 seconds. However,blockade state also enters into thedefault should be configurable per interface. 5.routing of RERR messages for Admission Control failure. WhenRa RERR message for an Admission Control failure ischanged dynamically, therereceived, its flowspec Qe isa limitused tohow fast it may increase. Specifically,create or refresh an element of local blockade state. Each element of blockade state consists of a blockade flowspec Qb taken from theratioflowspec oftwo successive values R2/R1 must not exceed 1 + Slew.Max. Currently, Slew.Maxthe last RERR, and an associated blockade timer Tb. When the blockade timer expires, the blockade state is0.30. With K = 3, one packetdeleted. The granularity of blockade state depends upon the style of the RERR message that created it. For an explicit style, there may belost withouta blockade state element (Qb(S),Tb(S)) for each sender S. For a wildcard style, blockade statetimeout while Risincreasing 30 percentperrefresh cycle. 6. To improve robustness,previous hop P. An element of blockade state with flowspec Qb is said to "blockade" anode may temporarily send refreshes Braden, Zhang, et al. Expiration: May 1996 [Page 49] Internet Draft RSVP Specification November 1995 more oftenreservation with flowspec Qi if Qb is not (strictly) greater thanR afterQi. For example, suppose that the LUB of two flowspecs is computed by taking the max of each of their corresponding components. Then Qb blockades Qi if for some component j, Qb[j] <= Qi[j]. Suppose that astate change (including initial state establishment). 7. The valuesnode receives a RERR message from previous hop P (or, if style is explicit, sender S) as the result ofRdef, K, and Slew.Max used inanimplementation should be easily modifiable per interface, as experience may lead to different values. The possibilityAdmission Control failure upstream. Then: 1. An element ofdynamically adapting K and/or Slew.Max in response to measured loss ratesblockade state is created forfuture study. 3.6 Traffic Policing and TTL RSVPP (or S) if it did not exist. 2. Qb(P) (or Qb(S)) isrequired to compute and pass several service-related flagsset equal totraffic control: policing flags and a non-RSVP flag. Some QoS services may require traffic policing at some or all of (1)theedge offlowspec Qe from thenetwork, (2) a merging pointRERR message. 3. A corresponding blockade timer Tb(P) (or Tb(S)) is started or restarted fordata from multiple senders, and/or (3)abranch point where traffic flow from upstream may be greater thantime Kb*R. Here Kb is a fixed multiplier and R is thedownstream reservation.refresh interval for reservation state. Kb should be configurable. 4. If there is some local reservation state that is not blockaded (see below), an immediate reservation refresh for P Braden, Zhang, et al. Expiration: August 1996 [Page 49] Internet Draft RSVPknows where such points occur and must so indicateSpecification February 1996 (or S) is generated. 5. The RERR message is forwarded to next hops in thetraffic control mechanism. Onfollowing way. If theother hand, RSVP does not interpret the service embodied inInPlace bit is off, theflowspec and therefore does not know whether policing will actually be applied in any particular case. The RSVP daemon passesRERR message is forwarded totraffic control a separate policing flagall next hops foreach of these three situations. o E_Police_Flag -- Entry Policing This flagwhich there isset inreservation state. If thefirst-hop RSVP node that implements traffic control (andInPlace bit istherefore capable of policing). For example, sender hosts must implement RSVP but currently many of them do not implement traffic control. In this case, the E_Police_Flag should be off inon, thesender host, and it shouldRERR message is forwarded onlybe set on whento thefirst hop capable of traffic control is reached. Thisnext hops whose Qi iscontrolledblockaded by Qb. Finally, we present theE_Police flag in SESSION objects. o M_Police_Flag -- Merge Policing This flag should be set onmodified rule for merging flowspecs to create a reservationusingrefresh message. o If there are any local reservation requests Qi that are not blockaded, these are merged by computing their LUB. The blockaded reservations are ignored; this allows forwarding of a smaller reservation that has not failed and may perhaps succeed, after a larger reservation fails. o Otherwise (all local requests Qi are blockaded), they are merged by taking the GLB (Greatest Lower Bound) of the Qi's. This refresh merging algorithm is applied separately to each flow (each sender or PHOP) contributing to a sharedstylereservation (WF orSE) when flows from more than one sender are being merged. o B_Police_Flag -- Branch Policing This flag should be set on whenSE style). Figure 12 shows an example of theflowspec being installedthe application of blockade state for a shared reservation (WF style). There are two previous hops labelled (a) and (b), and two next hops labelled (c) and (d). The larger reservation 4B arrived from (c) first, but it failed somewhere upstream via PHOP (a), but not via PHOP (b). The figures show the final "steady state" after the smaller reservation 2B subsequently arrived from (d). This steady state is perturbed roughly every Kb*R seconds, when the blockade state times out. The next refresh then sends 4B to previous hop (a); presumably this will fail, sending a RERR message that will re- establish the blockade state, returning to the situation shown in the figure. At the same time, the RERR message will be forwarded to next hop (c) and to all receivers downstream responsible for the 4B reservations. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 50] Internet Draft RSVP SpecificationNovember 1995 is smaller than, or incomparable to,February 1996 Send Blockade| Reserve Receive State| | | ________ (a) <- WF(*{2B}) {4B} | | * {4B} | WF(*{4B}) <- (c) | |________| | ---------------------------|------------------------------- | | ________ (b) <- WF(*{4B}) (none)| | * {2B} | WF(*{2B}) <- (d) | |________| Figure 12: Blockading with Shared Style 3.5 Local Repair When aFLOWSPEC in place on any other interface, forroute changes, thesame FILTER_SPEC and SESSION. RSVP must also detect and reportnext PATH or RESV refresh message will establish path or reservation state (respectively) along the new route. To provide fast adaptation toreceiversrouting changes without thepresenceoverhead ofnon-RSVP hops inshort refresh periods, the local routing protocol module can notify thepath. For this purpose, anRSVP daemonmust place into each PATH message that it sends the valueofthe IP TTL with which the message was sent.route changes for particular destinations. TheRSVP-capable node that receives this message compares this field to the TTL with which the message was actually received, and if they differ it turns on the Non_RSVP flag. This flag is carried forward to receivers in the ADSPEC [??]. 3.7 Multihomed Hosts Accommodating multihomed hosts requires some special rules in RSVP. WeRSVP daemon should usethe term `multihomed host'this information tocover both hosts (end systems) with more than one network interface [could ref. section 3.3.4 of RFC-1122], and routers that are supporting local application programs. An application executing ontrigger amultihomed host may explicitly specify which interface any given flow will use for sending and/orquick refresh of state forreceiving data packets, to overridethese destinations, using thesystem-specified default interface.new route. TheRSVP daemon must be aware of the default, and if an application sets aspecificinterface, it must also pass that information to RSVP.rules are as follows: oSending Data A sender application uses an API call (SENDER in Section 3.9.1) to declare to RSVP the characteristics of the data flow it will originate. This call may optionally include the local IP addressWhen routing detects a change of thesender. If it issetby the application, this parameter must be the interface addressof outgoing interfaces forsending the data packets; otherwise, the system default interface is implied. Thedestination G, RSVPdaemon on the hostshould wait for a short period W, and thensendssend PATHmessagesrefreshes forthis application out the specified interface (only). o Making Reservations A receiver application uses an API call (called RESERVE in Section 3.9.1)all sessions G/* (i.e., for any session with destination G, regardless of destination port). The short wait period before sending PATH refreshes is torequest a reservation from RSVP. This call may optionally includeallow thelocal IP address ofrouting protocol getting settled with thereceiver, i.e.,new change(s), and theinterface addressexact value forreceiving data packets. In the case of multicast sessions, thisW should be chosen accordingly. Currently W = 2 sec is suggested; however, this value should be configurable per interface. o When a PATH message arrives with a Previous Hop address that differs from theinterface on which the group has been joined. Ifone stored in theparameter ispath state, RSVP should send immediate RESV refreshes for that session. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 51] Internet Draft RSVP SpecificationNovember 1995 omitted, the system default interface is used. In general, theFebruary 1996 3.6 Time Parameters There are two time parameters relevant to each element of RSVPdaemon should send RESV messagespath or reservation state in a node: the refresh period R between generation of successive refreshes forapplication outthespecified interface. However, whenstate by theapplication is executing on a routerneighbor node, and thesession is multicast, a more complex situation arises. Suppose in this case thatlocal state's lifetime L. Each RSVP RESV or PATH message may contain areceiver application joinsTIME_VALUES object specifying thegroup on an interface IappR value thatdiffers from Isp, the shortest-path interfacewas used to generate this (refresh) message. This R value is then used to determine thesender. Then there are two possible waysvalue formulticast routingL when the state is received and stored. The values for R and L may vary from hop todeliver data packetshop. In more detail: 1. Floyd and Jacobson [FJ94] have shown that periodic messages generated by independent network nodes can become synchronized. This can lead to disruption in network services as theapplication. Theperiodic messages contend with other network traffic for link and forwarding resources. Since RSVPdaemonsends periodic refresh messages, it mustdetermine which case holds by examiningavoid message synchronization and ensure that any synchronization that may occur is not stable. For this reason, thepath state, to decide which incoming interfacerefresh timer should be randomly set touse for sending RESV messages. 1. The multicast routing protocol may createaseparate branchvalue in the range [0.5R, 1.5R]. 2. To avoid premature loss of state, L must satisfy L >= (K + 0.5)*1.5*R, where K is a small integer. Then in themulticast distribution `tree' to deliver to Iapp. In thisworst case,there willK-1 successive messages may bepathlost without state being deleted. To compute a lifetime L forboth Isp and Iapp. The path state on Iapp should only matchareservation fromcollection of state with different R values R0, R1, ..., replace R by max(Ri). Currently K = 3 is suggested as thelocal application;default. However, itmustmay bemarked "Local_only" by the RSVP daemon. If "Local_only" path statenecessary to set a larger K value forIapp exists, the RESV message shouldhops with high loss rate. K may besent out Iapp. Note that it is possible for the path state blocks for Isp and Iapp to have the same next hop, if there is an intervening non-RSVP cloud. 2. The multicast routing protocol may forward data within the router from Isp to Iapp. In this case, Iapp will appear in the list of outgoing interfaces of the path state for Isp, and the RESVset either by manual configuration per interface, or by some adaptive technique that has not yet been specified. 3. Each messageshould be sent out Isp. 3.8 Future Compatibility We may expectthatin the future new object C-Types will be defined for existing object classes, and perhaps newcreates state (PATH or RESV message) carries a TIME_VALUES objectclasses will be defined. It will be desirablecontaining the R used toemploy such new objects withingenerate refreshes; theInternet using older implementations that do not recognize them. Unfortunately,recipient node uses thisis only possibleR toa limited degree with reasonable complexity. The rules are as follows. 1. Unknown Class There are two possible ways that an RSVP implementation can treat an object with unknown class. This choicedetermine L of the stored state. 4. R isdeterminedchosen locally by each node. If thehigh-order bitnode does not implement local repair of reservations disrupted by route changes, a smaller R speeds up adaptation to routing changes, while increasing theClass-Num octet, asRSVP overhead. With local repair, a router can be more relaxed about R since the periodic refresh becomes only a backstop robustness mechanism. A node may Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 52] Internet Draft RSVP SpecificationNovember 1995 follows. o Class-Num >= 128 In this case, the entire message should be rejected and an "Unknown Object Class" error returned. o Class-Num < 128 In this case, the node should ignoreFebruary 1996 therefore adjust theobject but forward it, unexamined and unmodified, in all messages resulting fromeffective R dynamically to control thestate contained in this message. For example, suppose that a RESV message that is received contains an objectamount ofunknown class. Such an object should be saved in the reservation state without further examination; however, onlyoverhead due to refresh messages. The current suggested default for R is 30 seconds. However, thelatest object with a given (unknown class, C-Type) pairdefault should besaved.configurable per interface. 5. Whena RESV messageR is changed dynamically, there isforwarded, it should include copies of such saved unknown-class objects from all reservations that are merged to form the new RESV message. Note that objects with unknown class cannot be merged; however, unmerged objects may be forwarded until they reachanode that knowslimit on howto merge them. Forwarding objects with unknown class enables incremental deployment of new objects; however,fast it may increase. Specifically, thescaling limitationsratio ofdoing sotwo successive values R2/R1 mustbe carefully examined before a new object classnot exceed 1 + Slew.Max. Currently, Slew.Max isdeployed with Class-Num < 128. These rules should0.30. With K = 3, one packet may beconsidered when any new Class-Numlost without state timeout while R isdefined. 2. Unknown C-Type for Known Class One might expect the known Class-Num to provide information that could allow intelligent handling of such an object. However, in practice such class-dependent handling is complex,increasing 30 percent per refresh cycle. 6. To improve robustness, a node may temporarily send refreshes more often than R after a state change (including initial state establishment). 7. The values of Rdef, K, and Slew.Max used inmany cases it is not useful. Generally, the appearance ofanobject with unknown C-Typeimplementation shouldresult in rejection of the entire message and generation of an error message (RERR or PERRbe easily modifiable per interface, asappropriate). The error message will include the Class-Num and C-Type that failed (see Appendix B); the end system that originated the failed messageexperience maybe able to use this informationlead toretry Braden, Zhang, et al. Expiration: May 1996 [Page 53] Internet Draft RSVP Specification November 1995 the request using adifferentC-Type object, repeating this process until it runs out of alternatives or succeeds. Objectsvalues. The possibility ofcertain classes (FLOWSPEC, ADSPEC, and POLICY_DATA) are opaque to RSVP, which simply hands themdynamically adapting K and/or Slew.Max in response to measured loss rates is for future study. 3.7 Traffic Policing and Non-Integrated Service Hops Some QoS services may require trafficcontrolpolicing at some orpolicy modules. Depending upon its internal rules, eitherall of (1) thelatter modules may rejectedge of the network, (2) aC- Type and informmerging point for data from multiple senders, and/or (3) a branch point where traffic flow from upstream may be greater than the downstream reservation being requested. RSVPdaemon; RSVP should then reject the messageknows where such points occur andsend an error, as describedmust so indicate to the traffic control mechanism. On the other hand, RSVP does not interpret the service embodied in theprevious paragraph.flowspec and therefore does not know whether policing will actually be applied in any particular case. The RSVP daemon passes to traffic control a separate policing flag for each of these three situations. o E_Police_Flag -- Entry Policing This flag is set in the first-hop RSVP node that implements traffic control (and is therefore capable of policing). For example, sender hosts must implement RSVP but currently many of them do not implement traffic control. In this case, the E_Police_Flag should be off in the sender host, and it should only be set on when the first node capable of traffic Braden, Zhang, et al. Expiration:MayAugust 1996 [Page54]53] Internet Draft RSVP SpecificationNovember 1995 3.9 RSVP Interfaces RSVPFebruary 1996 control is reached. This is controlled by the E_Police flag in SESSION objects. o M_Police_Flag -- Merge Policing This flag should be set on for arouter has interfaces to routing and to traffic control. RSVP onreservation using ahost has an interface to applications (i.e, an API) and also an interface to traffic control (if it existsshared style (WF or SE) when flows from more than one sender are being merged. o B_Police_Flag -- Branch Policing This flag should be set on when thehost). 3.9.1 Application/RSVP Interface This section describesflowspec being installed is smaller than, or incomparable to, ageneric interface between an applicationFLOWSPEC in place on any other interface, for the same FILTER_SPEC andanSESSION. RSVPcontrol process. The details of a real interface may be operating-system dependent;must also detect and report to receivers thefollowing can only suggestpresence of non-RSVP (which implies non-integrated-service compliant) hops in thebasic functions to be performed. Somepath. For this purpose, an RSVP daemon sets the Non_RSVP flag bit in SESSION object ofthese calls cause information to be returned asynchronously. o Register Session Call: SESSION( DestAddress , ProtocolId, DstPort , [ , SESSION_object ] [ , Upcall_Proc_addr ] ) -> Session-id This call initiatesPATH messages. With normal IP forwarding, RSVPprocessing forcan detect asession, definednon-RSVP hop byDestAddress togethercomparing the IP TTL withProtocolId and possiblywhich aport number DstPort. If successful,PATH message is sent to theSESSION call returns immediatelyTTL witha local session identifier Session-id,whichmay be usedit is received, and set the Non_RSVP bit on. For this purpose, the transmission TTL is placed insubsequent calls. The Upcall_Proc_addr parameter definestheaddress of an upcall procedure to receive asynchronous error or event notification; see below. The SESSION_object parametercommon header. However, the TTL isincluded as an escape mechanism to support some more general definitionnot always a reliable indicator ofthe session ("generalized destination port"), should thatnon-RSVP hops, and other means must benecessary inused. For example, if thefuture. Normally SESSION_objectrouting protocol uses IP encapsulating tunnels, then the routing protocol must inform RSVP when non-RSVP hops are included. If no automatic mechanism will work, manual configuration will beomitted. o Define Sender Call: SENDER( Session-id, [ , Source_Address ] [ , Source_Port ] [ , Sender_Template ] [ , Sender_Tspec ] [ , Data_TTL ] [ , Sender_Policy_Data ] )required. Finally, there may still be cases where an RSVP cannot reliably determine whether or not a non-RSVP hop was used. To report this to the receiver, the SESSION object carries another flag bit, Maybe_RSVP. 3.8 Multihomed Hosts Accommodating multihomed hosts requires some special rules in RSVP. We use the term `multihomed host' to cover both hosts (end systems) with more than one network interface [could ref. section 3.3.4 of RFC-1122], and routers that are supporting local application programs. An application executing on a multihomed host may explicitly specify which interface any given flow will use for sending and/or for receiving data packets, to override the system-specified default interface. The RSVP daemon must be aware of the default, and if an application sets a specific interface, it must also pass that information to RSVP. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page55]54] Internet Draft RSVP SpecificationNovember 1995February 1996 o Sending Data A sender application usesthisan API call (SENDER in Section 3.10.1) todefine, ordeclare tomodify the definition of,RSVP theattributescharacteristics of the datastream. The first SENDER call for the session registered as `Session- id' will cause RSVP to begin sending PATH messages for this session; later callsflow it willmodify the path information. The SENDER parameters are interpreted as follows: - Source_Addressoriginate. Thisiscall may optionally include the local IP address of theinterface from which the data will be sent.sender. If it isomitted, aset by the application, this parameter must be the interface address for sending the data packets; otherwise, the system default interfacewill be used. This parameterisneededimplied. The RSVP daemon ona multihomed sender host. - Source_Port This istheUDP/TCP port from which the data will be sent. If it is omitted or zero,host then sends PATH messages for this application out theport is "wild" and can match any port in a FILTER_SPEC. - Sender_Template This parameter is included asspecified interface (only). o Making Reservations A receiver application uses anescape mechanismAPI call (RESERVE in Section 3.10.1) tosupportrequest amore general definitionreservation from RSVP. This call may optionally include the local IP address of thesender ("generalized source port"). Normallyreceiver, i.e., the interface address for receiving data packets. In the case of multicast sessions, thisparameter may be omitted. - Sender_Tspec This optional parameter describesis thetraffic flow to be sent. It may be included to prevent over- reservationinterface on which theinitial hops. - Data_TTL This isgroup has been joined. If the(non-default) IP Time-To-Liveparameterthatisbeing supplied onomitted, thedata packets. Itsystem default interface isneeded to ensure that Pathused. In general, the RSVP daemon should send RESV messagesdo not have a scope larger than multicast data packets. - Sender_Policy_Data This optional parameter passes policy datafor an application out thesender. This data may be supplied by a system service, withspecified interface. However, when the applicationtreating it as opaque. Braden, Zhang, et al. Expiration: May 1996 [Page 56] Internet Draft RSVP Specification November 1995 o Reserve Call: RESERVE( session-id, [ receiver_address , ] [ ACK_flag, ] style, style-dependent-parms ) A receiver uses this call to make or to modifyis executing on aresource reservation forrouter and the sessionregistered as `session-id'. 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 existing reservations may resultis multicast, a more complex situation arises. Suppose inadmission control failure). The optional `receiver_address' parameter may be used bythis case that a receiver application joins the group ona multihomed host (or router); it isan interface Iapp that differs from Isp, theIP address of one ofshortest-path interface to thenode's interfaces. The ACK_flag should be set on if a reservation ACK is desired, off otherwise.sender. Then there are two possible ways for multicast routing to deliver data packets to the application. The`style' parameter indicatesRSVP daemon must determine which case holds by examining thereservation style.path state, to decide which incoming interface to use for sending RESV messages. 1. Therestmulticast routing protocol may create a separate branch of theparameters depend upon the style, but generally thesemulticast distribution `tree' to deliver to Iapp. In this case, there willinclude appropriate flowspecs, filter specs,be path state for both Isp andpossibly receiver policy data objects.Iapp. TheRESERVE call returns immediately. Followingpath state on Iapp should only match aRESERVE call, an asynchronous ERROR/EVENT upcall may occur at any time. o Release Call: RELEASE( session-id ) This call removesreservation from the local application; it must be marked "Local_only" by the RSVP daemon. If "Local_only" path state for Iapp exists, thesession specified by session-id. The node then sends appropriate teardown messages and ceases sending refreshesRESV message should be sent out Iapp. Note that it is possible forthis session-id. o Error/Event Upcalls Upcall: <Upcall_Proc>( ) -> session-id, Info_type, [ Error_code , Error_value , Error_Node , LUB-Used, ] List_count, [ Flowspec_list,] [ Filter_spec_list, ] [ Advert_list, ]the path state blocks for Isp and Iapp to have the same next hop, if there is an intervening non-RSVP cloud. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page57]55] Internet Draft RSVP SpecificationNovember 1995 [ Policy_data ] Here "Upcall_Proc" represents the upcall procedure whose address was supplied in the SESSION call. This upcallFebruary 1996 2. The multicast routing protocol mayoccur asynchronously at any time after a SESSION call and before a RELEASE call, to indicate an error or an event. Currently there are five upcall types, distinguished byforward data within theInfo_type parameter: 1. Info_type = Path Event A Path Event upcall resultsrouter fromreceipt of the first PATH message for this session, indicating to a receiver application that there is at least one active sender. This upcall provides synchronizing informationIsp tothe receiver application, and it may also provide parallel lists of senders (in Filter_spec_list), traffic descriptions (in Flowspec_list), and service advertisements (in Advert_list). `List_count' will be the number in each list; where these objects are missing, corresponding null objects must appear. The Error_code, Error_value, LUB-Used flag, and Policy_data parametersIapp. In this case, Iapp willbe undefinedappear inthis upcall. 2. Info_type = Resv Event A Resv Event upcall is triggered bythereceiptlist ofthe first reservation message or by modificationoutgoing interfaces ofa previous reservation state,the path state forthis session. `List_count' will be 1,Isp, andFlowspec_list will contain one FLOWSPEC,theeffective QoS that wouldRESV message should beapplicable tosent out Isp. 3.9 Future Compatibility We may expect that in theapplication itself. Filter_spec_list and Advert_listfuture new object C-Types willcontain one NULL object. The Error_code, Error_value, LUB-Used flag,be defined for existing object classes, andPolicy_data parametersperhaps new object classes will beundefined indefined. It will be desirable to employ such new objects within the Internet using older implementations that do not recognize them. Unfortunately, thisupcall. 3. Info_typeis only possible to a limited degree with reasonable complexity. The rules are as follows (`b' represents a bit). 1. Unknown Class There are three possible ways that an RSVP implementation can treat an object with unknown class. This choice is determined by the two high-order bits of the Class-Num octet, as follows. o Class-Num =Path Error An Path Error event indicates0bbbbbbb The entire message should be rejected and an "Unknown Object Class" error returned. o Class-Num = 10bbbbbb The node should ignore the object, neither forwarding it nor sending an error message. o Class-Num = 11bbbbbb The node should ignore the object but forward it, unexamined and unmodified, insender informationall messages resulting from the state contained in this message. For example, suppose thatwas specifieda RESV message that is received contains an object of unknown class number 11bbbbbb. Such an object should be saved in the reservation state without further examination; however, only the latest object with aSENDER call.given (unknown class, C-Type) pair should be saved. When a RESV message is forwarded, it should include copies of such saved unknown-class objects from all reservations that are merged to form the new RESV message. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page58]56] Internet Draft RSVP SpecificationNovember 1995 The Error_code parameter will define the error, and Error_value may supply some additional (perhaps system-specific) data about the error. The Error_Node parameter will specify the IP address of theFebruary 1996 Note that objects with unknown class cannot be merged; however, unmerged objects may be forwarded until they reach a node thatdetectedknows how to merge them. Forwarding objects with unknown class enables incremental deployment of new objects; however, theerror. `List_count' willscaling limitations of doing so must be1, and Filter_spec_list will containcarefully examined before a new object class is deployed with both high bits on. These rules should be considered when any new Class-Num is defined. 2. Unknown C-Type for Known Class One might expect theSender_Template suppliedknown Class-Num to provide information that could allow intelligent handling of such an object. However, inthe SENDER call; Flow_Spec_listpractice such class-dependent handling is complex, andAdvert_list will each contain one NULL object. The Policy_data parameter will contain any POLICY_DATA objectsin many cases it is not useful. Generally, thePERR message. 4. Info_type = Resv Error/Confirmation An Resv Error/Confirmation event indicatesappearance of anerrorobject with unknown C-Type should result ina reservation message to which this application contributed, or the receiptrejection ofa RACK message. The Error_code parameter will definethe entire message and generation of an error message (RERR orconfirmation. For an error, Error_value may supply some additional (perhaps system-specific) data.PERR as appropriate). TheError_Node parametererror message willspecify the IP address ofinclude thenodeClass-Num and C-Type thatdetectedfailed (see Appendix B); theevent being reported. Filter_spec_list and Flowspec_list will containend system that originated theFILTER_SPEC and FLOWSPEC objects fromfailed message may be able to use this information to retry theerror flow descriptor (see Section 3.1.5). List_count will specify the numberrequest using a different C-Type object, repeating this process until it runs out ofFILTER_SPECS in Filter_spec_list, while there will be one FLOWSPEC in Flowspec_list. For an error, the Policy_data parameter will contain any POLICY_DATA objects in the RERR message. Although RSVP messages indicating pathalternatives orresv events may be received periodically, the API should make the corresponding asynchronous upcallsucceeds. Objects of certain classes (FLOWSPEC, ADSPEC, and POLICY_DATA) are opaque tothe application only on the first occurrenceRSVP, which simply hands them to traffic control orwhenpolicy modules. Depending upon its internal rules, either of theinformation to be reported changes. All errorlatter modules may reject a C- Type andconfirmation eventsinform the RSVP daemon; RSVP shouldbe reported tothen reject theapplication. 3.9.2 RSVP/Traffic Control Interface Inmessage and send anRSVP-capable node, enhanced QoS is achieved by a group of inter-related traffic control functions: a packet classifier,error, as described in the previous paragraph. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page59]57] Internet Draft RSVP SpecificationNovember 1995 an admission control module,February 1996 3.10 RSVP Interfaces RSVP on a router has interfaces to routing and to traffic control. RSVP on apacket scheduler.host has an interface to applications (i.e, an API) and also an interface to traffic control (if it exists on the host). 3.10.1 Application/RSVP Interface This section describes a generic interface between an application and an RSVP control process. The details of a real interface may be operating-system dependent; the following can only suggest the basic functions totraffic control.be performed. Some of these calls cause information to be returned asynchronously. oMake a ReservationRegister Session Call:Rhandle = TC_AddFlowspec( Interface, TC_Flowspec, TC_Tspec, E_Police_Flag, M_Police_Flag, B_Police_FlagSESSION( DestAddress , ProtocolId, DstPort , [ , SESSION_object ] [ , Upcall_Proc_addr ] ) -> Session-id This call initiates RSVP processing for a session, defined by DestAddress together with ProtocolId and possibly a port number DstPort. If successful, the SESSION call returns immediately with a local session identifier Session-id, which may be used in subsequent calls. TheTC_FlowspecUpcall_Proc_addr parameter defines thedesired effective QoSaddress of an upcall procedure toadmission control; its valuereceive asynchronous error or event notification; see below. The SESSION_object parameter iscomputedincluded as an escape mechanism to support some more general definition of themaximum oversession ("generalized destination port"), should that be necessary in theflowspecsfuture. Normally SESSION_object will be omitted. o Define Sender Call: SENDER( Session-id, [ , Source_Address ] [ , Source_Port ] [ , Sender_Template ] [ , Sender_Tspec ] [ , Data_TTL ] [ , Sender_Policy_Data ] ) Braden, Zhang, et al. Expiration: August 1996 [Page 58] Internet Draft RSVP Specification February 1996 A sender uses this call to define, or to modify the definition of, the attributes ofdifferent next hops (seetheCompare_Flowspecsdata stream. The first SENDER callbelow). It contains the effective reservation Tspec Resv_Te (althoughfor the session registered as `Session- id' will cause RSVPdaemon itself has no meanstoextractbegin sending PATH messages for this session; later calls will modify theTspec).path information. TheTC_Tspec parameter defines the effective sender Tspec Path_Te (see Section 2.3). We assume that traffic control takesSENDER parameters are interpreted as follows: - Source_Address This is theminaddress ofResv_Te and Path_Te (see step (4) in Section 2.3). E_Police_Flag, M_Police_Flag, and B_Police_Flag are Boolean parameters whose values should be set as described in Section 3.6. The TC_AddFlowspec call returns an error code if Flowspec is malformed or iftherequested resources are unavailable. Otherwise,interface from which the data will be sent. If itestablishesis omitted, anew reservation channel corresponding to Rhandle. It returns the opaque number Rhandle for subsequent references to this reservation. o Modify Reservation Call: TC_ModFlowspec( Rhandle, new_Flowspec, Sender_Tspec, E_Police_flag, M_Police_Flag, B_Police_Flag )default interface will be used. Thiscall can modify an existing reservation. If new_Flowspecparameter isincluded, itneeded on a multihomed sender host. - Source_Port This ispassed to Admission Control; ifthe UDP/TCP port from which the data will be sent. If it isrejected,omitted or zero, thecurrent flowspecport isleft in force. The corresponding filter specs, if any, are not affected. The other parameters are defined as"wild" and can match any port inTC_AddFlowspec. Braden, Zhang, et al. Expiration: May 1996 [Page 60] Internet Draft RSVP Specification November 1995 o Delete Flowspec Call: TC_DelFlowspec( Rhandle )a FILTER_SPEC. - Sender_Template Thiscall will deleteparameter is included as anexisting reservation, includingescape mechanism to support a more general definition of theflowspec and all associated filter specs. o Add Filter Spec Call: FHandle = TC_AddFilter( Rhandle, Session , FilterSpec )sender ("generalized source port"). Normally this parameter may be omitted. - Sender_Tspec Thiscall is used to associate an additional filter spec withoptional parameter describes the traffic flow to be sent. It may be included to prevent over- reservationspecified byon thegiven Rhandle, following a successful TC_AddFlowspec call. This call returns a filter handle FHandle. o Delete Filter Spec Call: TC_DelFilter( FHandle )initial hops. - Data_TTL Thiscallisused to remove a specific filter, specified by FHandle. o OPWA Update Call: TC_Advertise( interface, Adspec, [ , Non_RSVP_flag ] ) -> New_Adspec This callthe (non-default) IP Time-To-Live parameter that isused for OPWA to computebeing supplied on theoutgoing advertisement New_Adspec for a specified interface. o Preemption Upcall Upcall: TC_Preempt() -> RHandle, Reason_code In orderdata packets. It is needed tograntensure that Path messages do not have anew reservation request, the admission control and/orscope larger than multicast data packets. - Sender_Policy_Data This optional parameter passes policymodules may be allowed to preempt an existing reservation.data for the sender. Thismightdata may bereflected in an upcall to RSVP, passing the RHandle of the preempted reservation, and some indication ofsupplied by a system service, with thereason.application treating it as opaque. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page61]59] Internet Draft RSVP SpecificationNovember 1995 3.9.3 RSVP/Routing Interface An RSVP implementation needsFebruary 1996 o Reserve Call: RESERVE( session-id, [ receiver_address , ] [ CONF_flag, ] style, style-dependent-parms ) A receiver uses this call to make or to modify a resource reservation for thefollowing support fromsession registered as `session-id'. The first RESERVE call will initiate thepacket forwarding and routing mechanismsperiodic transmission ofthe node. o Promiscuous Receive Mode for RSVP Messages Any packet received for IP protocol 46 mustRESV messages. A later RESERVE call may bedivertedgiven to modify theRSVP program for processing, without being forwarded. On a router, the identityparameters of theinterface, real or virtual, on which it is received must also be available to the RSVP daemon. o Route Query To forward PATH and PTEAR messages, an RSVP daemon must be able to query the routing daemon(s) for routes. Ucast_Route_Query( [ SrcAddress, ] DestAddress, Notify_flag ) -> OutInterface Mcast_Route_Query( [ SrcAddress, ] DestAddress, Notify_flag ) -> [ IncInterface, ] OutInterface_list Depending upon the routing protocol, the queryearlier call (but note that changing existing reservations mayorresult in admission control failures). The optional `receiver_address' parameter maynot depend upon SrcAddress, i.e., upon the senderbe used by a receiver on a multihomed hostIP address, which(or router); it isalsothe IPsourceaddress of one of themessage. Here IncInterfacenode's interfaces. The CONF_flag should be set on if a reservation confirmation is desired, off otherwise. The `style' parameter indicates theinterface through whichreservation style. The rest of thepacket is expected to arrive; some multicast routing protocols may not provide it. Ifparameters depend upon theNotify_flag is True, routingstyle; generally these willsaveinclude appropriate flowspecs, filter specs, and possibly receiver policy data objects. The RESERVE call returns immediately. Following a RESERVE call, an asynchronous ERROR/EVENT upcall may occur at any time. o Release Call: RELEASE( session-id ) This call removes RSVP statenecessary to issue unsolicited route change notification callbacks (see below) wheneverfor the session specifiedroute changes. Such callbacks will be enabled until routing receivesby session-id. The node then sends appropriate teardown messages and ceases sending refreshes for this session-id. o Error/Event Upcalls The general form of aroute query call with the Notify_Flag set False. A multicast route query may return an empty OutInterface_list if there are no receivers downstream of a particular router. A route query may also return a `No such route' error, probablyupcall is asa result of a transient inconsistency in the routing (since a PATH or PTEAR message forfollows: Upcall: <Upcall_Proc>( ) -> session-id, Info_type, information_parameters Here "Upcall_Proc" represents therequested route did arrive at this node). In either case,upcall procedure whose address was supplied in thelocal state should be updated asSESSION call. This upcall may Braden, Zhang, et al. Expiration:MayAugust 1996 [Page62]60] Internet Draft RSVP SpecificationNovember 1995 requested by the message, although it cannot be forwarded further. Updating local state will make path state available immediately forFebruary 1996 occur asynchronously at any time after anew local receiver,SESSION call and before a RELEASE call, to indicate an error orit will tear down path state immediately. o Route Change Notification If requestedan event. Currently there are five upcall types, distinguished bya route query withtheNotify_flag True,Info_type parameter. The selection of information parameters depends upon therouting daemon may provide an asynchronous callback totype. 1. Info_type = PATH_EVENT A Path Event upcall results from receipt of theRSVP daemon thatfirst PATH message for this session, indicating to aspecified route has changed. Ucast_Route_Change( ) -> DestAddress, OutInterface Mcast_Route_Change(receiver application that there is at least one active sender. Upcall: <Upcall_Proc>( ) -> session-id, Info_type=PATH_EVENT, flags, Sender_Tspec, Sender_Template, [SrcAddress,, Advert ]DestAddress,[IncInterface,, Policy_data ]OutInterface_list o Outgoing Link Specification RSVP must be able to forceThis upcall presents the Sender_Tspec and the Sender_Template from 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. Outgoing link specification is necessary to send different versions of an outgoingPATHmessage on different interfaces. It ismessage; it alsonecessary in some cases to avoid routing loops. o Source Address Specification RSVP must be able to specifypasses theIP source address to be used when sending PATH messages. o Interface List Discovery RSVP must be able to learn what real and virtual interfaces are active, with their IP addresses. 3.9.4 Service-Dependent Manipulations Flowspecs, Tspecs,advertisement andAdspecs are opaque objects to RSVP; their contentspolicy data if they aredefined in service specification documents. In order to manipulate these objects, RSVP daemon must have availablepresent. The possible flags correspond toitNon_RSVP and Maybe_RSVP flags of thefollowing service-dependent routines. o Compare FlowspecsSESSION object. 2. Info_type = RESV_EVENT A Resv Event upcall is triggered by the receipt of the first RESV message, or by modification of a previous reservation state, for this session. Upcall: <Upcall_Proc>( ) -> session-id, Info_type=RESV_EVENT, Style, Flowspec, Filter_Spec_list, [ , Policy_data ] Here `Flowspec' will be the effective QoS that has been received. Note that an FF-style RESV message Braden, Zhang, et al. Expiration:MayAugust 1996 [Page63]61] Internet Draft RSVP SpecificationNovember 1995 Compare_Flowspecs( Flowspec_1, Flowspec_2February 1996 may result in multiple RESV_EVENT upcalls, one for each flow descriptor. 3. Info_type = PATH_ERROR An Path Error event indicates an error in sender information that was specified in a SENDER call. Upcall: <Upcall_Proc>( ) ->result_codesession-id, Info_type=PATH_ERROR, Error_code , Error_value , Error_Node , Sender_Template, [ Policy_data ] Thepossible result_codes indicate: flowspecs are equal, Flowspec_1 is greater, Flowspec_2 is greater, flowspecs are incomparable but LUB can be computed, or flowspecs are incompatible. Note that comparing two flowspecs implicitly comparesError_code parameter will define theTspecserror, and Error_value may supply some additional (perhaps system-specific) data about the error. The Error_Node parameter will specify the IP address of the node thatare contained. Althoughdetected theRSVP daemon cannot itself parse a flowspec to extracterror. The Policy_data parameter, if present, will contain theTspec, it can usePOLICY_DATA object from theCompare_Flowspecs callfailed PATH message. 4. Info_type = RESV_ERR An Resv Error event indicates an error in a reservation message toimplicitly calculate Resv_Te (see Section 2.3). o Compute LUB of Flowspecs LUB_of_Flowspecs( Flowspec_1, Flowspec_2 ) -> Flowspec_LUB o Compare Tspecs Compare_Tspecs( Tspec_1, Tspec_2which this application contributed. Upcall: <Upcall_Proc>( ) ->result_codesession-id, Info_type=RESV_ERROR, Error_code , Error_value , Error_Node , Error_flags , Flowspec, Filter_spec_list, [ Policy_data ] Thepossible result_codes indicate: Tspecs are equal, or Tspecs are unequal. o Sum Tspecs Sum_Tspecs( Tspec_1, Tspec_2 ) -> Tspec_sum This call is used to compute Path_Te (see Section 2.3).Error_code parameter will define the error and Error_value may supply some additional (perhaps Braden, Zhang, et al. Expiration:MayAugust 1996 [Page64]62] Internet Draft RSVP SpecificationNovember 1995 4. Message Processing Rules This section provides a generic descriptionFebruary 1996 system-specific) data. The Error_Node parameter will specify the IP address of therulesnode that detected the event being reported. There are two Error_flags: - InPlace This flag may be on forRSVP operation. It is intendedan Admission Control failure, tooutlineindicate that there was, and is, a reservation in place at the failure node. This flag is setof algorithms that will accomplishat theneeded function. An actual implementation may use different but equivalent algorithms. This section assumes the generic interface calls defined in Section 3.9 and the following data structures. An actual implementation may use additional or different data structuresfailure point andinterfaces. [NOTE:forwarded in RERR messages. - NotGuilty Thissection is always the last toflag may beupdated when changes are made, and it is neither correct nor complete aton for an Admission Control failure, to indicate that thepresent time. Therefore, whenflowspec requested by thissection disagrees with the rest ofreceiver was strictly less than thetext, you should believeflowspec that got therest oferror. This flag is set at thetext!] o PSB -- Path State Block Each PSB holds path state for a particular (session, sender) pair, defined by SESSIONreceiver API. Filter_spec_list andSENDER_TEMPLATE objects, respectively, received in a PATH message. PSB contents includeFlowspec will contain thefollowing values from a PATH message: - The previous hop IP addresscorresponding objects froma PHOP object (required) - LIH,theLogical Interface Handle fromerror flow descriptor (see Section 3.1.6). List_count will specify theprevious hop, from a PHOP object (required). -number of FILTER_SPECS in Filter_spec_list. Theremaining IP TTL (required) - SENDER_TSPEC (required) -Policy_data _list parameter will contain any POLICY_DATAand/or ADSPECobjects(optional) - Non_RSVP flag (required); see Section 3.6. In addition, the PSB contains the following information provided by routing: OutInterface_list, the list of outgoing interfaces for this (sender, destination), and IncInterface,in theexpected incoming interface. ForRERR message. 5. Info_type = RESV_CONFIRM A Confirmation event indicates that aunicast destination, OutInterface_list contains one entry and IncInterface is undefined. o RSB -- Reservation State Block Each RSB holds a reservation request that arrivedRACK message was received. Upcall: <Upcall_Proc>( ) -> session-id, Info_type=RESV_CONFIRM, Style, List_count, Flowspec, Filter_spec_list, [ Policy_data ] The parameters are interpreted as ina particular RESV message, corresponding tothetriple: (session, next hop, filter_spec_list). Here "filter_spec_list" may be aResv Error upcall. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page65]63] Internet Draft RSVP SpecificationNovember 1995 list of FILTER_SPECs (for SE style), a single FILTER_SPEC (FF style),February 1996 Although RSVP messages indicating path orempty (WF style). We useresv events may be received periodically, thesymbol "FILTER_SPEC*"API should make the corresponding asynchronous upcall toindicate such a FILTER_SPEC list. RSB contents include: - The outgoing (logical) interface OIthe application only onwhichthereservation is to be madefirst occurrence orhas been made (required). - FLOWSPEC*, list of FLOWSPEC objects (required) - The style (required) - A POLICY_DATA object (optional) - A SCOPE object (optional, depending on style) - A RESV_CONFIRM object (optional) o TCSB -- Traffic Control State Block TCSB's holdwhen thereservation specifications that have been handedinformation totraffic control for specific outgoing interfaces.be reported changes. All error and confirmation events should be reported to the application. 3.10.2 RSVP/Traffic Control Interface Ingeneral, information in TCSB'san RSVP-capable node, enhanced QoS isderived from RSB's for the same outgoing interface. Each TCSB definesachieved by asingle reservation forgroup of inter-related traffic control functions: aparticular triple: (session, OI, filter_spec_list). TCSB contents include: -packet classifier, an admission control module, and a packet scheduler. This section describes a generic RSVP interface to traffic control. o Make a Reservation Call: Rhandle = TC_AddFlowspec( Interface, TC_Flowspec, TC_Tspec, Police_Flags ) The TC_Flowspec parameter defines the desired effectiveflowspec, i.e., the maximum over the corresponding FLOWSPEC values from matching RSB's. TC_Flowspec is passed to traffic controlQoS tomakeadmission control; its value is computed as theactual reservation. The Tspec partmaximum over the flowspecs ofTC_Flowspec isdifferent next hops (see the Compare_Flowspecs call below). It contains the effective reservation Tspec Resv_Te(Section 2.3). - TC_Tspec, equal(although the RSVP daemon itself has no means to extract the Tspec). The TC_Tspec parameter defines the effective sender TspecPath_Te. - Police FlagsPath_Te (see Section 2.3). We assume that traffic control takes the GLB of Resv_Te and Path_Te (see step (4) in Section 2.3). The Police_Flags parameter carries the three flags E_Police_Flag,M_Police_Flag,and B_Police_Flag are defined inM_Police_Flag, and B_Police_Flag; see Section3.6. - Rhandle, F_Handle_list Handles returned by3.7. The TC_AddFlowspec call returns an error code if Flowspec is malformed or if thetraffic control interface,requested resources are unavailable. Otherwise, it establishes a new reservation channel corresponding to Rhandle. It returns thereservation (flowspec) andopaque number Rhandle for subsequent references tothe list of filter specs. Boolean flags Path_Refresh_Needed, Resv_Refresh_Needed, andthis reservation. o Modify Reservation Call: TC_ModFlowspec( Interface, Rhandle, new_Flowspec, Sender_Tspec, Police_flags ) Braden, Zhang, et al. Expiration:MayAugust 1996 [Page66]64] Internet Draft RSVP SpecificationNovember 1995 Tear_Needed will also beFebruary 1996 This call is usedin this section. [LZ: It might be very helpful to have a short sectiontosummarize the management of all the timers.] MESSAGE ARRIVES Verify version number and checksum fields of common header, and discard message if any mismatchmodify an existing reservation. New_Flowspec isfound. Reassemble a fragmented message. Parse the sequence of objects in the messagepassed toverify the length field of the common header; discard messageAdmission Control; ifthereit isa mismatch. Ifrejected, themessage typecurrent flowspec isnot PATH or PTEAR andleft in force. The corresponding filter specs, ifthe IP destination address doesany, are notmatch any of the addresses of the local interfaces, then forward the message to IP destination address and return. Verify the INTEGRITY object, if any. If the check fails, discard the message and return. Further processing depends upon message type. PATH MESSAGE ARRIVES Process the sender descriptor object sequence in the message as follows.affected. Theflags Path_Refresh_Needed and Resv_Refresh_Needed flagsother parameters areinitially off.defined as in TC_AddFlowspec. oIf there is a POLICY_DATA object, verify it; if it is unacceptable, build and send a "Administrative Rejection" PERR message, dropDelete Flowspec Call: TC_DelFlowspec( Interface, Rhandle ) This call will delete an existing reservation, including thePATH message,flowspec andreturn.all associated filter specs. oIf the DstPort in the SESSION objectAdd Filter Spec Call: FHandle = TC_AddFilter( Interface, Rhandle, Session , FilterSpec ) This call iszero butused to associate an additional filter spec with theSrcPort inreservation specified by theSENDER_TEMPLATE object is non-zero, buildgiven Rhandle, following asendsuccessful TC_AddFlowspec call. This call returns a"Conflicting Src Port" PERR message, drop the PATH message, and return.filter handle FHandle. oSearch forDelete Filter Spec Call: TC_DelFilter( Interface, FHandle ) This call is used to remove apath state block (PSB) whose (SESSION, SENDER_TEMPLATE) pair matches the corresponding objects in the message, considering any wildcard ports.specific filter, specified by FHandle. oIf, during the PSB search, a PSBOPWA Update Call: TC_Advertise( Interface, Adspec ) -> New_Adspec This call isfound whose session matches the DestAddress and Protocol Id fields of the received SESSION object, butused for OPWA to compute theDstPorts differ and one is zero, then build and sendoutgoing advertisement New_Adspec for a"Conflicting Dst Port" PERR message, drop the PATH message, and return.specified interface. o Preemption Upcall Upcall: TC_Preempt() -> RHandle, Reason_code Braden, Zhang, et al. Expiration:MayAugust 1996 [Page67]65] Internet Draft RSVP SpecificationNovember 1995 o If, during the PSB search, a PSB is found with a matching sender host (in SENDER_TEMPLATE) but the SrcPorts differ and one is zero, then build and send a "Ambiguous Path" PERR message, drop the PATH message, and return. o If there was no matching PSB, then: 1. CreateFebruary 1996 In order to grant a newPSB. 2. Callreservation request, theappropriate Route_Query routine, using DestAddress from SESSION and (for multicast routing) SrcAddress from SENDER_TEMPLATE. Storeadmission control and/or policy modules may preempt an existing reservation. This might be reflected in an upcall to RSVP, passing thevaluesRHandle ofOutInterface_listthe preempted reservation andIncInterface intoa sub-code indicating thePSB. However, ifreason. 3.10.3 RSVP/Routing Interface An RSVP implementation needs thesender isfollowing support from thelocal API, then insteadpacket forwarding and routing mechanisms ofinvoking routing, set OutInterface_Listthe node. o Promiscuous Receive Mode for RSVP Messages Packets received for IP protocol 46 but not addressed to thesingle interface whose address matchesnode must be diverted to thesender address; IncInterface is undefined in this case. 3. If IncInterface is defined and ifRSVP program for processing, without being forwarded. On amulticast message arrived on an interface different from IncInterface, droprouter, themessage and return. 4. Set a cleanup timer foridentity of thePSB. If thisinterface, real or virtual, on which it is received must also be available to thefirst PSB for the session, set a refresh timer forRSVP daemon. The RSVP messages to be diverted will carry thesession. 5. Copy contentsRouter Alert IP option, which can be used to pick them out of a high-speed forwarding path. Alternatively, theSESSION, SENDER_TEMPLATE, SENDER_TSPEC, and PHOP (IP addressnode can intercept all protocol 46 packets. o Route Query To forward PATH andLIH) objects intoPTEAR messages, an RSVP daemon must be able to query thePSB. Storerouting daemon(s) for routes. Ucast_Route_Query( [ SrcAddress, ] DestAddress, Notify_flag ) -> OutInterface Mcast_Route_Query( [ SrcAddress, ] DestAddress, Notify_flag ) -> [ IncInterface, ] OutInterface_list Depending upon thereceived TTL intorouting protocol, thePSB. Copy intoquery may or may not depend upon SrcAddress, i.e., upon thePSB either ofsender host IP address, which is also thefollowing objects that are present: POLICY_DATA and ADSPEC. 6. Turn onIP source address of thePath_Refresh_Needed flag. o Otherwise (theremessage. Here IncInterface isa matching PSB and therethe interface through which the packet isno dest port conflict): 1.expected to arrive; some multicast routing protocols may not provide it. Iftherethe Notify_flag isnoTrue, routing will save state necessary to issue unsolicited route change notificationin place, callcallbacks (see below) whenever theappropriate Route_Query routine using DestAddress from SESSION and (forspecified route changes. Braden, Zhang, et al. Expiration: August 1996 [Page 66] Internet Draft RSVP Specification February 1996 A multicastrouting) SrcAddress from SENDER_TEMPLATE. - If theroute query may return an empty OutInterface_listthat is returned differs from thatif there are no receivers downstream of a particular router. A route query may also return a `No such route' error, probably as a result of a transient inconsistency in thePSB, execute the PATH LOCAL REPAIR event sequence below. - Ifrouting (since amulticast message arrived on an interface different from IncInterface, drop the message and Braden, Zhang, et al. Expiration: May 1996 [Page 68] Internet Draft RSVP Specification November 1995 return. 2. If the PHOP IP address, the LIH,PATH orSENDER_TSPEC differs between thePTEAR messageand the PSB, copy the new value into the PSB, execute the RESV REFRESH event sequencefor thesender defined by the PSB, and turn onrequested route did arrive at this node). In either case, thePath_Refresh_Needed flag. [LZ: [When]local state shouldADSPEC change trigger a refresh?] However, ifbe updated as requested by thePATH message being processed came from amessage, which cannot be forwarded further. Updating localapplication and if there is reservationstatefor this session, thenwill make path state available immediately for aResv Event upcall to that application instead of executing the RESV REFRESH sequence. Call: <Upcall_Proc>( session-id, Resv Event, 1, {Flowspec}, NULL, NULL, NULL ) 3. Restart the cleanup timer.new local receiver, or it will tear down path state immediately. o Route Change Notification Ifthe message arrived withrequested by aTTL different from Send_TTL in the RSVP common header, setroute query with theNon_RSVP flag on inNotify_flag True, thePSB. o Ifrouting daemon may provide an asynchronous callback to thePath_Refresh_Needed flag is now set then: 1. If this PATH message came from a network interface and not from a local application, makeRSVP daemon that aPath Event upcall for each local application for this session: Call: <Upcall_Proc>( session-id, Path Event, 1, {SENDER_TSPEC}, {SENDER_TEMPLATE}, {ADSPEC}, {POLICY_DATA}specified route has changed. Ucast_Route_Change( )2. Execute the PATH REFRESH event sequence (below) for the sender defined by the PSB. PATH TEAR MESSAGE ARRIVES-> [ SrcAddress, ] DestAddress, OutInterface Mcast_Route_Change( ) -> [ SrcAddress, ] DestAddress, [ IncInterface, ] OutInterface_list oSearch forOutgoing Link Specification RSVP must be able to force aPSB whose (SESSION, SENDER_TEMPLATE) pair matches the corresponding objects in(multicast) datagram to be sent on a specific outgoing virtual link, bypassing themessage. If no matching PSBnormal routing mechanism. A virtual link may be a real outgoing link or a multicast tunnel. Outgoing link specification isfound, drop the PTEARnecessary to send different versions of an outgoing PATH messageand return.on different interfaces. It is also necessary in some cases to avoid routing loops. oForward a copy ofSource Address Specification RSVP must be able to specify thePTEAR messageIP source address toeach outgoingbe used when sending PATH messages. o Interface List Discovery RSVP must be able to learn what real and virtual interfaces are active, with their IP addresses. It should be possible to logically disable an interface Braden, Zhang, et al. Expiration:MayAugust 1996 [Page69]67] Internet Draft RSVP SpecificationNovember 1995February 1996 for RSVP. When an interfacelisted in OutInterface_list of the PSB. o Find each RSBis disabled for RSVP, a PATH message should never be forwarded out thatmatches this PSB, i.e., whose FILTER_SPEC object matches the SENDER_TEMPLATE in the PSBinterface, andwhose OIif an RSVP message isincluded in OutInterface_list. If this RSB matches no other PSB, then tear down the RSB, as described below under RESV TEAR MESSAGE ARRIVES. o Delete the PSB. o Dropreceived on that interface, thePTEARmessage should be silently discarded (perhaps with local logging). 3.10.4 Service-Dependent Manipulations Flowspecs, Tspecs, andreturn. PATH ERROR MESSAGE ARRIVES o Search for a PSB whose (SESSION, SENDER_TEMPLATE) pair matches the correspondingAdspecs are opaque objects to RSVP; their contents are defined in service specification documents. In order to manipulate these objects, RSVP daemon must have available to it themessage. If no matching PSB is found, drop the PERR message and return.following service-dependent routines. oIf the previous hop address in the PSBCompare Flowspecs Compare_Flowspecs( Flowspec_1, Flowspec_2 ) -> result_code The possible result_codes indicate: flowspecs are equal, Flowspec_1 isthe local API, make an error upcall to the application: Call: <Upcall_Proc>( session-id, Path Error, Error_code, Error_value, Node_Addr, 0, 1, NULL, SENDER_TEMPLATE, NULL, Policy_Data) Any POLICY_DATA, SENDER_TSPEC, or ADSPEC object in the messagegreater, Flowspec_2 isignored. [LZ: Why we don't send these objects up to application? They might of some help to understandgreater, flowspecs are incomparable but LUB can be computed, or flowspecs are incompatible. Note that comparing two flowspecs implicitly compares theerrors.] DropTspecs that are contained. Although thePERR message and return. o Otherwise, sendRSVP daemon cannot itself parse acopy of the PERR messageflowspec to extract thePHOP IP address, drop the PERR message, and return. RESV MESSAGE ARRIVES Initially, the Resv_Refresh_PHOP* list is empty andTspec, it can use theResv_Refresh_Needed flag is off. These variables are usedCompare_Flowspecs call tocontrol immediate reservation refreshes. o Process the NHOP objectimplicitly calculate Resv_Te (see Section 2.3). o Compute LUB of Flowspecs LUB_of_Flowspecs( Flowspec_1, Flowspec_2 ) -> Flowspec_LUB o Compute GLB of Flowspecs GLB_of_Flowspecs( Flowspec_1, Flowspec_2 ) -> Flowspec_GLB o Compare Tspecs Compare_Tspecs( Tspec_1, Tspec_2 ) -> result_code Braden, Zhang, et al. Expiration: August 1996 [Page 68] Internet Draft RSVP Specification February 1996 Thelogical outgoing interface OI is taken from the LIH in the NHOP object. (If the physical interfacepossible result_codes indicate: Tspecs are equal, or Tspecs are unequal. o Sum Tspecs Sum_Tspecs( Tspec_1, Tspec_2 ) -> Tspec_sum This call isnot impliedused to compute Path_Te (see Section 2.3). Braden, Zhang, et al. Expiration:MayAugust 1996 [Page70]69] Internet Draft RSVP SpecificationNovember 1995 byFebruary 1996 4. Message Processing Rules This section provides a generic description of theLIH, it can be learned fromrules for RSVP operation. It is intended to outline a set of algorithms that will accomplish theinterface matchingneeded function, omitting some details. This section assumes theIP destination address). o Checkgeneric interface calls defined in Section 3.10 and theSESSION object. If therefollowing data structures. An actual implementation may use additional or different data structures and interfaces. The data structure fields that a shown areno existing PSB'srequired unless they are explicitly labelled as optional. o PSB -- Path State Block Each PSB holds path state for a particular (session, sender) pair, defined by SESSIONthen buildandsendSENDER_TEMPLATE objects, respectively, received in aRERR message (as described later) specifying "No path information", dropPATH message. PSB contents include theRESV message,following values from a PATH message: - Session - Sender_Template - Sender_Tspec - The previous hop IP address andreturn. However, do not send the RERR message if the style has wildcard reservation scope and this is the receiver host itself. [LZ: Explain this?] o Check the S_POLICY_DATA object. If there is an S_POLICY_DATA object inthemessage, check permission to createLogical Interface Handle (LIH) from areservation for the session. If the check fails, build and send an "Administrative rejection" RERR message, drop the RESV message, and return. Otherwise, copy the S_POLICY_DATA object into the RSB. Now process the STYLEPHOP object - The remaining IP TTL - POLICY_DATA and/or ADSPEC objects (optional) - Non_RSVP and Maybe_RSVP flags; see Section 3.7. - E_Police flag (Section 3.7) - Local_Only flag (Section 3.8) In addition, theflow descriptor list to make reservations, as follows. For FF style, execute the following steps independently for each b flow descriptor, i.e., for each (FLOWSPEC, FILTER_SPEC) pair. For FF style, FILTER_SPEC* consists of the single FILTER_SPEC from the flow descriptor. For SE style, executePSB contains the followingsteps once, with FILTER_SPEC* consisting ofinformation provided by routing: OutInterface_list, which is the list ofFILTER_SPEC objects fromoutgoing interfaces for this (sender, destination), and IncInterface, which is theflow descriptor.expected incoming interface. ForWF style, execute the following steps once, with FILTER_SPEC* consisting ofasingle internal placeholder "WILD_FILTER". o If the DstPort in the SESSION object is zero but the SrcPort in the FILTER_SPEC objectunicast destination, OutInterface_list contains one entry and IncInterface isnon-zero, buildundefined. o RSB -- Reservation State Block Braden, Zhang, et al. Expiration: August 1996 [Page 70] Internet Draft RSVP Specification February 1996 Each RSB holds asendreservation request that arrived in a"Conflicting Src Port" RERR message, drop theparticular RESV message,and return. o Findcorresponding to the triple: (session, next hop, Filter_spec_list). Here "Filter_spec_list" may be a list of FILTER_SPECs (for SE style), a single FILTER_SPEC (FF style), orcreateempty (WF style). We define a virtual object type "FILTER_SPEC*" for such a data structure. RSB contents include: - Session specification - Next hop IP address - Filter_spec_list - The outgoing (logical) interface OI on which the reservationstate block (RSB)is to be made or has been made (required). - Style - Flowspec - A POLICY_DATA object (optional) - A SCOPE object (optional, depending on style) - A RESV_CONFIRM object (optional) o TCSB -- Traffic Control State Block Each TCSB holds the reservation specification that has been handed to traffic control for a specific outgoing interface. In general, TCSB information is derived from RSB's for the same outgoing interface. Each TCSB defines a single reservation for a particular triple:(SESSION, NHOP, FILTER_SPEC*). Call this(session, OI, Filter_spec_list). TCSB contents include: - Session - OI - Filter_spec_list - TC_Flowspec, the"active RSB". o Ifeffective flowspec, i.e., theRSBmaximum over the corresponding FLOWSPEC values from matching RSB's. TC_Flowspec isnot new and if its stylepassed to traffic control to make the actual reservation. The Tspec part of TC_Flowspec isincompatible withthe effective reservation Tspec Resv_Te (Section 2.3). Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 71] Internet Draft RSVP SpecificationNovember 1995February 1996 - TC_Tspec, equal to Path_Te, theSTYLE objecteffective sender Tspec. - Police Flags The flags E_Police_Flag, M_Police_Flag, and B_Police_Flag are defined in Section 3.7. - Rhandle, F_Handle_list Handles returned by themessage, build and send a RERR message specifying "Conflicting Style", droptraffic control interface, corresponding to theRESV message,reservation (flowspec) andreturn. o Start or restartto thecleanup timer onlist of filter specs. o BSB -- Blockade State Block Each BSB contains an element of blockade state. Depending upon the reservation style in use, theactive RSB. oBSB's may be per (session, sender_template) or per (session, PHOP). In practice, an implementation might embed a BSB within a PSB; however, for clarity we describe BSB's independently. The contents of a BSB include: - Session - Sender_Template (which is also a filter spec) - PHOP - FLOWSPEC Qb - Blockade timer Tb The following other variables are also used in this section: Boolean flags Path_Refresh_Needed, Resv_Refresh_Needed, Tear_Needed, Need_Scope, B_Merge, and NeworMod, and Refresh_PHOP_list, a variable-length list of PHOPs to be refreshed. MESSAGE ARRIVES Verify version number and RSVP checksum, and discard message if any mismatch is found. If theactive RSBmessage type is notnew, check whether FLOWSPECPATH orSCOPE objects have changed. If not, continue withPTEAR and if thenext flow descriptor inIP destination address does not match any of theRESV message,addresses of the local interfaces, then forward the message to IP destination address and return. Verify the INTEGRITY object, if any.oIf theactive RSB is new, set its OIcheck fails, discard the Braden, Zhang, et al. Expiration: August 1996 [Page 72] Internet Draft RSVP Specification February 1996 message andstyle,return. Reassemble fragments of message. Parse the sequence of objects in the message, andcopydiscard message if anyFLOWSPEC, POLICY_DATA, and/or SCOPErequired objectsinto it. o Ifare missing. Verify the length field of the common header, and discard message if there is aRESV_CONFIRM inmismatch. Verify themessage, turn on Resv_Refresh_Needed and saveconsistent use of port fields. If theobjectDstPort in theRSB. o The active RSB must be new or changed. Compute the traffic control parameters, usingSESSION object is zero but thefollowing steps. 1. LocateSrcPort in a SENDER_TEMPLATE or FILTER_SPEC object is non-zero, theset of PSBs (senders) whose SENDER_TEMPLATEs match FILTER_SPEC*the message has a "conflicting source port" error; discard the message and return. Further processing depends upon message type. PATH MESSAGE ARRIVES Process the sender descriptor object sequence in theactive RSBmessage as follows. The Path_Refresh_Needed andwhose OutInterface_list includes OI.Resv_Refresh_Needed flags are initially off. o Ifthis setthere isempty,a POLICY_DATA object, verify it; if it is unacceptable, build and sendan error message specifying "No sender information",a "Administrative Rejection" PERR message, drop the PATH message, andcontinue withreturn. o Search for a path state block (PSB) whose (session, sender_template) pair matches thenext flow descriptorcorresponding objects in theRESVmessage.2. If this set contains more than oneo If, during the PSB search, a PSB is found whose session matches the DestAddress andifProtocol Id fields of thestyle has explicit sender selection (e.g., FF or SE),received SESSION object, but the DstPorts differ and one is zero, then build and sendan error message specifying "Ambiguous filter spec" and continue with the next flow descriptor. 3. Adda "Conflicting Dst Port" PERR message, drop thePHOP fromPATH message, and return. o If, during the PSBto the Resv_Refresh_PHOP* list, if the PHOP is not already on the list. 4. Set TC_E_Police_flag on if any of these PSBs have their E_Police flag on. Set TC_M_Police_flag on if itsearch, a PSB is found with ashared stylematching sender host but the SrcPorts differ andthere is more thanonePSB inof theset. 5. Compute Path_Te as the sum ofSrcPorts is zero, then build and send an "Ambiguous Path" PERR message, drop theSENDER_TSPEC objects in this set of PSBs. 6. Scan all RSB'sPATH message, and return. o If there was no matching PSB, then: 1. Create a new PSB. 2. Copy contents of theSESSIONSESSION, SENDER_TEMPLATE, SENDER_TSPEC, andFilter_Spec_list fromPHOP (IP address and LIH) objects into themessage. - If any of these RSB's has a style that isPSB. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page72]73] Internet Draft RSVP SpecificationNovember 1995 incompatible withFebruary 1996 3. Calculate initial routing information. If thespecifying "Conflicting Style", dropsender is from theRESV message, deletelocal API, OutInterface_List is set to theRSB if it has just been created,single interface whose address matches the sender address, andreturn. - Set TC_B_Police_flag on if TC_FlowspecIncInterface issmaller than, or incomparable to, any FLOWSPEC in those RSB's. 7. Considerundefined. Otherwise, call thesetappropriate Route_Query routine, using DestAddress from SESSION and (for multicast routing) SrcAddress from SENDER_TEMPLATE. Store the values ofRSB's forOutInterface_list and IncInterface into thesame (SESSION, OI, Filter_Spec_list) triplePSB. 4. If IncInterface is defined and if a multicast message arrived on an interface different from IncInterface, turn on themessage. - ComputeLocal_Only flag in theeffective kernel flowspec, TC_Flowspec, asPSB. 5. If this is themaximum offirst PSB for theFLOWSPEC values in these RSB's. - Computesession, set a refresh timer for theeffective kernel filter spec (list), TC_Filter*. by mergingsession. 6. Turn on theFILTER_SPEC* object (lists) from these RSB's.Path_Refresh_Needed flag. oSearch forOtherwise (there is aTCSBmatchingthe triple (SESSION, OI, FILTER_SPEC*), taken from the RSB. 1. If nonePSB and there isfound but style is SE, search for a TCSB matching (SESSION, OI).no dest port conflict): 1. Iffind one and if TCSB's TC_Flowspec, Path_Te, and police flags matchthere is no route change notification in place, call thecomputed values, then - Make anappropriateset of TC_DelFilterRoute_Query routine using DestAddress from SESSION andTC_AddFilter calls to transform(for multicast routing) SrcAddress from Sender_Template. - If theFilter_Spec_listOutInterface_list that is returned differs from that in theTCSB into the Filter_Spec_list fromPSB, then execute themessage.PATH LOCAL REPAIR event sequence below. -Set Resv_Refresh_Needed on, dropIf a multicast message arrived on an interface different from IncInterface, then execute the RESVmessage, and return.REFRESH event sequence below for the previous hop. 2.Otherwise, if none is found: - Create aIf the PHOP IP address, the LIH, or Sender_Tspec differs between the message and the PSB, copy the newTCSB. - Store TC_Flowspec, Filter_Spec_list, Path_Te,value into the PSB and turn on thepolice flagsPath_Refresh_Needed flag. o If the message contains an ADSPEC object, copy it intoTCSB. [SCOPE?] - Set Resv_Refresh_Needed on. - Makethetraffic control call:PSB. o Start or Restart the cleanup timer for the PSB. o Copy E_Police flag from SESSION object into PSB. o Store the received TTL into the PSB. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page73]74] Internet Draft RSVP SpecificationNovember 1995 Rhandle = TC_AddFlowspec( OI, TC_flowspec, Path_Te, TC_E_Police_flag, TC_M_Police_flag, TC_B_Police_flag )February 1996 Ifthis call fails, build and send a RERR message specifying "Admission control failed", and continue withthenext flow descriptor. Otherwise, record Rhandle intheTCSB. - For each filter_spec Freceived TTL differs from Send_TTL inFilter_Spec_list, call: Fhandle = TC_AddFilter( Rhandle, SESSION, F) and recordthereturned FhandleRSVP common header, set the Non_RSVP flag on in theTCSB. - Continue withPSB. o The Path_Refresh_Needed flag is now set if thenext flow descriptor.path state is new or modified. If so: 1. If this PATH message came from a network interface and not from a local application, make a Path Event upcall for each local application for this session: Call: <Upcall_Proc>( session-id, PATH_EVENT, flags, sender_tspec, sender_template, [ADSPEC], [POLICY_DATA] ) 2. Execute the PATH REFRESH event sequence (below) for the sender defined by the PSB. 3.Otherwise (found existing TCSB), check whether TC_Flowspec, Path_Te, and/or any ofIf there is no reservation state for this SESSION (i.e., no RSB's exist), then drop thepolice flags has changed,PATH message andif so:return. 4. Otherwise (there is reservation state): -Store TC_Flowspec, Filter_Spec_list, Path_Te, andExecute thepolice flags into it. [SCOPE?] - Set Resv_Refresh_Needed on. - Makeevent sequence UPDATE TRAFFIC CONTROL below, to update the local traffic controlcall: TC_ModFlowspec( Rhandle, K_Flowspec, Path_Te, TC_E_Police_flag, TC_M_Police_flag, TC_B_Police_flag ) 4. Continue with the next flow descriptor. o Ifstate if necessary. This will turn on the Resv_Refresh_Needed flagis now on,if the traffic control state changes; if so, execute the RESV REFRESH event sequence (below) foreach PHOPthe sender in theResv_Refresh_PHOP* set. If processing a RESVPSB. However, if the PATH messagefinds an error,came from aRERR message is created containing flow descriptor and an ERRORS object. The Error Node field of the ERRORS object (see Appendix A) is setlocal application, then make a RESV_EVENT upcall to that application. o Drop theIP address of OI, and thePATH messageis sent unicast to NHOP. Braden, Zhang, et al. Expiration: May 1996 [Page 74] Internet Draft RSVP Specification November 1995 RESVand return. PATH TEAR MESSAGE ARRIVESA RTEAR message arrives with an IP destination address matching outgoing interface OI. Flags Tear_Needed and Resv_Refresh_Needed are initially off and Resv_Refresh_PHOP* list is empty.oProcess the STYLE object and the flow descriptor list in the RTEAR message to tear down local reservation state, as follows. For FF style, execute the following steps for each b flow descriptor, i.e.,Search foreach (FLOWSPEC, FILTER_SPEC) pair independently, with Filter_Spec_list consisting of a single FILTER_SPEC object. For SE style, execute the following steps once, with Filter_Spec_list consisting of a list of FILTER_SPEC objects. For WF style, execute the following steps once, with Filter_Spec_list consisting ofasingle internal placeholder "WILD_FILTER". 1. Find matching RSB forPSB whose (Session, Sender_Template) pair matches the4-tuple: (SESSION, NHOP, style, Filter_Spec_list); call thiscorresponding objects in theactive RSB.message. If noactive RSBmatching PSB is found,continue with next flow descriptor. 2. Delete the active RSB. 3. Find TCSB for the triple: (SESSION, OI, Filter_Spec_list). 4. Considerdrop thesetPTEAR message and return. o Forward a copy ofRSB's matching this TCSB. If there are none: - Callthetraffic controlPTEAR message to each outgoing interfaceroutine: TC_DelFlowspec( Rhandle ) - Delete the TCSB and set Tear_Needed flag on. - Continue with the next flow descriptor. 5. Otherwise (there are other RSB's forlisted in OutInterface_list of thesame TCSB),PSB. o Find each RSB that matches this PSB, i.e., that whose Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 75] Internet Draft RSVP SpecificationNovember 1995 recompute TC_FlowspecFebruary 1996 Filter_spec_list matches Sender_Template in the PSB andPath_Te (seewhose OI is included in OutInterface_list. If this RSB matches no other PSB, then tear down the RSB, as described below under RESV TEAR MESSAGEARRIVES). (This also addsARRIVES. o Delete theappropriate PHOP addresses toPSB. o Drop theResv_Refresh_PHOP* list>) If either changed, update the TCSB, set flag Resv_Refresh_Needed on,PTEAR message andcall the traffic control interface module: TC_ModFlowspec( Rhandle, TC_Flowspec, Path_Te) TC_E_Police_flag, TC_M_Police_flag, TC_B_Police_flag ) This kernel call should not fail, since the reservation can only be reduced. [LZ: Suppose receiver R hasreturn. PATH ERROR MESSAGE ARRIVES o Search for a PSB whose (SESSION, SENDER_TEMPLATE) pair matches thecredential to makecorresponding objects in thereservation and others took a ride on top of R's credential. Now R tears down its request, what should happen? Shouldn't TEAR take policy data as input?] omessage. IfTear_Needed and Resv_Refresh_Needed flags are both off, thenno matching PSB is found, drop theRTEARPERR message and return. o IfTear_Needed is off but Resv_Refresh_Needed is on, then executetheRESV REFRESH sequence for each PHOPprevious hop address in theResv_Refresh_PHOP* set, drop the RTEAR message, and return. o Otherwise (Tear_NeededPSB ison), need to forward RTEAR and/or RESV refresh messages. Dothefollowing for each PSB whose OutInterface_list includeslocal API, make an error upcall to theoutgoing interface OI: 1. Pick each flow descriptor Fjapplication: Call: <Upcall_Proc>( session-id, PATH_ERROR, Error_code, Error_value, Node_Addr, Sender_Template, [Policy_Data] ) Any SENDER_TSPEC or ADSPEC object in theRTEARmessagewhose FILTER_SPEC matches the PSB, and do the following. - If thereisno RSB whose FILTER_SPEC matchesignored. Otherwise, send a copy of thePSB, then add FjPERR message to thenew RTEAR message being built. - Otherwise (there is a matching RSB), notePHOP IP address. o Drop thePSB as needing a RESV refreshPERR message andsetreturn. RESV MESSAGE ARRIVES Initially, Refresh_PHOP_list is empty and the Resv_Refresh_Neededflag True. 2. If the new RTEAR message contains any flow descriptors, send itand NeworMod flags are off. These variables are used toPHOP in the PSB.control immediate reservation refreshes. o Determine the Outgoing Interface OI The logical outgoing interface OI is taken from the LIH in the NHOP object. (If the physical interface is not implied by the LIH, it can be learned from the interface matching the IP destination address). Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 76] Internet Draft RSVP SpecificationNovember 1995February 1996 oIf the Resv_Refresh_Needed flag is now on, execute the RESV REFRESH sequence (below) for each PHOP inCheck theResv_Refresh_PHOP* set.SESSION object. Ifthe Refresh_Needed flag is true, then execute the RESV REFRESH sequence for thethere are no existing PSB'sthat have been noted. o Drop the RTEAR messagefor SESSION then build andreturn. RESV ERROR MESSAGE ARRIVES Asend a RERR messagearrives through the (real) incoming interface In_If. o If there is no(as described later) specifying "No pathstate for SESSION,information", drop theRERR messageRESV message, and return. oDoCheck thefollowing with each RSB for this SESSION whose OI does not match In_If and whose FILTER_SPEC matches thatS_POLICY_DATA object. If there is an S_POLICY_DATA object in theRERR message. 1. Copymessage, check permission to create a reservation for theerror flow descriptor fromsession. If theincomingcheck fails, build and send an "Administrative rejection" RERRmessage. 2. Compare the FLOWSPEC inmessage, drop theRERR message withRESV message, and return. Otherwise, copy theFLOWSPEC inS_POLICY_DATA object into the RSB. o Check for incompatible styles. Ifthey don't match alonganycoordinate (i.e., if theexisting RSBFLOWSPECfor the session has a style that isstrictly `smaller'), continueincompatible with thenext RSB. If they agree on some but not all coordinates, turn on the LUB-used flag. 3. If NHOP in RSB isstyle of thelocal API, deliver an error upcall to application: Call: <Upcall_Proc>( session-id, Resv Error, Error_code, Error_value, Node_Addr, LUB-Used, Flowspec, Filter_Spec_List, NULL, NULL)message, build andcontinue withsend a RERR message specifying "Conflicting Style", drop thenext RSB. Here k, Filter_Spec_List,RESV message, andFlowspec_List are constructedreturn. Process the flow descriptor list to make reservations, as follows, depending upon the style. The following uses a filter spec list struct Filtss, of type FILTER_SPEC* (defined earlier). For FF style: execute the following steps independently for each flow descriptor in the message, i.e., for each (FLOWSPEC, Filtss) pair. Here the structure Filtss consists of the FILTER_SPEC from the flow descriptor. For SE style, execute the following steps once for (FLOWSPEC, Filtss), with Filtss consisting of the list of FILTER_SPEC objects from theerrorflow descriptor. For WF style, execute the following steps once for (FLOWSPEC, Filtss), with Filtss an empty list. o If the DstPort in the SESSION object is zero but the SrcPort in a FILTER_SPEC object (in Filtss) is non-zero, build nd send a "Conflicting Src Port" RERR message, drop the RESV message, and return. o Check the path state, as follows. 1. Locate the set of PSBs (senders) whose SENDER_TEMPLATEs match Filtss and whose OutInterface_list includes OI. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page 77] Internet Draft RSVP SpecificationNovember 1995 4.February 1996 Ifthe RESVthis set is empty, build and send an error messagehas wildcard sender selection, use its SCOPE object SC.In to construct a SCOPE object SC.Out to be forwarded. SC.Out should contain thosespecifying "No senderaddresses that appeared in SC.Ininformation", andthat route to OI [LIH?], as determined by scanning the PSB's. If SC.Out is empty,continue with the nextRSB. 5. Create a new RERR message containing the errorflow descriptorand send toin theNHOP address specified by the RSB. Include SC.Out ifRESV message. 2. If the style has explicit sender selectionis wildcard. 6. Continue with the next RSB. o Drop the(e.g., FF or SE) and if any FILTER_SPEC included in Filtss matches more than one PSB, build and send a RERR message specifying "Ambiguous filter spec" andreturn. RESV CONFIRMATION ARRIVES Ifcontinue with the(unicast) IP address foundnext flow descriptor inits RESV_CONFIRM object matches an interface ofthenode, a confirmation upcall is made toRESV message. 3. Add thematching application: Call: <Upcall_Proc>( session-id, Resv Confirm, Error_code, Error_value, Node_Addr, LUB-Used, nlist, Flowspec, Filter_Spec_List, NULL, NULL ) Otherwise,PHOP from theRACK message is forwarded immediatelyPSB to Refresh_PHOP_list, if theaddress inPHOP is not already on theIP address in its RESV_CONFIRM object. PATH REFRESH This sequence sendslist. o Find or create apath refreshreservation state block (RSB) fora particular sender, i.e., a PSB. This sequence may be entered by either the expiration ofthepath refresh timer or directly astriple: (session, NHOP, Filtss). Call this theresult of"active RSB". o If thePath_Refresh_Needed flag being turned on duringactive RSB is new: 1. Set theprocessingsession, NHOP, OI and style ofa received PATH message. o ComputetheIP TTL forRSB from thePATH message as one less thanmessage. 2. Copy Filtss into themaximumFilter_spec_list of theTTL valuesRSB. 3. Copy the FLOWSPEC and any SCOPE object from thesenders included inmessage into themessage. However, ifRSB. 4. Set NeworMod flag on. o Start or restart theresult is zero, return without sendingcleanup timer on thePATH message. o Insert TIME_VALUES and PHOP objects intothePATH message being built. Braden, Zhang, et al. Expiration: May 1996 [Page 78] Internet Draft RSVP Specification November 1995active RSB. oCreateIf there is asender descriptor containing the SENDER_TEMPLATE, SENDER_TSPEC, and POLICY_DATA objects, if presentRESV_CONFIRM in thePSB, and pack it into the PATH message being built. o Pass any ADSPECmessage, turn on Resv_Refresh_Needed andSENDER_TSPEC objects present in the PSB to the traffic control call TC_Advertise. Insertsave themodified ADSPECobjectthat is returned intoin thePATH message being built.RSB. o If thePSB has the E_Police flag on and if interface OIactive RSB is notcapable of policing,new, check whether STYLE, FLOWSPEC or SCOPE objects have changed; if so, copy changed object into RSB and turnthe E_Police flagoninthePATH message being built.NeworMod flag. oSend a copy ofIf NeworMod flag is off, continue with thePATH message to each interfacenext flow descriptor inOutInterfact_list. Before sending each copy, insert into its PHOP objecttheinterface address and the LIH for the interface.RESVREFRESH This sequence sends a reservation refresh towards a particular previous hop with IP address PH. This sequence may be entered by eithermessage, if any. o Otherwise (the NeworMod flag is on, i.e., theexpiration of a reservation refresh timeractive RSB is new ordirectly as the result ofmodified), execute theResv_Refresh_Needed flag being turned on asUPDATE TRAFFIC CONTROL event sequence (below). If the resultof processing a RESV or RTEAR message. In general, this sequence considers each ofis to modify thePSB's with PHOP address PH. For a given PSB,traffic control state, itscans the RSBs for matching reservations and mergeswill turn on thestyles, FLOWSPECs and FILTER_SPEC*'s appropriately. It then builds a RESV message and sends it to PH. The details depend upon the attributes of the style(s) included in the reservations. o If there are PSB's from more than one PHOP and if the multicast routing protocol does not use shared trees, set the Need_Scope flag on, otherwise set it off. o Create an output message containing SESSION, RSVP_HOP, INTEGRITY, and TIME_VALUES objects. o Select each sender PSB whose PHOP has address PH. 1. Select all RSB's whose FILTER_SPEC*'s match the SENDER_TEMPLATE object in the PSB and whose OI appears in the OutInterface_list of the PSB. 2. Get a STYLE object from the first RSB and move it intoResv_Refresh_Needed flag. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page79]78] Internet Draft RSVP SpecificationNovember 1995 the output message. (Note thatFebruary 1996 o For any local sender, make an RESV_EVENT upcall to thepresent set of styles are never themselves merged; if future styles can be merged, these rules will become more complex). 3. Computeapplication: Call: <Upcall_Proc>( session-id, RESV_EVENT, style, Flowspec, Filter_spec_list, [POLICY_DATA] ) where themaximum/LUB overparameters come from theFLOWSPEC objects of this set of RSB's. 4. While computingactive RSB. o Continue with themaximum/LUB,next flow descriptor. o When all flow descriptors have been processed, check the Resv_Refresh_Needed flag. If it is now on, execute the RESV REFRESH sequence (below) fora RESV_CONFIRM object ineachRSB.PHOP in Refresh_PHOP_list. o Drop the RESV message and return. If processing aRESV_CONFIRM objectRESV message finds an error, a RERR message isfoundcreated containing flow descriptor andifan ERRORS object. The Error Node field of theFLOWSPEC in that RSBERRORS object islarger than all other flowspecs being compared, then save this RESV_CONFIRM object. If a RESV_CONFIRM object is found but the corresponding FLOWSPEC is equal or smaller than the largest, or ifset to theresultIP address ofmerging was a LUB, then createOI, andsend a RACKthe message is sent unicast totheNHOP. RESV TEAR MESSAGE ARRIVES A RTEAR message arrives with an IP destination addressin the RESV_CONFIRM object. - Include the RESV_CONFIRM object inmatching outgoing interface OI. Flags Tear_Needed and Resv_Refresh_Needed are initially off and Refresh_PHOP_list is empty. o Process theRACK message. - Build a confirmation ERROR_SPECSTYLE object andinclude it intheRACK message. The Error_Node parameterflow descriptor list inthis object should betheIP addressRTEAR message to tear down local reservation state, as follows. The following uses a filter spec list struct Filtss, ofOI fromtype FILTER_SPEC* (defined earlier). For FF style: execute theRSB. Then deletefollowing steps independently for each flow descriptor in theRESV_CONFIRM object frommessage, i.e., for each (FLOWSPEC, Filtss) pair. Here theRSB. 5. Mergestructure Filtss consists of thematchingFILTER_SPECobjectsfromthis set of RSB's. The merging rule depend upon the style: Explicit sender selection (FF, SE) styles: Use the SENDER_TEMPLATE as the merged FILTER_SPEC. Wildcard sender selection (WF) style: There is no filter spec to merge. 6. IftheNeed_Scope flag is on, compute a new SCOPE object asflow descriptor. For SE style, execute theunionfollowing steps once for (FLOWSPEC, Filtss), with Filtss consisting of theSCOPE objects found in the RSB's. 7. Merge the F_POLICY_DATAlist of FILTER_SPEC objects from theRSB's. 8. (All matching RSB's have been processed). The nextflow descriptor. For WF style, execute the following steps once for Braden, Zhang, et al. Expiration:MayAugust 1996 [Page80]79] Internet Draft RSVP SpecificationNovember 1995 step depends upon the style attributes. Distinct reservation (FF) style Pack the mergedFebruary 1996 (FLOWSPEC,FILTER_SPEC, F_POLICY_DATA) triplet into the message as a flow descriptor. Shared reservation (SE, WF) styles Merge (take the maximum) across all PSB'sFiltss), with Filtss an empty list. 1. Find matching RSB for themerged FLOWSPECS fromtriple: (SESSION, NHOP, Filtss); call this theRSB's.active RSB. Ifthe sender selection is not wildcard (i.e., if itno active RSB isSE), form the union offound, continue with next flow descriptor. 2. Delete theFILTER_SPECs obtained fromactive RSB. 3. Execute theRSB's. For Wildcard sender selection (WF) style, there is not filter specevent sequence UPDATE TRAFFIC CONTROL (below) tomerge. 9. If the Need_Scope flag is on, remove fromupdate themerged SCOPE object all sender addresses that do not matchtraffic control state to be consistent with theset of PSB'sreservation state. 4. Search for a TCSB remaining forPH, and all senders addresses that are local. Iftheresulting(session, OI, Filtss) triple; if not, setis empty, no RESV should be forwarded to this PHOP; return; otherwise (set is not empty), movethenew SCOPE object intoTear_Needed flag on. 5. Continue with themessage.next flow descriptor. o(All PSB's have been processed).Ifa shared reservation style is being built, move the final merged FLOWSPEC, F_POLICY_DATA,Tear_Needed andFILTER_SPEC (if SE) objects intoResv_Refresh_Needed flags are both off, then drop themessage.RTEAR message and return. o Ifa RESV_CONFIRM object was saved earlier, copy it intoTear_Needed is off but Resv_Refresh_Needed is on, then execute thenewRESVmessage and delete it from the RSBREFRESH sequence for each PHOP inwhich it was found.Refresh_PHOP_list, drop the RTEAR message, and return. oSetOtherwise (Tear_Needed is on), need to forward RTEAR and/or RESV refresh messages. Do theRSVP_HOP objectfollowing for each PSB whose OutInterface_list includes the outgoing interface OI: 1. Pick each flow descriptor Fj in the RTEAR messageto containwhose FILTER_SPEC matches theIncInterface address through which it will be sentPSB, and do theLIH from (one of)following. - If there is no RSB whose FILTER_SPEC matches thePSB's. o SendPSB, then add Fj to the new RTEAR message being built. - Otherwise (there is a matching RSB), note the PSB as needing a RESV refresh message and set the Resv_Refresh_Needed flag True. 2. If the new RTEAR message contains any flow descriptors, send it to PHOP in theaddress PH.PSB. o If the Resv_Refresh_Needed flag is now on, execute the RESV REFRESH sequence (below) for each PHOP in Refresh_PHOP_list. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page81]80] Internet Draft RSVP SpecificationNovember 1995 APPENDIX A. Object Definitions C-Types are defined forFebruary 1996 o Drop thetwo Internet address families IPv4RTEAR message andIP6. To accommodate other address families, additional C-Types could easily be defined. These definitions are contained as an Appendix, to ease updating. All unused fields should be sent as zeroreturn. RESV ERROR MESSAGE ARRIVES A RERR message arrives through the (real) incoming interface In_If. o If there is no path state for SESSION, drop the RERR message andignored on receipt. A.1 SESSION Class SESSION Class = 1.return. oIPv4/UDP SESSION object: Class = 1, C-TypeIf the Error Code =1 +-------------+-------------+-------------+-------------+ | IPv4 DestAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | Protocol Id | Flags | DstPort | +-------------+-------------+-------------+-------------+ o IP/UDP SESSION object: Class = 1, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 DestAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Protocol Id | Flags | DstPort | +-------------+-------------+-------------+-------------+ DestAddress The IP unicast01 (Admission Control failure), do special processing as follows: 1. Find ormulticast destination address ofcreate a Blockade State Block (BSB), in thesession. This parameter mustfollowing style-dependent manner. For WF (wildcard) style, there will besupplied. Protocol Id The IP Protocol Identifier for the data flow. This parameter mustone BSB per (session, PHOP) pair. For FF style, there will besupplied. Braden, Zhang, et al. Expiration: May 1996 [Page 82] Internet Draft RSVP Specification November 1995 Flags 0x01 = E_Police flag The E_Police flag is usedone BSB per (session, filter_spec) pair. Note that an FF style RERR message carries only one flow descriptor. For SE style, there will be one BSB per (session, filter_spec), for each filter_spec contained inPATH messages to determinetheeffective "edge"filter spec list of thenetwork,flow descriptor. 2. For each BSB in the preceding step, set (or replace) its FLOWSPEC Qb with FLOWSPEC from the message, and set (or reset) its timer Tb tocontrol traffic policing.Kb*R seconds [Section 3.4]. If thesender hostBSB isnot itself capable of traffic policing, it willnew, setthis bit on in PATH messages it sends. The first node whose RSVP is capable of traffic policing will do so (if appropriateits PHOP value, and set its Sender_Template equal to theservice) and turnappropriate filter_spec from the message. 3. Partially execute the RESV REFRESH event sequence shown below, for the previous hop PHOP. In particular, execute the refresh sequence with the B_Merge flag off.[It might make more sense to includeIf thisflagresults inADSPEC object.] DstPort The UDP/TCP destination port forno refresh messages being generated, because all matching reservations are blockaded, do not turn B_Merge on but instead exit thesession. Zero may be used to indicate a `wildcard', i.e., any port. Other SESSION C-Types could be definedrefresh sequence and return here. o For all RERR messages, execute the following for each RSB for this session whose OI differs from In_If and whose Filter_spec_list has at least one filter spec in common with thefuture to support other demultiplexing conventionsFILTER_SPEC* in thetransport- layer or application layer.RERR message. For WF style, Braden, Zhang, et al. Expiration:MayAugust 1996 [Page83]81] Internet Draft RSVP SpecificationNovember 1995 A.2 RSVP_HOP Class RSVP_HOP class = 3. o IPv4 RSVP_HOP object: Class = 3, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 Next/Previous Hop Address | +-------------+-------------+-------------+-------------+ | Logical Interface Handle | +-------------+-------------+-------------+-------------+ o IP6 RSVP_HOP object: Class = 3, C-TypeFebruary 1996 empty FILTER_SPEC* structures are assumed to match. 1. If Error_Code =2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Next/Previous Hop Address + | | + + | | +-------------+-------------+-------------+-------------+ | Logical Interface Handle | +-------------+-------------+-------------+-------------+ This object provides01 and theIP addressInPlace flag is 1 and one or more of theinterface through which the last RSVP-knowledgeable hop forwarded this message. The Logical Interface Handle isBSB's found/created above has a32-bit number which may be used to distinguish logical outgoing interfaces as describedQb that is strictly greater than Flowspec inSection 3.2; it should be identically zerothe RSB, then continue with the next matching RSB, ifthereany. 2. If NHOP in the RSB isno logical interface handle. Braden, Zhang, et al. Expiration: May 1996 [Page 84] Internet Draft RSVP Specification November 1995 A.3 INTEGRITY Class INTEGRITY class =the local API, then: - If the FLOWSPEC in the RERR message is strictly greater than the RSB Flowspec, then turn on the NotGuilty flag in the ERROR_SPEC. - Deliver an error upcall to application: Call: <Upcall_Proc>( session-id, RESV_ERROR, Error_code, Error_value, Node_Addr, Error_flags, Flowspec, Filter_Spec_List, [Policy_data] ) and continue with the next RSB. 3. If the style has wildcard sender selection, use the SCOPE object SC.In from the RERR message to construct a SCOPE object SC.Out to be forwarded. SC.Out should contain those sender addresses that appeared in SC.In and that route to OI [LIH?], as determined by scanning the PSB's. If SC.Out is empty, continue with the next RSB. 4.See draft-ietf-rsvp-md5-00.txt. A.4 TIME_VALUES Class TIME_VALUES class =Create a new RERR message containing the error flow descriptor and send to the NHOP address specified by the RSB. Include SC.Out if the style has wildcard sender selection. 5. Continue with the next RSB. oTIME_VALUES Object: Class = 5, C-Type = 1 +-------------+-------------+-------------+-------------+ | Refresh Period | +-------------+-------------+-------------+-------------+ Refresh Period The refresh timeout period R used to generate this message;Drop the RERR message and return. RESV CONFIRM ARRIVES o If the (unicast) IP address found inmilliseconds.the RESV_CONFIRM object in the RACK message matches an interface of the node, a confirmation upcall is made to the matching Braden, Zhang, et al. Expiration:MayAugust 1996 [Page85]82] Internet Draft RSVP SpecificationNovember 1995 A.5 ERROR_SPEC Class ERROR_SPEC class = 6.February 1996 application: Call: <Upcall_Proc>( session-id, RESV_CONFIRM, Error_code, Error_value, Node_Addr, LUB-Used, nlist, Flowspec, Filter_Spec_List, NULL, NULL ) oIPv4 ERROR_SPEC object: Class = 6, C-Type = 1 +-------------+-------------+-------------+-------------+ | IP4 Error Node Address (4 bytes) | +-------------+-------------+-------------+-------------+ | Flags | Error Code | Error Value | +-------------+-------------+-------------+-------------+ o IP6 ERROR_SPEC object: Class = 6, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Error Node Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Flags | Error Code | Error Value | +-------------+-------------+-------------+-------------+ Error Node Address The IPOtherwise, the RACK message is forwarded immediately to the addressofin thenodeIP address inwhichits RESV_CONFIRM object. o Drop theerror was detected. Flags 0x01 = LUB-UsedRACK message and return. UPDATE TRAFFIC CONTROL Theuse of this flagsequence isdescribed in section 3.1.5. Error Code A one-octet error description. Error Value A two-octet field containing additional information aboutinvoked by theBraden, Zhang, et al. Expiration: May 1996 [Page 86] Internet Draft RSVP Specification November 1995 error. Its contents depend uponPATH MESSAGE ARRIVES or theError Type. The values for Error CodeRESV MESSAGE ARRIVES sequence, to (re-)calculate andError Value are definedadjust the local traffic control state inAppendix B. A.6 SCOPE Class SCOPE class = 7. This object contains a list of IP addresses, used for routing messagesaccordance withwildcard scope without loops. The addresses must be listed in ascending numerical order.the current reservation and path state. If the result is to modify the traffic control state, this sequence turns on the Resv_Refresh_Needed flag. oIPv4 SCOPE List object: Class = 7, C-Type = 1 +-------------+-------------+-------------+-------------+ | IP4 Src Address (4 bytes) | +-------------+-------------+-------------+-------------+ // // +-------------+-------------+-------------+-------------+ | IP4 Src Address (4 bytes) | +-------------+-------------+-------------+-------------+ o IP6 SCOPE list object: Class = 7, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ // // +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+Compute the traffic control parameters using the following steps. 1. Consider the set of RSB's matching SESSION and OI from the message. - Compute the effective kernel flowspec, TC_Flowspec, as the maximum/LUB of the FLOWSPEC values in these RSB's. - Compute the effective traffic control filter spec (list) TC_Filter_Spec*, by merging the Filter_spec_lists from these RSB's. 2. Scan all RSB's matching session and Filtss, for all OI. Set TC_B_Police_flag on if TC_Flowspec is smaller than, or incomparable to, any FLOWSPEC in those RSB's. 3. Locate the set of PSBs (senders) whose SENDER_TEMPLATEs match Filter_spec_list in the active RSB and whose OutInterface_list includes OI. 4. Set TC_E_Police_flag on if any of these PSBs have their E_Police flag on. Set TC_M_Police_flag on if it is a shared style and there is more than one PSB in Braden, Zhang, et al. Expiration:MayAugust 1996 [Page87]83] Internet Draft RSVP SpecificationNovember 1995 A.7 STYLE Class STYLE class = 8. o STYLE object: Class = 8, C-Type = 1 +-------------+-------------+-------------+-------------+ | Option Vector | +-------------+-------------+-------------+-------------+ Option Vector AFebruary 1996 the set. 5. Compute Path_Te as the sum of the SENDER_TSPEC objects in this set ofbit fields giving valuesPSBs. o Search forthe reservation options.a TCSB matching SESSION and OI; for distinct style (FF), it must also match Filter_spec_list. Ifnew options are addednone is found, create a new TCSB. o If TCSB is new: 1. Store TC_Flowspec, TC_Filter_Spec*, Path_Te, and the police flags into TCSB. 2. Turn the Resv_Refresh_Needed flag on and make the traffic control call: Rhandle = TC_AddFlowspec( OI, TC_Flowspec, Path_Te, police_flags) 3. If this call succeeds, record Rhandle in thefuture, corresponding fieldsTCSB and, for each filter_spec F in TC_Filter_Spec*, call: Fhandle = TC_AddFilter( OI, Rhandle, Session, F) and record the returned Fhandle in theoption vector will be assigned fromTCSB. 4. Otherwise, build and send a RERR message specifying "Admission control failed" and with theleast-significant end.InPlace flag off. o Ifa node doesTCSB is notrecognize a style ID, it may interpret as much of the option vector as it can, ignoringnewfields that may have been defined. The option vector bits are assigned (frombut theleft) as follows: 27 bits: Reserved 2 bits: Sharing control 00b: Reserved 01b: Distinct reservations 10b: Shared reservations 11b: Reserved 3 bits: Sender selection control 000b: Reserved 001b: Wildcard 010b: Explicit 011b - 111b: Reserved The low order bits ofTC_Flowspec, Path_Te, and/or police flags just computed differ from corresponding values in theoption vector are determined byTCSB, then: 1. Turn thestyle, as follows:Resv_Refresh_Needed flag on and make the traffic control call: TC_ModFlowspec( OI, Rhandle, TC_Flowspec, Path_Te, police_flags ) 2. If this call fails, build and send a RERR message Braden, Zhang, et al. Expiration:MayAugust 1996 [Page88]84] Internet Draft RSVP SpecificationNovember 1995 WF 10001b FF 01010b SE 10010b Braden, Zhang, et al. Expiration: MayFebruary 1996[Page 89] Internet Draft RSVP Specification November 1995 A.8 FLOWSPEC Class FLOWSPEC class = 9. o Class = 9, C-Type = 1: int-serv flowspec The contents of this object will be specified in documents prepared byspecifying "Admission control failed" and with theint-serv working group.InPlace bit on. If the call succeeds, update the TCSB with the new values. oClass = 9, C-Type = 254: Unmerged Flowspec List +-------------+-------------+-------------+-------------+ | | // FLOWSPEC object 1 // | | +-------------+-------------+-------------+-------------+ | | // FLOWSPEC object 2 // | | +-------------+-------------+-------------+-------------+ // // // // +-------------+-------------+-------------+-------------+ | | // FLOWSPEC object k // | | +-------------+-------------+-------------+-------------+ ThisIf the TCSB isa container C-Type, used to enclose anot new but the TC_Filter_Spec* just computed differ from the FILTER_SPEC* in the TCSB, then: 1. Make an appropriate set ofFLOWSPEC objects that could not be merged atTC_DelFilter and TC_AddFilter calls to transform thenext hop downstream because they include unrecognized C-Types. The nodeFilter_spec_list in the TCSB into the new TC_Filter_Spec*. o Return to the event sequence thatreceivesinvoked thisobjectone. PATH REFRESH This sequence sends a path refresh for a particular sender, i.e., a PSB. This sequence maymerge those it recognizes and forwardbe entered by either therest in another Unmerged Flowspec List object. Braden, Zhang, et al. Expiration: May 1996 [Page 90] Internet Draft RSVP Specification November 1995 A.9 FILTER_SPEC Class FILTER_SPEC class = 10. o IPv4 FILTER_SPEC object: Class = 10, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 SrcAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | ////// | ////// | SrcPort | +-------------+-------------+-------------+-------------+expiration of the path refresh timer or directly as the result of the Path_Refresh_Needed flag being turned on during the processing of a received PATH message. oIP6 FILTER_SPEC object: Class = 10, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 SrcAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | ////// | ////// | SrcPort | +-------------+-------------+-------------+-------------+ o IP6 Flow-label FILTER_SPEC object: Class = 10, C-Type = 3 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 SrcAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | /////// | Flow Label (24 bits) | +-------------+-------------+-------------+-------------+ SrcAddress TheCompute the IPsource addressTTL for the PATH message as one less than the maximum of the TTL values from the senders included in the message. However, if the result is zero, return without sending the PATH message. o Insert TIME_VALUES and PHOP objects into the PATH message being built. o Create a senderhost, or zerodescriptor containing the SENDER_TEMPLATE, SENDER_TSPEC, and POLICY_DATA objects, if present in the PSB, and pack it into the PATH message being built. o Pass any ADSPEC and SENDER_TSPEC objects present in the PSB toindicatethe traffic control call TC_Advertise. Insert the modified ADSPEC object that is returned into the PATH message being built. o If the PSB has the E_Police flag on and if interface OI is not capable of policing, turn the E_Police flag on in the PATH message being built. o Send a`wildcard'.copy of the PATH message to each interface in OutInterfact_list. Before sending each copy, insert into its PHOP object the interface address and the LIH for the interface. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page91]85] Internet Draft RSVP SpecificationNovember 1995 SrcPort The UDP/TCP source port forFebruary 1996 RESV REFRESH This sequence sends asender, or zero to indicatereservation refresh towards a`wildcard' (i.e., any port). Flow Label A 24-bit Flow Label, defined in IP6.particular previous hop with IP address PH. Thisvaluesequence may beusedentered by either thepacket classifier to efficiently identify the packets belonging toexpiration of aparticular (sender->destination) data flow. Braden, Zhang, et al. Expiration: May 1996 [Page 92] Internet Draft RSVP Specification November 1995 A.10 SENDER_TEMPLATE Class SENDER_TEMPLATE class = 11. o IPv4/UDP SENDER_TEMPLATE object: Class = 11, C-Type = 1 Definition same as IPv4/UDP FILTER_SPEC object. o IP6/UDP SENDER_TEMPLATE object: Class = 11, C-Type = 2 Definition samereservation refresh timer or directly asIP6/UDP FILTER_SPEC object. A.11 SENDER_TSPEC Class SENDER_TSPEC class = 12. o Token Bucket SENDER_TSPEC object: Class = 12, C-Type = 1 The contentsa result ofthis object will be specified in documents preparedthe Resv_Refresh_Needed flag being turned on by processing a RESV or RTEAR message. In general, this sequence considers each of theint-serv working group. Braden, Zhang, et al. Expiration: May 1996 [Page 93] Internet Draft RSVP Specification November 1995 A.12 ADSPEC Class ADSPEC class = 13.PSB's with PHOP address PH. For a given PSB, it scans the RSBs for matching reservations and merges the styles, FLOWSPECs and Filter_spec_list's appropriately. It then builds a RESV message and sends it to PH. Thecontentsdetails depend upon the attributes ofthis object will be specifiedthe style(s) included indocuments prepared bytheint-serv working group. Braden, Zhang, et al. Expiration: May 1996 [Page 94] Internet Draft RSVP Specification November 1995 A.13 POLICY_DATA Class POLICY_DATA class = 14.reservations. oType 1 POLICY_DATA object: Class = 14, C-Type = 1 The contents of thisCreate an output message containing INTEGRITY (if supported), SESSION, RSVP_HOP, and TIME_VALUES objects. o Determine the style for these reservations from the first RSB for the session, and move the STYLE object into the proto-message. (Note that the present set of styles arefor further study.never themselves merged; if future styles can be merged, these rules will become more complex). oUnmerged POLICY_DATA object: Class = 14, C-Type = 254 ThisIf style is wildcard and if there are PSB's from more than one PHOP and if the multicast routing protocol does not use shared trees, set the Need_Scope flag on, otherwise set it off. o Select each sender PSB whose PHOP has address PH. 1. Set local flag B_Merge off. 2. Select all RSB's whose Filter_spec_list's match the SENDER_TEMPLATE object in the PSB and whose OI appears in the OutInterface_list of the PSB. 3. If B_Merge flag is off then ignore acontainer for a list of POLICY_DATA objects (noneblockaded RSB, as follows. - Select BSB's that match this RSB; if any ofwhich may have C-Type = 254). The contained objects havethese BSB's has a Qb that is notyet been merged. +-------------+-------------+-------------+-------------+ | | // POLICY_DATA objectstrictly larger than RSB Flowspec, then continue processing with the next RSB. However, if steps 1// | | +-------------+-------------+-------------+-------------+ | | // POLICY_DATA objectand 2// | | +-------------+-------------+-------------+-------------+ // // // // +-------------+-------------+-------------+-------------+ | | // POLICY_DATA object k // | | +-------------+-------------+-------------+-------------+result in finding that all RSB's matching this PSB are blockaded, then: Braden, Zhang, et al. Expiration:MayAugust 1996 [Page95]86] Internet Draft RSVP SpecificationNovember 1995 A.14 RESV_CONFIRM Class RESV_CONFIRM class = 15. o IPv4 RESV_CONFIRM object: Class = 15, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 Receiver Address (4 bytes) | +-------------+-------------+-------------+-------------+ o IP6 RESV_CONFIRM object: Class = 15, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Receiver Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ Braden, Zhang, et al. Expiration: MayFebruary 1996[Page 96] Internet Draft RSVP Specification November 1995 APPENDIX B. Error Codes and Values The following Error Codes are defined. o Error Code = 01: Admission failure Reservation rejected by admission control. For- If thisError Code,RESV REFRESH sequence was invoked from RESV ERROR RECEIVED, then return now to the16 bits oflatter. - Otherwise, turn on theError Value field are: ussr cccc cccc cccc whereB_Merge flag and restart with this procedure step 1. above. 4. Merge thebits are: u = 0: RSVP rejectsflowspecs, as follows: - If B_Merge flag is off, compute themessage without updating local state. u = 1: RSVP may use message to update local state and forwardLUB over themessage. ss = 00: Low order 12 bits containFlowspec objects of this set of RSB's. While computing the LUB, check for aglobally-defined sub-code (values listed below). ss = 10: Low order 12 bits containRESV_CONFIRM object in each RSB. If asub-codeRESV_CONFIRM object is found: - If the FLOWSPEC in that RSB isspecific to local organization. RSVPlarger than all other (non-blockaded) flowspecs being compared, then save this RESV_CONFIRM object for forwarding. - Otherwise (the corresponding FLOWSPEC is notexpected to be able to interpret this except asthe largest) then create and send anumeric value. ss = 11: Low order 12 bits contain a sub-code that is specificRACK message containing the RESV_CONFIRM object to theservice. RSVPaddress in the RESV_CONFIRM object. Include the RESV_CONFIRM object in the RACK message. The RACK message should also include an ERROR_SPEC object whose Error_Node parameter isnot expected to be able to interpretIP address of OI from the RSB. - Then delete the RESV_CONFIRM object from the RSB. - Otherwise (B_Merge flag is on), compute the GLB over the Flowspec objects of thisexcept asset of RSB's. While computing the GLB, check for anumeric value. SinceRESV_CONFIRM object in each RSB. If one is found, delete it. 5. If thetraffic control mechanism might substituteNeed_Scope flag is on, compute adifferent service, this encoding may include some representationnew SCOPE object as the union of theserviceSCOPE objects found inuse. r: Reserved bit, should be zero. cccc cccc cccc: 12 bit code.the RSB's. 6. Merge the F_POLICY_DATA objects from the RSB's. 7. (All matching RSB's have been processed). Thefollowing globally-defined sub-codes may appear innext step depends upon thelow- order 12 bits when ss = 00:style attributes. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page97]87] Internet Draft RSVP SpecificationNovember 1995 - Sub-code = 1: Delay bound cannot be met - Sub-code = 2: Requested bandwidth unavailable - Sub-code = 11: Service conflict - Sub-code = 12: Service unsupported Traffic control can provide neither the requested service nor an acceptable replacement. - Sub-code = 13: Bad Flowspec or Tspec value Unreasonable request. High order bit u = 0, i.e., RSVP will rejectFebruary 1996 8. Merge themessage. - Sub-code = 14: Rmax value too small. Rmax would result in excessive refresh overhead. o Error Code = 02: Administrative rejection Reservation has been rejected for administrative reasons. The high order 4 bitsmatching FILTER_SPEC objects from this set of RSB's. For explicit sender selection (FF, SE) styles, use theError Value field are assignedSENDER_TEMPLATE asfor Error Code = 01 (above). For Error Code = 02,thefollowing global sub-codes are defined: - Sub-code = 1: Required credential(s) not presented. - Sub-code = 2: Request too large Reservation request exceeds allowed value for this user class. - Sub-code = 3: Insufficient quota or balance. - Sub-code = 4: Administrative preemption o Error Code = 03: No path informationmerged FILTER_SPEC; forthis Resv RSVP should reject the message. o Error Code = 04: Nowildcard senderinformation for this Resv Thereselection (WF) style, there ispath information, but it does not include the sender specified in one ofno filter spec to be merged. Distinct reservation (FF) style Use theFilterspecs listed inSender_Template as theResv message. RSVP should rejectmerged FILTER_SPEC. Pack themessage. Braden, Zhang, et al. Expiration: May 1996 [Page 98] Internet Draft RSVP Specification November 1995 o Error Code = 05: Ambiguous path Sender port appears both zero and non-zero in same session. RSVP should rejectmerged (FLOWSPEC, FILTER_SPEC, F_POLICY_DATA) triplet into themessage. o Error Code = 06: Ambiguous filter spec Filter spec matches more than one sender, in a style that requiresmessage as aunique match. RSVP should reject the message. o Error Code = 07: Conflicting or unknown style Reservation style conflicts with style(s) of existingflow descriptor. Shared wildcard reservationstate, or it(WF) style There isunknown. If the high-order bitno merged FILTER_SPEC. Merge (take the maximum of) the merged FLOWSPECS from the RSB's, across all PSB's for PH. Shared distinct reservation (SE) style Using the Sender_Template as the merged FILTER_SPEC, form the union ofError Value is zero, RSVP should rejectthemessage. o Error Code = 08: Conflicting dest port SessionsFILTER_SPECS obtained from the RSB's. Merge (take the maximum of) the merged FLOWSPECS from the RSB's, across all PSB's forsame destination address and protocol have appeared with both zero and non-zero dest port fields. o Error Code = 09: Conflicting source port The source portPH. 9. If the Need_Scope flag isnon-zero in a filter spec oron, remove from the merged SCOPE object all sendertemplateaddresses that do not match the set of PSB's fora session with destination port zero. o Error Code = 11: Missing required object RSVP was unable to find or construct required object data from message. Error Value will be Class-NumPH, and all senders addresses that are local. If the resulting set ismissing. RSVPempty, no RESV shouldrejectbe forwarded to this PHOP; return. Otherwise (set is not empty), move the new SCOPE object into the message. oError Code = 12: Unknown object class Error Value will contain 16-bit value composed of (Class-Num, C-Type) of unknown object. This error should be sent only if RSVP(All PSB's have been processed). If a shared reservation style isgoing to rejectbeing built, move the final merged FLOWSPEC, F_POLICY_DATA, and FILTER_SPEC (if SE) objects into the message. oError Code = 13: UnknownIf a RESV_CONFIRM objectC-Type Error Value will contain 16-bit value composed of (Class-Num, C-Type) of object. This error should be sent only if RSVP is going to rejectwas saved earlier, copy it into themessage.new RESV message and delete it from the RSB in which it was found. oError Code = 14: Object error A non-specific error indicating bad format or contents of an object. The Error Value willSet the RSVP_HOP object in the message to contain16-bits value (Class-Num,the Braden, Zhang, et al. Expiration:MayAugust 1996 [Page99]88] Internet Draft RSVP SpecificationNovember 1995 C-Type)February 1996 IncInterface address through which it will be sent and the LIH fromheader of bad object. RSVP should reject(one of) themessage.PSB's. oError Code = 21: Traffic Control error Some system error was detected and reported bySend thetraffic control modules.message to the address PH. PATH LOCAL REPAIR TheError Value will containsequence is entered when RSVP learns from routing that the set of outgoing interfaces for some destination (G,DstPort) has changed. o Wait for asystem-specific value giving more information aboutdelay time of W seconds [Section 3.5]. o For each session that exists for destination IP address G, execute theerror.PATH REFRESH event sequence above for each sender (PSB) for that session. 5. Acknowledgments The design of RSVP isnot expected to be able to interpret this value. o Error Code = 22: RSVP System error The Error Value field will provide implementation-dependent information onbased upon research performed in 1992-1993 by a collaboration including Lixia Zhang (Xerox PARC), Deborah Estrin (USC/ISI), Scott Shenker (Xerox PARC), Sugih Jamin (USC/Xerox PARC), and Daniel Zappala (USC). Sugih Jamin developed theerror.first prototype implementation of RSVPis not expected to be able to interpret this value. Braden, Zhang, et al. Expiration:and successfully demonstrated it in May1996 [Page 100] Internet Draft RSVP Specification November 1995 APPENDIX C. UDP Encapsulation An RSVP implementation will generally require the ability to perform "raw" network I/O, i.e., to send1993. Shai Herzog, andreceive IP datagrams using protocol 46. However, some important classeslater Steve Berson, continued development ofhost systems may not support raw network I/O. To use RSVP, such hosts must encapsulateRSVPmessages in UDP. The basic UDP encapsulation scheme makes two assumptions: 1. All hosts are capableprototypes. Since 1993, many members ofsendingthe Internet research community have contributed to the design andreceiving multicast packets. 2. The first/last-hop routers are RSVP-capable. A methoddevelopment ofrelaxing the second assumption is given later. Let Hu be a "UDP-only" host that requires UDP encapsulation,RSVP; these include (in alphabetical order) Steve Berson, Bob Braden, Lee Breslau, Dave Clark, Deborah Estrin, Shai Herzog, Craig Partridge, Scott Shenker, John Wroclawski, andHrDaniel Zappala. In addition, ahost that can do raw network I/O. The UDP encapsulation scheme must allow RSVP interoperation among an arbitrary topologynumber ofHr hosts, Hu hosts,host androuters. RESV, RERR, RTEAR,router vendors have made valuable contributions, particularly Fred Baker (Cisco), Mark Baugher (Intel), Don Hoffman (Sun), Steve Jakowski (NetManage), John Krawczyk (Bay Networks), and Bill Nowicki (SGI). Ron Frederick, Bobby Minnear, Eve Schooler, andPERR messages are sent to unicast addresses learned from the path or reservation state in the node. If the node keeps trackGarrett Wollman did early interfacing ofwhich previous hopsmulticast applications to RSVP. Steve Deering, Bill Fenner, andwhich interfaces need UDP encapsulation, these messages message can be sent using UDP encapsulation when necessary. OnAjit Thyagarajan helped with theother hand, PATHinterface between RSVP andPTEAR messages are send to the unicast ormulticastdestination addressrouting. Braden, Zhang, et al. Expiration: August 1996 [Page 89] Internet Draft RSVP Specification February 1996 APPENDIX A. Object Definitions C-Types are defined for thesession. The table in Figure 12 shows the basic rules for UDP encapsulation of such messages. Undertwo Internet address families IPv4 and IP6. To accommodate other address families, additional C-Types could easily be defined. These definitions are contained as an Appendix, to ease updating. All unused fields should be sent as zero and ignored on receipt. A.1 SESSION Class SESSION Class = 1. o IPv4/UDP SESSION object: Class = 1, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 DestAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | Protocol Id | Flags | DstPort | +-------------+-------------+-------------+-------------+ o IP/UDP SESSION object: Class = 1, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 DestAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Protocol Id | Flags | DstPort | +-------------+-------------+-------------+-------------+ DestAddress The IP unicast or multicast destination address of the`Send' column,session. This field must be non-zero. Protocol Id The IP Protocol Identifier for thenotation is `mode(destaddr, destport, TTL)', where TTLdata flow. This field must be non-zero. Braden, Zhang, et al. Expiration: August 1996 [Page 90] Internet Draft RSVP Specification February 1996 Flags 0x01 = E_Police flag The E_Police flag is used in PATH messages to determine theIP-layer hop count.effective "edge" of the network, to control traffic policing. If the sender host is not itself capable of traffic policing, it will set this bit on in PATH messages it sends. The`Receive' column showsfirst node whose RSVP is capable of traffic policing will do so (if appropriate to thegroup thatservice) and turn the flag off. 0x10 = Non_RSVP flag The Non_RSVP flag isjoined and, where relevant,turned on in theUDP Listen port.SESSION object of a PATH message whenever the RSVP daemon detects that the previous RSVP hop included one or more non-RSVP-capable routers. This flag is forwarded hop-by-hop and passed to a receiver application. If it is on, it indicates to the application that even a successful reservation request may not install the requested QoS at every node along the path. 0x20 = Maybe_RSVP flag The Maybe_RSVP flag is turned on in the SESSION object of a PATH message whenever the RSVP daemon is unable to ascertain whether or not the previous hop included one or more non-RSVP-capable routers. This flag is forwarded hop-by-hop and passed to a receiver application. If it is on and the Non_RSVP flag is off, the application cannot tell whether or not a successful reservation request may not install the requested QoS at every node along the path. DstPort The UDP/TCP destination port for the session. Zero may be used to indicate `none'. Other SESSION C-Types could be defined in the future to support other demultiplexing conventions in the transport- layer or application layer. Braden, Zhang, et al. Expiration: August 1996 [Page 91] Internet Draft RSVP Specification February 1996 A.2 RSVP_HOP Class RSVP_HOP class = 3. o IPv4 RSVP_HOP object: Class = 3, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 Next/Previous Hop Address | +-------------+-------------+-------------+-------------+ | Logical Interface Handle | +-------------+-------------+-------------+-------------+ o IP6 RSVP_HOP object: Class = 3, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Next/Previous Hop Address + | | + + | | +-------------+-------------+-------------+-------------+ | Logical Interface Handle | +-------------+-------------+-------------+-------------+ This object provides the IP address of the interface through which the last RSVP-knowledgeable hop forwarded this message. The Logical Interface Handle is a 32-bit number which may be used to distinguish logical outgoing interfaces as described in Section 3.2; it should be identically zero if there is no logical interface handle. Braden, Zhang, et al. Expiration: August 1996 [Page 92] Internet Draft RSVP Specification February 1996 A.3 INTEGRITY Class INTEGRITY class = 4. See [Baker96]. A.4 TIME_VALUES Class TIME_VALUES class = 5. o TIME_VALUES Object: Class = 5, C-Type = 1 +-------------+-------------+-------------+-------------+ | Refresh Period R | +-------------+-------------+-------------+-------------+ Refresh Period The refresh timeout period R used to generate this message; in milliseconds. Braden, Zhang, et al. Expiration: August 1996 [Page 93] Internet Draft RSVP Specification February 1996 A.5 ERROR_SPEC Class ERROR_SPEC class = 6. o IPv4 ERROR_SPEC object: Class = 6, C-Type = 1 +-------------+-------------+-------------+-------------+ | IP4 Error Node Address (4 bytes) | +-------------+-------------+-------------+-------------+ | Flags | Error Code | Error Value | +-------------+-------------+-------------+-------------+ o IP6 ERROR_SPEC object: Class = 6, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Error Node Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Flags | Error Code | Error Value | +-------------+-------------+-------------+-------------+ Error Node Address The IP address of the node in which the error was detected. Flags 0x01 = InPlace This flag is used only for an ERROR_SPEC object in a RERR message. If it on, this flag indicates that there was, and still is, a reservation in place at the failure point. 0x02 = NotGuilty This flag is used only for an ERROR_SPEC object in a RERR message, and it is only set in the interface to the Braden, Zhang, et al. Expiration: August 1996 [Page 94] Internet Draft RSVP Specification February 1996 receiver application. If it on, this flag indicates that the FLOWSPEC that failed was strictly greater than the FLOWSPEC requested by this receiver. Error Code A one-octet error description. Error Value A two-octet field containing additional information about the error. Its contents depend upon the Error Type. The values for Error Code and Error Value are defined in Appendix B. Braden, Zhang, et al. Expiration: August 1996 [Page 95] Internet Draft RSVP Specification February 1996 A.6 SCOPE Class SCOPE class = 7. This object contains a list of IP addresses, used for routing messages with wildcard scope without loops. The addresses must be listed in ascending numerical order. o IPv4 SCOPE List object: Class = 7, C-Type = 1 +-------------+-------------+-------------+-------------+ | IP4 Src Address (4 bytes) | +-------------+-------------+-------------+-------------+ // // +-------------+-------------+-------------+-------------+ | IP4 Src Address (4 bytes) | +-------------+-------------+-------------+-------------+ o IP6 SCOPE list object: Class = 7, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ // // +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ Braden, Zhang, et al. Expiration: August 1996 [Page 96] Internet Draft RSVP Specification February 1996 A.7 STYLE Class STYLE class = 8. o STYLE object: Class = 8, C-Type = 1 +-------------+-------------+-------------+-------------+ | Flags | Option Vector | +-------------+-------------+-------------+-------------+ Flags: 8 bits (None assigned yet) Option Vector: 24 bits A set of bit fields giving values for the reservation options. If new options are added in the future, corresponding fields in the option vector will be assigned from the least-significant end. If a node does not recognize a style ID, it may interpret as much of the option vector as it can, ignoring new fields that may have been defined. The option vector bits are assigned (from the left) as follows: 19 bits: Reserved 2 bits: Sharing control 00b: Reserved 01b: Distinct reservations 10b: Shared reservations 11b: Reserved 3 bits: Sender selection control 000b: Reserved 001b: Wildcard 010b: Explicit Braden, Zhang, et al. Expiration: August 1996 [Page 97] Internet Draft RSVP Specification February 1996 011b - 111b: Reserved The low order bits of the option vector are determined by the style, as follows: WF 10001b FF 01010b SE 10010b Braden, Zhang, et al. Expiration: August 1996 [Page 98] Internet Draft RSVP Specification February 1996 A.8 FLOWSPEC Class FLOWSPEC class = 9. o Class = 9, C-Type = 2: int-serv flowspec The contents of this object will be specified in documents prepared by the int-serv working group. Braden, Zhang, et al. Expiration: August 1996 [Page 99] Internet Draft RSVP Specification February 1996 A.9 FILTER_SPEC Class FILTER_SPEC class = 10. o IPv4 FILTER_SPEC object: Class = 10, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 SrcAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | ////// | ////// | SrcPort | +-------------+-------------+-------------+-------------+ o IP6 FILTER_SPEC object: Class = 10, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 SrcAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | ////// | ////// | SrcPort | +-------------+-------------+-------------+-------------+ o IP6 Flow-label FILTER_SPEC object: Class = 10, C-Type = 3 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 SrcAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | /////// | Flow Label (24 bits) | +-------------+-------------+-------------+-------------+ SrcAddress The IP source address for a sender host. Must be non-zero. Braden, Zhang, et al. Expiration: August 1996 [Page 100] Internet Draft RSVP Specification February 1996 SrcPort Thefollowing symbols are also used: o D is the DestAddressUDP/TCP source port forthe particular session. o G* isawell-known group address ofsender, or zero to indicate `none'. Flow Label A 24-bit Flow Label, defined in IP6. This value may be used by theform 224.0.0.x, i.e., a group that is limitedpacket classifier to efficiently identify thelocal connected network. [TO BE DEFINED]packets belonging to a particular (sender->destination) data flow. Braden, Zhang, et al. Expiration: August 1996 [Page 101] Internet Draft RSVP Specification February 1996 A.10 SENDER_TEMPLATE Class SENDER_TEMPLATE class = 11. oPu is the well-known UDP port for UDP encapsulation of RSVP: 3455.IPv4/UDP SENDER_TEMPLATE object: Class = 11, C-Type = 1 Definition same as IPv4/UDP FILTER_SPEC object. oRa is the IP addressIP6/UDP SENDER_TEMPLATE object: Class = 11, C-Type = 2 Definition same as IP6/UDP FILTER_SPEC object. A.11 SENDER_TSPEC Class SENDER_TSPEC class = 12. o Intserv SENDER_TSPEC object: Class = 12, C-Type = 1 The contents of this object are specified in service specification documents prepared by therouter interface `a'.int-serv working group. Braden, Zhang, et al. Expiration: August 1996 [Page 102] Internet Draft RSVP Specification February 1996 A.12 ADSPEC Class ADSPEC class = 13. oTr isIntserv ADSPEC object: Class = 13, C-Type = 2 The contents of this object are specified in service specification documents prepared by theTTL valueint-serv working group. Braden, Zhang, et al. Expiration: August 1996 [Page 103] Internet Draft RSVP Specification February 1996 A.13 POLICY_DATA Class POLICY_DATA class = 14. o Type 1 POLICY_DATA object: Class = 14, C-Type = 1 The contents ofthe specific PATH message.this object are for further study. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page101]104] Internet Draft RSVP SpecificationNovember 1995February 1996 A.14 RESV_CONFIRM Class RESV_CONFIRM class = 15. oRouter interface `a' is on the local network connected to Hu and Hr, while interface `b' is connected only to another router. RSVPIPv4 RESV_CONFIRM object: Class = 15, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 Receiver Address (4 bytes) | +-------------+-------------+-------------+-------------+ o IP6 RESV_CONFIRM object: Class = 15, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Receiver Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ Braden, Zhang, et al. Expiration: August 1996 [Page 105] Internet Draft RSVPNode Node Type Send Receive ___ __________ _____________ _______________ Hu UDP-only host UDP(G*,Pu,1) UDP(G*,Pu) or UDP(Ra,Pu,1) and UDP(D,Pu) [Note 1] [Note 3] Hr Raw-mode host UDP(G*,Pu,1) UDP(G*,Pu) and Raw(D,,Tr) and Raw() R Router Interface a: UDP(D,Pu,Tr) UDP(G*,Pu) [Note 2] and Raw(D,,Tr) and UDP(Ra,Pu) and Raw() Interface b: Raw(D,,Tr) Raw() Figure 12: UDP Encapsulation Rules for Path Messages [Note 1] Hu sends a PATH message to Ra only if session destination address D is unicast. [Note 2] R ignores PATH messages addressed to G* if D is unicast. (This is necessary to prevent routing and reservation anomalies). [Note 3] The DestAddress D is the IP address of Hu in this case. R and Hr send their PATH messages twice, once with UDP encapsulation and once in raw mode. In two cases (Hr -> RSpecification February 1996 APPENDIX B. Error Codes andHr -> Hr), each PATH message will be delivered twice.Values Thedestinationfollowing Error Codes maytake stepsappear in ERROR_SPEC objects and be passed toignore the duplicates, although this redundancy has no ill effect other than overhead for processing the extra messages. A routerend systems. Except where noted, these Error Codes maydetermine if its interface X needs UDP encapsulation by listeningappear only in RERR messages. o Error Code = 00: Confirmation This code is reserved forUDP-encapsulated PATH messages that were sent to either G* (multicast D) or touse in theaddressERROR_SPEC object ofinterface X (unicast D). There is onea RACK message. The Error Value will also be zero. o Error Code = 01: Admission Control failuremode forReservation request was rejected by Admission Control due to unavailable resources. For thisscheme: if no host onError Code, theconnected network acts as an16 bits of the Error Value field are: ssur cccc cccc cccc where the bits are: ss = 00: Low order 12 bits contain a globally-defined sub-code (values listed below). ss = 10: Low order 12 bits contain a organization-specific sub- code. RSVPsender, there willis not expected to beno PATH messagesable totrigger UDP encapsulation. Ininterpret this(unlikely) case, it willexcept as a numeric value. ss = 11: Low order 12 bits contain a service-specific sub-code. RSVP is not expected to benecessaryable toexplicitly configure UDP encapsulation oninterpret this except as a numeric value. Since thelocal network interfacetraffic control mechanism might substitute a different service, this encoding may include some representation of therouter. A UDP-only host Hu supporting unicast RSVP sessions must somehow knowservice in use. u = 0: RSVP rejects the message without updating local state. u = 1: RSVP may use message to update local state and forward the message. This means that the message is informational. Braden, Zhang, et al. Expiration:MayAugust 1996 [Page102]106] Internet Draft RSVP SpecificationNovember 1995 the address Ra, presumably by configuration. When a UDP-encapsulated packet is received,February 1996 r: Reserved bit, should be zero. cccc cccc cccc: 12 bit code. The following globally-defined sub-codes may appear in theIP TTL islow- order 12 bits when ssur = 0000: - Sub-code = 1: Delay bound cannot be met - Sub-code = 2: Requested bandwidth unavailable o Error Code = 02: Policy Control failure Reservation has been rejected for administrative reasons, for example, required credentials notavailable to the application on most systems. The RSVP daemon that receivessubmitted, insufficient quota or balance, or administrative preemption. This Error Code may appear in aUDP-encapsulated PATHPERR orPTEAR message should therefore use the Send_TTL fieldRERR message. Contents of theRSVP common header as the effective receive TTL. We have assumed that the first-hop RSVP-capable router R is on the directly-connected network. ThereError Value field areseveral possible approaches ifto be determined in the future. o Error Code = 03: No path information for this Resv message. No path state for this session. RESV message cannot be forwarded. o Error Code = 04: No sender information for this Resv message. There is path state for this session, but it does not include thecase. 1. Hu can send both unicast and multicast sessions to UDP(Ra,Pu,Ta). Here Ta mustsender matching some flow descriptor contained in the RESV message. RESV message cannot be forwarded. o Error Code = 05: Conflicting reservation style Reservation style conflicts with style(s) of existing reservation state. The Error Value field contains theTTL to exactly reach R. If Ta is too small,low-order 16 bits of thePATH message will not reach R. If Ta is too large, multicast routing in R will forwardOption Vector of theUDP packet intoexisting style with which theInternet until its hop count expires.conflict occurred. Thiswill turn on UDP encapsulation between routers within the Internet, causing bogus UDP traffic. The host Hu mustRESV message cannot beexplicitly configuredforwarded. o Error Code = 06: Unknown reservation style Reservation style is unknown. This RESV message cannot be forwarded. o Error Code = 07: Conflicting dest port Sessions for same destination address and protocol have appeared Braden, Zhang, et al. Expiration: August 1996 [Page 107] Internet Draft RSVP Specification February 1996 withRaboth zero andTa. 2. A particular host on the LAN connected to Hu could be designated as an "RSVP relay host". A relay host would listen on (G*,Pu)non-zero dest port fields. This Error Code may appear in a PERR or RERR message. o Error Code = 08: Ambiguous path Sender port appears both zero andforward anynon-zero in same session in a PATHmessages directly to R, although it would not bemessage. This Error Code may appear only in a PERR message. o Error Code = 09, 10, 11: (reserved) o Error Code = 12: Service preempted The service request defined by the STYLE object and the flow descriptor has been administratively preempted. For this Error Code, the 16 bits of the Error Value field are: ssur cccc cccc cccc Here thedata path.high-order bits ssur are as defined under Error Code 01. Therelay host would havefollowing globally-defined sub-codes may appear in the low-order 12 bits when ssur = 0000 are to beconfigured with Ra and Ta. APPENDIX D. Experimental and Open Issues D.1 Reservation Compatibility How strong isdefined in therequirement for compatibilityfuture. o Error Code = 13: Unknown object class Error Value contains 16-bit value composed ofreservations in different directions? For example, see Figure 10;(Class-Num, C- Type) of unknown object. This error shoulditbepossible to have incompatible reservation styles on the two interfaces? If R1 requests a WF reservation and R2 requests a FF reservation, itsent only if RSVP islogically possiblegoing tomakereject thecorresponding reservations onmessage, as determined by thetwo different interfaces. The current implementation does NOT allow this; instead, it prevents mixinghigh-order bits ofincompatible styles inthesame session onClass-Num. This Error Code may appear in anode, even if they are on different interfaces. D.2 Session Groups (Experimental) Section 1.2 explainedPERR or RERR message. o Error Code = 14: Unknown object C-Type Error Value contains 16-bit value composed of (Class-Num, C- Type) of object. o Error Code = 15-19: (reserved) o Error Code = 20: Reserved for API Error Value field contains an API error code, for an API error thata distinct destination address,was detected asynchronously andtherefore a distinct session, willmust beused for each of thereported via an upcall. o Error Code = 21: Traffic Control Error Braden, Zhang, et al.Expiration: May 1996 [Page 103] Internet Draft RSVP Specification November 1995 subflows in a hierarchically encoded flow. However, these separate sessions are logically related. For example it may be necessary to pass reservations for all subflows to AdmissionExpiration: August 1996 [Page 108] Internet Draft RSVP Specification February 1996 Reservation request was rejected by Traffic Controlat the same time (since it would be nonsensedue toadmit high frequency components but reject the baseband component ofthesession data). Such a logical grouping is indicated in RSVP by defining a "session group", an ordered set of sessions. To declare that a setformat or contents ofsessions form a session group, a receiver includes a data structure we call a SESSION_GROUP object inthe request. This RESV messagefor each of the sessions. A SESSION_GROUP object contains four fields: a reference address, a session group ID, a count,cannot be forwarded, anda rank. o The reference address is an agreed-upon choice from amongcontinued attempts would be futile. For this Error Code, theDestAddress values16 bits of thesessions in the group, for example the smallest numerically. o The session group ID is used to distinguish different groups withError Value field are: ss00 cccc cccc cccc Here thesame reference address. ohigh-order bits ss are as defined under Error Code 01. Thecount is the number of membersfollowing globally-defined sub-codes may appear in thegroup. o The rank,low order 12 bits (cccc cccc cccc) when ssr = 000: - Sub-code = 01: Service conflict Trying to merge two incompatible service requests. - Sub-code = 02: Service unsupported Traffic control can provide neither the requested service nor aninteger between 1acceptable replacement. - Sub-code = 03: Bad Flowspec value Mal-formed or unreasonable request. - Sub-code = 04: Bad Tspec value Mal-formed or unreasonable request. o Error Code = 22: Traffic Control System error A system error was detected andcount, is different in each session ofreported by thesession group.traffic control modules. TheSESSION_GROUP objects for all sessions in the groupError Value will contain a system-specific value giving more information about thesame values of the reference address, the session group ID, and the counterror. RSVP is not expected to be able to interpret this value.