view Side-By-Side changes
Internet Draft R. Braden, Ed. Expiration:JanuaryMay 1996 ISI File:draft-ietf-rsvp-spec-07.txtdraft-ietf-rsvp-spec-08.txt L. Zhang PARCD. EstrinS. Berson ISI S. Herzog ISIS. Jamin USCJ. Wroclaswki MIT Resource ReSerVation Protocol (RSVP) -- Version 1 Functional SpecificationJuly 7,November 22, 1995 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:JanuaryMay 1996 [Page 1] Internet Draft RSVP SpecificationJulyNovember 1995 Table of Contents 1. Introduction ........................................................5 1.1 Data Flows ......................................................8 1.2 Reservation Model ...............................................9 1.3 Reservation Styles ..............................................11 1.4 Examples of Styles ..............................................14 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 Errors and Acknowledgments ......................................25 2.7 Policy and Security .............................................27 2.8 Automatic RSVP Tunneling ........................................28 2.9 Host Model ......................................................28 3. RSVP Functional Specification .......................................30 3.1 RSVP Message Formats ............................................30 3.2 Sending RSVP Messages ...........................................42 3.3 Avoiding RSVP Message Loops .....................................44 3.4 Local Repair ....................................................48 3.5 Time Parameters .................................................48 3.6 Traffic Policing and TTL ........................................50 3.7 Multihomed Hosts ................................................51 3.8 Future Compatibility ............................................52 3.9 RSVP Interfaces .................................................55 4. Message Processing Rules ............................................65 APPENDIX A. Object Definitions .........................................82 APPENDIX B. Error Codes and Values .....................................97 APPENDIX C. UDP Encapsulation ..........................................101 APPENDIX D. Experimental and Open Issues ...............................103 Braden, Zhang, et al. Expiration: May 1996 [Page 2] Internet Draft RSVP Specification November 1995 What's ChangedSince Danvers IETFThe most important changes in this document from thersvp-spec-05rsvp-spec-07 draft are: oAdded fields to common header for linear fragmentation,The role andmoved all references to semantic fragmentation to Appendix D. o Added SE (Shared Explicit) style to all partsinterpretation of thedocument. o Further clarified reservation optionsIP Protocol Id is changed. The Protocol Id is now a required part of the session definition, andadded table in Figure 3. Defined option vector in STYLE object. o Renamed CREDENTIAL object class to POLICY_DATA object class,filter specs andrewrote section 2.5 to more fully express its intended usage. o Clarifiedsender templates now assume therelationship betweenProtocol Id from thewildcard scopesession rather than stating it explicitly. o A "soft" reservationoption and wildcards in individual FILTER_SPEC objects: wildcardconfirmation message isas wildcard does.added. oAdded SCOPE object definition and defined the rules for its useThe text states explicitly that an erroneous reservation message is not forwarded. A mechanism toprevent looping of wildcard-scope messages. o Added some mechanisms for handling backwards compatibility for future protocol extensions: (1) High bitallow a receiver more flexible control over forwarding ofobject class number; (2) unmerged FLOWSPEC C-Type; (3) unmerged POLICY_DATA C-Type.its messages after an admission control failure has not been designed and is therefore not included in this version of the protocol. oRewrote Section 4.3 on preventing looping. Included rulesA terminology confusion is eliminated. The term "scope" was used both forSCOPE object. o Specified rulesa set of senders and forlocal repair upon route change notification (Section 4.4). o Specifieda set of sender hosts. A new term "sender selection" is introduced foreach error type whether or notthestate information infirst, leaving "scope" for theerroneous packet is to be stored and forwarded.second. oDeleted the discussion of retransmittingThe FILTER_SPEC object is dropped from aTeardown message Q times; assume Q=1wildcard sender selection (WF) style reservation, which now selects "all senders" without qualification. o The StyleID byte issufficient.dropped from a STYLE object, as redundant. oMoved Session GroupsAn SE style flow descriptor is simplified toAppendix D, "Experimental and Open Issues". Session Groups should be revisited as part ofalarger context of cross-session reservations.single flowspec. oChanged common header format, removing Object Count (which was redundant)The IP Router Alert option is now required in PATH, PTEAR, andrearranging the remaining fields. Moved the two common header flags into objects: Entry-PoliceRACK messages. o The TIME_VALUES object is now required in RESV and PATH 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 intoSESSIONlocal repair. o Merging of SE with WF objects is no longer allowed. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page2]3] Internet Draft RSVP SpecificationJulyNovember 1995object and LUB-used into ERROR_SPEC object.oRevisedThe Rmax end-to-end bound on therulesrefresh rate R is removed, since its utility was unclear. o A rule forstate timeout (Section 4.5) and redefined the TIME_VALUES object format.randomizing refresh timeouts is included. oChanged the error message format: (1) removed required RSVP_HOP object from PERR and RERR messages; (2) specified more carefully what may appear in flow descriptor list of RERR messages. o Revised the definitions of error codes and error values, and moved them into a separate Appendix B. o No longer require CREDENTIAL (i.e., POLICY_DATA) match for teardown. o Revised routing of RERR messages to use SCOPE objects to avoid wildcard-induced looping. o Added LIH (logical interface handle) to RSVP_HOP object, for IP multicast tunnels. o SpecifiedThe suggestion thataddresses shouldTCP could besorted in SCOPE object.used for carrying RSVP state through a congested non-RSVP cloud is removed. oAdded two new upcall event typesSENDER_TSPECS are now required inthe API: reservation event and policy data event.PATH| messages. oGeneralized the generic traffic control calls slightly to allow multiple filter specs per flowspec, for SE style. This introduced aThere are newset of handles, called FHandle. Also addedsections on multihomed hosts (3.7) and future compatibility (3.8). The latter section makes clear that apreemption upcall. o Added route change notification to the generic interface to routing. o Updated themessageprocessing rules (Section 5).containing an object with unknown C-Type should be rejected. Any more forgiving treatment seems too complex. oRewroteAppendix C on UDPencapsulation.encapsulation is completely changed. oRemoved specification of FLOWSPEC object format (but int-serv working group has since reneged on promise to specify it).Some text was rearranged in Sections 1 and 2. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page3]4] Internet Draft RSVP SpecificationJulyNovember 1995 1. Introduction This document defines RSVP, a resource reservation setup protocol designed for an integrated services Internet [RSVP93,ISInt93].AOn behalf of an application data stream, a host uses the RSVP protocol to request a specific quality of service (QoS) from thenetwork, on behalf of an application data stream.network. RSVPis also used to deliverdelivers QoS requests to routers along the path(s) of the data stream andto maintainmaintains router and host state to provide the requested service.ThisRSVP requests willgenerally (butgenerally, although notnecessarily) require reservingnecessarily, result in resources being reserved along the data path. RSVPreservesrequests resources for simplex data streams, i.e., itreservesrequests resources in only onedirection on a link, so thatdirection. Therefore, a sender is logically distinct from areceiver. However,receiver, although the same application process may act as both a sender andreceiver. RSVP operates on top of IP,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 control protocol.As shown in Figure 1, an implementation of RSVP, likeLike the implementations of routing and management protocols, an implementation of RSVP will typically execute in the background, not in the data forwardingpath.path, as shown in Figure 1. RSVP is not itself a routing protocol;theRSVP is designed to operate with current and future unicast and multicast routing protocols. The RSVP daemon consults the local routing protocol(s) to obtain routes.Thus,In the multicast case, for example, a host sends IGMP messages to join a multicastgroup,group anditthen sends RSVP messages to reserve resources along the delivery path(s)fromof that group. Routing protocols determine where packets get forwarded; RSVPis designed to operateonly concerns withexisting and future unicast and multicast routing protocols.the QoS of those packets that are forwarded by routing. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page4]5] Internet Draft RSVP SpecificationJulyNovember 1995 HOST ROUTER _________________________ RSVP___________________________________________________ | |.---------------..--------------. | | _______ ______ |./ | ________ . ______ | | | | | | |./ || | . |||| | RSVP | |Applic-| | RSVP<-----<----/ ||Routing | -> RSVP<------><----------> | | App <----->daemon| | ||Protocol||daemon|||daemon| | | | | | | | || daemon <---->||| | | |_______| |___.__| | ||_ ._____||__.___|| |===|===============v=====| |===v=============v====||__.__.| | | | | | |data ..........| | .............| |===|===============|=====| |===|=============|====.======| | data .........| | | | ...........| .____ |____v_ ____v____| |_v__v_ _____v_______V_ ____V____ | | _V__V_ _____V___ | Adm.|| | | |Class-| | || data | |Class-| ||| data||Cntrl|| | |=> ifier|=> Packet=============>============> ifier|==> Packet|======>||_____|| data | |______| |Scheduler|| | |______||Scheduler|||Scheduler|===========> | |_________|| ||_________|||_________| | |_________________________||______________________||_____________________________| Figure 1: RSVP in Hosts and Routers Each router that is capable of resource reservation passes incoming data packetstothrough a packet classifier and then queues them as necessary in a packet scheduler. The packet classifier determines the route and the QoS class for each packet.TheThere is a schedulerallocatesfor each interface, to allocate resources for transmission on the particular link-layer medium used byeachthat 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.There are many possible ways this mightThis mapping to the link layer QoS may beaccomplished, andaccomplished in a number of possible ways; the details will be medium-dependent.The scheduler itself allocates packet transmission capacity onOn a QoS- passive medium such as a leasedline.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 groupmembership and to be consistent with IP multicast,membership, RSVP makes receivers responsible for requesting resource reservations [RSVP93]. A QoS request, which typicallyoriginating inoriginates from a receiver host application,will beis passed to the local RSVP implementation, shown as a user daemon in Figure 1. The RSVP protocolisthenused to passcarries the request to all the nodes (routers and hosts) along the reverse data path(s) to the data source(s). At each node, the RSVPprogram appliesdaemon communicates with a local decisionprocedure, called "admission control", to determine if it can supply theBraden, Zhang, et al. Expiration:JanuaryMay 1996 [Page5]6] Internet Draft RSVP SpecificationJulyNovember 1995 module, called "admission control", to determine if the router can supply the requested QoS. If the admission control check succeeds, the RSVPprogramdaemon sets parameterstoin the packet classifier and scheduler to obtain the desired QoS. If the admission controlfails at any node,check fails, the RSVP program immediately returns an errorindicationnotification 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 groupwill be constantly changing,and theRSVP design assumes that routertopology 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 therouters, in additionrouters. That is, RSVP sends periodic refresh messages toreceiver-initiation.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 anapplication (seeapplication; see AppendixA).A for more details. In summary, RSVP has the following attributes: o RSVPsupports multicast ormakes resource reservations for both unicastdata deliveryandadaptsmany-to- many multicast applications, adapting dynamically to changing group membership as well as changing routes. o RSVP issimplex.simplex, i.e., it reserves for data flow in one direction only. o RSVP is receiver-oriented, i.e., the receiver of a data flowis responsible for the initiationinitiates andmaintenance ofmaintains the resource reservation used for that flow. o RSVP maintains "soft state" in the routers,enabling it to gracefullyproviding graceful support for dynamic membership changes andautomatically adaptautomatic adaptation to routing changes. 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 1995 o 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 reservationBraden, Zhang, et al. Expiration: January 1996 [Page 6] Internet Draft RSVP Specification July 1995services. Section 2 presents an overview of the RSVP protocolmechanisms, whilemechanisms. Section 3gives examples of the services and mechanism. Section 4contains the functional specification ofRSVP.RSVP, while Section54 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 FlowsThe set ofRSVP defines a "session" as a dataflowsflow withthe same unicast or multicast destination constituteasession. RSVP treats each session independently. All data packets inparticular destination and transport-layer protocol. The destination for a particular sessionare directed tois generally defined by DestAddress, thesameIP destination addressDestAddress,of the data packets, and perhapstoby DstPort, a " generalized destination port", i.e., some further demultiplexing pointdefinedina higher layer (transportthe transport orapplication). We refer toapplication protocol layer. RSVP treats each session independently, and this document often assumes thelatter as a "generalized destination port".qualification "for the same session". DestAddress isthea group address for multicastdelivery,delivery or the unicast address of a single receiver.A generalized destination portDstPort 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 easily extendible for greater generality, the present versionusessupports only UDP/TCP ports as generalized ports. Figure 2 illustrates the flow of data packets in a single RSVPsession,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 bythemulticastrouting protocol.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 Si and each receiver Rj maycorrespond tobe running in a unique Internet host, or a single host may contain multiplelogicalsenders and/or receivers, distinguished by generalized ports. Braden, Zhang, et al. Expiration: May 1996 [Page 8] Internet Draft RSVP Specification November 1995 Senders Receivers _____________________ ( ) ===> R1 S1 ===> ( Multicast ) ( ) ===> R2 ( distribution ) S2 ===> ( ) ( by Internet ) ===> R3 (_____________________) Figure 2: Multicast Distribution SessionBraden, Zhang, et al. Expiration: January 1996 [Page 7] Internet Draft RSVP Specification July 1995 Even if the destination address is unicast,For unicast transmission, theremaywill bemultiple receivers, distinguished by the generalized port. Therea single destination host but there mayalsobe multiplesenders for a unicast destination, i.e.,senders; RSVP can set up reservations formultipoint-to-pointmultipoint-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 filterspec (togetherspec, together withthe DestAddress and the generalized destination port defining the session) definessession definition, specifies 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 controltheQoS occurs at the place where the data enters the medium, i.e., at the upstream end of the link, althoughthean 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 data flows. The flowspec in a reservation request will generally include a servicetypeclass and two sets of numeric parameters: (1) an "Rspec" (R for`reserve'), which`reserve') that defines the desiredper-hop reservation,QoS, and (2) a "Tspec" (T for`traffic'), which defines the parameters`traffic') thatmay be used to policedescribes the dataflow, i.e., to ensure it does not exceed its promised traffic level.flow. Theformformats 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 RSVPdelivers the Tspec and Rspec, together with an indication whether traffic policing is needed toSpecification November 1995 In theadmission control and packet scheduling componentsmost general approach [RSVP93], filter specs may select arbitrary subsets oftraffic control. A service that requires traffic policing might for example apply it attheedgepackets in a given session. Such subsets might be defined in terms ofthe network and at data merge points; RSVP knows when these occur and must so indicate to the traffic control mechanism. On the other hand, RSVP cannot interpret the service embodied in the flowspec and therefore does not know whether policing will actually be applied in a particular case. In the general RSVP reservation model [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 addresssenders (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, inBraden, Zhang, et al. Expiration: January 1996 [Page 8] Internet Draft RSVP Specification July 1995the interest of simplicity (and to minimize layer violation), the present RSVP version uses a much more restricted form of filterspec: select only onspec, consisting of sender IPaddress, on UDP/TCP port number, and perhaps on IP protocol id. RSVP can distinguish subflows of a hierarchically-encoded signal if they are assigned distinct multicast destination addresses, or, for a unicast destination, distinct destination ports. Data packets that are addressed to a particular session but do not match any of the filter specs for that session are expected to be sent as best-effort traffic, and under congested conditions, such packets are likely to experience long delays,address andthey may be dropped. When a receiver does not wish to receive a particular (sub-)flow, it can economize on network resources by explicitly asking the network to drop unneeded the data packets; it does so by leaving the multicast group(s) to which these packets are addressed. Thus, determining where packets get delivered should be a routing function; RSVP is concerned only withoptionally theQoS of those packets that are delivered by routing.UDP/TCP port number SrcPort. RSVP reservation request messages originate at receivers and are passed upstream towards the sender(s).(This document defines the directional terms "upstream" vs. "downstream", "previous hop" vs. "next hop", and "incoming interface" vs "outgoing interface" with respect to the data flow direction.)Whenan elementarya reservation request is received at a node,the RSVP daemon takestwoprimary actions:general actions are taken. 1.Daemon makesMake a reservation The flowspec and the filter spec are passed to traffic control. Admission control determines the admissibility of the request (if it's new); if this test fails, the reservation is rejected and RSVP returns an error message to the appropriate receiver(s). If admission control succeeds, 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.Daemon forwardsForward thereservationrequest 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 itreceived,received from downstream, for two reasons. First, it isBraden, Zhang, et al. Expiration: January 1996 [Page 9] Internet Draft RSVP Specification July 1995possible(in theory)in theory for the traffic control mechanism to modify the flowspec hop-by-hop, although none of the currentlyno realtimedefined servicesdo this.does so. Second, reservations for the same sender, or the same set of senders, from different downstream branches of the multicastdistributiontree(s)must beare "merged" as reservations travelupstream. Merging reservations isupstream; that is, anecessary consequence of multicast distribution, which createsnode forwards upstream only the reservation request with the "maximum" flowspec. When asingle stream of data packets inreceiver originates aparticular router from any Si, regardless of the set of receivers downstream. Thereservationfor Si onrequest, it can also request aparticular outgoing link L should beconfirmation message to indicate that its request was (probably) installed in the"maximum"network. A successful reservation Braden, Zhang, et al. Expiration: May 1996 [Page 10] Internet Draft RSVP Specification November 1995 request propagates as far as the closest point(s) along the sink tree to the sender(s) where there is an existing reservation level equal or greater than that being requested. At that point, the arriving request will be dropped in favor of theindividual flowspecs fromequal or larger reservation in place; thereceivers Rjnode may then send a reservation confirmation message back to the receiver. Note thatare downstream via link L. Mergingthe receipt of a confirmation isdiscussed furtheronly a high-probability indication, not a guarantee that the requested service is in place all the way to the sender(s), as explained in Section2.2.2.6. The basic RSVP reservation model is "one pass": a receiver sends a reservation request upstream, and each node in the pathcan only accepteither accepts orrejectrejects the request. This scheme provides no easy way for a receiver tomake end-to-end service guarantees, sincefind out theQoS request must be applied independently at each hop.resulting end-to-end service. Therefore, RSVPalsosupports anoptional reservation model,enhancement to one-pass service known as "One Pass With Advertising" (OPWA) [Shenker94].InWith OPWA, RSVP control packets are sent downstream, following the data paths,are usedto gather informationon the end-to-end servicethatwould result from a variety of possible reservation requests.may be used to predict the end- to-end QoS. The results ("advertisements") are delivered by RSVP to the receiverhost,hosts and perhaps to the receiverapplication.applications. Theinformationadvertisements may then be used by the receiver toconstructconstruct, or to dynamically adjust, an appropriate reservation request. 1.3 Reservation Styles A reservation request includes a set of control options, which are collectively called the reservation "style". One 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" among all packets of selected senders. Another option controls thescopeselection ofthe request:senders: an "explicit"sender specification,list of all selected senders, or a "wildcard" that implicitly selectsa group of senders.all the senders to the session. In anexplicit-styleexplicit-selection reservation,theeach filter spec must match exactly one sender, whilethe filter specin awildcard reservation must match at least one sender but may match any number.wildcard-selection no filter spec is needed. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page10]11] Internet Draft RSVP SpecificationJulyNovember 1995 Sender || Reservations:ScopeSelection || 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):1.o Wildcard-Filter (WF) Style The WF style implies the options: "shared" reservation and " wildcard"reservation scope.sender selection. Thus, a WF-style reservation creates a single reservation into which flows from all upstream senders are mixed; this reservation may be thought of as a shared "pipe", whose "size" is the largest of the resource requestsfor that linkfrom all receivers, independent of the number of senders using it. A WF-style reservationhas wildcard scope, i.e., the reservationis propagated upstream towards all senderhosts. A WF-style reservationhosts, and automatically extends to new senders as they appear.2.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"reservation scope.sender selection. Thus, an elementary FF-style reservation request creates a distinct reservation for data packets from a particular sender, not sharing them with other senders' packets for the same session.It scope is determined by an explicit list of senders.Braden, Zhang, et al. Expiration: May 1996 [Page 12] Internet Draft RSVP Specification November 1995 The 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 mustnecessarilybe merged to share a single reservation. Symbolically, we can represent an elementary FF reservationinrequest by: FF( S{Q}) where S is the selected sender and Q is the corresponding flowspec; the pair forms agiven node. Braden, Zhang, et al. Expiration: January 1996 [Page 11] Internet Draftflow descriptor. RSVPSpecification July 1995 3.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"reservation scope.sender selection. Thus, an SE-style reservation creates a single reservation into which flows from all upstream senders are mixed. However, likea FF reservation the set of senders (and therefore its scope (and thereforethescope) is specified explicitly byFF style, the SE style allows a receivermakingto explicitly specify thereservation. WF andset of senders. Symbolically, we can represent an SEare both shared reservations, appropriatereservation 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 SE are shared reservations, appropriate for those multicast applications whose application-specific constraints make it unlikely that multiple data sources will transmit simultaneously.One example isPacketized audioconferencing, whereis an example of an application suitable for shared reservations; since a limited number of people talk atonce;once, each receiver might issue a WF or SE reservation request for twice the bandwidth required for oneaudio channelsender (to allow some over-speaking). On the other hand, the FF style, which creates independent reservations for the flows from different senders, is appropriate for video signals.It is not possible to mergeBraden, Zhang, et al. Expiration: May 1996 [Page 13] Internet Draft RSVP Specification November 1995 The RSVP rules disallow merging of shared reservations with distinctreservations. Therefore, WF and SE styles are incompatible with FF, butreservations, since these modes arecompatible with each other. Merging a WF style reservationfundamentally incompatible. They also disallow merging explict sender selection with wildcard sender selection, since this might produce anSE style reservation results inunexpected service for aWF reservation.receiver that specified explicit selection. As a result of these prohibitions, WF, SE, and FF styles are all mutually incompatible. Other reservation options and styles may be defined in the future (see Appendix D.4, for example).2. RSVP Protocol Mechanisms 2.1 RSVP Messages There are two fundamental RSVP message types: RESV and PATH . Each receiver host sends RSVP reservation request (RESV) messages towards1.4 Examples of Styles This section presents examples of each of thesenders. Thesereservationmessages must follow in reverse the routesstyles and show the effects of merging. Figure 4 shows schematically a router with two incoming interfaces through which data streams will arrive, labeled (a) and (b), and two outgoing interfaces through which datapacketswilluse, all the way upstream to the sender hosts included in the scope. RESV messages mustbedelivered to the sender hosts so that the hosts can set up appropriate traffic control parameters forforwarded, labeled (c) and (d). This topology will be assumed in thefirst hop. Also noteexamples thatRSVP sends no positive acknowledgment messages to indicate success (althoughfollow. 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 thedeliverytwo routers D and D' in Figure 9. This illustrates the effect of areservation request tonon-RSVP cloud or asender could be usedbroadcast LAN on interface (d). In addition totrigger an acknowledgement at a higher level of protocol.)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 Wildcard-Filter, Fixed-Filter, and Shared-Explicit reservations, respectively. ________________ (a)| | (c) ( S1 ) ---------->| |----------> ( R1 ) | Router | (b)| | (d) ( S2,S3 ) ------->| |----------> ( R2, R3 ) |________________| Figure 4: Router Configuration Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page12]14] Internet Draft RSVP SpecificationJulyNovember 1995Sender Receiver _____________________ Path --> ( ) Si =======> ( Multicast ) Path --> <-- Resv ( ) =========> Rj ( distribution ) <-- Resv (_____________________) Figure 4: RSVP Messages Each sender transmitsFor simplicity, these examples show flowspecs as one-dimensional multiples of some base resource quantity B. The "Receive" column shows the RSVPPATH messages forward alongreservation requests received over outgoing interfaces (c) and (d), and theuni- /multicast routes provided by"Reserve" column shows therouting protocol(s); see Figure 4. These "Path" messages store pathresulting reservation stateinfor eachnode. Path state is used by RSVP to route the RESV messages hop-by-hop in the reverse direction. (Ininterface. The "Send" column shows thefuture, some routing protocols may supply reverse path forwarding information directly, replacingreservation requests that are sent upstream to previous hops (a) and (b). In thereverse-routing function of path state). PATH messages may also carry"Reserve" column, each box represents one reserved "pipe" on thefollowing information: o Sender Template The Sender Template describesoutgoing link, with theformat of data packets thatcorresponding flow descriptor. Figure 5, showing thesender will originate. This template is inWF style, illustrates theformtwo possible merging situations. Each ofa filter spec that could be used to select this sender's packets from others inthesame sessiontwo next hops onthe same link. Likeinterface (d) results in afilter spec,separate RSVP reservation request, as shown. These two requests are merged into theSender Templateeffective flowspec 3B, which isless than fully general at present, specifying only sender IP address, UDP/TCP sender port, and protocol id. The port number and/or protocol id can be wildcarded. o Tspec PATH message may optionally carry a Tspec that defines an upper bound on the traffic level that the sender will generate. This Tspec can beusedby RSVPtoprevent over-make the reservation(and perhaps unnecessary Admission Control failure)on interface (d). To forward thenon-shared links starting atreservation requests upstream, thesender. o Adspec The PATH message may carry a package of OPWA advertising information, knownreservations on the interfaces (c) and (d) are merged; asan "Adspec". An Adspec received inaPATH messageresult, the larger flowspec 4B ispassedforwarded upstream to each previous hop. | 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 thelocal traffic control routines, which return an updated Adspec; the updated versionrequest 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:JanuaryMay 1996 [Page13]15] Internet Draft RSVP SpecificationJulyNovember 1995forwarded downstream. Previous Incoming Outgoing Next Hops Interfaces Interfaces Hops _____ _____________________ _____ | | data --> | | data --> | | | A |-----------| a c |--------------| C | |_____| <-- Resv| Send |<-- Resv |_____| Path -->Reserve Receive | |Path --> _____ _____________ FF( S1{4B} ) <- (a) |ROUTER(c) | S1{4B} | (c) <- FF( S1{4B}, S2{5B} ) | |________| | | S2{5B} | | |________| ---------------------|--------------------------------------------- | ________ <- (b) ||--| D(d) | S1{3B} |B |--| data-->|(d) <- FF( S1{3B}, S3{B} ) FF( S2{5B}, S3{B} ) |data -->|________| <- FF( S1{B} ) ||_____| |_____| |--------| b d |-----------| |<-- Resv||<-- ResvS3{B} |_____ _____|Path-->|_____________________| Path -->|________| Figure 6: Fixed-Filter (FF) Reservation Example Figure 7 shows an example of Shared-Explicit (SE) style 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) ||--| D'(c) <- SE( (S1,S2){B} ) | |B' |--|{B} ||_____| |_____|| |________| ---------------------|--------------------------------------------- | __________ <- (b) | (d) |(S1,S2,S3)| (d) <- SE( (S1,S3){3B} ) SE( (S2,S3){3B} ) | | {3B} | <- SE( S2{2B} ) | |__________| Figure5: Router Using RSVP Figure 5 illustrates RSVP's model of a router node. Each7: Shared-Explicit (SE) Reservation Example The three examples just shown assume that datastream arrivespackets froma previous hop through a corresponding incoming interfaceS1, S2, anddeparts through one or more outgoing interface(s). The same physical interface may act inS3 are routed to boththe incoming andoutgoingroles (for different data flows but the same session). As illustrated ininterfaces. The top part of Figure5, there may be multiple previous hops and/or next hops through a given physical interface. This may result8 shows another routing assumption: data packets from S2 and S3 are not forwarded to interface (c), e.g., because theconnectednetworkbeingtopology provides ashared medium or from the existence of non-RSVP routers in theshorter path for these senders towards R1, not traversing this node. The bottom part of Figure 8 shows Braden, Zhang, et al. Expiration: May 1996 [Page 16] Internet Draft RSVP Specification November 1995 WF style reservations under this assumption. Since there is no route from (b) to (c), thenext RSVP hop (see Section 2.6). An RSVP daemon must preserve the next and previous hop addresses in its reservation and path state, respectively. A RESV message is sent with a unicast destination address, the address of a previous hop. PATH messages, on the other hand, are sent with the session destination address, unicast or multicast. Although multiple next hops may sendreservationrequests through the same physical interface,forwarded out interface (b) considers only thefinal effect should be to install areservation onthat interface, which is defined by an effective flowspec. This effective flowspec will be the "maximum" of the flowspecs requested by the different next hops. In turn, a RESVinterface (d). _______________ (a)| | (c) ( S1 ) ---------->| >-----------> |----------> ( R1 ) | - | | - | (b)| - | (d) ( S2,S3 ) ------->| >-------->--> |----------> ( R2, R3 ) |_______________| Router Configuration | Send | Reserve Receive | | _______ WF( *{rB} ) <- (a) | (c) | * {B} | (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:JanuaryMay 1996 [Page14]17] Internet Draft RSVP SpecificationJulyNovember 1995message forwarded to a particular previous hop carries2. RSVP Protocol Mechanisms 2.1 RSVP Messages Previous Incoming Outgoing Next Hops Interfaces Interfaces Hops _____ _____________________ _____ | | data --> | | data --> | | | A |-----------| aflowspec that is the "maximum" over the effective reservations on the corresponding outgoing interfaces. Both cases represent merging, which is discussed further below. There are a numberc |--------------| 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 ofways forasyntactically valid reservation request to fail inrouter node. Each data stream arrives from agiven node: 1. The effective flowspec, computed using the new request, may fail admission control. 2. Administrative policy"previous hop" through a corresponding "incoming interface" and departs through one orcontrolmore "outgoing interface(s)". The same physical interface maypreventact in both therequested reservation. 3. There may be no matching path state (i.e.,incoming and outgoing roles for different data flows in thescopesame session. Multiple previous hops and/or next hops may beempty), which would preventreached through a given physical interface, as a result of thereservationconnected network beingpropagated upstream. 4. A reservation style that requires a unique sender may haveafilter spec that matches more than one sendershared medium, or the existence of non-RSVP routers in the pathstate, dueto theuse of wildcards. 5. The requested style may be incompatible with the style(s) of existing reservations for the same session on the same outgoing interface, so an effective flowspec cannot be computed. 6. The requested style may be incompatible with the style(s) of reservations that exist on other outgoing interfaces but will be merged with this reservation to create a refresh message fornext RSVP hop (see Section 2.8). An RSVP daemon preserves the next and previoushop. In any of these cases, an errorhop addresses in its reservation and path state, respectively. There are two fundamental RSVP messageis returned to the receiver(s) responsible fortypes: RESV and PATH. Each receiver host sends RSVP reservation request (RESV) messages upstream towards theerroneous message. An error message does not modify state insenders. These reservation messages must follow exactly thenodes through which it passes. Therefore, any reservations established downstreamreverse of thenode whereroutes thefailure was detecteddata packets willpersist until the receiver(s) responsible cease attemptinguse, upstream to all thereservation. The erroneous message may or may not be propagated forward. In general, ifsender hosts included in theerror is likely tosender selection. RESV messages must berepeated at every node further along the path, it is bestdelivered todroptheerroneous message rather than generate a flood of error messages; this issender hosts themselves so that thecasehosts can set up appropriate traffic control parameters for thelast four error classes listed above. Thefirsttwo error classes, admission control and administrative policy, may or may not allow propagation of the message, depending upon the detailed reason and perhaps on local administrative policy and/or the particular service request. More complete rules are given in thehop. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page15]18] Internet Draft RSVP SpecificationJulyNovember 1995error definitions in Appendix B. An erroneous FILTER_SPEC object in a RESV message will normally be detected at the firstEach RSVPhop from the receiver application, i.e., withinsender host transmits RSVP PATH messages downstream along thereceiver host. However, an admission control failure causeduni-/multicast routes provided bya FLOWSPEC or a POLICY_DATA object may be detected anywhere alongthepath(s) torouting protocol(s), following thesender(s). When admission control fails for a reservation request, any existing reservation is leftpaths of the data. These "Path" messages store " path state" inplace.each node along the way. Thisprevents a new, very large, reservation from disruptingpath state includes at least theexisting QoS by merging with an existing reservation and then failing admission control (this has been calledunicast IP address of the"killer reservation" problem). A node may be allowed to preempt an established reservation, in accordance with administrative policy; this will also trigger an error message to all affected receivers. 2.2 Merging and Packing Aprevioussection explained that reservation requests inhop node, which is used to route the RESV messagesare necessarily merged, to matchhop- by-hop in themulticast distribution tree. As a result, onlyreverse direction. (In theessential (i.e.,future, some routing protocols may supply reverse path forwarding information directly, replacing the"largest") reservation requests are forwarded, once per refresh period.reverse-routing function of path state). Asuccessful reservation request will propagate as far as the closest point(s) alongPATH message may carry thesink treefollowing information in addition to thesender(s) whereprevious hop address: o Sender Template A PATH message is required to carry areservation level equal or greater than that being requested has been made. AtSender Template, which describes the format of data packets thatpoint,themerging processsender willdrop itoriginate. This template is infavorthe form ofanother, equal or larger, reservation request.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 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) on all links on which the named sender is the only source sending to the session. 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 downstream. For protocol efficiency, RSVP also allows multiple sets ofpath (or reservation)reservation information for the same session to be "packed" into a singlePATH (or RESV) message, respectively. (ForRESV 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 RSVPmessage). Unlike merging, packing preserves information. In order to merge reservations,Specification November 1995 RSVPmust be able to merge flowspecsmessage. PATH messages are sent with the same source andto merge filterspecs. Merging flowspecs requires calculatingdestination addresses as the data, so that they will be routed correctly through non-RSVP clouds (see Section 2.8). On the"largest" of a set of flowspecs, whichother hand, RESV messages areotherwise opaque to RSVP. Merging flowspecs is required bothsent hop-by-hop; each RSVP-speaking node forwards a RESV message tocalculatetheeffective flowspec to install onunicast address of agiven physical interface (seeprevious RSVP hop. 2.2 Port Usage At present an RSVP session is defined by thediscussion in connection with Figure 5), and to merge flowspecs when sendingtriple: (DestAddress, ProtocolId, DstPort). Here DstPort is arefresh message upstream. Since flowspecs are generally multi-dimensional vectors (they contain both Tspec and Rspec components, each of whichUDP/TCP destination port field (i.e., a 16-bit quantity carried at octet offset +2 in the transport header). DstPort mayitselfbemulti-dimensional), they areomitted (set to zero) if the ProtocolId specifies a protocol that does notstrictly ordered. When it cannot takehave a destination port field in thelargerformat used by UDP and TCP. RSVP allows any value for ProtocolId. However, end-system implementations oftwo flowspecs,RSVP may know about certain values for this field, and in particular mustcomputeknow about the values for UDP anduseTCP (17 and 6, respectively). An end system should give an error to an application that either: o specifies aBraden, Zhang, et al. Expiration: January 1996 [Page 16] Internet Draft RSVP Specification July 1995 third flowspecnon-zero DstPort for a protocol thatis at least as large as each, i.e.,does not have UDP/TCP-like ports, or o specifies a"least upper bound" (LUB). It is also possiblezero DstPort fortwo flowspecs to be incomparable, which is treated as an error. The definitiona protocol that does have UDP/TCP-like ports. Filter specs andimplementation of the rules for comparing flowspecs are outside RSVP proper, but theysender templates are definedas part of the service templates [ServTempl95a] We can now give the complete rules for calculatingby theeffective flowspec (Te, Re), to be installed on an interface. Here Te is the effective Tspec and Repair: (SrcAddress, SrcPort), where SrcPort is a UDP/TCP source port field (i.e., a 16-bit quantity carried at octet offset +0 in theeffective Rspec. As an example, consider interface (d)transport header). SrcPort may be omitted (set to zero) inFigure 5. o Re is calculated ascertain cases. The following rules hold for thelargest (using an LUB if necessary)use ofthe Rspecszero DstPort and/or SrcPort fields inRESV messages from different next hops (e.g., D and D') butRSVP. 1. Destination ports must be consistent. Path state and/or reservation state for the sameoutgoing interface (d). o The Tspecs supplied in PATH messages from different previous hops which may send data packets to this reservation (e.g., someDestAddress and ProtocolId must have DstPort values that are all zero or all non-zero. Violation ofA, B, and B' in Figure 5) are summed; callthissum Path_Te. o The maximum Tspec suppliedcondition inRESV messages from different next hops (e.g., D and D')a node iscalculated; call this Resv_Te. o Tea "Conflicting Dest Port" error. 2. Destination ports rule. If DstPort in a session definition isthe 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. Two filter specs canzero, all SrcPort fields used for that session must also bemerged only they are identical or if one contains the other through wild-carding.zero. TheresultBraden, Zhang, et al. Expiration: May 1996 [Page 20] Internet Draft RSVP Specification November 1995 assumption here is that themore generalprotocol does not have TCP/UDP- like ports. Violation ofthe two, i.e., the one with more wildcard fields. 2.3 Soft State To maintain reservation state, RSVP keeps "soft state"this condition inrouter anda node is a "Conflicting Src Port" error. 3. Source Ports must be consistent. A sender hostnodes. RSVP softmust not send path stateis created and periodically refreshed by PATHboth with andRESV messages. The state is deleted if no matching refresh messages arrive before the expiration ofwithout a"cleanup timeout" interval. It may also be deleted as the resultzero SrcPort. Violation of this condition is anexplicit "teardown" message, described in the next section. At the expiration of each "refresh timeout" period, RSVP scans its state to build and forward PATH and RESV refresh messages to succeeding hops. When"Ambiguous Path" error. 2.3 Merging Flowspecs As noted earlier, aroute changes, thesingle physical interface may receive multiple reservation request from different nextPATH message will initialize the path state onhops for thenew route,same session andfuture RESV messages will establish reservation state there;with thestatesame filter spec, but RSVP should install only one reservation on that interface. This reservation should an effective flowspec that is thenow-unused segment"maximum" of theroute will time out. Thus, whetherflowspecs requested by the different next hops. Similarly, a RESV messageis Braden, Zhang, et al. Expiration: January 1996 [Page 17] Internet Draft RSVP Specification July 1995 "new" orforwarded to a"refresh"previous hop should carry a flowspec that isdetermined separately at each node, depending upontheexistence of state at that node. RSVP sends its messages as IP datagrams without reliability enhancement. Periodic transmission"maximum" ofrefresh messagesthe flowspecs requested byhosts and routers is expected to replace any lost RSVP messages. To tolerate K-1 successive packet losses, the effective cleanup timeout must be at least K times the refresh timeout. In addition, the traffic control mechanism inthenetwork should be statically configured to grant high-reliability service to RSVP messages, to protect RSVP messages from congestion losses. The "soft" state maintained by RSVP is dynamic; to changedifferent next hops. Both cases represent flowspec merging. Merging flowspecs requires calculating the "largest" of a set ofsenders Si or receivers Rj orflowspecs, which are otherwise opaque tochange any QoS request, a host simply starts sending revised PATH and/or RESV messages. The result should be an appropriate adjustment in the RSVP stateRSVP. Since flowspecs are multi-dimensional vectors (they contain both Tspec andimmediate propagation to all nodes along the path. In steady state, refreshing is performed hop-by-hop,Rspec components, each of whichallows merging and packing as describedmay itself be multi-dimensional), generally speaking they cannot be strictly ordered. However, in many cases one can easily determine theprevious section. If the received state differs from"larger" of two flowspecs, such as when both request thestored state,same bandwidth but one requests a tighter delay, or when one of thestored state is updated. Furthermore, iftwo requests both a higher bandwidth and a tighter delay bound. When theresult will be to modify"larger" of therefresh messages totwo cannot begenerated, these refresh messagesdetermined, RSVP mustbe generated and forwarded immediately. This will result in state changes propagating end-to-end without delay. However, propagation of a change stops whencompute andif it reachesuse apoint where merging causes no resulting state change. This minimizes RSVP control traffic due to changes andthird flowspec that isessential for scaling toat least as largemulticast groups. The RSVP state associated with a session inas each, i.e., aparticular node is divided into atomic elements that"least upper bound" (LUB). If the two flowspecs arecreated, refreshed, and timed out independently. The atomicity is determined byincomparable, their comparison will treated as an error. We can now give therequirement that any sender or receiver may enter or leavecomplete rules for calculating thesession at any time, so its state shouldeffective flowspec (Te, Re) to becreated and timed out independently. 2.4 Teardown RSVP teardown messages remove pathinstalled on an interface. Here Te is the effective Tspec andreservation state without waiting forRe is thecleanup timeout period, aseffective Rspec. As anoptimization to release resources quickly. Itexample, consider interface (d) in Figure 9. 1. Re isnot necessary to explicitly tear downcalculated as the largest (using anold reservation, although it may be desirableLUB if necessary) of the Rspecs inmany cases. A teardown request may be initiated either by an applicationRESV messages from different next hops (e.g., D and D') but the same outgoing interface (d). 2. All Tspecs that were supplied inan end system (sender or receiver),PATH messages from different previous hops (e.g., some orby a router as the resultall ofstate timeout. Once initiated, a teardown request should beA, B, and B' in Figure 9) are summed; call this sum Path_Te. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page18]21] Internet Draft RSVP SpecificationJulyNovember 1995forwarded hop-by-hop without delay. Teardown3. The maximum Tspec supplied in RESV messages(like other RSVP messages) are not delivered reliably. However, loss of a teardown messagefrom different next hops (e.g., D and D') is calculated; call this Resv_Te. 4. Te isnot considered a problem becausethestate will time out even if itGLB (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 isnot explicitly deleted. If one or more teardown message hopsactually performed by traffic control. The definition and implementation of the rules for comparing flowspecs, calculating LUB's, and summing Tspecs arelost,outside therouterdefinition of RSVP [ServTempl95a]. Section 3.9.4 shows generic calls thatfailed to receivean RSVP daemon could use for these functions. 2.4 Soft State RSVP takes ateardown message will time out its"soft state" approach to managing the reservation state in routers andinitiate a new teardown message beyond the loss point. Assuming thathosts. RSVPmessage loss probabilitysoft state issmall, the longest time to deletecreated and periodically refreshed by PATH and RESV messages. The statewill seldom exceed oneis deleted if no matching refreshtimeout period. There are two typesmessages arrive before the expiration ofRSVP teardowna "cleanup timeout" interval. It may also be deleted by an explicit "teardown" message,PTEAR and RTEAR. A PTEAR message travels towards all receivers downstream from its pointdescribed in the next section. At the expiration ofinitiationeach "refresh timeout" period anddeletes pathafter a statealong the way. A RTEAR message deletes reservationchange, RSVP scans its state to build andtravels 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 message deletes the specified state in the node where it is received. Like any other state change, this will be propagated immediatelyforward PATH and RESV refresh messages to succeeding hops. PATH and RESV messages are idempotent. When a route changes, the nextnode, but only if it represents a net change after merging. As a result, an RTEARPATH message willpruneinitialize thereservationpath stateback (only) as far as possible. 2.5 Admission Policyon the new route, andSecurity RSVP-mediated QoS requestsfuture RESV messages willresult in particular user(s) getting preferential access to network resources. To prevent abuse, some form of back pressureestablish reservation state there; the state onusers will be required. This back pressure might taketheform of administrative rules, or of some formnow-unused segment ofreal or virtual billing forthe`cost' ofroute will time out. Thus, whether areservation. The form and contents of such back pressuremessage is "new" or amatter of administrative policy that may be"refresh" is determinedindependently byseparately at eachadministrative domain innode, depending upon theInternet. Therefore, admission controlexisting state ateach node is likely to contain a policy component as wellthat node. RSVP sends its messages asa resource reservation component. As inputIP datagrams with no reliability enhancement. Periodic transmission of refresh messages by hosts and routers is expected to handle thepolicy-based admission decision,occasional loss of RSVPmessages may carry policy data. This data may include credentials identifying users or user classes, account numbers, limits, quotas, etc. To protectmessages. If theintegrity ofeffective cleanup timeout is set to K times thepolicy-based admissionrefresh timeout period, then RSVP can tolerate K-1 successive RSVP packet losses without falsely erasing a reservation. We recommend that the network traffic controlmechanisms, it maymechanism benecessarystatically configured toensure the integrity ofgrant some minimal bandwidth for RSVP messagesagainst corruption or spoofing, hopto protect them from congestion losses. The state maintained byhop. For this purpose,RSVPmessages may carry integrity objects that canis 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 result should becreated and verified by neighboring RSVP-capable nodes. Thesean appropriate adjustment in the RSVP state in all nodes along the Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page19]22] Internet Draft RSVP SpecificationJulyNovember 1995objects are expectedpath. In steady state, refreshing is performed hop-by-hop tocontain an encrypted part andallow merging. If the received state differs from the stored state, the stored state is updated. If this update results in modification of state toassume a shared secret between neighbors. User policy databe forwarded inreservation requestrefresh messages, these refresh messagespresentsmust be generated and forwarded immediately, so that state changes can be propagated end-to-end without delay. However, propagation of ascaling problem. Whenchange 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 multicastgroup hasgroups. State that is received through alarge number of receivers, it will notparticular interface I* should never bepossible or desirable to carry all the receivers' policy data upstream toforwarded out thesender(s). The policy data will have tosame interface. Conversely, state that is forwarded out interface I* must beadministratively merged, near enough to the receivers to avoid excessive policy data. Administrative merging implies checking the user credentials and accounting data and then substituting a token indicating the check has succeeded. A chain of trust establishedcomputed usingan integrity field will allow upstream nodes to accept these tokens. Noteonly state thatthe merge pointsarrived 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 forpolicy datathis session. Both receivers arelikely to be atmaking wildcard-scope reservations, in which theboundaries of administrative domains. It may be necessaryRESV messages are forwarded tocarry accumulated and unmerged policy data upstream through multiple nodes before reaching oneall previous hops for senders in the group, with the exception ofthese merge points. 2.6 Automatic RSVP Tunneling It is impossible to deploy RSVP (or any new protocol) atthesame moment throughoutnext hop from which they came. The result is independent reservations in theentire Internet. Furthermore, RSVP may never be deployed everywhere. RSVP must therefore provide correct protocol operation even whentwoRSVP-capable routers are joined bydirections. There is anarbitrary "cloud"additional rule governing the forwarding ofnon-RSVP routers. Of course, an intermediate cloud that does not support RSVP is unable to perform resource reservation, so service guarantees cannot be made. However, if such a cloud has sufficient excess capacity, it may provide acceptable and useful realtime service. RSVP will automatically tunnel through such a non-RSVP cloud. Both RSVP and non-RSVP routers forward PATH messages towards the destination address using their local uni-/multicast routing table. Therefore, the routing of PATH messages will be unaffected by non-RSVP routers in the path. When a PATH message traverses a non-RSVP cloud, the copies that emerge will carry as a Previous Hop address the IP address of the last RSVP-capable router before entering the cloud. This will effectively construct a tunnel through the cloud forRESVmessages, which willmessages: state from RESV messages received from outgoing interface Io should be forwardeddirectly to the next RSVP-capable router on the path(s) back towards the source. Automatic tunneling is not perfect; in some circumstances it may distribute path informationtoRSVP-capable routers not included in the data distribution paths, which may create unused reservations at these routers. This is becauseincoming interface Ii only if PATH messagescarry the IP source address of the previous hop, not of thefrom Ii are forwarded to Io. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page20]23] Internet Draft RSVP SpecificationJulyNovember 1995original sender, and multicast routing may depend upon the source as well as the destination address. This can be overcome by manual configuration of the neighboring RSVP programs, when necessary. 2.7 Host Model Before________________ asession can be created, the session identification, comprised of DestAddress and perhaps the generalized destination port, must be assigned and communicated to all the senders and receivers by some out-of-band mechanism. When an| | 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, RSVPsession"teardown" messages remove path and reservation state immediately. Although it isbeing set up, the following events happen at thenot necessary to explicitly tear down an old reservation, we recommend that all endsystems. H1hosts send a teardown request as soon as an application finishes. There are two types of RSVP teardown message, PTEAR and RTEAR. Areceiver joinsPTEAR message travels towards all receivers downstream from its point of initiation and deletes path state along themulticast group specified by DestAddress, using IGMP. H2way. An RTEAR message deletes reservation state and travels towards all senders upstream from its point of initiation. Apotential sender starts sending RSVP PATH messages to the DestAddress, using RSVP. H3PTEAR (RTEAR) message may be conceptualized as a reversed-sense Path message (Resv message, respectively). Areceiverteardown request may be initiated either by an applicationreceivesin an end system (sender or receiver), or by aPATH message. H4 A receiver starts sending appropriate RESV messages, specifyingrouter as thedesired flow descriptors, using RSVP. H5 A sender application receivesresult of state timeout. Once initiated, aRESV message. H6teardown request must be forwarded hop-by-hop without delay. Asender starts sending data packets. There are several synchronization considerations. o Suppose that a new sender starts sending data (H6) but no receivers have joinedteardown message deletes thegroup (H1). Then therespecified state in the node where it is received. As always, this state change will beno multicast routes beyond the host (or beyond the first RSVP- capable router) along the path;propagated immediately to thedatanext node, but only if there will bedropped at the first hop until receivers(s) do appear (assumingamulticast routing protocol that "prunes off" or otherwise avoids unnecessary paths). o Suppose thatnet change after merging. As anew sender starts sending PATH messages (H2) and immediately starts sending data (H6), 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 the first RESVresult, an RTEAR message[H5]; however, receivers thatwill prune the reservation state back (only) as far as possible. Like all other RSVP messages, teardown requests arefarther away maynothave reservations in place yet.delivered Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page21]24] Internet Draft RSVP SpecificationJulyNovember 1995o Ifreliably. The loss of areceiver starts sending RESV messages (H4) before any PATH messages have reached it (H3), RSVPteardown request message willreturn error messages tonot cause a protocol failure because thereceiver. 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 RSVPunused state will eventually time out even though it is notdefined in this protocol spec, as it may be host system dependent. However, Section 4.6.1 discussesexplicitly deleted. If a teardown message is lost, thegeneral requirementsrouter that failed to receive that message will time out its state andpresentsinitiate ageneric API. 3. Examples We usenew teardown message beyond thefollowing notation forloss point. Assuming that RSVP message loss probability is small, the longest time to delete state will seldom exceed one refresh timeout period. 2.6 Errors and Acknowledgments There are two RSVP error messages, RERR and PERR, and aRESV message: 1. Wildcard-Filter (WF) WF( *{Q}) Here "*{Q}" representsreservation confirmation message RACK. There are aFlow Descriptor withnumber of ways for a"wildcard" scope (choosing all senders) andsyntactically valid reservation request to fail at some node along the path, triggering a RERR message: 1. The effective flowspecof quantity Q.that is computed using the new request may fail admission control. 2.Fixed-Filter (FF) FF( S1{Q1}, S2{Q2}, ...) A list of (sender, flowspec) pairs, i.e., flow descriptors, packed into a single RESV message.Administrative policy may prevent the requested reservation. 3.Shared Explicit (SE) SE( (S1,S2,...)Q1, (S3,S4,...)Q2, ...)There may be no matching path state, so that the request cannot be forwarded towards the sender(s). 4. Alistreservation style that requires the explicit selection ofshared reservations, each specified byasingle flowspec andunique sender may have alist of senders. For simplicity we assume herefilter spec thatflowspecs are one-dimensional, defining for exampleis ambiguous, i.e., that matches more than one sender in theaverage throughput, and state them as a multiplepath state, due to the use ofsome unspecified base resource quantity B. Figure 6 shows schematically a routerwildcard fields in the filter spec. 5. The requested style may be incompatible withtwo previous hops labeled (a) and (b) and twothe style(s) of existing reservations. The incompatibility may occur among reservations for the same session on the same outgoinginterfaces labeled (c) and (d). This topologyinterface, 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 willbe assumedtrigger a RERR message to all affected receivers. An error message does not modify state in theexamples that follow. There are three upstream senders; packets from sender S1 (S2 and S3) arrivenodes throughprevious hop (a) ((b), respectively). There are also threewhich it passes. Therefore, any reservations established downstreamreceivers; packets bound for R1 and R2 (R3) are routed via outgoing interface (c) ((d) respectively).of the node where the failure occurred will persist until the responsible receiver(s) explicitly tear down the state or allow it to time out. In this version of RSVP, detection of an error in a reservation Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page22]25] Internet Draft RSVP SpecificationJulyNovember 1995In addition to the connectivity shown in 6, we mustrequest not only generates a RERR message, it alsospecifyprevents themulticast routing within this node. Assume first that data packets (hence, PATH messages)request fromeach Si shown in Figure 6 is routed to both outgoing interfaces. Under this assumption, Figures 7, 8, and 9 illustrate Wildcard-Filter, Fixed-Filter, and Shared-Explicit reservations, respectively. ________________ (a)| | (c) ( S1 ) ---------->| |----------> ( R1, R2) | Router | (b)| | (d) ( S2,S3 ) ------->| |----------> ( R3 ) |________________| Figure 6: Router Configuration In Figure 7,being forwarded further. This may not always be the"Receive" column showsdesirable behavior; for example, a receiver may want a reservation request to propagate all theRESV messages received over outgoing interfaces (c) and (d) andway to the"Reserve" column showssender despite an admission control failure at a particular link along theresulting reservation state for each interface. The "Send" column showspath. However, design of theRESV messages forwarded to previous hops (a)appropriate mechanism has proved difficult, and(b). Intherefore this version take the"Reserve" column, each box represents onesimplest approach. When admission control fails for a reservation request, any existing reservation is left in place. This prevents a new, very large, reservation"channel",from disrupting the existing QoS by merging with an existing reservation and then failing admission control (this has been called thecorresponding filter. As"killer reservation" problem). To request aresult of merging,confirmation for its reservation request, a receiver Rj includes in the RESV message a confirmation-request object containing its IP address. At each merge point, only the largest flowspec and any accompanying confirmation-request object is forwardedupstreamupstream. If the reservation request from Rj is equal toeach previous hop. | Send | Reserve Receive | | _______ WF( *{3B} ) <- (a) | (c) | * {B} | (c) <- WF( *{B} ) | |_______| | -----------------------|---------------------------------------- | _______ WF( *{3B} ) <- (b) | (d) | * {3B}| (d) <- WF( *{3B} ) | |_______| Figure 7: Wildcard-Filter (WF) Reservation Example Figure 8 shows Fixed-Filter (FF) style reservations. The flow descriptors for senders S2or smaller than the reservation in place on a node, its RESV are not forwarded further, andS3, receivedif the RESV included an confirmation-request object, a RACK message is sent back to Rj. This mechanism has the following consequences: o A new reservation request with a flowspec larger than any in place for a session will normally result in either a RERR or a RACK message back to the receiver fromoutgoing interfaces (c)each sender. In this case, the RACK message will be an end-to-end confirmation. o The receipt of a RACK gives no guarantees. Assume the first two reservation requests from receivers R1 and(d),R2 arrive at the node where they arepacked intomerged. R2, whose reservation was themessage forwardedsecond toprevious hop b. Onarrive at that node, may receive a RACK from that node while R1's request has not yet propagated all theother hand,way to a matching sender and may still fail. In this case, R2 will receive a RACK although there is no end-to-end reservation in place. Furthermore, if the twodifferent flow descriptors for sender S1flowspecs aremerged intoequal, R2 may receive a RACK followed by a RERR. However, if its flowspec is smaller, R2 will receive only thesingle message FF( S1{3B} ), whichRACK. o Despite these uncertainties, receipt of a RACK indicates a high probability that the reservation issent toin place. o Finally, note that RERR and/or RACK messages may be lost. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page23]26] Internet Draft RSVP SpecificationJulyNovember 1995previous hop (a). For each outgoing interface, there is a private reservation for each source that has been requested, but this private reservation2.7 Policy and Security RSVP-mediated QoS requests will result in particular user(s) getting preferential access to network resources. To prevent abuse, some form of back pressure on users isshared amonglikely to be required. This back pressure might take thereceivers that madeform of administrative rules, or of some form of real or virtual billing for therequest. | Send | Reserve Receive | | ________ FF( S1{3B} ) <- (a) | (c) | S1{B} | (c) <- FF( S1{B}, S2{5B} ) | |________| | | S2{5B} | | |________| ---------------------|--------------------------------------------- | ________ <- (b) | (d) | S1{3B} | (d) <- FF( S1{3B}, S3{B} ) FF( S2{5B}, S3{B} ) | |________| | | S3{B} | | |________| Figure 8: Fixed-Filter (FF) Reservation Example Figure 9 shows"cost" of asimple examplereservation. The form and contents ofShared-Explicit (SE) style reservations. Here each outgoing interface hassuch back pressure is asingle reservationmatter of administrative policy thatis sharedmay be determined independently by each administrative domain in the Internet. Therefore, admission control at each node is likely to contain alistpolicy component in addition to a resource reservation component. As input to the policy-based admission decision, RSVP messages may carry policy data. This data may include credentials identifying users or user classes, account numbers, limits, quotas, etc. To protect the integrity ofsenders. | Send | Reserve Receive | | ________ SE( S1{3B} ) <- (a) | (c) |(S1,S2) | (c) <- SE( (S1,S2){B} ) | | {B} | | |________| ---------------------|--------------------------------------------- | ________ <- (b) | (d) |(S1,S3) | (d) <- SE( (S1,S3){3B} ) SE( (S2,S3){3B} ) | | {3B} | | |________| Figure 9: Shared-Explicit (SE) Reservation Example The three examples just shown assume full routing, i.e., data packets from S1, S2,the policy-based admission control mechanisms, it may be necessary to ensure the integrity of RSVP messages against corruption or spoofing, hop by hop. For this purpose, RSVP messages may carry integrity objects that can be created andS3verified by neighbor RSVP-capable nodes. These objects areroutedexpected toboth outgoing interfaces. The top Braden, Zhang, et al. Expiration: January 1996 [Page 24] Internet Draft RSVP Specification July 1995contain an encrypted part and to assume a shared secret between neighbors. User policy data in reservation request messages presents a scaling problem. When a multicast group has a large number ofFigure 10 shows another routing assumption:receivers, it will be impossible or undesirable to carry all receivers' policy datapackets from S1 are not forwardedupstream tointerface (d), becausethemesh topology provides a shorter path for S1 -> R3 that does not traverse this node.sender(s). Thebottom of Figure 10 shows WF style reservations under this assumption. Since there is no route from (a)policy data will have to(d), the reservation forwarded out interface (a) considers onlybe administratively merged at places near thereservation on interface (c); noreceivers, to avoid excessive policy data. Administrative mergingtakes place in this case. _______________ (a)| | (c) ( S1 ) ---------->| --------->--> |----------> ( R1, R2) | / | | / | (b)| / | (d) ( S2,S3 ) ------->| ->----------> |----------> ( R3 ) |_______________| Router Configuration | Send | Reserve Receive | | _______ WF( *{B} ) <- (a) | (c) | * {B} | (c) <- WF( *{B} ) | |_______| | -----------------------|---------------------------------------- | _______ WF( *{3B} ) <- (b) | (d) | * {3B}| (d) <- WF( * {3B} ) | |_______| Figure 10: WF Reservation Example -- Partial Routing Finally, we note that state that is received throughimplies checking the user credentials and accounting data and then substituting aparticular interface I is never forwarded outtoken indicating thesame interface. Conversely, state that is forwarded out interface I must be computedcheck has succeeded. A chain of trust established usingonly state that arrived on interfacesan integrity field will allow upstream nodes to accept these tokens. In summary, differentfrom I. A trivial exampleadministrative domain in the Internet may have different policies regarding their resource usage and reservation. The role ofthis ruleRSVP isillustrated in Figure 11, which shows a transit routerto carry policy data associated withone sender and one receiver oneachinterface (and assumes one next/previous hop per interface). Interfaces (a) and (c) are both outgoing and incoming interfaces for this session. Both receivers are making wildcard-scope reservations, in whichreservation to theRESV messagesnetwork as needed. Note that the merge points for policy data areforwardedlikely toall previous hops for senders in the group, withbe at theexceptionboundaries ofthe next hop from which they came. These result in independent reservations in the two directions. Braden, Zhang, et al. Expiration: January 1996 [Page 25] Internet Draft RSVP Specification July 1995 ________________ 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 11: Independent Reservationsadministrative domains. It may be necessary to carry accumulated and unmerged policy data upstream through multiple nodes before reaching one of these merge points. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page26]27] Internet Draft RSVP SpecificationJulyNovember 19954.2.8 Automatic RSVPFunctional Specification 4.1Tunneling It is impossible to deploy RSVPMessage Formats All(or any new protocol) at the same moment throughout the entire Internet. Furthermore, RSVPmessages consist of a common header followedmay never be deployed everywhere. RSVP must therefore provide correct protocol operation even when two RSVP-capable routers are joined bya variable numberan arbitrary "cloud" ofvariable-length typed "objects". The subsectionsnon-RSVP routers. Of course, an intermediate cloud thatfollow define the formats ofdoes not support RSVP is unable to perform resource reservation. However, if such a cloud has sufficient capacity, it may still provide acceptable realtime service. RSVP automatically tunnels through such a non-RSVP cloud. Both RSVP and non-RSVP routers forward PATH messages towards thecommon header,destination address using their local uni-/multicast routing table. Therefore, theobject structures, and eachrouting of PATH messages will be unaffected by non-RSVP routers in theRSVP message types. For each RSVPpath. When a PATH messagetype, there istraverses aset of rules for the permissible ordering and choicenon-RSVP cloud, it carries to the next RSVP-capable node the IP address ofobject types. These rules are specified using Backus-Naur Form (BNF) augmented with square brackets surrounding optional sub-sequences. 4.1.1 Common Header 0 1 2 3 +-------------+-------------+-------------+-------------+ | Vers | Flags| Type | RSVP Checksum | +-------------+-------------+-------------+-------------+ | RSVP Length | (Reserved) | +-------------+-------------+-------------+-------------+ | Message ID | +----------+--+-------------+-------------+-------------+ |(Reserved)|MF| Fragment offset | +----------+--+-------------+-------------+-------------+ The fields inthecommon header are as follows: Vers: 4 bits Protocol version number.last RSVP-capable router before entering the cloud. Thisis version 1. Flags: 4 bits (None defined yet) Type: 8 bits 1 = PATH 2 =effectively constructs a tunnel through the cloud for RESV3 = PERR 4 = RERR Braden, Zhang, et al. Expiration: January 1996 [Page 27] Internet Draft RSVP Specification July 1995 5 = PTEAR 6 = RTEAR RSVP Checksum: 16 bits A standard TCP/UDP checksum overmessages, which can then be forwarded directly to thecontents ofnext RSVP- capable router on theRSVP message, withpath(s) back towards thechecksum field replaced by zero. RSVP Length: 16 bits The total lengthsource. Some interconnection topologies ofthisRSVPpacket in bytes, including the common headerand non-RSVP routers can cause RESV messages to arrive at thevariable-length objects that follow. If the MF flag is onwrong RSVP-capable node, or to arrive at theFragment Offset field is non-zero, this is the length ofwrong interface at thecurrent fragment of a larger message. Message ID: 32 bits A label shared by all fragments of one message from a given next/previous RSVP hop.correct node. An RSVPimplementation assignes a unique Message ID to eachdaemon must be prepared to handle either situation. When a RESV messageit sends. MF: More Fragments Flag: 1 bit This flag isarrives, its IP destination address should normally be thelow-order bitaddress of one ofa byte;theseven high- order bits are reserved. Itlocal interfaces. If so, the reservation should be made on the addressed interface, even if it is not the one onfor all butwhich thelast fragment ofmessage arrived. If the destination address does not match any local interface and the message is not amessage. Fragment Offset: 24 bits This field givesPATH or PTEAR, it should be forwarded without further processing by this node. 2.9 Host Model Before a session can be created, thebyte offsetsession identification, comprised of DestAddress and perhaps thefragment ingeneralized destination port, must be assigned and communicated to all themessage. 4.1.2 Object Formats An object consists of one or more 32-bit words with a one-word header, insenders and receivers by some out-of-band mechanism. When an RSVP session is being set up, the followingformat: 0 1 2 3 +-------------+-------------+-------------+-------------+ | Length (bytes) | Class-Num | C-Type | +-------------+-------------+-------------+-------------+ | | // (Object contents) // | | +-------------+-------------+-------------+-------------+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. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page 28] Internet Draft RSVP SpecificationJulyNovember 1995An object header has the following fields: LengthH3 A16-bit field containing the total object length in bytes. Must always bereceiver application receives amultiple of 4, and at least 4. Class-Num Identifies the object class; values of this fieldPATH message. H4 A receiver starts sending appropriate RESV messages, specifying the desired flow descriptors. H5 A sender application receives a RESV message. H6 A sender starts sending data packets. There aredefinedseveral synchronization considerations. o H1 and H2 may happen inAppendix A. Each object class haseither order. o Suppose that aname, whichnew sender starts sending data (H6) but there are no multicast routes because no receivers have joined the group (H1). Then the data willalwaysbecapitalized in this document. An RSVP implementation must recognizedropped at some router node (which node depends upon thefollowing classes: NULL A NULL object hasrouting protocol) until receivers(s) appear. o Suppose that aClass-Num of zero,new sender starts sending PATH messages (H2) and data (H6) simultaneously, and there are receivers but no RESV messages have reached the sender yet (e.g., because itsC-Type is ignored. Its length must bePATH messages have not yet propagated to the receiver(s)). Then the initial data may arrive atleast 4, but can be any multiplereceivers without the desired QoS. The sender could mitigate this problem by awaiting arrival of4. A NULL objectthe first RESV message (H5); however, receivers that are farther away mayappear anywherenot have reservations in place yet. o If asequence of objects, and its contentsreceiver starts sending RESV messages (H4) before receiving any PATH messages (H3), RSVP willbe ignored byreturn error messages to the receiver.SESSION Contains the IP destination address (DestAddress) and possibly a generalized destination port,The receiver may simply choose todefine a specific sessionignore such error messages, or it may avoid them by waiting forthe other objects that follow. Required in every RSVP message. RSVP_HOP Carries the IP address of the RSVP-capable nodePATH messages before sending RESV messages. [LZ: should recommend thatsent this message. This document refers to a RSVP_HOP object asaPHOP ("previous hop") objectreceiver wait fordownstreamat least PATH messagesor as a NHOP ("next hop") object for upstream messages. TIME_VALUES If present, contains values for the refresh period R and the state time-to-live T (see section 4.5),tooverride the default values of R and T. STYLE Defines the reservation style plus style-specific information thatarrive before sending RESV messages.] A specific application program interface (API) for RSVP is nota FLOWSPEC or FILTER_SPEC object,defined ina RESV message.this protocol spec, as it may be host system dependent. However, Section 3.9.1 discusses the general requirements and presen Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page 29] Internet Draft RSVP SpecificationJulyNovember 1995FLOWSPEC Defines a desired QoS, in3. RSVP Functional Specification 3.1 RSVP Message Formats An RSVP message consists of aRESV message. FILTER_SPEC Definescommon header followed by asubsetvariable number ofsession data packetsvariable-length, typed "objects". The subsections thatshould receivefollow define thedesired QoS (specified by an FLOWSPEC object), in a RESV message. SENDER_TEMPLATE Contains a sender IP addressformats of the common header, the object structures, andperhaps some additional demultiplexing information to identify a sender, ineach of the RSVP message types. For each RSVP message type, there is aPATH message. SENDER_TSPEC Definesset of rules for thetraffic characteristicspermissible choice and ordering ofa sender's data stream, in a PATH message. ADSPEC Carries an Adspec containing OPWA data, in a PATH message. ERROR_SPEC Specifies an error,object types. These rules are specified using Backus-Naur Form (BNF) augmented with square brackets surrounding optional sub-sequences. 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 ina PERR or RERR message. POLICY_DATA Carries information that will allow a local policy module to decide whether an associated reservationthe common header are as follows: Vers: 4 bits Protocol version number. This isadministratively permitted. May appear in aversion 1. Flags: 4 bits (None defined yet) Type: 8 bits 1 = PATHor RESV message. INTEGRITY Contains cryptographic data to authenticate the originating node, and perhaps to verify the contents, of this RSVP message. SCOPE An explicit specification of the scope for forwarding a2 = RESVmessage.3 = PERR 4 = RERR Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page 30] Internet Draft RSVP SpecificationJulyNovember 1995C-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 (together5 = PTEAR 6 = RTEAR 7 = RACK RSVP Checksum: 16 bits A standard TCP/UDP checksum over the contents of the RSVP message, with the'Optional' flag bit) may be used together as a 16-bit number to define a unique type for each object.checksum field replaced by zero. RSVP Length: 16 bits Thehigh-order bittotal length of this RSVP packet in bytes, including theClass-Numcommon header and the variable-length objects that follow. If the MF flag isused to determine what action a node should take if it does not recognize the Class- Num of an object. If Class-Num < 128, then the node should ignore the object but forward it (unmerged). If Class-Num >= 128, the message should be rejected and an "Unknown Object Class" error returned. Note that merging cannot be performedonunknown object types; as a result, unmerged objects may be forwarded toor thefirst node that does know how to merge them. The scaling limitations thatFragment Offset field is non-zero, thisimposes must be considered when defining and deploying new object types. 4.1.3 Path Message PATH messages carry information from senders to receivers alongis thepaths used bylength of thedata packets.current fragment of a larger message. Send_TTL: 8 bits The IPdestination addressTTL value with which the message was sent. Message ID: 32 bits A label shared by all fragments of one message from aPATHgiven 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 theDestAddress for the session; the source address is an address of the node that sent the message (preferably the addresslow-order bit of a byte; theinterface through which it was sent). The PHOP (i.e.,seven high- order bits are reserved. It is on for all but theRSVP_HOP) objectlast fragment ofeach PATH message must containa message. Fragment Offset: 24 bits This field gives theaddressbyte offset of theinterface through whichfragment in thePATH message was sent. The formatmessage. 3.1.2 Object Formats Every object consists of one or more 32-bit words with aPATH message is as follows: <Path Message> ::= <Common Header> <SESSION> <RSVP_HOP> [ <INTEGRITY> ] [ <TIME_VALUES> ] <sender descriptor list> <sender descriptor list> ::= <empty >one- word header, in the following format: 0 1 2 3 +-------------+-------------+-------------+-------------+ | Length (bytes) | Class-Num | C-Type |<sender descriptor list> <sender descriptor> <sender descriptor> ::= <SENDER_TEMPLATE> [ <SENDER_TSPEC> ] [ <POLICY_DATA> ] [ <ADSPEC> ]Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page 31] Internet Draft RSVP SpecificationJulyNovember 1995Each sender descriptor defines a sender, and+-------------+-------------+-------------+-------------+ | | // (Object contents) // | | +-------------+-------------+-------------+-------------+ An object header has thesender descriptor list allows multiple sender descriptors tofollowing fields: Length A 16-bit field containing the total object length in bytes. Must always bepacked intoaPATH message. For each sender in the list,multiple of 4, and at least 4. Class-Num Identifies theSENDER_TEMPLATEobjectdefines the formatclass; values ofdata packets;this field are defined inaddition, a SENDER_TSPECAppendix A. Each objectmay specify the traffic flow,class has aPOLICY_DATAname, which is always capitalized in this document. An RSVP implementation must recognize the following classes: NULL A NULL objectmay specify user credential and accounting information,has a Class-Num of zero, andan ADSPECits C-Type is ignored. Its length must be at least 4, but can be any multiple of 4. A NULL object maycarry advertising (OPWA) data. Each sender host must periodically send PATH message(s) containingappear anywhere in asender descriptor for each its own data stream(s). Each sender descriptor is forwardedsequence of objects, andreplicated as necessary to followits contents will be ignored by thedelivery path(s) for a data packet fromreceiver. SESSION Contains thesame sender, finally reachingIP destination address (DestAddress), theapplications on all receivers (except that it is not looped backIP protocol id, and a generalized destination port, to define areceiver includedspecific session for the other objects that follow. Required in every RSVP message. RSVP_HOP Carries thesame application process asIP address of thesender). It is an error to send ambiguous path state, i.e., two or more Sender TemplatesRSVP-capable node thatare different but overlap, duesent this message. This document refers towildcards. For example, if we representaSender TemplateRSVP_HOP object as(IP address, sender port, protocol id and use `*' to representawildcard, then each of the following pairs of Sender Templates would be an error: (10.1.2.3, 34567, *) and (10.1.2.3, *, *) (10.1.2.3, 34567, *) and (10.1.2.3, 34567, 17) A PATH message received atPHOP ("previous hop") object for downstream messages or as anode is processed to create path stateNHOP ("next hop") object forall senders definedupstream messages. TIME_VALUES Contains the value for the refresh period R used bySENDER_TEMPLATE objects inthesender descriptor list. If present, any POLICY_DATA, SENDER_TSPEC,creator of the message; see 3.5. Required in Braden, Zhang, et al. Expiration: May 1996 [Page 32] Internet Draft RSVP Specification November 1995 every PATH andADSPEC objects are also savedRESV 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 thepath state. Ifdesired QoS (specified by anerror is encountered while processingFLOWSPEC object), in aPATH message,RESV message. SENDER_TEMPLATE Contains aPERR message is sentsender IP address and perhaps some additional demultiplexing information toall senders implied by the SENDER_TEMPLATEs. Periodically, the path state is scanned to create newidentify a sender, in a PATHmessages to be forwarded downstream. A node must independently compute the route for each sender descriptor being forwarded. These routes, obtained from uni-/multicast routing, generally depend uponmessage. SENDER_TSPEC Defines the(sender host address, DestAddress) pairs and consisttraffic characteristics of alist of outgoing interfaces. The descriptors being forwarded through the same outgoing interface may be packed into as fewsender's data stream, in a PATHmessages as possible. Note that multicast routing of pathmessage. 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 isbased on the sender address(es) from the sender descriptors, notadministratively permitted. May appear in a PATH or RESV message. INTEGRITY Contains cryptographic data to authenticate theIP source address; this is necessaryoriginating node, and perhaps toprevent routing loops; see Section 4.3.verify the contents, Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page32]33] Internet Draft RSVP SpecificationJulyNovember 1995Multicast routing may also report the expected incoming interface (i.e., the shortest path back to the sender). If so, any PATH message that arrives on a different interface should be discarded immediately. It is possible that routing will report no routes for a (sender, DestAddress) pair; path state forof this RSVP message. SCOPE An explicit list of sendershould be stored locally but not forwarded. 4.1.4 Resv Messages RESV messages carry reservation requests hop-by-hop from receivershosts towards which tosenders, along the reverse paths of data flow forforward a message. May appear in a RESV, RERR, or RTEAR message. RESV_CONFIRM Carries thesession. TheIPdestinationaddress of a receiver that requested a confirmation. May appear in a RESVmessageor 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-order bit of theunicast addressClass-Num is used to determine what action a node should take if it does not recognize the Class- Num of an object; see Section 3.8. 3.1.3 Path Message Each sender host periodically sends aprevious-hop node, obtainedPATH message containing a description of each data stream it originates. The PATH message travels from a sender to receiver(s) along thepath state.same path(s) used by the data packets. The IP source address of a PATH message is an address of thenodesender it describes, while the destination address is the DestAddress for the session. These addresses assure thatsentthemessage.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. TheNHOP (i.e.,node then forwards theRSVP_HOP) object must containPATH messages towards the receiver(s), replicating it as dictated by multicast routing, while preserving the original IPaddress ofsource address. PATH messages eventually reach the(incoming) interface through whichapplications on all receivers; however, they are not looped back to a receiver running in theRESV message is sent.same application process as the sender. TheRESV messageformat of a PATH message is as follows:<ResvBraden, Zhang, et al. Expiration: May 1996 [Page 34] Internet Draft RSVP Specification November 1995 <Path Message> ::= <Common Header> <SESSION> <RSVP_HOP> [ <INTEGRITY> ][<TIME_VALUES>]<sender descriptor> <sender descriptor> ::= <SENDER_TEMPLATE> <SENDER_TSPEC> [<S_POLICY_DATA><POLICY_DATA> ] [<SCOPE><ADSPEC> ]<STYLE> <flow descriptor list> <S_POLICY_DATA> ::= <POLICY DATA> <flow descriptor list> ::= <flow descriptor> | <flow descriptor list> <flow descriptor> HereThe PHOP (i.e., theS_POLICY_DATA object is a POLICY_DATARSVP_HOP) objectthat is associated withof each PATH message contains thesession, i.e., with alladdress of theflows that may be listed. There may also be flow-specific POLICY_DATA objects, as described below.interface through which the PATH message was most recently sent. TheBNF aboveSENDER_TEMPLATE object definesa flow descriptor list as simply a listthe format offlow descriptors. The following style-dependent rules specify more exactlydata packets from this sender, while thecompositionSENDER_TSPEC object specifies the traffic characteristics ofa valid flow descriptor list. o WF Style: Braden, Zhang, et al. Expiration: January 1996 [Page 33] Internet Draft RSVP Specification July 1995 <flow descriptor list> ::= <WF flow descriptor> <WF flow descriptor> ::= <FLOWSPEC> [ <F_POLICY_DATA> ] <FILTER_SPEC> <F_POLICY_DATA> ::= <POLICY_DATA> o FF style: <flow descriptor list> ::= <FF flow descriptor> | <flow descriptor list> <FF flow descriptor> <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 requeststhe flow. Optionally, there may bepacked into the flow descriptor list ofasingle RESV message. A FLOWSPEC orPOLICY_DATA objectcan be omitted if itspecifying user credential and accounting information and/or an ADSPEC object carrying advertising (OPWA) data. A PATH message received at a node isidenticalprocessed to create path state for themost recent such object that appeared insender defined by thelist. o SE style: <flow descriptor list> ::= <SE descriptor> | <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 requestSENDER_TEMPLATE and SESSION objects. Any POLICY_DATA, SENDER_TSPEC, and ADSPEC objects are also saved in the path state. If an error isdefined byencountered while processing asingle SE descriptor, which includesPATH message, aFLOWSPEC definingPERR message is sent to theshared reservation, possibly a POLICY_DATA object, and a listoriginating sender ofFILTER_SPEC objects. Multiple elementary requests, each representing an independent shared reservation, may be packed intotheflow descriptor list of a single RESVPATH message.A POLICY_DATA object may be omitted if it is Braden, Zhang, et al. Expiration: January 1996 [Page 34] Internet DraftPATH messages must satisfy the rules on SrcPort and DstPort in Section 2.2. Periodically, the RSVPSpecification July 1995 identicaldaemon 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 themost recent such object that appeared inappropriate uni-/multicast routing daemon. The route depends upon thelist.session DestAddress, and for some routing protocols also upon the source (sender's IP) address. Thereservation scope, i.e.,routing information generally includes thesetlist ofsender hosts towardsnone or more outgoing interfaces to whicha particular reservation isthe PATH message to beforwarded, is determined as follows: o For a style with explicit scope, matchforwarded. Because eachFILTER_SPEC object against the path state created from SENDER_TEMPLATE objects to selectoutgoing interface has aparticular sender. It is an error if a FILTER_SPEC matches more than one SENDER_TEMPLATE, due to wildcarding. A SCOPE object, if present, should be ignored. o For a style with wildcard scope, a SCOPE object, if present, defines the scope with an explicit list of senderdifferent IPaddresses (see Section 4.3 below). If there is no SCOPE object, the scope is determined by the relevant set of senders inaddress, thepath state. A SCOPE object must bePATH messages sentinout different interfaces contain different PHOP addresses. In addition, anywildcard scope RESV message that is forwarded to more than one previous hop. See Section 4.3 below. 4.1.5 Error Messages There are two types of RSVP error messages. o PERR messages result fromADSPEC 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, andtravel towards senders. PERR messages are routed hop-by-hop usingMOSPF) also keep track of thepath state; atexpected incoming interface for eachhop, the IP destination addresssource host to a multicast group. Whenever this information is available, RSVP should check theunicast addressincoming interface ofa previous hop. o RERReach PATH message and immediately discard those Braden, Zhang, et al. Expiration: May 1996 [Page 35] Internet Draft RSVP Specification November 1995 messagesresult fromthat have arrived on the wrong interface. 3.1.4 Resv Messages RESV messagesand travel towards the appropriate receivers. They are routedcarry reservation requests hop-by-hopusingfrom receivers to senders, along thereservation state; at each hop,reverse paths of data flows for the session. The IP destination address of a RESV message is the unicast address of anext-hop node. Errors encountered while processing error messages must not create further error messages. <PathErr message>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> ]<ERROR_SPEC> <sender descriptor> <sender descriptor> ::= (see earlier definition) Braden, Zhang, et al. Expiration: January 1996 [Page 35] Internet Draft RSVP Specification July 1995 <ResvErr Message> ::= <Common Header> <SESSION><TIME_VALUES> [<INTEGRITY><S_POLICY_DATA> ] [ <RESV_CONFIRM> ] [ <SCOPE> ][S_POLICY_DATA] <ERROR_SPEC><STYLE><error flow<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 message is 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-specific POLICY_DATA objects, as described below. The BNF above defines a flow descriptor list as simply a list of flow descriptors. The following style-dependent rulesdefinespecify in more detail the composition of a validerrorflow descriptorin termslist for each ofsequences defined earlier:the reservation styles. o WF Style:<error<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:<error<flow descriptor list> ::= <First FF flow descriptor>::=| <flow descriptor list> <FF flow descriptor>o SE style: <error<First FF flow descriptor> ::=<SE<FLOWSPEC> [ <F_POLICY_DATA> ] <FILTER_SPEC> <FF flow descriptor>POLICY_DATA objects need be included in error messages only for information when they are relevant (i.e., when an administrative failure::= [ <FLOWSPEC> ] [ <F_POLICY_DATA> ] <FILTER_SPEC> Each elementary FF style request isbeing reported). The ERROR_SPEC object specifies the errordefined by a single (FLOWSPEC, FILTER_SPEC) pair, andincludesmultiple such requests may be packed into theIP addressflow descriptor list of a single RESV message. A FLOWSPEC object can be omitted if it is identical to thenodemost recent such object thatdetectedappeared in theerror (Error Node Address). Whenlist; the first FF flow descriptor must contain aPATH or RESV message has been "packed" with multiple sets ofFLOWSPEC. 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 elementaryparameters,SE style request is defined by a single SE descriptor, which includes a FLOWSPEC defining theRSVP implementation should process each set independentlyshared reservation, optionally a POLICY_DATA object, andreturnaseparate error message for each that is in error. In general, error messages should be delivered to the applications on alllist of FILTER_SPEC objects. The reservation scope, i.e., thesession nodes that (may have) contributed to this error. A PERR message is forwarded to all previous hops for allset of senderslisted in the Sender Descriptor List. A RERR message is generally forwardedtowardsall receivers that may have caused the error being reported. More specifically:which a Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page36]37] Internet Draft RSVP SpecificationJulyNovember 1995o The node that detects an error in aparticular reservationrequest creates and sends an RERR messageis to be forwarded, is determined as follows: o Explicit sender selection Match each FILTER_SPEC object against thenext hop from which the erroneous reservation came. The message must contain the information required to define the error andpath state created from SENDER_TEMPLATE objects toroute the error message. Routing requires at leastselect a particular sender. An ambiguous match, i.e., aSTYLE object and one or moreFILTER_SPECobject(s) from the erroneous RESV message. Formatching more than one SENDER_TEMPLATE (e.g. through use of a wildcard port), is anadmission control failure, for example,error. Any SCOPE object associated with theerroneous FLOWSPEC mustreservation should beincluded.ignored in this case. oSucceeding nodes forward the RERR message using their local reservation state,Wildcard sender selection All senders that route to thenext hops of reservations thatgiven outgoing interface matchthe FILTER_SPEC(s) in the message. For reservations with wildcard scope,this request. A SCOPE object, if present, contains an explicit list of sender IP addresses. If there isan additional limitation on forwarding RERR messages, to avoid loops; see Section 4.3. Whenno SCOPE object, theerror is an admission control failure, a nodescope isallowed (but not required) to match the FLOWSPEC as well as the FILTER_SPEC object(s), to limitdetermined by thedistributionrelevant set ofa RERR message to those receivers that `caused'senders in theerror. Suppose thatpath state. Whenever aRERRRESV messagecontains a FLOWSPEC Qerr thatwith wildcard sender selection isbeing matched against the FLOWSPEC Qlocalforwarded to more than one previous hop, a SCOPE object must be included in thelocal reservation state in node N. Qerr, which originated in a node upstream from N, resulted from mergingmessage. See Section 3.3 below. 3.1.5 Error and Confirmation Messages There are three types offlowspecs that included Qlocal. Generally, a RERR message can be forwarded toRSVP error/confirmation messages. o PERR messages result from PATH messages and travel towards senders. PERR messages are routed hop-by-hop using thereceiver(s) that specifiedpath state; at each hop, the`biggest' flowspec. The comparisonIP destination address is the unicast address ofQerr againstaparticular Qlocal to determine whether Qlocal qualifies as (one of)previous hop. o RERR messages result from RESV messages and travel towards the`biggest', may be called `de-merging'. As with merging,appropriate receivers. They are routed hop-by-hop using thedetails of de- merging depend uponreservation state; at each hop, theservice andIP destination address is theFLOWSPEC format, andunicast address of a next-hop node. o RACK messages areoutside RSVP itself.sent to (probabilistically) acknowledge reservation requests. ARERRRACK messagethatisforwarded should carry the FILTER_SPEC fromsent as thecorresponding reservation state (thus `un-merging'result of thefilter spec). Whenappearance of aRERR message reachesRESV_CONFIRM object in areceiver, the STYLE object, flow descriptor list,RESV message, andERROR_SPEC object (whichcontainsthe LUB-Used flag) should be delivereda copy of that RESV_CONFIRM. The RACK message is sent to thereceiver application. In the caseunicast address ofan Admission Control error, the flow descriptor list will containa receiver host; theFLOWSPEC object that failed. Ifaddress is obtained from theLUB-Used flagRESV_CONFIRM object. A RACK message isoff, this should be `equal'forwarded to(but not necessarily identical to)theFLOWSPEC originatedreceiver hop-by-hop bythis application; otherwise, they may differ.(to accommodate the hop-by-hop integrity check mechanism). Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page37]38] Internet Draft RSVP SpecificationJulyNovember 19954.1.6 Teardown Messages There are two types of RSVP Teardown message, PTEAR and RTEAR. o A PTEAR message deletes path state (which may, in turn, delete reservation state) and travels towards all receivers that are downstream fromErrors encountered while processing error messages must cause thepoint of initiation. A PTEARerror messageis routed like a PATH message, and its IP destination address is DestAddress forto be discarded without creating further error messages; however, logging of such events may be useful. None of these messages modify thesession. o A RTEAR message deletes reservationstateand travels towards all matching senders upstream from the pointofteardown initiation. A RTEAR message is routed like a corresponding RESV message (using the same scope rules). Its IP destination address isany node through which they pass; instead, they are only reported to theunicast address of a previous hop. <PathTear Message>end application. <PathErr message> ::= <Common Header> <SESSION><RSVP_HOP>[ <INTEGRITY> ] <ERROR_SPEC> <senderdescriptor list>descriptor> <senderdescriptor list>descriptor> ::= (see earlier definition)<ResvTear<ResvErr Message> ::= <Common Header> <SESSION><RSVP_HOP>[ <INTEGRITY> ] <ERROR_SPEC> [S_POLICY_DATA] [ <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)FLOWSPEC or POLICY_DATA objectsThe RESV_CONFIRM object inthe flow descriptor list ofaRTEAR message will be ignored and may be omitted. Note that the RTEARRACK messagewill cease to be forwarded at the same node where merging suppresses forwardingis a copy of thecorrespondingobject from the RESVmessages. The change will be propagated as a new teardownmessageifthat triggered theresult has been to remove all state for this session at this node; otherwise, it may result inconfirmation. The following style-dependent rules define theimmediate forwardingcomposition of amodified RESV refresh message. Deletion of path state, whether as the result of a teardown message or because of timeout, may force adjustments in related reservation state to maintain consistency in the local node.valid error flow descriptor: o WF Style: <error flow descriptor> ::= <WF flow descriptor> Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page38]39] Internet Draft RSVP SpecificationJulyNovember 1995 o FF style: <error flow descriptor> ::= <FF flow descriptor> o SE style: <error flow descriptor> ::= <SE flow descriptor> Theadjustment in reservation state depends uponERROR_SPEC object specifies thestyle. For example, suppose a PTEAR deleteserror and includes thepath state forIP 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 failure is being reported). In asender S. IfRACK message, thestyle specifies distinct reservations (FF),ERROR_SPEC is used onlyreservations for sender S should be deleted; ifto carry thestyle specifies shared reservations (WF or SE), deleteIP address of thereservation if this wasoriginating node, in thelast filter spec. These reservation changes should not trigger an immediateError Node Address; the error specification is a special value that indicates a confirmation. When a RESVrefresh message, sincemessage contains a list of flow descriptors (e.g., FF style), theteardownRSVP implementation should process each flow descritor independently and return a separate RERR messagewillfor each that is in error. Generally speaking, a RERR message should be forwarded towards all receivers that may havealready made the required changes upstream. However, atcaused the error being reported. More specifically: o The node that detects an error inwhichaRTEARreservation request sends a RERR messagestops,to thechange ofnext hop from which the erroneous reservationstate may trigger a RESV refresh starting at that node. 4.2 Sending RSVP Messages RSVP messages are sent hop-by-hop between RSVP-capable routers as "raw" IP datagrams with protocol number 46. Raw IP datagrams are similarly intended to be used between an end system andcame. The message must contain thefirst/last hop router; however, it is also possibleinformation required toencapsulate RSVP messages as UDP datagrams for end-system communication, as described in Appendix C. UDP encapsulation may simplify installation of RSVP on current end systems, particularly when firewalls are in use. Upondefine thearrival of an RSVP message M that changeserror and to route thestate,error message. Routing requires at least anode must forwardSTYLE object and one or more FILTER_SPEC object(s) from themodified state immediatly. If this is implemented aserroneous RESV message. For animmediate refresh of all the stateadmission control failure, for example, thesession, then no refresh messages shoulderroneous FLOWSPEC must besent outincluded. o Succeeding nodes forward theinterface through which M arrived. This rule is necessary to prevent packet storms on broadcast LANs. An RSVPRERR messagemust be fragmented when necessaryusing their local reservation state, tofit intotheMTUnext hops of reservations that match theinterface through which it will be sent. All fragments ofFILTER_SPEC(s) in themessage should carrymessage. For reservations with wildcard scope, there is an additional limitation on forwarding RERR messages, to avoid loops; see Section 3.3. When thesame unique value oferror is an admission control failure, a node is allowed (but not required) to match theMessage ID field,FLOWSPEC as well asappropriate Fragment Offset and MF bits, in their common headers. When an RSVP message arrives, it must be reassembled before it can be processed. The refresh period R is appropriate as a ressembly timeout time. Since RSVP messages are normally expected to be generated and sent hop-by-hop, using the RSVP-level fragmentation mechanism should result in no IP fragmentation. However, IP fragmentation may occur through a non-RSVP cloud. For IP6, which does not support router fragmentation, this case will require thattheRSVP implementation use Path MTU Discovery or hand configuration to obtain an appropriate MTU. Under overload conditions, lost RSVP control messages could cause a failure of resource reservations. Routers should be configuredBraden, Zhang, et al. Expiration:JanuaryMay 1996 [Page39]40] Internet Draft RSVP SpecificationJulyNovember 1995 FILTER_SPEC object(s), togive a preferred class of service to RSVP packets. RSVP should not use significant bandwidth, but queueing delay and droppinglimit the distribution ofRSVP messages needsa RERR message tobe controlled. Loss of RSVP packets throughthose receivers that `caused' the error. Suppose that acongested non-RSVP cloud may still beRERR message contains aproblem. The simplest solutionFLOWSPEC Qerr that isto adopt a larger value forbeing matched against thetimeout factor K (see section 4.5 below). If this does not suffice, neighboring RSVP routers could useFLOWSPEC Qlocal in the local reservation state in node N. Qerr, which originated in aTCP connection to pass RSVP messages throughnode upstream from N, resulted from merging of flowspecs that included Qlocal. Generally, anon-RSVP cloud.RERR message can be forwarded to the receiver(s) that specified the `biggest' flowspec. Thecurrent protocol contains no automatic mechanismcomparison of Qerr against a particular Qlocal tosetting up such connections; hand configuration is assumed. 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 is mapped 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 support multicast tunnels in the following manner: 1. When a node N forwards a PATH message out a logical outgoing interface L, it includes indetermine whether Qlocal qualifies as (one of) themessage some encoding of`biggest', may be called `de-merging'. As with merging, theidentitydetails ofL. This information is carried (in the HOP object) as a value calledde- merging depend upon the"logical interface handle" or LIH. 2. The next hop node N' storesservice and theLIH value in its path state. 3. When N' sends a RESVFLOWSPEC format, and are outside RSVP itself. A RERR messageto N, it includesthat is forwarded should carry theLIH valueFILTER_SPEC from thepathcorresponding reservation state(again, in(thus `de-merging' theHOP object). 4.filter spec). Whenthe RESVa RERR or RACK messagearrives at N, its LIH value providesreaches a receiver, theinformation necessary to attachSTYLE object, flow descriptor list, and ERROR_SPEC object (which contains thereservationLUB-Used flag) should be delivered to theappropriate logical interface. Note that N creates and interpretsreceiver application. In theLIH; it iscase of anopaque value to N'. 4.3 Avoiding RSVP Message Loops We must ensureAdmission Control error, the flow descriptor list will contain the FLOWSPEC object that failed. If therules for forwarding RSVP control messages avoid looping. In steady state, PATH and RESV messages are forwarded only once per refresh period on each hop. This avoids directly looping packets, but thereLUB-Used flag isstilloff, this should be semantically equivalent (but not necessarily identical) to thepossibility of an " auto-refresh" loop, clockedFLOWSPEC originated bythe refresh period. The effectthis application; otherwise, they may differ. 3.1.6 Teardown Messages There are two types ofsuch a loop is to keepRSVP Teardown message, PTEAR and RTEAR. o A PTEAR message deletes path stateactive "forever", even if the end nodes have ceased refreshing it (but(which in turn deletes the reservation statewill be deleted when thefor that sender, if there is any) and travels towards all receiversleave the multicast group and/orthat are downstream from thesenders stop sendingpoint of initiation. A PTEAR message is routed like a PATHmessages). Onmessage, and its IP destination address is DestAddress for theother hand, errorsession. o A RTEAR message deletes reservation state and travels towards all matching senders upstream from the point of teardownmessages are forwarded immediately and are thereforeinitiation. A RTEAR message is routed in the same way as a corresponding RESV message (using the same scope rules). Its IP destination address is the unicast address of a previous hop. <PathTear Message> ::= <Common Header> <SESSION> <RSVP_HOP> Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page40]41] Internet Draft RSVP SpecificationJulyNovember 1995subject to direct looping. o PATH Messages PATH messages are forwarded using routes determined by the appropriate routing protocol. For routing that is source- dependent (e.g., some multicast routing algorithms), the RSVP daemon must route each sender descriptor separately using the source addresses found[ <INTEGRITY> ] <sender descriptor> <sender descriptor> ::= (see earlier definition) <ResvTear Message> ::= <Common Header> <SESSION> <RSVP_HOP> [ <INTEGRITY> ] [ <SCOPE> ] <STYLE> <flow descriptor list> <flow descriptor list> ::= (see earlier definition) FLOWSPEC or POLICY_DATA objects in theSENDER_TEMPLATE objects. This should ensure that there will be no auto-refresh loopsflow descriptor list ofPATH messages, even inatopology with cycles. Consider eachRTEAR messagetype. o PTEAR Messages PTEAR messages use the same routing as PATH messages and therefore cannot loop. o PERR Messages Since PATH messages don't loop, they create path state defining a loop-free reverse path to each sender. PERR messages are always directed to particular senderswill be ignored andtherefore cannot loop. o RESV Messages Like PERR message, RESV messages directed to particular senders (i.e., with explicit scope) cannot loop. However, theremay be omitted. Note that, unless it is accidentally dropped along the way, apotential for auto-refresh of RESV messages with wildcard scope;PTEAR message will reach all thesolution is presented below. o RTEAR Messagesreceivers down stream from its origination. On the other hand, a RTEARmessages are routedmessage will cease to be forwarded at the sameas RESV messages and have an analogous looping problem for wildcard scope. o RERR Messages RERR messages for wildcard scope reservations havenode where merging suppresses forwarding of thesame potential for looping ascorresponding RESV messages. In each node N along thereservations themselves, andway, if thesolution presented below is required. IfRTEAR message causes thetopology has no loops, then loopingremoval ofwildcard-scoped messages can be avoided by simply enforcing the rule given earlier:all statethat is received through a particular interface must never be forwarded out the same interface. However, when the Braden, Zhang, et al. Expiration: January 1996 [Page 41] Internet Draft RSVP Specification July 1995 topology does have cycles then further effort is needed to prevent auto-refresh loops in wildcard-scope RESV, RTEAR, and RERR messages. The solution isforsuch messages to carry an explicit sender address list in a SCOPE object. When a RESV or RTEAR message with wildcard scope is to be forwarded to a particular previous hop,this session, N will create a newSCOPE object is computed from the SCOPE objects that were received (in messages of the same type). If the computed SCOPE object is empty, theteardown messageis not forwardedtothe previous hop;be propagated further upstream; otherwise, the RTEAR messageis sent containingmay result in thenew SCOPE object. The rules for computing a new SCOPE object forimmediate forwarding of a modified RESVor RTEAR message are as follows: 1. The union is formedrefresh message. Deletion of path state as thesetsresult ofsender IP addresses listed in all SCOPE objectsa PTEAR message or a timeout may force adjustments intherelated reservation state, to maintain stateforconsistency in thegiven session. Iflocal node. The adjustment in reservation statefrom some NHOP does not containdepends upon the style. For example, suppose aSCOPE object,PTEAR deletes the path state for asubstitutesenderlist must be created and included inS. If theunion. Forstyle specifies explicit sender selection (FF or SE), delete any reservation with a filter spec matching S; otherwise, the style is wildcardscopesender selection (WF)message that arrived on outgoing interface OI,and thesubstitute listreservation should be deleted if S is theset of senders that routelast sender toOI. Forthe session. These reservation changes should not trigger anexplicit scope (SE)immediate RESV refresh message,it issince theset of senders explicitly listed inPTEAR message have already made themessage. 2. Any local senders (i.e., any sender applications on this node) are removed from this set. 3. Ifrequired changes upstream. However, at theSCOPE object is to be sent to PHOP, remove fromnode in which a RTEAR message stops, theset any senders that did not come from PHOP. Figure 12 shows an examplechange ofwildcard-scoped (WF style) RESV messages. The address lists within SCOPE objects are shown in square brackets. Note that therereservation state maybe additional connections among the nodes, creating looping topologytrigger a RESV refresh starting at thatis not shown.node. 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 Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page 42] Internet Draft RSVP SpecificationJulyNovember 1995________________ a | | c R4, S4<----->|intended to be used 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 systems that cannot do raw network I/O. PATH, PTEAR, and RACK messages must be sent with the 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 12: SCOPE ObjectsAlert IP option [Katz95] inWildcard-Scope Reservations SCOPE objects are not necessary if the multicast routing uses shared trees or if the reservation style has explicit scope. Furthermore, attaching a SCOPE object to a reservationtheir IP headers. This option may bedeferred to a node which has more than one previous hop upstream. The following rules areusedfor SCOPE objectsby inwildcard-scoped RERR messages: 1. The nodethe fast forwarding path of a high-speed router to detect datagrams thatdetectedrequire special processing. Upon theerror initiatesarrival of anRERRRSVP messagecontaining a copy of the SCOPE object associated withM that changes thereservation state or message in error. 2. Suppose a wildcard-scoped RERR message arrives at a node withstate, aSCOPE object containing the sender host address list L. Thenodeforwardsmust forward theRERRmodified state immediately. However, this must not trigger sending an messageusingout therulesinterface through which M arrived (as could happen if the implementation simply triggered an immediate refresh ofSection 4.1.5. However,all state for theRERRsession). This rule is necessary to prevent packet storms on broadcast LANs. An RSVP messageforwarded out OImustcontain a SCOPE object derived from L by including only those senders that routebe fragmented when necessary toOI. If this SCOPE object is empty,fit into theRERR message should not be sent out OI. Braden, Zhang, et al. Expiration: January 1996 [Page 43] Internet Draft RSVP Specification July 1995 4.4 Local Repair When a route changes,MTU of thenext PATH or RESV refreshinterface through which it willestablish path or reservation state (respectively) alongbe sent. All fragments of thenew route. To provide fast adaptation to routing changes withoutmessage should carry theoverheadsame unique value ofshort refresh periods,thelocal routing protocol moduleMessage ID field, as well as appropriate Fragment Offset and MF bits, in their common headers. When an RSVP message arrives, it must be reassembled before it cannotifybe processed. The refresh period R can be used as an appropriate reassembly timeout time. Since RSVP messages are normally generated and sent hop-by-hop, using the RSVP-level fragmentation mechanism should avoid further fragmentation at the IP level. However, IP fragmentation may still occur when RSVPdaemonmessages travel through a non-RSVP cloud. In case ofroute changes for particular destinations. TheIP6, which does not support IP fragmentation at routers, an RSVPdaemon shouldimplementation must usethis informationPath MTU Discovery or hand configuration totriggerobtain animmediateappropriate MTU between adjacent RSVP neighbors. RSVP recovers from occasional packet losses by its periodic refresh mechanism. Under network overload, however, substantial losses ofstate for these destinations, using the new route. More specifically, the rules are as follows: o When routing detectsRSVP messages could cause achangefailure of resource reservations. To control thesetqueueing delay and dropping ofoutgoing interfaces for sending PATH messages for destination G,RSVPsends immediate PATH refreshes for all sessions G/* (i.e., for any session with destination G, regardless of destination port). Such refresh messages are topackets, routers should besentconfigured toat leastoffer 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 for thenew outgoing interfacestimeout factor K (see section 3.5 below). Some multicast routing protocols provide forthese sessions. o"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 is mapped into some Braden, Zhang, et al. Expiration: May 1996 [Page 43] Internet Draft RSVP Specification November 1995 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 a node N forwards a PATH messagearrives without aPrevious Hop address that differs fromlogical outgoing interface L, it includes in theone storedmessage some encoding of the identity of L, called the "logical interface handle" or LIH. The LIH value is carried in the RSVP_HOP object. 2. The next hop node N' stores the LIH value in its pathstate, RSVP should send immediatestate. 3. When N' sends a RESVrefreshes for that session. 4.5 Time Parameters There are two time parameters relevantmessage toeach element of RSVPN, it includes the LIH value from the pathor reservationstate (again, ina node:therefresh period R between receiving successive refreshes forRSVP_HOP object). 4. When thestate, and its lifetime L. Each RSVPRESVor PATHmessagemay contain a TIME_VALUES object specifying the R value that was usedarrives at N, its LIH value provides the information necessary togenerate this refresh message; this is usedattach the reservation todeterminetheL whenappropriate logical interface. Note that N creates and interprets thestateLIH; it isreceived and stored. In more detail: 1. To avoid premature lossan opaque value to N'. 3.3 Avoiding RSVP Message Loops Forwarding of RSVP messages must avoid looping. In steady state,we require that L >= (K + 0.5)* R, where K is a small integer. Then K-1 successivePATH and RESV messagesmay be lost without state being deleted. Currently K = 3are forwarded only once per refresh period on each hop. This avoids looping packets, but there issuggested. 2. Each message will generally carry a TIME_VALUES object containing the R used to generate refreshes;still therecipient node uses this R to determine Lpossibility of an " auto-refresh" loop, clocked by thestored state. However,refresh period. Such auto-refresh loops keep state active "forever", even ifa default R = Rdef is used,theTIME_VALUES object may be omitted from a message. Rdef is currently defined to be 30 seconds. Braden, Zhang, et al. Expiration: January 1996 [Page 44] Internet Draft RSVP Specification July 1995 3. This document does not specifyend nodes have ceased refreshing it, until either theinterval R to be used for generating refresh messages. Ifreceivers leave thenode does not implement local repair of reservations disrupted by route changes, a smaller R improvesmulticast group and/or thespeed of adaptingsenders stop sending PATH messages. On the other hand, error and teardown messages are forwarded immediately and are therefore subject torouting changes (but increases overhead). With local repair, a router can be more relaxed about R sincelooping. Consider each message type. o PATH Messages PATH messages are forwarded in exactly theperiodic refresh becomes onlysame way as IP data packets. Therefore there should be no loops of PATH messages, even in abackstop robustness mechanism. A node may therefore adjusttopology with cycles. o PTEAR Messages PTEAR messages use theeffective R dynamicallysame routing as PATH messages and therefore cannot loop. o PERR Messages Braden, Zhang, et al. Expiration: May 1996 [Page 44] Internet Draft RSVP Specification November 1995 Since PATH messages do not loop, they create path state defining a loop-free reverse path tolimit the overhead dueeach sender. PERR messages are always directed torefresh messages. 4. The TIME_VALUES object could contain, in additionparticular senders and therefore cannot loop. o RESV Messages RESV messages directed tothe hop-by-hop R value, an end-to-end upper bound on R, called Rmax. When Rmax is specified, a nodeparticular senders (i.e., with explicit sender selection) cannotset R > Rmax.loop. However, RESV messages with wildcard sender selection (WF style) have anode is allowed to refuse an RSVP message (i.e., drop it and return an error) when it specifies an Rmax value that is so small that it would create unacceptable overhead. This refusal would look likepotential for auto-refresh looping. o RTEAR Messages Although RTEAR messages are routed the same as RESV messages, during the second pass around akind of admission control failure. 5. However, when R is changed dynamically,loop there will be no state so any RTEAR message will be dropped. Hence there isa limit to how fast it may increase. Specifically,no looping problem here. o RERR Messages RERR messages for WF style reservations may loop for essentially theratiosame reasons that RESV messages loop. o RACK Messages RACK messages are forwarded towards a fixed unicast receiver address and cannot loop. If the topology has no loops, then looping oftwo successive values R2/R1 must not exceed 1 + Slew.Max. Currently, Slew.Max is 0.30. With K = 3, one packet may"wildcard" RESV and RERR messages, i.e., messages with wildcard sender selection, can belost withoutavoided by simply enforcing the rule given earlier: statetimeout while Rthat isincreasing 30 percent per refresh cycle. 6. To improve robustness, a node may temporarily send refreshes more often than R afterreceived through astate change (including initial state establishment). 7. A node should randomize its refresh timeoutsparticular interface must never be forwarded out the same interface. However, when the topology does have cycles, further effort is needed toavoid synchronization and burstiness of refreshes. 8. The valuesprevent auto-refresh loops ofRdef, K,wildcard RESV messages andSlew.Max used in an implementation should be easily modifiable, as experience may lead to different values. The possibilityfast loops ofdynamically changing K and/or Slew.Max in responsewildcard RERR messages. The solution tomeasured loss ratesthis problem adopted by this protocol specification is forfuture study. Braden, Zhang, et al. Expiration: January 1996 [Page 45] Internet Draft RSVP Specification July 1995 4.6 RSVP Interfaces RSVP onsuch messages to carry an explicit sender address list in arouter has interfacesSCOPE object. When a RESV message with WF style is torouting andbe forwarded totraffic control. RSVP onahost has an interface to applications (i.e, an API) and also an interface to traffic control (if it exists on the host). 4.6.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 to be performed. Some of these calls cause information to be returned asynchronously. o Register Call: REGISTER( DestAddress , DestPort [ , SESSION_object ] , SND_flag , RCV_flag [ , Source_Address ] [ , Source_Port ] [ , Source_ProtID ] [ , Sender_Template ] [ , Sender_Tspec ] [ , Data_TTL ] [ , Sender_Policy_Data ] [ , Upcall_Proc_addr ] ) -> Session-id This call initiates RSVP processing for a session, defined by DestAddress together with the TCP/UDP port number DestPort. If successful, the REGISTER call returns immediately withparticular previous hop, alocal session identifier Session-id, which may be used in subsequent calls. The SESSION_object parameternew SCOPE object isincluded as an escape mechanism to support some more general definition ofcomputed from thesession ("generalized destination port"), shouldSCOPE objects thatbe necessarywere received in matching RESV messages. If thefuture. Normally SESSION_object will be omitted; if itcomputed SCOPE object issupplied, it should be an appropriately-formatted representation of a SESSION object. SND_flag should be set true ifempty, thehost will send data, and RCV_flag should be set true ifmessage is not forwarded to thehost will receive data. Setting neither trueprevious hop; otherwise, the message isan error.sent containing the new SCOPE object. Theoptionalrules for computing a new SCOPE object for a RESV message are as follows: Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page46]45] Internet Draft RSVP SpecificationJulyNovember 1995parameters Source_Address, Source_Port, Sender_Template, Sender_Tspec, Data_TTL, and Sender_Policy_Data are all concerned with a data source, and they will be ignored unless SND_flag is true. If SND_FLAG is true, a successful REGISTER call will cause RSVP to begin sending PATH messages for this session using these parameters, which are interpreted as follows: - Source_Address This1. The union is formed of theaddresssets of sender IP addresses listed in all SCOPE objects in theinterface from whichreservation state for thedata will be sent.given session. Ifit is omitted,reservation state from some NHOP does not contain adefault interface will be used. This parameter is needed onSCOPE object, amultihomedsubstitute senderhost. - Source_Port This is the UDP/TCP port from which the data willlist must besent. If it is omitted or zero, the port is "wild"created andcan match any portincluded ina FILTER_SPEC. - Source_ProtID This istheIP protocol ID forunion. For a message that arrived on outgoing interface OI, thesender data. If itsubstitute list isomitted or zero,theprotocol id is "wild" and can match any protocol id in a FILTER_SPEC. - Sender_Template This parameter is included as an escape mechanism to support a more general definitionset ofthesenders that route to OI. 2. Any local senders (i.e., any sender("generalized source port"). Normallyapplications on thisparameter may be omitted; if it is supplied, it should be an appropriately formatted representation of a SENDER_TEMPLATE object. - Sender_Tspec This parameter is a Tspec describingnode) are removed from this set. 3. If thetraffic flowSCOPE object is to besent. It may be includedsent toprevent over- reservation onPHOP, remove from theinitial hops. - Data_TTL This is the (non-default) IP Time-To-Live parameterset any senders thatis being supplied ondid not come from PHOP. Figure 11 shows an example of wildcard-scoped (WF style) RESV messages. The address lists within SCOPE objects are shown in square brackets. Note that there may be additional connections among thedata packets. It is needed to ensurenodes, creating looping topology thatPath messages dois nothave ashown. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page47]46] Internet Draft RSVP SpecificationJulyNovember 1995scope larger than________________ 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 not necessary if the multicastdata packets. - Sender_Policy_Data This optional parameter passes policy data forrouting uses shared trees or if thesender. This datareservation style has explicit sender selection. Furthermore, attaching a SCOPE object to a reservation may besupplied bydeferred to asystem service,node which has more than one previous hop upstream. The following rules are used for SCOPE objects in RERR messages with WF style: 1. The node that detected theapplication treating it as opaque. Finally, Upcall_Proc_addr is the address of an upcall procedure to receive asynchronouserroror event notification; see below. o Reserve Call: RESERVE( session-id, style, style-dependent-parms ) A receiver uses this call to makeinitiates an RERR message containing aresource reservation forcopy of thesession registered as `session-id'. The style parameter indicatesSCOPE object associated with the reservationstyle. The rest of the parameters depend uponstate or message in error. 2. Suppose a wildcard-scoped RERR message arrives at a node with a SCOPE object containing thestyle, but generally these will include appropriate flowspecs, filter specs, and possibly receiver policy data objects.sender host address list L. Thefirst RESERVE call will initiatenode forwards theperiodic transmission of RESV messages. A later RESERVE call may be given to modifyRERR message using theparametersrules of Section 3.1.5. However, theearlier call (but note that changing the reservations may result in admission control failure, depending upon the style). The RESERVE call returns immediately. FollowingRERR message forwarded out OI must contain aRESERVE call, an asynchronous ERROR/EVENT upcall may occur at any time. o Release Call: RELEASE( session-id ) This call will terminate RSVP state for the session specifiedSCOPE object derived from L bysession-id. It may send appropriate teardown messages and will cease sending refreshes forincluding only those senders that route to OI. If thissession-id. o Error/Event Upcalls Upcall: <Upcall_Proc>( ) -> session-id, Info_type,SCOPE object is empty, the Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page48]47] Internet Draft RSVP SpecificationJulyNovember 1995[ Error_code , Error_value , LUB-Used, ] List_count, [ Flowspec_list,] [ Filter_spec_list, ] [ Advert_list, ] [ Policy_data ] Here "Upcall_Proc" representsRERR message should not be sent out OI. 3.4 Local Repair When a route changes, theupcall procedure whose address was supplied in the REGISTER call. This upcall may occur asynchronously at any time after a REGISTER call and before a RELEASE call, to indicate an errornext PATH oran event. Currently there are three upcall types, distinguished byRESV refresh message will establish path or reservation state (respectively) along theInfo_type parameter: 1. Info_type = Path Event A Path Event upcall indicatesnew route. To provide fast adaptation toa receiver application that there is at least one active sender. It results from receiptrouting changes without the overhead of short refresh periods, thefirst PATH message for this session. This upcall provides synchronizing information tolocal routing protocol module can notify thereceiver application, and it may also provide parallel listsRSVP daemon ofsenders (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.route changes for particular destinations. TheError_code, Error_value, LUB-Used flag, and Policy_data parameters will be undefined inRSVP daemon should use thisupcall. 2. Info_type = Resv Event A Resv Event upcall indicatesinformation to trigger asender application that a reservationquick refresh of state forthis session in place alongthese destinations, using theentire path to at least one receiver. It is triggered bynew route. More specifically, thereceiptrules are as follows: o When routing detects a change of thefirst reservation message or by modificationset ofprevious reservation state,outgoing interfaces forthis session. `List_count' will be 1,destination G, RSVP should wait for a short period W, andFlowspec_list will contain one FLOWSPEC, the effective QoS that wouldthen send PATH refreshes for all sessions G/* (i.e., for any session with destination G, regardless of destination port). The short wait period before sending PATH refreshes is to allow the routing protocol getting settled with the new change(s), and the exact value for W should beapplicablechosen 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 the one stored in the path state, RSVP should send immediate RESV refreshes for that session. 3.5 Time Parameters There are two time parameters relevant to each element of RSVP path or reservation state in a node: theapplication itself. Filter_spec_listrefresh period R between generation of successive refreshes for the state by the neighbor node, andAdvert_list willthe local state's lifetime L. Each RSVP RESV or PATH message may containonea TIME_VALUES object specifying the R value that was used to generate this (refresh) message. This R value is then used to determine the value for L when the state is received and stored. The values for R and L may vary from hop to hop. 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 the periodic messages contend with other network Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page49]48] Internet Draft RSVP SpecificationJulyNovember 1995NULL object. The Error_code, Error_value, LUB-Used flag,traffic for link andPolicy_data parameters will be undefined inforwarding resources. Since RSVP sends periodic refresh messages, it must avoid message synchronization and ensure that any synchronization that may occur is not stable. For thisupcall. 3. Info_type = Path Error An Path Error event indicates an error in sender information that was specified in the REGISTER call. The Error_code parameter will define the error, and Error_value may supply some additional (perhaps system-specific) data aboutreason, theerror. `List_count' willrefresh timer should be1, and Filter_spec_list and Flowspec_list will containrandomly set to a value in theSender_Template suppliedrange [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 theREGISTER call; Sender_Tspec and Advert_list will each contain one NULL object. The Policy_data parameter willworst case, K-1 successive messages may beundefined in this upcall. 4. Info_type = Resv Error An Resv Error event indicates an error in processinglost without state being deleted. To compute areservation message to which this application contributed. The Error_code parameter will definelifetime L for a collection of state with different R values R0, R1, ..., replace R by max(Ri). Currently K = 3 is suggested as theerror, and Error_valuedefault. However, it maysupplybe necessary to set a larger K value for hops with high loss rate. K may be set either by manual configuration per interface, or by someadditional (perhaps system-specific) data onadaptive technique that has not yet been specified. 3. Each message that creates state (PATH or RESV message) carries a TIME_VALUES object containing theerror. Filter_spec_list and Flowspec_list will containR used to generate refreshes; theFILTER_SPEC and FLOWSPEC objects fromrecipient node uses this R to determine L of theerror flow descriptor (see Section 4.1.5). List_count will specifystored state. 4. R is chosen locally by each node. If thenumbernode does not implement local repair ofFILTER_SPECS in Filter_spec_list, while there will be one FLOWSPEC in Flowspec_list. The Policy_data parameter will be undefined in this upcall. 5. Info_type = Policy Data A Policy Information upcall passesreservations disrupted by route changes, aPolicy_data parameter containing policy information (accounting, current costs, prices, quota, etc.) that arrived atsmaller R speeds up adaptation to routing changes, while increasing thereceiver. List_count willRSVP overhead. With local repair, a router can bezero, andmore relaxed about R since theError_code, Error_value, and LUB-Used flag parameters will be undefined in this upcall. Although RSVP messages indicating path events or errorsperiodic refresh becomes only a backstop robustness mechanism. A node maybe received periodically,therefore adjust theAPI should makeeffective R dynamically to control thecorresponding asynchronous upcallamount of overhead due to refresh messages. The current suggested default for R is 30 seconds. However, theapplication onlydefault should be configurable per interface. 5. When R is changed dynamically, there is a limit to how fast it may increase. Specifically, the ratio of two successive values R2/R1 must not exceed 1 + Slew.Max. Currently, Slew.Max is 0.30. With K = 3, one packet may be lost without state timeout while R is increasing 30 percent per refresh cycle. 6. To improve robustness, a node may temporarily send refreshes Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page50]49] Internet Draft RSVP SpecificationJulyNovember 1995on the first occurrence, or when the information to be reported changes. 4.6.2 RSVP/Traffic Control Interface In each router and host, enhanced QoS is achieved bymore often than R after agroupstate change (including initial state establishment). 7. The values ofinter-related traffic control functions: a packet classifier, an admission control module,Rdef, K, anda packet scheduler. This section describes a genericSlew.Max used in an implementation should be easily modifiable per interface, as experience may lead to different values. The possibility of dynamically adapting K and/or Slew.Max in response to measured loss rates is for future study. 3.6 Traffic Policing and TTL RSVPinterfaceis required to compute and pass several service-related flags to trafficcontrol. 1. Make a Reservation Call: Rhandle = TC_AddFlowspec( Interface, Flowspec [ , Sender_Tspec] , E_Police_Flag , M_Police_Flag ) This call passes a Flowspec definingcontrol: policing flags and adesirednon-RSVP flag. Some QoSto admission control. Itservices mayalso pass Sender_Tspec, the maximumrequire trafficcharacteristics computed overpolicing at some or all of (1) theSENDER_TSPECsedge ofsenders that will contribute data packets to this reservation. E_Police_Flag and M_Police_Flag are Boolean parameters. E_Police_Flag is on if this is an entry node, while M_Police is on if this node is an interior data mergethe network, (2) a merging point for data from multiple senders, and/or (3) ashared reservation style. These flags are usedbranch point where traffic flow from upstream may be greater than the downstream reservation. RSVP knows where such points occur and must so indicate toenablethe trafficpolicing or shaping when appropriate,control mechanism. On the other hand, RSVP does not interpret the service embodied inaccordance withtheservice.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 Thiscall returns an error code if Flowspecflag ismalformed or ifset in therequested resources are unavailable. Otherwise, it establishes a new reservation channel corresponding to Rhandle. It returns the opaque number Rhandle for subsequent references to this reservation. 2. Modify Reservation Call: TC_ModFlowspec( Rhandle, new_Flowspec [ , Sender_Tspec] , Police_flag ) This call can modify an existing reservation. If new_Flowspecfirst-hop RSVP node that implements traffic control (and isincluded,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 hop capable of traffic control ispassed to Admission Control; if itreached. This isrejected,controlled by the E_Police flag in SESSION objects. o M_Police_Flag -- Merge Policing This flag should be set on for a reservation using a shared 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 thecurrentflowspecis leftbeing installed Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page51]50] Internet Draft RSVP SpecificationJulyNovember 1995 is smaller than, or incomparable to, a FLOWSPEC inforce. The corresponding filter specs, if any, are not affected. 3. Delete Flowspec Call: TC_DelFlowspec( Rhandle ) This call will delete an existing reservation, includingplace on any other interface, for theflowspecsame FILTER_SPEC andall associated filter specs. 4. Add Filter Spec Call: FHandle = TC_AddFilter( Rhandle, Session , FilterSpec ) This call is usedSESSION. RSVP must also detect and report toassociatereceivers the presence of non-RSVP hops in the path. For this purpose, anadditional filter spec withRSVP daemon must place into each PATH message that it sends thereservation specified byvalue of thegiven Rhandle, following a successful TC_AddFlowspec call. This call returns a filter handle FHandle. 5. Delete Filter Spec Call: TC_DelFilter( FHandle ) This call is used to remove a specific filter, specified by FHandle. 6. OPWA Update Call: TC_Advertise( interface, Adspec [ ,Sender_TSpec ] ) -> New_Adspec This call is used for OPWAIP TTL with which the message was sent. The RSVP-capable node that receives this message compares this field tocomputetheoutgoing advertisement New_Adspec for a specified interface. Sender_TSpec is also passedTTL with which the message was actually received, and if they differ it turns on the Non_RSVP flag. This flag isavailable. 7. Preemption Upcall Upcall: TC_Preempt() -> RHandle, Reason_code In ordercarried forward togrant a new reservation request,receivers in theadmission control and/or policy modules may be allowed to preempt an existing reservation. This might be reflectedADSPEC [??]. 3.7 Multihomed Hosts Accommodating multihomed hosts requires some special rules inan Braden, Zhang, et al. Expiration: January 1996 [Page 52] Internet Draft RSVP Specification July 1995 upcall to RSVP, passingRSVP. We use theRHandleterm `multihomed host' to cover both hosts (end systems) with more than one network interface [could ref. section 3.3.4 ofthe preempted reservation,RFC-1122], andsome indication of the reason. 4.6.3 RSVP/Routing Interfacerouters that are supporting local application programs. AnRSVP implementation needs the following support from the packet forwarding and routing mechanisms of the node. o Promiscuous receive modeapplication executing on a multihomed host may explicitly specify which interface any given flow will use forRSVP messages Any datagram receivedsending and/or forIP protocol 46 must be divertedreceiving data packets, to override theRSVP program for processing, without being forwarded.system-specified default interface. TheidentityRSVP daemon must be aware of theinterface on which it is received should also be availabledefault, and if an application sets a specific interface, it must also pass that information tothe RSVP daemon.RSVP. oRoute Query RSVP must be ableSending Data A sender application uses an API call (SENDER in Section 3.9.1) toquery the routing daemon fordeclare to RSVP theroute(s) for forwarding a specific datagram. Ucast_Route_Query( DestAddress, Notify_flag ) -> OutInterface Mcast_Route_Query( SrcAddress, DestAddress, Notify_flag ) -> OutInterface_list Ifcharacteristics of theNotify_flag is True, routingdata flow it willsave state necessary to issue unsolicited route change notification callbacks whenever the specified route changes.originate. Thiswill continue until routing receives a route querycallwithmay optionally include theNotify_Flag set False. o Route Change Notificationlocal IP address of the sender. Ifrequestedit is set bya route query withtheNotify_flag True,application, this parameter must be theroutinginterface address for sending the data packets; otherwise, the system default interface is implied. The RSVP daemonmay provideon the host then sends PATH messages for this application out the specified interface (only). o Making Reservations A receiver application uses anasynchronous callbackAPI call (called RESERVE in Section 3.9.1) toRSVP thatrequest aspecified routereservation from RSVP. This call may optionally include the local IP address of the receiver, i.e., the interface address for receiving data packets. In the case of multicast sessions, this is the interface on which the group haschanged. Ucast_Route_Change( ) -> DestAddress, OutInterface Mcast_Route_Change( ) -> SrcAddress, DestAddress, OutInterface_list o Outgoing Link Specificationbeen joined. If the parameter is Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page53]51] Internet Draft RSVP SpecificationJulyNovember 1995 omitted, the system default interface is used. In general, the RSVPmust be able to force a (multicast) datagram to be sent on a specific outgoing virtual link, bypassing the normal routing mechanism. A virtual link may be a real outgoing link or a multicast tunnel. Outgoing link specification is necessary because RSVP maydaemon should senddifferent versions of outgoing PATHRESV messages for application out thesame source and destination addressesspecified interface. However, when the application is executing ondifferent interfaces. Ita router and the session isalso necessarymulticast, a more complex situation arises. Suppose insome casesthis case that a receiver application joins the group on an interface Iapp that differs from Isp, the shortest-path interface toavoidthe sender. Then there are two possible ways for multicast routingloops. o Discover Interface Listto deliver data packets to the application. The RSVP daemon mustbe abledetermine which case holds by examining the path state, tolearn what real and virtual interfaces are active, with their IP addresses. Braden, Zhang, et al. Expiration: January 1996 [Page 54] Internet Draft RSVP Specification July 1995 5. Message Processing Rules This generic descriptiondecide which incoming interface to use for sending RESV messages. 1. The multicast routing protocol may create a separate branch ofRSVP operation assumesthefollowing data structures. An actual implementation may use additional or different structuresmulticast distribution `tree' tooptimize processing. o PSB -- Path State Block Each PSB holdsdeliver to Iapp. In this case, there will be path state fora particular (session, sender) pair, which are defined by SESSIONboth Isp andSENDER_TEMPLATE objects, respectively. PSB contents includeIapp. The path state on Iapp should only match aPHOP object and possibly SENDER_TSPEC, POLICY_DATA, and/or ADSPEC objectsreservation fromPATH messages. o RSB -- Reservation State Block Each RSB holds reservationthe local application; it must be marked "Local_only" by the RSVP daemon. If "Local_only" path state fora particular 4-tuple: (session, next hop, style, filterspec), which are defined in SESSION, NHOP, STYLE, and FILTER_SPEC objects, respectively. RSB contents also include a FLOWSPEC object and may include a POLICY_DATA object. We assume that RSB contents includeIapp exists, theoutgoing interface OI that is implied by NHOP. MESSAGE ARRIVES Verify version number, checksum, and length fields of common header, and discardRESV messageif any mismatchshould be sent out Iapp. Note that it isfound. Further processing depends upon message type. PATH MESSAGE ARRIVES Each sender descriptor object sequence in the message defines a sender. Process each sender as follows, startingpossible for thePath_Refresh_Neededpath state blocks for Isp andResv_Refresh_Needed flags off. 1. If there is a POLICY_DATA object, verify it;Iapp to have the same next hop, ifitthere isunacceptable, build and send a "Administrative Rejection" PERR message, drop the PATH message, and return.an intervening non-RSVP cloud. 2.Call the appropriate Route_Query routine, using DestAddress from SESSION and (forThe multicastrouting) SrcAddress from SENDER_TEMPLATE. This provides aroutingbit mask ROUTE_MASK and (for a multicast destination) an EXPECTED_INTERFACE. 3. Ifprotocol may forward data within themessage arrived on an interface differentrouter fromEXPECTED_INTERFACE, drop it and return. Braden, Zhang, et al. Expiration: January 1996 [Page 55] Internet Draft RSVP Specification July 1995 4. Search for aIsp to Iapp. In this case, Iapp will appear in the list of outgoing interfaces of the path stateblock (PSB) whose (SESSION, SENDER_TEMPLATE) pair matches the corresponding objects infor Isp, and themessage. If there is a match considering wildcardsRESV message should be sent out Isp. 3.8 Future Compatibility We may expect that in theSENDER_TEMPLATE objects, but the two SENDER_TEMPLATEs differ, build and send a "Ambiguous Path" PERR message, drop the PATH message, and return. 5. If there is no matching PSB for the (SESSION, SENDER_TEMPLATE) pair then: o Create afuture newPSB. o Set a cleanup timer for the PSB. If this is the first PSB for the session, set a refresh timerobject C-Types will be defined forthe session. o Copy the SESSION, TIME_VALUES,existing object classes, andPHOPperhaps new object classes will be defined. It will be desirable to employ such new objectsinto the PSB. Copy into the PSB any ofwithin thefollowing objectsInternet using older implementations that do not recognize them. Unfortunately, this is only possible to a limited degree with reasonable complexity. The rules arepresent: POLICY_DATA, SENDER_TSPEC, and ADSPEC. o Store ROUTE_MASK and EXPECTED_INTERFACE inas follows. 1. Unknown Class There are two possible ways that an RSVP implementation can treat an object with unknown class. This choice is determined by thePSB. o Turn onhigh-order bit of thePath_Refresh_Needed flag. 6. Otherwise (there is a matching PSB): o Restart cleanup timer.Class-Num octet, as Braden, Zhang, et al. Expiration: May 1996 [Page 52] Internet Draft RSVP Specification November 1995 follows. oIf the SENDER_TSPEC and/or ADSPEC values differ betweenClass-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, thePSB, copy the new values intonode should ignore thePSBobject but forward it, unexamined andturn onunmodified, in all messages resulting from thePath_Refresh_Needed flag. Note that if SEND_TSPEC has changed, reservations matching S may also change;state contained in thismay be deferred untilmessage. For example, suppose that a RESVrefresh arrives. o If the new ROUTE_MASK differs frommessage thatstoredis received contains an object of unknown class. Such an object should be saved in thePSB, turn onreservation state without further examination; however, only thePath_Refresh_Needed flag, and storelatest object with a 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 newROUTE_MASK into the PSB. o IfRESV message. Note that objects with unknown class cannot be merged; however, unmerged objects may be forwarded until they reach a node that knows how to merge them. Forwarding objects with unknown class enables incremental deployment of new objects; however, the scaling limitations of doing so must be carefully examined before a newEXPECTED_INTERFACE differs fromobject class is deployed with Class-Num < 128. These rules should be considered when any new Class-Num is defined. 2. Unknown C-Type for Known Class One might expect the known Class-Num to provide information thatstoredcould allow intelligent handling of such an object. However, in practice such class-dependent handling is complex, and in many cases it is not useful. Generally, thePSB, turn onappearance of an object with unknown C-Type should result in rejection of theResv_Refres_Needed flagentire message andstore the new EXPECTED_INTERFACE value intogeneration of an error message (RERR or PERR as appropriate). The error message will include thePSB. 7. SaveClass-Num and C-Type that failed (see Appendix B); theIP TTL with whichend system that originated the failed messagearrived in the PSB .may be able to use this information to retry Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page56]53] Internet Draft RSVP SpecificationJulyNovember 19958. If the Path_Refresh_Needed flag is now set, executethePATH REFRESH event sequence (below); however, send no PATH refresh messages out the interface through which the PATH message arrived. 9. If the Resv_Needed flag is now set, execute the RESV REFRESH event sequence (below). PATH TEAR MESSAGE ARRIVES o If there is no path state for this destination, drop the message and return. o Forward a copy of the PTEAR messagerequest usingthe same rules as for a PATH message (see PATH REFRESH). o Each sender descriptor in the PTEAR message contains a SENDER_TEMPLATE object definingasender S;different C-Type object, repeating this process until itas follows. 1. Locate the PSB for the pair: (session, S). If none exists, continue with next sender descriptor. 2. Examine the RSB's for this session and delete reservation state that is associated with sender S and no other sender. 3. Delete the PSB. o Drop the PTEAR messageruns out of alternatives or succeeds. Objects of certain classes (FLOWSPEC, ADSPEC, andreturn. PATH ERROR MESSAGE ARRIVES o If therePOLICY_DATA) areno existing PSB's for SESSION then dropopaque to RSVP, which simply hands them to traffic control or policy modules. Depending upon its internal rules, either of thePERR messagelatter modules may reject a C- Type andreturn. o Look upinform the RSVP daemon; RSVP should then reject thePSB for (session, sender); sender is defined by SENDER_TEMPLATE. If no PSB is found, drop PERRmessage andreturn. o If PHOP in PSB is local API, deliver error to application viasend anupcall: Call: <Upcall_Proc>( session-id, Path Error, Error_code, Error_value, 0, 1, SENDER_TEMPLATE, NULL, NULL, NULL)error, as described in the previous paragraph. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page57]54] Internet Draft RSVP SpecificationJulyNovember 1995Any POLICY_DATA, SENDER_TSPEC, or ADSPEC object in the message is ignored. o Otherwise (PHOP is not local API), forward3.9 RSVP Interfaces RSVP on acopy of the PERR messagerouter has interfaces tothe PHOP node. RESV MESSAGE ARRIVES A RESV message arrives through outgoing interface OI. o Check the SESSION object. If there are no existing PSB's for SESSION then buildrouting andsendto traffic control. RSVP on aRERR message (as described later) specifying "No path information", drop the RESV message, and return. However, do not send the RERR message if the stylehost haswildcard reservation scopean interface to applications (i.e, an API) andthis is not the receiver host itself. o Check the STYLE object. If the style in the message conflicts with the style of any reservation for this session in placealso an interface to traffic control (if it exists onany interface, rejecttheRESV message by building and sendinghost). 3.9.1 Application/RSVP Interface This section describes aRERR message specifying "Conflicting Style", drop the RESV message,generic interface between an application andreturn. o Checkan RSVP control process. The details of a real interface may be operating-system dependent; thePOLICY_DATA object. Verifyfollowing can only suggest thePOLICY_DATA field (if any)basic functions tocheck permissionbe performed. Some of these calls cause information tocreatebe returned asynchronously. o Register Session Call: SESSION( DestAddress , ProtocolId, DstPort , [ , SESSION_object ] [ , Upcall_Proc_addr ] ) -> Session-id This call initiates RSVP processing for areservation. If it is unacceptable, buildsession, defined by DestAddress together with ProtocolId andsend an "Administrative rejection" RERR message, droppossibly a port number DstPort. If successful, theRESV message, and return. o Make reservations Process the STYLE object and the flow descriptor list. For FF style, execute the following steps for each b flow descriptor, i.e., for each (FLOWSPEC, FILTER_SPEC) pair. For SE style, execute the following steps for each FILTER_SPECSESSION call returns immediately with a local session identifier Session-id, which may be used in subsequent calls. The Upcall_Proc_addr parameter defines thelist, using the given FLOWSPEC. For WF style, execute the following once, usingaddress of aninternal placeholder "WILD_FILTER" for FILTERSPEC if it is omitted. 1. Findupcall procedure to receive asynchronous error orcreate a reservation state block (RSB) forevent notification; see below. The SESSION_object parameter is included as an escape mechanism to support some more general definition of the4-tuple: (SESSION, NHOP, style, FILTER_SPEC).session ("generalized destination port"), should that be necessary in the future. 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:JanuaryMay 1996 [Page58]55] Internet Draft RSVP SpecificationJulyNovember 19952. StartA sender uses this call to define, orrestartto modify thecleanout timer ondefinition of, theRSB. Start a refresh timerattributes of the data stream. The first SENDER call forthis session if none was started. 3. IftheRSB existed and contains state matchingsession registered as `Session- id' will cause RSVP to begin sending PATH messages for thisflow descriptor, continue withsession; later calls will modify thenext flow descriptor. Otherwise (the statepath information. The SENDER parameters are interpreted as follows: - Source_Address This isnew or modified), continue processingthecurrent flow descriptor withaddress of thefollowing steps. 4. Scaninterface from which theset of PSBs (senders) whose SENDER_TSPECs match FILTER_SPEC. -data will be sent. Ifthis setit isempty, build and send an error message specifying "Noomitted, a default interface will be used. This parameter is needed on a multihomed senderinformation", and continue with the next flow descriptor.host. -If this set contains more than one PSB and ifSource_Port This is thestyle hasUDP/TCP port from which theexplicit option (e.g., FFdata will be sent. If it is omitted orSE), build and send an error message specifying "Ambiguous filter spec" and continue with the next flow descriptor. - Set K_E_Police_flag on if any of these PSBs have the E_Police flag on, otherwise set K_E_Police_flag off. Set K_M_Police_flag on ifzero, thestyle has wildcard scope and thereport ismore than one PSB"wild" and can match any port inthe scope, otherwise, set K_M_Police_flag off.a FILTER_SPEC. -Compute K_TspecSender_Template This parameter is included asthe suman escape mechanism to support a more general definition of theSENDER_TSPEC objects, if any, insender ("generalized source port"). Normally thisset of PSBs. 5. Compute the parameters for the effective reservation, by considering all RSB's for the same (SESSION, OI, FILTERSPEC) triple.parameter may be omitted. -Compute the effective kernel flowspec, K_Flowspec, asSender_Tspec This optional parameter describes themaximum oftraffic flow to be sent. It may be included to prevent over- reservation on theFLOWSPEC values in these RSB'sinitial hops. -ComputeData_TTL This is theeffective kernel filter spec K_Filter by merging(non-default) IP Time-To-Live parameter that is being supplied on theFILTER_SPEC objects in these RSB's. 6. If this reservation has wildcard scope and thisdata packets. It is needed to ensure that Path messages do notthe first flow descriptor in the message, one of the filter specs musthavechanged; deletea scope larger than multicast data packets. - Sender_Policy_Data This optional parameter passes policy data for theold one and installsender. This data may be supplied by a system service, with thenew:application treating it as opaque. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page59]56] Internet Draft RSVP SpecificationJulyNovember 1995TC_DelFilter( old_Fhandle ); Fhandle = TC_AddFilter( Rhandle, SESSION, K_filter) Then continue with the next flow descriptor. 7. Otherwise, if there was no previous kernel reservation in place for (SESSION, OI, FILTERSPEC), call the kernel interface module: Rhandle = TC_AddFlowspec( OI, K_flowspec, K_Tspec, K_E_Police_flag, K_M_Police_flago Reserve Call: RESERVE( session-id, [ receiver_address , ] [ ACK_flag, ] style, style-dependent-parms )IfA receiver uses this callfails, build and sendto make or to modify aRERR message specifying "Admission control failed", and continue withresource reservation for thenext flow descriptor. Otherwise, recordsession registered as `session-id'. The first RESERVE call will initiate thekernel handle Rhandle returned byperiodic 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 result in admission control failure). The optional `receiver_address' parameter may be used by a receiver on a multihomed host (or router); it is theRSB(s). Then call: TC_AddFilter( Rhandle, SESSION, K_Filter) to set the filter, and continue withIP address of one of thenext flow descriptor. However,node's interfaces. The ACK_flag should be set on ifthere wasaprevious kernelreservationwith handle Rhandle, andACK is desired, off otherwise. The `style' parameter indicates theflowspec has changed, call: TC_ModFlowspec( Rhandle, K_Flowspec, K_Tspec, K_E_Police_flag, K_M_Police_flag ) If this call fails, build and send a RERR message specifying "Admission control failed". In any case, dropreservation style. The rest of theRESV message and return. Ifparameters depend upon theflowspec is unchangedstyle, butthegenerally these will include appropriate flowspecs, filterspec has changed, installspecs, 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 state for thenew: TC_DelFilter( old_Fhandlesession specified by session-id. The node then sends appropriate teardown messages and ceases sending refreshes for this session-id. o Error/Event Upcalls Upcall: <Upcall_Proc>( )Fhandle = TC_AddFilter( Rhandle, SESSION, K_filter)-> session-id, Info_type, [ Error_code , Error_value , Error_Node , LUB-Used, ] List_count, [ Flowspec_list,] [ Filter_spec_list, ] [ Advert_list, ] Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page60]57] Internet Draft RSVP SpecificationJulyNovember 1995Then continue with[ Policy_data ] Here "Upcall_Proc" represents thenext flow descriptor. If processing a RESV message finds an error,upcall procedure whose address was supplied in the SESSION call. This upcall may occur asynchronously at any time after aRERR message is created containing flow descriptorSESSION call and before a RELEASE call, to indicate anERRORS object. The Error Node fielderror or an event. Currently there are five upcall types, distinguished by the Info_type parameter: 1. Info_type = Path Event A Path Event upcall results from receipt of theERRORS object (see Appendix A)first PATH message for this session, indicating to a receiver application that there issetat least one active sender. This upcall provides synchronizing information to theIP address of OI,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 themessage is sent unicast to NHOP. RESV TEAR MESSAGE ARRIVES A RTEAR message arrives on outgoing interface OI. o Initialize flag Tear_Needed to False. o Execute the following steps for each flow descriptor, i.e.,number in each(FLOWSPEC, FILTERSPEC) pair,list; where these objects are missing, corresponding null objects must appear. The Error_code, Error_value, LUB-Used flag, and Policy_data parameters will be undefined inthe flow descriptor list: 1. Find matching RSB for the 4-tuple: (SESSION, NHOP, style, FILTER_SPEC). If no RSB is found, continue with next flow descriptor.this upcall. 2.Delete the RSB. 3. If there are no more RSBs for the same (SESSION, OI, FILTER_SPEC) triple, callInfo_type = Resv Event A Resv Event upcall is triggered by thekernel interface to deletereceipt of thereservation: TC_DelFlowspec( K_handle ) and set Tear_Needed to True. 4. Otherwise (there are other RSB'sfirst reservation message or by modification of a previous reservation state, forthe same reservation), recompute K_Flowspecthis session. `List_count' will be 1, andcallFlowspec_list will contain one FLOWSPEC, thekernel interface module: TC_ModFlowspec( K_handle, K_Flowspec, Sender_Tspec)effective QoS that would be applicable toupdate the reservation. If this kernel call fails, return;theprior reservationapplication itself. Filter_spec_list and Advert_list willremaincontain one NULL object. The Error_code, Error_value, LUB-Used flag, and Policy_data parameters will be undefined inplace. o If Tear_Needed is False (the resulting merged state may have changed but is stillthis upcall. 3. Info_type = Path Error An Path Error event indicates an error inplace), then execute the RESV REFRESH sequence below, drop RTEAR message, and return.sender information that was specified in a SENDER call. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page61]58] Internet Draft RSVP SpecificationJulyNovember 1995o Otherwise, need to create new RTEAR message for each PHOP,The Error_code parameter will define the error, andperhapsError_value may supply someRESV refresh messages. Set Refresh_Needed flag to False. Doadditional (perhaps system-specific) data about thefollowing for each sender Si (inerror. The Error_Node parameter will specify thepath stat) whose ROUTE_MASK includesIP address of theoutgoing interface OI and for each PHOP: 1. Pick each flow descriptor Fj innode that detected theRTEAR message whose FILTER_SPEC matches Si,error. `List_count' will be 1, anddoFilter_spec_list will contain thefollowing. - If there is no RSB whose FILTER_SPEC matches Si, then add Fj toSender_Template supplied in thenew RTEAR message being built. - Otherwise (there is a matching RSB), noteSENDER call; Flow_Spec_list and Advert_list will each contain one NULL object. The Policy_data parameter will contain any POLICY_DATA objects in theincoming interface of Si asPERR message. 4. Info_type = Resv Error/Confirmation An Resv Error/Confirmation event indicates aninterface needingerror in aRESV refresh message and set the Refresh_Needed flag True. 2. If the new RTEARreservation messagecontains any flow descriptors, forward ittoPHOP. Ifwhich this application contributed, or thescope is wildcard, include onlyreceipt of asingle flow descriptor in theRACK message.o IfThe Error_code parameter will define theRefresh_Needed flag is true, then executeerror or confirmation. For an error, Error_value may supply some additional (perhaps system-specific) data. The Error_Node parameter will specify theRESV_REFRESH sequence below, forIP address of theincoming interfacesnode thathave been noted. RESV ERROR MESSAGE ARRIVES o If there is no state for SESSION, then dropdetected theRERR mesasgeevent being reported. Filter_spec_list andreturn. o For each RSB, doFlowspec_list will contain thefollowing. Note that an RSB implies an outgoing interface OIFILTER_SPEC anda next hop NHOP. 1. If OI differsFLOWSPEC objects from theincoming interface through which the RERR message arrived, continue with the next RSB. 2. Compare the FILTER_SPEC(s) in theerror flow descriptorwith(see Section 3.1.5). List_count will specify theFILTER_SPEC(s)number of FILTER_SPECS in Filter_spec_list, while there will be one FLOWSPEC in Flowspec_list. For an error, theRSB. If no match, continue withPolicy_data parameter will contain any POLICY_DATA objects in thenext RSB. Otherwise, form a newRERR message. Although RSVP messages indicating path or resv events may be received periodically, the API should make the corresponding asynchronous upcall to the application only on the first occurrence or when the information to be reported changes. All errorflow descriptor withand confirmation events should be reported to thesubsetapplication. 3.9.2 RSVP/Traffic Control Interface In an RSVP-capable node, enhanced QoS is achieved by a group ofFILTER_SPECs that matched.inter-related traffic control functions: a packet classifier, Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page62]59] Internet Draft RSVP SpecificationJulyNovember 19953. Compare the FLOWSPEC inan 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, E_Police_Flag, M_Police_Flag, B_Police_Flag ) The TC_Flowspec parameter defines theRERR message withdesired effective QoS to admission control; its value is computed as theFLOWSPEC inmaximum over theRSB. If they don't match along any coordinate (i.e., ifflowspecs of different next hops (see theRSB FLOWSPEC is strictly `smaller'), continue withCompare_Flowspecs call below). It contains thenext RSB. If they agree on some but not all coordinates, turn oneffective reservation Tspec Resv_Te (although theLUB-used flag. 4. If NHOP in PSB is local API, deliver errorRSVP daemon itself has no means toapplication via an upcall: Call: <Upcall_Proc>( session-id, Resv Error, k, Error_code, Error_value, LUB-Used, Filter_Spec_List, Flowspec_List, NULL, NULL) and continue with the next RSB. Here k, Filter_Spec_List, and Flowspec_List are constructed fromextract thenew error flow descriptor. 5. IfTspec). The TC_Tspec parameter defines theRESV message has wildcard scope, use its SCOPE object SC.In to construct a SCOPE object SC.Out to be forwarded. SC.Out should contain thoseeffective senderaddressesTspec Path_Te (see Section 2.3). We assume thatappearedtraffic control takes the min of Resv_Te and Path_Te (see step (4) inSC.InSection 2.3). E_Police_Flag, M_Police_Flag, andthat route to OI [LIH?],B_Police_Flag are Boolean parameters whose values should be set asdetermined by scanning the PSB's. If SC.Outdescribed in Section 3.6. The TC_AddFlowspec call returns an error code if Flowspec isempty, continue withmalformed or if thenext RSB. 6. Createrequested resources are unavailable. Otherwise, it establishes a newRERR message containing the new error flow descriptor and sendreservation channel corresponding to Rhandle. It returns theNHOP address specified by the RSB. Include SC.Out if the scope is wildcard. 7. Continue with the next RSB.opaque number Rhandle for subsequent references to this reservation. oDrop the RERR message and return. PATH REFRESHModify Reservation Call: TC_ModFlowspec( Rhandle, new_Flowspec, Sender_Tspec, E_Police_flag, M_Police_Flag, B_Police_Flag ) Thissequence may be entered by either the expiration ofcall can modify an existing reservation. If new_Flowspec is included, it is passed to Admission Control; if it is rejected, thepath refresh timer for a particular session, or immediatelycurrent flowspec is left in force. The corresponding filter specs, if any, are not affected. The other parameters are defined asthe result of processing a PATH message turning on the Path_Refresh_Needed flag. For each outgoing interface OI, build a PATH message and send it to OI. To build the message, consider each PSB whose ROUTE_MASK includes OI, and do the following:in TC_AddFlowspec. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page63]60] Internet Draft RSVP SpecificationJulyNovember 1995 oPassDelete Flowspec Call: TC_DelFlowspec( Rhandle ) This call will delete an existing reservation, including theADSPECflowspec andSENDER_TSPEC objects present in the PSBall associated filter specs. o Add Filter Spec Call: FHandle = TC_AddFilter( Rhandle, Session , FilterSpec ) This call is used to associate an additional filter spec with thekernelreservation specified by the given Rhandle, following a successful TC_AddFlowspec call. This callTC_Advertise, and get backreturns amodified ADSPEC object. Pack this modified object intofilter handle FHandle. o Delete Filter Spec Call: TC_DelFilter( FHandle ) This call is used to remove a specific filter, specified by FHandle. o OPWA Update Call: TC_Advertise( interface, Adspec, [ , Non_RSVP_flag ] ) -> New_Adspec This call is used for OPWA to compute thePATH message being built.outgoing advertisement New_Adspec for a specified interface. oCreatePreemption Upcall Upcall: TC_Preempt() -> RHandle, Reason_code In order to grant asender descriptor sequence containingnew reservation request, theSENDER_TEMPLATE, SENDER_TSPEC, and POLICY_DATA objects, if presentadmission control and/or policy modules may be allowed to preempt an existing reservation. This might be reflected in an upcall to RSVP, passing thePSB. PackRHandle of thesender descriptor intopreempted reservation, and some indication of thePATH message being built. o Ifreason. Braden, Zhang, et al. Expiration: May 1996 [Page 61] Internet Draft RSVP Specification November 1995 3.9.3 RSVP/Routing Interface An RSVP implementation needs thePSB hasfollowing support from theE_Police flag onpacket forwarding andif interface OI is not capablerouting mechanisms ofpolicing, turn the E_Police flag on inthePATH message being built.node. oCompute the IP TTLPromiscuous Receive Mode for RSVP Messages Any packet received for IP protocol 46 must be diverted to thePATH message as one less thanRSVP program for processing, without being forwarded. On a router, themaximumidentity of theTTL values from the senders included in the message. However, if the resultinterface, real or virtual, on which it iszero, return without sendingreceived must also be available to thePATH message.RSVP daemon. oIf the maximum size of theRoute Query To forward PATHmessage is reached, send the packet out interface OIandstart packing a new one. RESV REFRESH This sequence mayPTEAR messages, an RSVP daemon must beentered by either the expiration ofable to query thereservation refresh timerrouting daemon(s) fora particular session,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 query may orimmediately asmay not depend upon SrcAddress, i.e., upon theresultsender host IP address, which is also the IP source address ofprocessing a RESV or RTEARthe message.For each PHOP defined byHere IncInterface is thepath state, scaninterface through which theRSBs, mergepacket is expected to arrive; some multicast routing protocols may not provide it. If thestyle, FLOWSPECs and FILTER_SPECs appropriately, build a new RESV message, and send itNotify_flag is True, routing will save state necessary toPHOP. Each message carries a NHOP object containingissue unsolicited route change notification callbacks (see below) whenever thelocal address ofspecified route changes. Such callbacks will be enabled until routing receives a route query call with theinterface through which it is sent. The detailsNotify_Flag set False. A multicast route query may return an empty OutInterface_list if there are no receivers downstream ofbuilding the RESV messages depend upon the shared/distinct optiona particular router. A route query may also return a `No such route' error, probably as a result ofthe style. For each PHOP, do the following: o Distinct style Select each sender Si (PSB) for PHOP, and do the following: 1. Select all RSB's whose FILTER_SPECs match the SENDER_TEMPLATE object for Si and whose OI matchesabittransient inconsistency in theROUTE_MASK of the PSBrouting (since a PATH or PTEAR message forSi. 2. Compute the maximum overtheFLOWSPEC objects ofrequested route did arrive at thisset of RSB's, and merge their FILTER_SPEC, STYLE, andnode). In either case, the local state should be updated as Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page64]62] Internet Draft RSVP SpecificationJulyNovember 1995POLICY_DATA objects. 3. Append the (FLOWSPEC, FILTER_SPEC pair) torequested by theRESV message being builtmessage, although it cannot be forwarded further. Updating local state will make path state available immediately fordestination PHOP. When the packet fills,a new local receiver, orupon completion of all PSB'sit will tear down path state immediately. o Route Change Notification If requested by a route query with thesame PHOP, send it. o Shared style 1. Select each sender Si (PSB) for PHOP, and select all RSB's that: (a) have an OI matching a bit in the ROUTE_MASK for Si, and (b) contain at least one FILTER_SPEC that matchesNotify_flag True, theSENDER_TEMPLATE object for Si. 2. For all selected RSB's for all Si correspondingrouting daemon may provide an asynchronous callback toa given PHOP: - Compute the maximum over the FLOWSPEC objects of this set of RSB's. - Mergethemetching FILTER_SPEC objects; this will in general result inRSVP daemon that alist of non-overlapping FILTER_SPECs, but where there are overlaps duespecified route has changed. Ucast_Route_Change( ) -> DestAddress, OutInterface Mcast_Route_Change( ) -> [ SrcAddress, ] DestAddress, [ IncInterface, ] OutInterface_list o Outgoing Link Specification RSVP must be able towildcards, use the `wildest'. - Merge the STYLE and POLICY_DATA objects. - Place the resulting merged objects intoforce aRESV message and send it(multicast) datagram toPHOP. 3. If the scope is wildcard, a forwarded RESV must containbe sent on aSCOPE object. The set of IP addresses inspecific outgoing virtual link, bypassing theSCOPE object sent tonormal routing mechanism. A virtual link may be agiven PHOPreal outgoing link or a multicast tunnel. Outgoing link specification isformed as follows. - Take the union of the senders listed in SCOPE objects in all RSB's. - Intersect that set with the setnecessary to send different versions ofsender hosts listed in path state for PHOP. - If the resulting setan outgoing PATH message on different interfaces. It isempty, no RESV should be forwardedalso necessary in some cases tothis PHOP. Braden, Zhang, et al. Expiration: January 1996 [Page 65] Internet Draft RSVPavoid routing loops. o Source Address SpecificationJuly 1995 APPENDIX A. Object Definitions C-Types are defined forRSVP must be able to specify thetwo Internet address families IPv4 and IP6. To accomodate otherIP source addressfamilies, additional C-Types could easily be defined. These definitions are contained as an Appendix,toease updating. All unused fields shouldbesent 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) | +-------------+-------------+-------------+-------------+ | ////// | Flags | DestPort | +-------------+-------------+-------------+-------------+used when sending PATH messages. oIP/UDP SESSION object: Class = 1, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 DestAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | /////// | Flags | DestPort | +-------------+-------------+-------------+-------------+ DestAddress TheInterface List Discovery RSVP must be able to learn what real and virtual interfaces are active, with their IPunicast or multicast destination address of the session. Flags 0x01 = E_Police flag The E_Police flag is usedaddresses. 3.9.4 Service-Dependent Manipulations Flowspecs, Tspecs, and Adspecs are opaque objects to RSVP; their contents are defined inPATH messagesservice specification documents. In order todeterminemanipulate these objects, RSVP daemon must have available to it the following service-dependent routines. o Compare Flowspecs Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page66]63] Internet Draft RSVP SpecificationJulyNovember 1995 Compare_Flowspecs( Flowspec_1, Flowspec_2 ) -> result_code The possible 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 compares theeffective "edge" ofTspecs that are contained. Although thenetwork,RSVP daemon cannot itself parse a flowspec tocontrol traffic policing. Ifextract thesender host is not itself capable of traffic policing,Tspec, itwill set this bit on in PATH messages it sends. The first node whose RSVP is capable of traffic policing will do so (if appropriate to the service) and turncan use theflag off. [It might make more senseCompare_Flowspecs call toinclude this flag in ADSPEC object.] DestPortimplicitly 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_2 ) -> result_code TheUDP/TCP destination port for the session. Zero may bepossible 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 toindicate a `wildcard', i.e., any port. Other SESSION C-Types could be defined in the future to support other demultiplexing conventions in the transport- layer or application layer.compute Path_Te (see Section 2.3). Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page67]64] Internet Draft RSVP SpecificationJulyNovember 1995A.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 | +-------------+-------------+-------------+-------------+4. Message Processing Rules Thisobjectsection providesthe IP addressa generic description of theinterface through which the last RSVP-knowledgeable hop forwarded this message. The Logical Interface Handlerules for RSVP operation. It is intended to outline a32-bit number whichset of algorithms that will accomplish the needed function. An actual implementation maybe used to distinguish logical outgoing interfaces as describeduse different but equivalent algorithms. This section assumes the generic interface calls defined in Section4.2; it should be identically zero if there is no logical interface handle. Braden, Zhang, et al. Expiration: January 1996 [Page 68] Internet Draft RSVP Specification July 1995 A.3 INTEGRITY Class INTEGRITY class = 4. See draft-ietf-rsvp-md5-00.txt. A.4 TIME_VALUES Class TIME_VALUES class = 5. o TIME_VALUES Object: Class = 5, C-Type = 1 +-------------+-------------+-------------+-------------+ | Refresh Period | +-------------+-------------+-------------+-------------+ | Max Refresh Period | +-------------+-------------+-------------+-------------+ Refresh Period The refresh timeout period R used3.9 and the following data structures. An actual implementation may use additional or different data structures and interfaces. [NOTE: This section is always the last togeneratebe updated when changes are made, and it is neither correct nor complete at the present time. Therefore, when thismessage;section disagrees with the rest of the text, you should believe the rest of the text!] o PSB -- Path State Block Each PSB holds path state for a particular (session, sender) pair, defined by SESSION and SENDER_TEMPLATE objects, respectively, received inmilliseconds. Max Refresh Perioda PATH message. PSB contents include the following values from a PATH message: - Thelargest R value thatprevious hop IP address from anode is allowed to apply toPHOP object (required) - LIH, thedownstream state for this session. A node may refuse to accept this requirement,Logical Interface Handle from the previous hop, from a PHOP object (required). - The remaining IP TTL (required) - SENDER_TSPEC (required) - POLICY_DATA and/or ADSPEC objects (optional) - Non_RSVP flag (required); see Section 3.6. In addition, the PSB contains the following information provided byignoringrouting: OutInterface_list, themessage containinglist of outgoing interfaces for thisTIME_VALUES object(sender, destination), andsendingIncInterface, the expected incoming interface. For a"R too small" error message. If this value is zero, no limitunicast destination, OutInterface_list contains one entry and IncInterface isset. Braden, Zhang, et al. Expiration: January 1996 [Page 69] Internet Draft RSVP Specification July 1995 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 | +-------------+-------------+-------------+-------------+undefined. oIP6 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 = LUB-Used The use of this flag is describedRSB -- Reservation State Block Each RSB holds a reservation request that arrived insection 4.1.5. Error Code A one-octet error description. Error Value A two-octet field containing additional information abouta particular RESV message, corresponding to the triple: (session, next hop, filter_spec_list). Here "filter_spec_list" may be a Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page70]65] Internet Draft RSVP SpecificationJulyNovember 1995error. Its contents depend uponlist of FILTER_SPECs (for SE style), a single FILTER_SPEC (FF style), or empty (WF style). We use theError Type. The values for Error Code and Error Value are defined in Appendix B. A.6 SCOPE Class SCOPE class = 7. This object containssymbol "FILTER_SPEC*" to indicate such a FILTER_SPEC list. RSB contents include: - The outgoing (logical) interface OI on which the reservation is to be made or has been made (required). - FLOWSPEC*, list ofIP addresses, used for routing messages with wildcard scope without loops.FLOWSPEC objects (required) - Theaddresses 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 IP6style (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 hold the reservation specifications that have been handed to traffic control for specific outgoing interfaces. In general, information in TCSB's is derived from RSB's for the same outgoing interface. Each TCSB defines a single reservation for a particular triple: (session, OI, filter_spec_list). TCSB contents include: - TC_Flowspec, the effective flowspec, i.e., the maximum over the corresponding FLOWSPEC values from matching RSB's. TC_Flowspec is passed to traffic control to make the actual reservation. The Tspec part of TC_Flowspec is the effective reservation Tspec Resv_Te (Section 2.3). - TC_Tspec, equal to the effective sender Tspec Path_Te. - Police Flags The flags E_Police_Flag, M_Police_Flag,and B_Police_Flag are defined in Section 3.6. - Rhandle, F_Handle_list Handles returned by the traffic control interface, corresponding to the reservation (flowspec) and to the listobject: Class = 7, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ // // +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Src Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+of filter specs. Boolean flags Path_Refresh_Needed, Resv_Refresh_Needed, and Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page71]66] Internet Draft RSVP SpecificationJulyNovember 1995A.7 STYLE Class STYLE class = 8. o STYLE object: Class = 8, C-Type = 1 +-------------+-------------+-------------+-------------+ | Style ID | Option Vector | +-------------+-------------+-------------+-------------+ Style ID An integer identifyingTear_Needed will also be used in this section. [LZ: It might be very helpful to have a short section to summarize thestyle, as follows: 0 = No ID assigned; use option vector. 1 = WF 2 = FF 3 = SE Option Vector A setmanagement ofbitall the timers.] MESSAGE ARRIVES Verify version number and checksum fieldsgiving values forof common header, and discard message if any mismatch is found. Reassemble a fragmented message. Parse thereservation options. If new options are addedsequence of objects in thefutre, corresponding fields inmessage to verify theoption vector will be assigned fromlength field of theleast-significant end. Ifcommon header; discard message if there is anodemismatch. If the message type is not PATH or PTEAR and if the IP destination address does notrecognize a style ID, it may interpret as muchmatch any of theoption 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 Braden, Zhang, et al. Expiration: January 1996 [Page 72] Internet Draft RSVP Specification July 1995 3 bits: Scope control 000b: Reserved 001b: Wildcard scope 010b: Explicit scope 011b - 111b: Reserved The low order bitsaddresses of theoption vector are determined bylocal interfaces, then forward thestyle id, as follows: WF 10001b FF 01010b SE 10010b Braden, Zhang, et al. Expiration: January 1996 [Page 73] Internet Draft RSVP Specification July 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 bymessage to IP destination address and return. Verify theint-serv working group. o Class = 9, C-Type = 254: Unmerged Flowspec List +-------------+-------------+-------------+-------------+ | | // FLOWSPECINTEGRITY 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 object1 // | | +-------------+-------------+-------------+-------------+ | | // FLOWSPECsequence in the message as follows. The flags Path_Refresh_Needed and Resv_Refresh_Needed flags are initially off. o If there is a POLICY_DATA object, verify it; if it is unacceptable, build and send a "Administrative Rejection" PERR message, drop the PATH message, and return. o If the DstPort in the SESSION object2 // | | +-------------+-------------+-------------+-------------+ // // // // +-------------+-------------+-------------+-------------+ | | // FLOWSPECis zero but the SrcPort in the SENDER_TEMPLATE objectk // | | +-------------+-------------+-------------+-------------+ Thisis non-zero, build acontainer C-Type, used to enclosesend aset of FLOWSPEC objects that could not be merged at"Conflicting Src Port" PERR message, drop thenext hop downstream because they include unrecognized C-Types. The node that receives this object may merge those it recognizesPATH message, andforwardreturn. o Search for a path state block (PSB) whose (SESSION, SENDER_TEMPLATE) pair matches therestcorresponding objects inanother Unmerged Flowspec List object.the message, considering any wildcard ports. o If, during the PSB search, a PSB is found whose session matches the DestAddress and Protocol Id fields of the received SESSION object, but the DstPorts differ and one is zero, then build and send a "Conflicting Dst Port" PERR message, drop the PATH message, and return. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page74]67] Internet Draft RSVP SpecificationJulyNovember 1995A.9 FILTER_SPEC Class FILTER_SPEC class = 10.oIPv4 FILTER_SPEC object: Class = 10, C-Type = 1 +-------------+-------------+-------------+-------------+ | IPv4 SrcAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | Protocol Id | ////// | SrcPort | +-------------+-------------+-------------+-------------+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. oIP6 FILTER_SPEC object: Class = 10, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6If there was no matching PSB, then: 1. Create a new PSB. 2. Call the appropriate Route_Query routine, using DestAddress from SESSION and (for multicast routing) SrcAddress(16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Protocol Id | ////// | SrcPort | +-------------+-------------+-------------+-------------+from SENDER_TEMPLATE. Store the values of OutInterface_list and IncInterface into the PSB. However, if the sender is from the local API, then instead of invoking routing, set OutInterface_List to the single interface whose address matches the sender address; IncInterface is undefined in this case. 3. If IncInterface is defined and if a multicast message arrived on an interface different from IncInterface, drop the message and return. 4. Set a cleanup timer for the PSB. If this is the first PSB for the session, set a refresh timer for the session. 5. Copy contents of the SESSION, SENDER_TEMPLATE, SENDER_TSPEC, and PHOP (IP address and LIH) objects into the PSB. Store the received TTL into the PSB. Copy into the PSB either of the following objects that are present: POLICY_DATA and ADSPEC. 6. Turn on the Path_Refresh_Needed flag. o Otherwise (there is a matching PSB and there is no dest port conflict): 1. If there is no route change notification in place, call the appropriate Route_Query routine using DestAddress from SESSION and (for multicast routing) SrcAddress from SENDER_TEMPLATE. - If the OutInterface_list that is returned differs from that in the PSB, execute the PATH LOCAL REPAIR event sequence below. - If a multicast 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, or SENDER_TSPEC differs between the message and the PSB, copy the new value into the PSB, execute the RESV REFRESH event sequence for the sender defined by the PSB, and turn on the Path_Refresh_Needed flag. [LZ: [When] should ADSPEC change trigger a refresh?] However, if the PATH message being processed came from a local application and if there is reservation state for this session, then make a Resv 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. o If the message arrived with a TTL different from Send_TTL in the RSVP common header, set the Non_RSVP flag on in the PSB. o If the Path_Refresh_Needed flag is now set then: 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, 1, {SENDER_TSPEC}, {SENDER_TEMPLATE}, {ADSPEC}, {POLICY_DATA} ) 2. Execute the PATH REFRESH event sequence (below) for the sender defined by the PSB. PATH TEAR MESSAGE ARRIVES o Search for a PSB whose (SESSION, SENDER_TEMPLATE) pair matches the corresponding objects in the message. If no matching PSB is found, drop the PTEAR message and return. o Forward a copy of the PTEAR message to each outgoing Braden, Zhang, et al. Expiration: May 1996 [Page 69] Internet Draft RSVP Specification November 1995 interface listed in OutInterface_list of the PSB. o Find each RSB that matches this PSB, i.e., whose FILTER_SPEC object matches the SENDER_TEMPLATE in the PSB and whose OI is included 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 Drop the PTEAR message and return. PATH ERROR MESSAGE ARRIVES o Search for a PSB whose (SESSION, SENDER_TEMPLATE) pair matches the corresponding objects in the message. If no matching PSB is found, drop the PERR message and return. o If the previous hop address in the PSB is the 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 message is ignored. [LZ: Why we don't send these objects up to application? They might of some help to understand the errors.] Drop the PERR message and return. o Otherwise, send a copy of the PERR message to the PHOP IP address, drop the PERR message, and return. RESV MESSAGE ARRIVES Initially, the Resv_Refresh_PHOP* list is empty and the Resv_Refresh_Needed flag is off. These variables are used to control immediate reservation refreshes. o Process the NHOP object The logical outgoing interface OI is taken from the LIH in the NHOP object. (If the physical interface is not implied Braden, Zhang, et al. Expiration: May 1996 [Page 70] Internet Draft RSVP Specification November 1995 by the LIH, it can be learned from the interface matching the IP destination address). o Check the SESSION object. If there are no existing PSB's for SESSION then build and send a RERR message (as described later) specifying "No path information", drop the RESV message, and return. 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 in the message, check permission to create a reservation 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 STYLE object and the flow 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, execute the following steps once, with FILTER_SPEC* consisting of the list of FILTER_SPEC objects from the flow descriptor. For WF style, execute the following steps once, with FILTER_SPEC* consisting of a single internal placeholder "WILD_FILTER". o If the DstPort in the SESSION object is zero but the SrcPort in the FILTER_SPEC object is non-zero, build a send a "Conflicting Src Port" RERR message, drop the RESV message, and return. o Find or create a reservation state block (RSB) for the triple: (SESSION, NHOP, FILTER_SPEC*). Call this the "active RSB". o If the RSB is not new and if its style is incompatible with Braden, Zhang, et al. Expiration: May 1996 [Page 71] Internet Draft RSVP Specification November 1995 the STYLE object in the message, build and send a RERR message specifying "Conflicting Style", drop the RESV message, and return. o Start or restart the cleanup timer on the the active RSB. o If the active RSB is not new, check whether FLOWSPEC or SCOPE objects have changed. If not, continue with the next flow descriptor in the RESV message, if any. o If the active RSB is new, set its OI and style, and copy any FLOWSPEC, POLICY_DATA, and/or SCOPE objects into it. o If there is a RESV_CONFIRM in the message, turn on Resv_Refresh_Needed and save the object in the RSB. o The active RSB must be new or changed. Compute the traffic control parameters, using the following steps. 1. Locate the set of PSBs (senders) whose SENDER_TEMPLATEs match FILTER_SPEC* in the active RSB and whose OutInterface_list includes OI. If this set is empty, build and send an error message specifying "No sender information", and continue with the next flow descriptor in the RESV message. 2. If this set contains more than one PSB and if the style has explicit sender selection (e.g., FF or SE), build and send an error message specifying "Ambiguous filter spec" and continue with the next flow descriptor. 3. Add the PHOP from the PSB to 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 it is a shared style and there is more than one PSB in the set. 5. Compute Path_Te as the sum of the SENDER_TSPEC objects in this set of PSBs. 6. Scan all RSB's matching the SESSION and Filter_Spec_list from the message. - If any of these RSB's has a style that is Braden, Zhang, et al. Expiration: May 1996 [Page 72] Internet Draft RSVP Specification November 1995 incompatible with the specifying "Conflicting Style", drop the RESV message, delete the RSB if it has just been created, and return. - Set TC_B_Police_flag on if TC_Flowspec is smaller than, or incomparable to, any FLOWSPEC in those RSB's. 7. Consider the set of RSB's for the same (SESSION, OI, Filter_Spec_list) triple from the message. - Compute the effective kernel flowspec, TC_Flowspec, as the maximum of the FLOWSPEC values in these RSB's. - Compute the effective kernel filter spec (list), TC_Filter*. by merging the FILTER_SPEC* object (lists) from these RSB's. o Search for a TCSB matching the triple (SESSION, OI, FILTER_SPEC*), taken from the RSB. 1. If none is found but style is SE, search for a TCSB matching (SESSION, OI). If find one and if TCSB's TC_Flowspec, Path_Te, and police flags match the computed values, then - Make an appropriate set of TC_DelFilter and TC_AddFilter calls to transform the Filter_Spec_list in the TCSB into the Filter_Spec_list from the message. - Set Resv_Refresh_Needed on, drop the RESV message, and return. 2. Otherwise, if none is found: - Create a new TCSB. - Store TC_Flowspec, Filter_Spec_list, Path_Te, and the police flags into TCSB. [SCOPE?] - Set Resv_Refresh_Needed on. - Make the traffic control call: Braden, Zhang, et al. Expiration: May 1996 [Page 73] Internet Draft RSVP Specification November 1995 Rhandle = TC_AddFlowspec( OI, TC_flowspec, Path_Te, TC_E_Police_flag, TC_M_Police_flag, TC_B_Police_flag ) If this call fails, build and send a RERR message specifying "Admission control failed", and continue with the next flow descriptor. Otherwise, record Rhandle in the TCSB. - For each filter_spec F in Filter_Spec_list, call: Fhandle = TC_AddFilter( Rhandle, SESSION, F) and record the returned Fhandle in the TCSB. - Continue with the next flow descriptor. 3. Otherwise (found existing TCSB), check whether TC_Flowspec, Path_Te, and/or any of the police flags has changed, and if so: - Store TC_Flowspec, Filter_Spec_list, Path_Te, and the police flags into it. [SCOPE?] - Set Resv_Refresh_Needed on. - Make the traffic control call: 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 If the Resv_Refresh_Needed flag is now on, execute the RESV REFRESH sequence (below) for each PHOP in the Resv_Refresh_PHOP* set. If processing a RESV message finds an error, a RERR message is created containing flow descriptor and an ERRORS object. The Error Node field of the ERRORS object (see Appendix A) is set to the IP address of OI, and the message is sent unicast to NHOP. Braden, Zhang, et al. Expiration: May 1996 [Page 74] Internet Draft RSVP Specification November 1995 RESV TEAR MESSAGE ARRIVES A 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. o Process 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., for each (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 of a single internal placeholder "WILD_FILTER". 1. Find matching RSB for the 4-tuple: (SESSION, NHOP, style, Filter_Spec_list); call this the active RSB. If no active RSB is found, continue with next flow descriptor. 2. Delete the active RSB. 3. Find TCSB for the triple: (SESSION, OI, Filter_Spec_list). 4. Consider the set of RSB's matching this TCSB. If there are none: - Call the traffic control interface routine: 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 for the same TCSB), Braden, Zhang, et al. Expiration: May 1996 [Page 75] Internet Draft RSVP Specification November 1995 recompute TC_Flowspec and Path_Te (see RESV MESSAGE ARRIVES). (This also adds the appropriate PHOP addresses to the Resv_Refresh_PHOP* list>) If either changed, update the TCSB, set flag Resv_Refresh_Needed on, and call 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 has the credential to make the reservation 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?] o If Tear_Needed and Resv_Refresh_Needed flags are both off, then drop the RTEAR message and return. o If Tear_Needed is off but Resv_Refresh_Needed is on, then execute the RESV REFRESH sequence for each PHOP in the Resv_Refresh_PHOP* set, drop the RTEAR message, and return. o Otherwise (Tear_Needed is on), need to forward RTEAR and/or RESV refresh messages. Do the following for each PSB whose OutInterface_list includes the outgoing interface OI: 1. Pick each flow descriptor Fj in the RTEAR message whose FILTER_SPEC matches the PSB, and do the following. - If there is no RSB whose FILTER_SPEC matches the PSB, 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 the PSB. Braden, Zhang, et al. Expiration: May 1996 [Page 76] Internet Draft RSVP Specification November 1995 o If the Resv_Refresh_Needed flag is now on, execute the RESV REFRESH sequence (below) for each PHOP in the Resv_Refresh_PHOP* set. If the Refresh_Needed flag is true, then execute the RESV REFRESH sequence for the PSB's that have been noted. o Drop the RTEAR message and return. 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 and return. o Do the following with each RSB for this SESSION whose OI does not match In_If and whose FILTER_SPEC matches that in the RERR message. 1. Copy the error flow descriptor from the incoming RERR message. 2. Compare the FLOWSPEC in the RERR message with the FLOWSPEC in the RSB. If they don't match along any coordinate (i.e., if the RSB FLOWSPEC is strictly `smaller'), continue with the next RSB. If they agree on some but not all coordinates, turn on the LUB-used flag. 3. If NHOP in RSB is the local 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) and continue with the next RSB. Here k, Filter_Spec_List, and Flowspec_List are constructed from the error flow descriptor. Braden, Zhang, et al. Expiration: May 1996 [Page 77] Internet Draft RSVP Specification November 1995 4. If the RESV message has wildcard sender selection, use its SCOPE object SC.In 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. 5. 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 sender selection is wildcard. 6. Continue with the next RSB. o Drop the RERR message and return. RESV CONFIRMATION ARRIVES If the (unicast) IP address found in its RESV_CONFIRM object matches an interface of the node, a confirmation upcall is made to the matching application: Call: <Upcall_Proc>( session-id, Resv Confirm, Error_code, Error_value, Node_Addr, LUB-Used, nlist, Flowspec, Filter_Spec_List, NULL, NULL ) Otherwise, the RACK message is forwarded immediately to the address in the IP address in its RESV_CONFIRM object. PATH REFRESH This sequence sends a path refresh for a particular sender, i.e., a PSB. This sequence may be entered by either the 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. o Compute the IP TTL 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. Braden, Zhang, et al. Expiration: May 1996 [Page 78] Internet Draft RSVP Specification November 1995 o Create a sender descriptor 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 to the traffic control call TC_Advertise. Insert the modified ADSPEC object that is returned into the PATH message being built. oIP6 Flow-label FILTER_SPEC object: Class = 10, C-Type = 3 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 SrcAddress (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | /////// | Flow Label (24 bits) | +-------------+-------------+-------------+-------------+ SrcAddress The IP sourceIf 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 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. RESV REFRESH This sequence sends asender host,reservation refresh towards a particular previous hop with IP address PH. This sequence may be entered by either the expiration of a reservation refresh timer orzerodirectly as the result of the Resv_Refresh_Needed flag being turned on as the result of processing a RESV or RTEAR message. In general, this sequence considers each of the 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*'s appropriately. It then builds a RESV message and sends it toindicatePH. 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`wildcard'.STYLE object from the first RSB and move it into Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page75]79] Internet Draft RSVP SpecificationJulyNovember 1995Protocol Id The IP protocol Identifier,the output message. (Note that the present set of styles are never themselves merged; if future styles can be merged, these rules will become more complex). 3. Compute the maximum/LUB over the FLOWSPEC objects of this set of RSB's. 4. While computing the maximum/LUB, check for a RESV_CONFIRM object in each RSB. If a RESV_CONFIRM object is found and if the FLOWSPEC in that RSB is larger 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 orzerosmaller than the largest, or if the result of merging was a LUB, then create and send a RACK message toindicatethe address in the RESV_CONFIRM object. - Include the RESV_CONFIRM object in the RACK message. - Build a`wildcard'. SrcPortconfirmation ERROR_SPEC object and include it in the RACK message. TheUDP/TCP source port for a sender, or zeroError_Node parameter in this object should be the IP address of OI from the RSB. Then delete the RESV_CONFIRM object from the RSB. 5. Merge the matching FILTER_SPEC objects from this 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 toindicatemerge. 6. If the Need_Scope flag is on, compute a`wildcard' (i.e., any port). Flow Label A 24-bit Flow Label, definednew SCOPE object as the union of the SCOPE objects found inIP6. This value may be used bythepacket classifier to efficiently identifyRSB's. 7. Merge thepackets belonging to a particular (sender->destination) data flow.F_POLICY_DATA objects from the RSB's. 8. (All matching RSB's have been processed). The next Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page76]80] Internet Draft RSVP SpecificationJulyNovember 1995A.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 samestep depends upon the style attributes. Distinct reservation (FF) style Pack the merged (FLOWSPEC, FILTER_SPEC, F_POLICY_DATA) triplet into the message asIP6/UDP FILTER_SPEC object. A.11 SENDER_TSPEC Class SENDER_TSPEC class = 12. The only currenta flow descriptor. Shared reservation (SE, WF) styles Merge (take the maximum) across all PSB's the merged FLOWSPECS from the RSB's. If the sender selection is not wildcard (i.e., if it is SE), form the union ofTspecthe FILTER_SPECs obtained from the RSB's. For Wildcard sender selection (WF) style, there is not filter spec to merge. 9. If the Need_Scope flag is on, remove from the merged SCOPE object all sender addresses that do not match the set of PSB's for PH, and all senders addresses that are local. If the resulting set is empty, no RESV should be forwarded to this PHOP; return; otherwise (set is not empty), move the new SCOPE object into the message. o (All PSB's have been processed). If atoken bucket.shared reservation style is being built, move the final merged FLOWSPEC, F_POLICY_DATA, and FILTER_SPEC (if SE) objects into the message. o If a RESV_CONFIRM object was saved earlier, copy it into the new RESV message and delete it from the RSB in which it was found. oToken Bucket SENDER_TSPEC object: Class = 12, C-Type = 1 +-----------+-----------+-----------+-----------+ | b: Token Bucket Depth (bits) | +-----------+-----------+-----------+-----------+ | r: Average data rate (bits/sec) | +-----------+-----------+-----------+-----------+Set the RSVP_HOP object in the message to contain the IncInterface address through which it will be sent and the LIH from (one of) the PSB's. o Send the message to the address PH. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page77]81] Internet Draft RSVP SpecificationJulyNovember 1995A.12 ADSPEC Class ADSPEC class = 13. [TBD] Braden, Zhang, et al. Expiration: January 1996 [Page 78]APPENDIX A. Object Definitions C-Types are defined for the two InternetDraft RSVP Specification July 1995 A.13 POLICY_DATAaddress 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 ClassPOLICY_DATA class=14.1. oType 1 POLICY_DATAIPv4/UDP SESSION object: Class =14,1, C-Type = 1[TBD]+-------------+-------------+-------------+-------------+ | IPv4 DestAddress (4 bytes) | +-------------+-------------+-------------+-------------+ | Protocol Id | Flags | DstPort | +-------------+-------------+-------------+-------------+ oUnmerged POLICY_DATAIP/UDP SESSION object: Class =14, C-Type = 254 This object is a container for a list of POLICY_DATA objects (none of which may have1, C-Type =254). The contained objects have not yet been merged.2 +-------------+-------------+-------------+-------------+ | |// POLICY_DATA object 1 //+ + | |+-------------+-------------+-------------+-------------++ IP6 DestAddress (16 bytes) + | |// POLICY_DATA object 2 //+ + | | +-------------+-------------+-------------+-------------+// // // // +-------------+-------------+-------------+-------------+| Protocol Id |// POLICY_DATA object k //Flags | DstPort | +-------------+-------------+-------------+-------------+ DestAddress The IP unicast or multicast destination address of the session. This parameter must be supplied. Protocol Id The IP Protocol Identifier for the data flow. This parameter must be supplied. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page79]82] Internet Draft RSVP SpecificationJulyNovember 1995APPENDIX B. Error Codes and Values The following Error Codes are defined. o Error CodeFlags 0x01 =01: Admission failure Reservation rejected by admission control. For this Error Code,E_Police flag The E_Police flag is used in PATH messages to determine the16 bitseffective "edge" of theError Value field are: ussr cccc cccc cccc where the bits are: u = 0: RSVP should reject the message without updating local state. u = 1: RSVP may use messagenetwork, toupdate local state and forward it. ss = 00: Low order 12 bits contain a globally-defined sub-code (values listed below). ss = 10: Low order 12 bits contain a sub-code thatcontrol traffic policing. If the sender host isspecific to local organization.not itself capable of traffic policing, it will set this bit on in PATH messages it sends. The first node whose RSVP isnot expectedcapable of traffic policing will do so (if appropriate tobe ablethe service) and turn the flag off. [It might make more sense tointerpretinclude thisexcept asflag in ADSPEC object.] DstPort The UDP/TCP destination port for the session. Zero may be used to indicate anumeric value. ss`wildcard', i.e., any port. 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: May 1996 [Page 83] Internet Draft RSVP Specification November 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 =11: Low order 12 bits contain a sub-code that is specific to3, C-Type = 2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 Next/Previous Hop Address + | | + + | | +-------------+-------------+-------------+-------------+ | Logical Interface Handle | +-------------+-------------+-------------+-------------+ This object provides theservice. RSVPIP address of the interface through which the last RSVP-knowledgeable hop forwarded this message. The Logical Interface Handle isnot expected toa 32-bit number which may beableused tointerpret this exceptdistinguish logical outgoing interfaces asa numeric value. Since the traffic control mechanism might substitute a different service, this encoding may include some representation of the servicedescribed inuse. r: Reserved bit,Section 3.2; it should bezero. cccc cccc cccc: 12 bit code. The following globally-defined sub-codes may appear in the low- order 12 bits when uu = 00:identically zero if there is no logical interface handle. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page80]84] Internet Draft RSVP SpecificationJulyNovember 1995- Sub-code = 1: Delay bound cannot be met - Sub-codeA.3 INTEGRITY Class INTEGRITY class =2: Requested bandwidth unavailable - Sub-code4. See draft-ietf-rsvp-md5-00.txt. A.4 TIME_VALUES Class TIME_VALUES class =11: Service conflict - Sub-code5. o TIME_VALUES Object: Class =12: Service unsupported Traffic control can provide neither the requested service nor an acceptable substitute. - Sub-code5, C-Type =13: Bad Flowspec or Tspec value Unreasonable request. High order 4 bits should be 000r, so that1 +-------------+-------------+-------------+-------------+ | Refresh Period | +-------------+-------------+-------------+-------------+ Refresh Period The refresh timeout period R used to generate this message; in milliseconds. Braden, Zhang, et al. Expiration: May 1996 [Page 85] Internet Draft RSVPwill reject the message. - Sub-codeSpecification November 1995 A.5 ERROR_SPEC Class ERROR_SPEC class =14: Rmax value too small. Rmax would result in excessive refresh overhead.6. oError CodeIPv4 ERROR_SPEC object: Class =02: Administrative rejection Reservation has been rejected for administrative reasons. For this6, C-Type = 1 +-------------+-------------+-------------+-------------+ | IP4 ErrorCode, the high order 4 bits of theNode Address (4 bytes) | +-------------+-------------+-------------+-------------+ | Flags | ErrorValue field are assigned as forCode | Error Value | +-------------+-------------+-------------+-------------+ o IP6 ERROR_SPEC object: Class =01 (above). For this case, the following global sub-codes may be used: - 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-code6, C-Type =4: Administrative preemption o2 +-------------+-------------+-------------+-------------+ | | + + | | + IP6 ErrorCode = 03: No path information for this Resv RSVP should reject the message. oNode Address (16 bytes) + | | + + | | +-------------+-------------+-------------+-------------+ | Flags | Error Code= 04: No sender information for this Resv There is path information, but it does not include the sender specified in any| Error Value | +-------------+-------------+-------------+-------------+ Error Node Address The IP address of theFilterspecs listednode in which theResv message. RSVP should rejecterror was detected. Flags 0x01 = LUB-Used The use of this flag is described in section 3.1.5. Error Code A one-octet error description. Error Value A two-octet field containing additional information about themessage.Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page81]86] Internet Draft RSVP SpecificationJulyNovember 1995o Error Code = 05: Ambiguous path Sender specification is ambiguous with existing path state. RSVP should rejecterror. Its contents depend upon themessage. oErrorCode = 06: Ambiguous filter spec Filter spec matches more than one sender, in style that requires a unique match. RSVP should reject the message. oType. The values for Error Code= 07: Conflicting or unknown style Reservation style conflicts with style(s) of existing reservation state, or it is unknown. If the high-order bit ofand Error Valueis zero, RSVP should reject the message. o Error Codeare defined in Appendix B. A.6 SCOPE Class SCOPE class =11: Missing required object RSVP was unable to find or construct required7. This objectdata from message. Error Value willcontains a list of IP addresses, used for routing messages with wildcard scope without loops. The addresses must beClass-Num that is missing. RSVP should reject the message.listed in ascending numerical order. oError CodeIPv4 SCOPE List object: Class =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 if7, 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: May 1996 [Page 87] Internet Draft RSVPis going to reject the message.Specification November 1995 A.7 STYLE Class STYLE class = 8. oError CodeSTYLE object: Class =13: Unknown object8, C-TypeError 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 should reject the message. o Error Code=14: Object error1 +-------------+-------------+-------------+-------------+ | Option Vector | +-------------+-------------+-------------+-------------+ Option Vector Anon-specific error indicating bad format or contentsset ofan object. The Error Valuebit fields giving values for the reservation options. If new options are added in the future, corresponding fields in the option vector willcontain 16-bits value (Class-Num, C-Type)be assigned fromheaderthe least-significant end. If a node does not recognize a style ID, it may interpret as much ofbad object. RSVP should rejectthemessage. o Error Code = 21: Traffic Control error Some system error was detected and reported byoption vector as it can, ignoring new fields that may have been defined. The option vector bits are assigned (from thetrafficleft) as follows: 27 bits: Reserved 2 bits: Sharing controlmodules.00b: Reserved 01b: Distinct reservations 10b: Shared reservations 11b: Reserved 3 bits: Sender selection control 000b: Reserved 001b: Wildcard 010b: Explicit 011b - 111b: Reserved TheError Value will contain a system-specific value giving more information aboutlow order bits of theerror. o Error Code = 22: RSVP System erroroption vector are determined by the style, as follows: Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page82]88] Internet Draft RSVP SpecificationJulyNovember 1995The Error Value field will provide implementation- dependent information on the error.WF 10001b FF 01010b SE 10010b Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page83]89] Internet Draft RSVP SpecificationJulyNovember 1995APPENDIX C. UDP Encapsulation As described earlier, RSVP control messages are intended to be carried directly within IP datagrams as "raw packets". Implementing RSVP in a node will require an intercept in the packet forwarding path for protocol 46, and the necessary kernel change is incorporated in the recent releasesA.8 FLOWSPEC Class FLOWSPEC class = 9. o Class = 9, C-Type = 1: int-serv flowspec The contents ofIP multicasting There are particular circumstances where it maythis object will bedesirable to encapsulate RSVP messagesspecified inUDP packets, as a short-term measure. 1. UDP encapsulation can be used between hosts and the last- (or first-) hop router(s). This may ease installing RSVP on some host systems,documents prepared byavoiding a kernel change for the RSVP intercept. 2. UDP encapsulation may be useful for legal penetration of firewalls. 3. UDP encapsulation might be used on each interface of an intermediate RSVP router whose kernel supported multicast but which did not have the RSVP intercept. In the following discussion, we concentrate on (1) and (2). Figure 13 shows a typical situation for a host running RSVP. Here two RSVP-capable hosts Hu and Hr within a corporation are connected to the Internet through some arbitrarily complex set of networks and routers that is labelled the "Corporate cloud". The border router R is assumed to be RSVP-capable, butthecorporate cloud is not. _ _ _ _ ______ ( ) RSVP-capableint-serv working group. o Class = 9, C-Type = 254: Unmerged Flowspec List +-------------+-------------+-------------+-------------+ | |( ) router// FLOWSPEC object 1 // | | +-------------+-------------+-------------+-------------+ | | // FLOWSPEC object 2 // | | +-------------+-------------+-------------+-------------+ // // // // +-------------+-------------+-------------+-------------+ |Hu |-----( Corporate ) ______ |______| ( ) a| |b ( cloud )-----| R |---->Internet ______ ( ) |______|| // FLOWSPEC object k // |( )|Hr |------( ) |______| (_ _ _ _ _) Figure 13: End Host Situation We assume that Hu+-------------+-------------+-------------+-------------+ This is a"UDP-only" host that requires UDP encapsulation, while Hr iscontainer C-Type, used to enclose a"raw-capable" hostset of FLOWSPEC objects thatcan use raw RSVPcould not be merged at the next hop downstream because they include unrecognized C-Types. The node that receives this object may merge those it recognizes and forward the rest in another Unmerged Flowspec List object. Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page84]90] Internet Draft RSVP SpecificationJulyNovember 1995packets. The UDP encapsulation scheme should allow RSVP interoperation among an arbitrary topology of Hr hosts and Hu hosts as well as routers R. RESV messages are always sent unicast; once path state has been established, the unicast destination address of each RESV message is known. If the path state also indicates whether the next host node needs UDP encapsulation,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 aRESV message can simply be sent to the next-hop node, either in raw modesender host, orwith UDP encapsuation. UDP encapsulation of PATH messages poses a more difficult problem. To solve it, we define two new well-known multicast addresses G1 and G2, andzero to indicate awell-known UDP port Pu. Then the table in Figure 14 shows the rules. Under the `Send' column, the notation is <mode>(destaddr, destport, TTL), where TTL is the IP-layer hop count.`wildcard'. Braden, Zhang, et al. Expiration: May 1996 [Page 91] Internet Draft RSVP Specification November 1995 SrcPort The`Receive' column shows the group that is joined and, where relevant, the UDP Listen port. T1 and T2 are configured IP TTL values usedUDP/TCP source port forencapsulation, while Tr is the local TTLa sender, or zero to indicate a `wildcard' (i.e., any port). Flow Label A 24-bit Flow Label, defined in IP6. This valueof the specific PATH message. Finally, D ismay be used by theDestAddress forpacket classifier to efficiently identify the packets belonging to a particularsession. Node Node Type Send Receive ___ __________ _______________ _______________ Hu UDP-only host UDP(G1,Pu,T1) UDP(G1,Pu) and UDP(G2,Pu) Hr Raw-mode host UDP(G1,Pu,T1) UDP(G1,Pu) and Raw(D,,Tr) and Raw() R Router Interface a: UDP(G2,Pu,T2) UDP(G1,Pu) and Raw(D,,Tr) and Raw() Interface b: Raw(D,,Tr) Raw() Figure 14: UDP Encapsulation Rules for Path Messages Note that R and Hr must send their PATH messages twice, once with UDP encapsulation and once in raw mode. In two cases (Hr -> R and Hr -> Hr), each PATH message(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 same as IP6/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 contents of this object will bedelivered twice. The router may take steps to ignorespecified in documents prepared by theduplicates, butint-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. The contents of thisredundancy actually has no ill effect other than overhead for processingobject will be specified in documents prepared by theextra messages. A router must keep track of whichint-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. o Type 1 POLICY_DATA object: Class = 14, C-Type = 1 The contents ofits interfaces are using UDP encapsulation and whichthis object arenot. A node can always listenforUDP(G1,Pu) on each interface, and if it receivesfurther study. o Unmerged POLICY_DATA object: Class = 14, C-Type = 254 This object is aUDP-encapsulatedcontainer for a list of POLICY_DATA objects (none of which may have C-Type = 254). The contained objects have not yet been merged. +-------------+-------------+-------------+-------------+ | | // POLICY_DATA object 1 // | | +-------------+-------------+-------------+-------------+ | | // POLICY_DATA object 2 // | | +-------------+-------------+-------------+-------------+ // // // // +-------------+-------------+-------------+-------------+ | | // POLICY_DATA object k // | | +-------------+-------------+-------------+-------------+ Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page85]95] Internet Draft RSVP SpecificationJulyNovember 1995PATH message, mark the corresponding path state as UDP-needed. Then matching RESV messages will be correctly encapsulated. Two provisions are necessary for this automatic determination of encapsulation to work. C1 A router must use different groups G1 and G2 for sendingA.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: May 1996 [Page 96] Internet Draft RSVP Specification November 1995 APPENDIX B. Error Codes andreceiving, as already shown. C2Values TheTTL value T1 usedfollowing Error Codes are defined. o Error Code = 01: Admission failure Reservation rejected bya host must be exactly enough to reach the router R. If T1 is too small to pass throughadmission control. For this Error Code, thecorporate cloud,16 bits ofcourse PATH messages will not be forwarded. If T1 is too large, multicast routing in R will forwardtheUDP packet intoError Value field are: ussr cccc cccc cccc where theInternet until its hop count expires. This will turn on UDP encapsulation between routers withinbits are: u = 0: RSVP rejects theInternet, causing bogus UDP traffic. (Notemessage without updating local state. u = 1: RSVP may use message to update local state and forward the message. ss = 00: Low order 12 bits contain a globally-defined sub-code (values listed below). ss = 10: Low order 12 bits contain a sub-code thatUDP packets addressedis specific toG2 by a router willlocal organization. RSVP is not expected to bereceived by a neighboring router). However, there are possible situations where it will be impossibleable tofindinterpret this except as avalue of T1 that meets condition C2. Within the corporate cloud there might benumeric value. ss = 11: Low order 12 bits contain amulticast tunnel with an outgoing threshold larger than the hop count through the cloud. Another possibility is that there might be more than one border router R, with different TTL's. There are several possible wayssub-code thatC2 might be satisfied in such cases. 1. It might be possibleis specific toconfigurethehosts'service. RSVPdaemons with the IP address for R; the daemons could then "unicast" PATH messages to this address. This solution will be feasible as long as the number of Hr and Hu hostsissmall. 2. A particular host on the LAN including Hu could be designated as an "RSVP relay host". This system would listen on (G1,Pu) and be configured with the IP address of R. It could then forward any (PATH) messages it received directlynot expected toR, and T1 couldbeset only large enoughable toreach local hosts andinterpret this except as a numeric value. Since therelay. Finally, manual configurationtraffic control mechanism might substitute a different service, this encoding may include some representation ofT1 couldthe service in use. r: Reserved bit, should bereplaced by an expanding ring search conducted by host RSVP daemons. This possibility is for future study. APPENDIX D. Experimental and Open Issueszero. cccc cccc cccc: 12 bit code. The following globally-defined sub-codes may appear in the low- order 12 bits when ss = 00: Braden, Zhang, et al. Expiration:JanuaryMay 1996 [Page86]97] Internet Draft RSVP SpecificationJulyNovember 1995D.1 Reservation Compatability How strong is- 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 therequirementrequested service nor an acceptable replacement. - Sub-code = 13: Bad Flowspec or Tspec value Unreasonable request. High order bit u = 0, i.e., RSVP will reject the message. - Sub-code = 14: Rmax value too small. Rmax would result in excessive refresh overhead. o Error Code = 02: Administrative rejection Reservation has been rejected forcompatabilityadministrative reasons. The high order 4 bits ofreservations in different directions? For example, see Figure 11; should it be possible to have incompatible reservation styles onthetwo interfaces? If R1 requests a WF reservation and R2 requests a FF reservation, it is logically possible to makeError Value field are assigned as for Error Code = 01 (above). For Error Code = 02, thecorresponding reservations onfollowing 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 information for this Resv RSVP should reject thetwo different interfaces. The current implementation does NOT allow this; instead,message. o Error Code = 04: No sender information for this Resv There is path information, but itprevents mixing of incompatible styles indoes not include thesame session on a node, even if they are on different interfaces. D.2 Session Groups (Experimental) Section 1.2 explained that a distinct destination address, and therefore a distinct session, will be used for eachsender specified in one of thesubflowsFilterspecs listed ina hierarchically encoded flow. However, these separate sessions are logically related. For example it may be necessary to pass reservations for all subflows to Admission Control atthesame time (since it would be nonsense to admit high frequency components butResv message. RSVP should reject thebaseband component of the session data). Such a logical grouping is indicatedmessage. 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. RSVPby definingshould reject the message. o Error Code = 06: Ambiguous filter spec Filter spec matches more than one sender, in a"session group", an ordered set of sessions. To declarestyle that requires asetunique match. RSVP should reject the message. o Error Code = 07: Conflicting or unknown sty