diff options
Diffstat (limited to 'doc/rfc/rfc2210.txt')
-rw-r--r-- | doc/rfc/rfc2210.txt | 1851 |
1 files changed, 1851 insertions, 0 deletions
diff --git a/doc/rfc/rfc2210.txt b/doc/rfc/rfc2210.txt new file mode 100644 index 0000000..3c3abb6 --- /dev/null +++ b/doc/rfc/rfc2210.txt @@ -0,0 +1,1851 @@ + + + + + + +Network Working Group J. Wroclawski +Request for Comments: 2210 MIT LCS +Category: Standards Track September 1997 + + + + The Use of RSVP with IETF Integrated Services + + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Abstract + + This note describes the use of the RSVP resource reservation protocol + with the Controlled-Load and Guaranteed QoS control services. The + RSVP protocol defines several data objects which carry resource + reservation information but are opaque to RSVP itself. The usage and + data format of those objects is given here. + +1. Introduction + + The Internet integrated services framework provides the ability for + applications to choose among multiple, controlled levels of delivery + service for their data packets. To support this capability, two + things are required: + + - Individual network elements (subnets and IP routers) along the + path followed by an application's data packets must support + mechanisms to control the quality of service delivered to those + packets. + + - A way to communicate the application's requirements to network + elements along the path and to convey QoS management information + between network elements and the application must be provided. + + In the integrated services framework the first function is provided + by QoS control services such as Controlled-Load [RFC 2211] and + Guaranteed [RFC 2212]. The second function may be provided in a + number of ways, but is frequently implemented by a resource + reservation setup protocol such as RSVP [RFC 2205]. + + + + + +Wroclawski Standards Track [Page 1] + +RFC 2210 RSVP with INTSERV September 1997 + + + Because RSVP is designed to be used with a variety of QoS control + services, and because the QoS control services are designed to be + used with a variety of setup mechanisms, a logical separation exists + between the two specifications. The RSVP specification does not + define the internal format of those RSVP protocol fields, or objects, + which are related to invoking QoS control services. Rather, RSVP + treats these objects as opaque. The objects can carry different + information to meet different application and QoS control service + requirements. + + Similarly, interfaces to the QoS control services are defined in a + general format, so that the services can be used with a variety of + setup mechanisms. + + This RFC provides the information required to use RSVP and the + integrated service framework's QoS control services together. It + defines the usage and contents of three RSVP protocol objects, the + FLOWSPEC, ADSPEC, and SENDER_TSPEC, in an environment supporting the + Controlled-Load and/or Guaranteed QoS control services. If new + services or capabilities are added to the integrated services + framework, this note will be revised as required. + +2. Use of RSVP + + Several types of data must be transported between applications and + network elements to correctly invoke QoS control services. + + NOTE: In addition to the data used to directly invoke QoS control + services, RSVP carries authentication, accounting, and policy + information needed to manage the use of these services. This note + is concerned only with the RSVP objects needed to actually invoke + QoS control services, and does not discuss accounting or policy + objects. + + This data includes: + + - Information generated by each receiver describing the QoS + control service desired, a description of the traffic flow to + which the resource reservation should apply (the Receiver TSpec), + and whatever parameters are required to invoke the service (the + Receiver RSpec). This information is carried from the receivers to + intermediate network elements and the sender(s) by RSVP FLOWSPEC + objects. The information being carried in a FLOWSPEC object may + change at intermediate points in the network due to reservation + merging and other factors. + + + + + + +Wroclawski Standards Track [Page 2] + +RFC 2210 RSVP with INTSERV September 1997 + + + - Information generated at each sender describing the data traffic + generated by that sender (the Sender TSpec). This information is + carried from the sender to intermediate network elements and the + receiver(s) by RSVP, but is never modified by intermediate + elements within the network. This information is carried in RSVP + SENDER_TSPEC objects. + + - Information generated or modified within the network and used at + the receivers to make reservation decisions. This information + might include available services, delay and bandwidth estimates, + and operating parameters used by specific QoS control services. + this information is collected from network elements and carried + towards receivers in RSVP ADSPEC objects. Rather than carrying + information from each intermediate node separately to the + receivers, the information in the ADSPEC represents a summary, + computed as the ADSPEC passes each hop. The size of this summary + remains (roughly) constant as the ADSPEC flows through the + network, giving good scaling properties. + + From the point of view of RSVP objects, the breakdown is as follows: + + - The RSVP SENDER_TSPEC object carries the traffic specification + (sender TSpec) generated by each data source within an RSVP + session. It is transported unchanged through the network, and + delivered to both intermediate nodes and receiving applications. + + - The RSVP ADSPEC object carries information which is generated at + either data sources or intermediate network elements, is flowing + downstream towards receivers, and may be used and updated inside + the network before being delivered to receiving applications. + This information includes both parameters describing the + properties of the data path, including the availability of + specific QoS control services, and parameters required by specific + QoS control services to operate correctly. + + - The RSVP FLOWSPEC object carries reservation request + (Receiver_TSpec and RSpec) information generated by data + receivers. The information in the FLOWSPEC flows upstream towards + data sources. It may be used or updated at intermediate network + elements before arriving at the sending application. + + NOTE: The existence of both SENDER_TSPEC and ADSPEC RSVP objects + is somewhat historical. Using the message format described in + this note it would be possible to place all of the service + control information carried "downstream" by RSVP in the same + object. However, the distinction between data which is not + updated within the network (in the SENDER_TSPEC object) and data + which is updated within the network (in the ADSPEC object) may + + + +Wroclawski Standards Track [Page 3] + +RFC 2210 RSVP with INTSERV September 1997 + + + be useful to an implementation in practice, and is therefore + retained. + +2.1 Summary of operation + + Operation proceeds as follows: + + An application instance participating in an RSVP session as a data + sender registers with RSVP. One piece of information provided by the + application instance is the Sender TSpec describing the traffic the + application expects to generate. This information is used to + construct an RSVP SENDER_TSPEC object, which is included in RSVP PATH + messages generated for the application. + + The sending application also constructs an initial RSVP ADSPEC + object. This adspec carries information about the QoS control + capabilities and requirements of the sending application itself, and + forms the starting point for the accumulation of path properties + described below. The ADSPEC is added to the RSVP PATH message created + at the sender. + + NOTE: For the convenience of application programmers, a host RSVP + implementation may allow the sending application not to provide an + initial adspec, instead supplying its own default. This usage is + most likely when the application sender does not itself + participate in the end-to-end QoS control process (by actively + scheduling CPU usage and similar means) and does not itself care + which QoS control service is selected by the receivers. + + Typically the default ADSPEC supplied by the host RSVP in this + case would support all QoS control services known to the host. + However, the exact behavior of this mechanism is implementation + dependent. + + The ADSPEC is modified by subsequent network elements as the RSVP + PATH message moves from sender to receiver(s). At each network + element, the ADSPEC is passed from RSVP to the traffic control + module. The traffic control module updates the ADSPEC, which may + contain data for several QoS control services, by identifying the + services mentioned in the ADSPEC and calling each such service to + update its portion of the ADSPEC. If the traffic control module + discovers a QoS control service mentioned in the ADSPEC but not + implemented by the network element, a flag is set to report this to + the receiver. The updated ADSPEC is then returned to RSVP for + delivery to the next hop along the path. + + + + + + +Wroclawski Standards Track [Page 4] + +RFC 2210 RSVP with INTSERV September 1997 + + + Upon arrival of the PATH message at an application receiver, the data + in the SENDER_TSPEC and ADSPEC objects is passed across the RSVP API + to the application. The application (perhaps with the help of a + library of common resource-reservation functions) interprets the + arriving data, and uses it to guide the selection of resource + reservation parameters. Examples of this include use of the arriving + "PATH_MTU" composed characterization parameter [RFC 2215] to + determine the maximum packet size parameter in the reservation + request and use of the arriving Guaranteed service "C" and "D" + parameters [RFC 2212] to calculate a mathematical bound on delivered + packet delay when using the Guaranteed service. + + An application receiver wishing to make a resource reservation + supplies its local RSVP with the necessary reservation parameters. + Among these are the QoS control service desired (Guaranteed or + Controlled-Load), the traffic specifier (TSpec) describing the level + of traffic for which resources should be reserved, and, if needed by + the selected QoS control service, an RSpec describing the level of + service desired. These parameters are composed into an RSVP FLOWSPEC + object and transmitted upstream by RSVP. + + At each RSVP-aware point in the network, the SENDER_TSPECs arriving + in PATH messages and the FLOWSPECs arriving in RESV messages are used + to request an appropriate resource reservation from the desired QoS + control service. State merging, message forwarding, and error + handling proceed according to the rules of the RSVP protocol. + + Finally, the merged FLOWSPEC object arriving at each of an RSVP + session's data senders is delivered to the application to inform each + sender of the merged reservation request and properties of the data + path. + +2.2. RSVP support for multiple QoS control services + + The design described in this note supports RSVP sessions in which the + receivers choose a QoS control service at runtime. + + To make this possible, a receiver must have all the information + needed to choose a particular service before it makes the choice. + This means that the RSVP SENDER_TSPEC and ADSPEC objects must provide + the receivers with information for all services which might be + chosen. + + The Sender TSpec used by the two currently defined QoS control + services is identical. This simplifies the RSVP SENDER_TSPEC object, + which need carry only a single TSpec data structure in this shared + format. This common SENDER_TSPEC can be used with either Guaranteed + or Controlled-Load service. + + + +Wroclawski Standards Track [Page 5] + +RFC 2210 RSVP with INTSERV September 1997 + + + The RSVP ADSPEC carries information needed by receivers to choose a + service and determine the reservation parameters. This includes: + + - Whether or not there is a non-RSVP hop along the path. If there + is a non-RSVP hop, the application's traffic will receive + reservationless best-effort service at at least one point on the + path. + + - Whether or not a specific QoS control service is implemented at + every hop along the path. For example, a receiver might learn that + at least one integrated-services aware hop along the path supports + the Controlled-Load service but not the Guaranteed service. + + - Default or global values for the general characterization + parameters described in [RFC 2215]. These values describe + properties of the path itself, irrespective of the selected QoS + control service. A value reported in this section of the ADSPEC + applies to all services unless a different, service-specific value + is also present in the ADSPEC. + + - A service-specific value for one or more general + characterization parameters, if the service-specific value differs + from the default value. + + - Values of the per-service characterization parameters defined by + each supported service. + + Data in the ADSPEC is divided into blocks or fragments, each of which + is associated with a specific service. This allows the adspec to + carry information about multiple services, allows new services to be + deployed in the future without immediately updating existing code, + and allows an application which will never use a particular service + to omit the ADSPEC data for that service. The structure of the + ADSPEC is described in detail in Section 3.3. + + A sender may indicate that a specific QoS control service should + *not* be used by the receivers within an RSVP session. This is done + by omitting all mention of that service from the ADSPEC, as described + in Section 3.3. Upon arrival at a receiver, the complete absence of + an ADSPEC fragment for a specific service indicates to receivers that + the service should not be used. + + NOTE: In RSVP Version 1, all receivers within a session are + required to choose the same QoS control service. This restriction + is imposed by the difficulty of merging reservations requesting + different QoS control services, and the current lack of a general + service replacement mechanism. The restriction may be eliminated + in the future. + + + +Wroclawski Standards Track [Page 6] + +RFC 2210 RSVP with INTSERV September 1997 + + + Considering this restriction, it may be useful to coordinate the + receivers' selection of a QoS control service by having the + sender(s) offer only one choice, using the ADSPEC mechanism + mentioned above. All receivers must then select the same service. + Alternatively, the coordination might be accomplished by using a + higher-level session announcement and setup mechanism to inform + the receivers of the QoS control service in use, by manual + configuration of the receivers, or by an agreement protocol + running among the session receivers themselves. + + As with the ADSPEC, the FLOWSPEC and SENDER_TSPEC object formats + described in Section 3 are capable of carrying TSpecs and RSpecs + for more than one QoS control service in separate data fragments. + Currently, use of a FLOWSPEC or SENDER_TSPEC containing fragments + for more than one QoS control service is not supported. In the + future, this capability may be used to implement a more flexible + service request and replacement scheme, allowing applications to + obtain useful end-to-end QoS control when not all intermediate + nodes support the same set of QoS services. RSVP-application APIs + should be designed to support passing SENDER_TSPEC, FLOWSPEC, and + ADSPEC objects of variable size and containing information about + multiple QoS control services between RSVP and its clients. + +2.3. Use of ADSPEC Information + + This section gives some details about setting reservation parameters + and the use of information conveyed by the RSVP ADSPEC object. + +2.3.1. Determining the availability of a QoS control service + + The RSVP ADSPEC carries flag bits telling the application receivers + whether or not a completely reservation-capable path exists between + each sender and the receiver. These bits are called "break bits", + because they indicate breaks in the QoS control along a network path. + Break bits are carried within the header which begins each per- + service data fragment of an RSVP ADSPEC. + + Service number 1 is used within the ADSPEC to identify a fragment + carrying information about global parameter values that apply to all + services (see [RFC 2215] for more details). The break bit in service + 1's per-service header is used to tell the receiver(s) whether all of + the network elements along the path from sender to receiver support + RSVP and integrated services. If a receiver finds this bit set, at + least one network element along the data transmission path between + the ADSPEC's sender and the receiver can not provide QoS control + services at all. This bit corresponds to the global NON_IS_HOP + characterization parameter defined in [RFC 2215]. + + + + +Wroclawski Standards Track [Page 7] + +RFC 2210 RSVP with INTSERV September 1997 + + + NOTE: If this bit is set, the values of all other parameters in + the ADSPEC are unreliable. The bit being set indicates that at + least one node along the sender-receiver path did not fully + process the ADSPEC. + + Service-specific break bits tell the receiver(s) whether all of the + network elements along the path from sender to receiver support a + particular QoS control service. The break bit for each service is + carried within the ADSPEC's per-service header for that service. If + a bit is set at the receiver, at least one network element along the + data transmission path supports RSVP but does not support the QoS + control service corresponding to the per-service header. These bits + correspond to the service-specific NON_IS_HOP characterization + parameters defined in [RFC 2215]. + + Section 3 gives more information about break bits. + +2.3.2. Determining Path MTU + + Both Guaranteed and Controlled-Load QoS control services place an + upper bound on packet size, and require that the application limit + the maximum size of packets subject to resource reservation. For both + services, the desired maximum packet size is a parameter of the + reservation request, and the service will reject (with an admission + control error) reservation requests specifying a packet size larger + than that supported by the service. + + Since RSVP reservation requests are made by receivers, this implies + that the *receivers* in an RSVP session, as well as the senders, need + to know the MTU supported by the QoS control services along a data + path. Further, in some unusual cases the MTU supported by a QoS + control service may differ from that supported by the same router + when providing best effort service. + + A scalable form of MTU negotiation is used to address these problems. + MTU negotiation in an RSVP system works as follows: + + - Each sending application joining an RSVP session fills in the M + (maximum packet size) parameter in its generated Sender_TSpec + (carried from senders to receivers in a SENDER_TSPEC object) with + the maximum packet size it wishes to send covered by resource + reservation. + + - Each RSVP PATH message from a sending application also carries + an ADSPEC object containing at least one PATH_MTU characterization + parameter. When it arrives at the receiver, this parameter gives + the minimum MTU at any point along the path from sender to + receiver. Generally, only the "global" PATH_MTU parameter + + + +Wroclawski Standards Track [Page 8] + +RFC 2210 RSVP with INTSERV September 1997 + + + (service 1, parameter 9) will be present, in which case its value + is a legal MTU for all reservation requests. If a service specific + PATH_MTU parameter is present, its value will be smaller than that + of the global parameter, and should be used for reservation + requests for that service. + + - Each receiver takes the minimum of all the PATH_MTU values (for + the desired QoS control service) arriving in ADSPEC messages from + different senders and uses that value as the MTU in its + reservation requests. This value is used to fill in the M + parameter of the TSpec created at the receiver. In the case of a + FF style reservation, a receiver may also choose to use the MTU + derived from each sender's ADSPEC in the FLOWSPEC generated for + that sender, if the receiver is concerned about obtaining the + maximum MTU on each data path. To accomodate changes in the data + path, the receiver may continue to watch the arriving ADSPECS, and + modify the reservation if a newly arriving ADSPEC indicates a + smaller MTU than is currently in use. + + - As reservation requests (RESV messages) move from receivers to + senders, reservation parameters are merged at intermediate nodes. + As part of this merging, the smaller of two M parameters arriving + at a merge point will be forwarded in the upstream RESV message. + + - As reservation requests arrive at intermediate RSVPs, the + minimum of the receivers' requested TSpec and the sum of the + sender TSpecs is taken, and a reservation for the resulting TSpec + is made. The reservation will use the smaller of the actual path + MTU value computed by the receivers and the largest maximum packet + size declared by any of the sender(s). (The TSpec sum() function + result's M parameter is the max of the summed TSpec M parameters). + + - When the completely merged RESV message arrives at each sender, + the MTU value (M parameter) in the merged FLOWSPEC object will + have been set to the smallest acceptable MTU of the data paths + from that sender to any session receiver. This MTU should be used + by the sending application to size its packets. Any packets larger + than this MTU may be delivered as best-effort rather than being + covered by the session's resource reservation. + + Note that senders do *not* adjust the value of their + Sender_TSpec's M field to match the actual packet size selected in + this step. The value of M represents the largest packet the sender + could send, not the largest packet the sender is currently + sending. + + + + + + +Wroclawski Standards Track [Page 9] + +RFC 2210 RSVP with INTSERV September 1997 + + + Note that the scheme above will allow each sender in a session to use + the largest MTU appropriate for that sender, in cases where different + data paths or receivers have different acceptable MTU's. + +3. RSVP Object Formats + + This section specifies the detailed contents and wire format of RSVP + SENDER_TSPEC, ADSPEC, and FLOWSPEC objects for use with the + Guaranteed and Controlled-Load QoS control services. The object + formats specified here are based on the general message construction + rules given in Appendix 1. + +3.1. RSVP SENDER_TSPEC Object + + The RSVP SENDER_TSPEC object carries information about a data + source's generated traffic. The required RSVP SENDER_TSPEC object + contains a global Token_Bucket_TSpec parameter (service_number 1, + parameter 127, as defined in [RFC 2215]). This TSpec carries traffic + information usable by either the Guaranteed or Controlled-Load QoS + control services. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 10] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 0 (a) | reserved | 7 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 1 (c) |0| reserved | 6 (d) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | 127 (e) | 0 (f) | 5 (g) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | Token Bucket Rate [r] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | Token Bucket Size [b] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | Peak Data Rate [p] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | Minimum Policed Unit [m] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | Maximum Packet Size [M] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + (a) - Message format version number (0) + (b) - Overall length (7 words not including header) + (c) - Service header, service number 1 (default/global information) + (d) - Length of service 1 data, 6 words not including header + (e) - Parameter ID, parameter 127 (Token_Bucket_TSpec) + (f) - Parameter 127 flags (none set) + (g) - Parameter 127 length, 5 words not including header + + + In this TSpec, the parameters [r] and [b] are set to reflect the + sender's view of its generated traffic. The peak rate parameter [p] + may be set to the sender's peak traffic generation rate (if known and + controlled), the physical interface line rate (if known), or positive + infinity (if no better value is available). Positive infinity is + represented as an IEEE single-precision floating-point number with an + exponent of all ones (255) and a sign and mantissa of all zeros. The + format of IEEE floating-point numbers is further summarized in [RFC + 1832]. + + The minimum policed unit parameter [m] should generally be set equal + to the size of the smallest packet generated by the application. This + packet size includes the application data and all protocol headers at + or above the IP level (IP, TCP, UDP, RTP, etc.). The size given does + not include any link-level headers, because these headers will change + as the packet crosses different portions of the internetwork. + + + + + + +Wroclawski Standards Track [Page 11] + +RFC 2210 RSVP with INTSERV September 1997 + + + The [m] parameter is used by nodes within the network to compute the + maximum bandwidth overhead needed to carry a flow's packets over the + particular link-level technology, based on the ratio of [m] to the + link-level header size. This allows the correct amount of bandwidth + to be allocated to the flow at each point in the net. Note that + smaller values of this parameter lead to increased overhead + estimates, and thus increased likelyhood of a reservation request + being rejected by the node. In some cases, an application + transmitting a low percentage of very small packets may therefore + choose to set the value of [m] larger than the actual minimum + transmitted packet size. This will increase the likelyhood of the + reservation succeeding, at the expense of policing packets of size + less than [m] as if they were of size [m]. + + Note that the an [m] value of zero is illegal. A value of zero would + indicate that no data or IP headers are present, and would give an + infinite amount of link-level overhead. + + The maximum packet size parameter [M] should be set to the size of + the largest packet the application might wish to generate, as + described in Section 2.3.2. This value must, by definition, be equal + to or larger than the value of [m]. + +3.2. RSVP FLOWSPEC Object + + The RSVP FLOWSPEC object carries information necessary to make + reservation requests from the receiver(s) into the network. This + includes an indication of which QoS control service is being + requested, and the parameters needed for that service. + + The QoS control service requested is indicated by the service_number + in the FLOWSPEC's per-service header. + +3.2.1 FLOWSPEC object when requesting Controlled-Load service + + The format of an RSVP FLOWSPEC object originating at a receiver + requesting Controlled-Load service is shown below. Each of the TSpec + fields is represented using the preferred concrete representation + specified in the 'Invocation Information' section of [RFC 2211]. The + value of 5 in the per-service header (field (c), below) indicates + that Controlled-Load service is being requested. + + + + + + + + + + +Wroclawski Standards Track [Page 12] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 0 (a) | reserved | 7 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 5 (c) |0| reserved | 6 (d) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | 127 (e) | 0 (f) | 5 (g) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | Token Bucket Rate [r] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | Token Bucket Size [b] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | Peak Data Rate [p] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | Minimum Policed Unit [m] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | Maximum Packet Size [M] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Message format version number (0) + (b) - Overall length (7 words not including header) + (c) - Service header, service number 5 (Controlled-Load) + (d) - Length of controlled-load data, 6 words not including + per-service header + (e) - Parameter ID, parameter 127 (Token Bucket TSpec) + (f) - Parameter 127 flags (none set) + (g) - Parameter 127 length, 5 words not including per-service + header + + + In this object, the TSpec parameters [r], [b], and [p] are set to + reflect the traffic parameters of the receiver's desired reservation + (the Reservation TSpec). The meaning of these fields is discussed + fully in [RFC 2211]. Note that it is unlikely to make sense for the + [p] term to be smaller than the [r] term. + + The maximum packet size parameter [M] should be set to the value of + the smallest path MTU, which the receiver learns from information in + arriving RSVP ADSPEC objects. Alternatively, if the receiving + application has built-in knowledge of the maximum packet size in use + within the RSVP session, and this value is smaller than the smallest + path MTU, [M] may be set to this value. Note that requesting a value + of [M] larger than the service modules along the data path can + support will cause the reservation to fail. See section 2.3.2 for + further discussion of the MTU value. + + + + + + +Wroclawski Standards Track [Page 13] + +RFC 2210 RSVP with INTSERV September 1997 + + + The value of [m] can be chosen in several ways. Recall that when a + resource reservation is installed at each intermediate node, the + value used for [m] is the smaller of the receiver's request and the + values in each sender's SENDER_TSPEC. + + If the application has a fixed, known minimum packet size, than that + value should be used for [m]. This is the most desirable case. + + For a shared reservation style, the receiver may choose between two + options, or pick some intermediate point between them. + + - if the receiver chooses a large value for [m], then the + reservation will allocate less overhead for link-level headers. + However, if a new sender with a smaller SENDER_TSPEC [m] joins the + session later, an already-installed reservation may fail at that + time. + + - if the receiver chooses a value of [m] equal to the smallest + value which might be used by any sender, then the reservation will + be forced to allocate more overhead for link-level headers. + However it will not fail later if a new sender with a smaller + SENDER_TSPEC [m] joins the session. + + For a FF reservation style, if no application-specific value is known + the receiver should simply use the value of [m] arriving in each + sender's SENDER_TSPEC for its reservation request to that sender. + +3.2.2. FLOWSPEC Object when Requesting Guaranteed Service + + The format of an RSVP FLOWSPEC object originating at a receiver + requesting Guaranteed service is shown below. The flowspec object + used to request guaranteed service carries a TSpec and RSpec + specifying the traffic parameters of the flow desired by the + receiver. + + Each of the TSpec and RSpec fields is represented using the preferred + concrete representation specified in the 'Invocation Information' + section of [RFC 2212]. The value of 2 for the service header + identifier (field (c) in the picture below) indicates that Guaranteed + service is being requested. + + + + + + + + + + + +Wroclawski Standards Track [Page 14] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 0 (a) | Unused | 10 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 2 (c) |0| reserved | 9 (d) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | 127 (e) | 0 (f) | 5 (g) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | Token Bucket Rate [r] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | Token Bucket Size [b] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | Peak Data Rate [p] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | Minimum Policed Unit [m] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | Maximum Packet Size [M] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 9 | 130 (h) | 0 (i) | 2 (j) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 10 | Rate [R] (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 11 | Slack Term [S] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Message format version number (0) + (b) - Overall length (9 words not including header) + (c) - Service header, service number 2 (Guaranteed) + (d) - Length of per-service data, 9 words not including per-service + header + (e) - Parameter ID, parameter 127 (Token Bucket TSpec) + (f) - Parameter 127 flags (none set) + (g) - Parameter 127 length, 5 words not including parameter header + (h) - Parameter ID, parameter 130 (Guaranteed Service RSpec) + (i) - Parameter 130 flags (none set) + (j) - Parameter 130 length, 2 words not including parameter header + + + In this object, the TSpec parameters [r], [b], and [p] are set to + reflect the traffic parameters of the receiver's desired reservation + (the Reservation TSpec). The meaning of these fields is discussed + fully in [RFC 2212]. Note that it is unlikely to make sense for the + [p] term to be smaller than the [r] term. + + The RSpec terms [R] and [S] are selected to obtain the desired + bandwidth and delay guarantees. This selection is described in [RFC + 2212]. + + + + +Wroclawski Standards Track [Page 15] + +RFC 2210 RSVP with INTSERV September 1997 + + + The [m] and [M] parameters are set identically to those for the + Controlled-Load service FLOWSPEC, described in the previous section. + +3.3. RSVP ADSPEC Object + + An RSVP ADSPEC object is constructed from data fragments contributed + by each service which might be used by the application. The ADSPEC + begins with an overall message header, followed by a fragment for the + default general parameters, followed by fragments for every QoS + control service which may be selected by application receivers. The + size of the ADSPEC varies depending on the number and size of per- + service data fragments present and the presence of non-default + general parameters (described in Section 3.3.5). + + The complete absence of a data fragment for a particular service + means that the application sender does not know or care about that + service, and is a signal to intermediate nodes not to add or update + information about that service to the ADSPEC. It is also a signal to + application receivers that they should not select that service when + making reservations. + + Each fragment present is identified by a per-service data header. + Each header contains a field identifying the service, a break bit, + and a length field. + + The length field allows the ADSPEC information for a service to be + skipped over by a network elements which does not recognize or + implement the service. When an element does this, it sets the break + bit, indicating that the service's ADSPEC data was not updated at at + least one hop. Note that a service's break bit can be set without + otherwise supporting the service in any way. In all cases, a network + element encountering a per-service data header it does not understand + simply sets bit 23 to report that the service is not supported, then + skips over the rest of the fragment. + + Data fragments must always appear in an ADSPEC in service_number + order. In particular, the default general parameters fragment + (service_number 1) always comes first. + + Within a data fragment, the service-specific data must alway come + first, followed by any non-default general parameters which may be + present, ordered by parameter_number. The size and structure of the + service-specific data is fixed by the service definition, and does + not require run-time parsing. The remainder of the fragment, which + carries non-default general parameters, varies in size and structure + depending on which, if any, of these parameters are present. This + part of the fragment must be parsed by examining the per-parameter + headers. + + + +Wroclawski Standards Track [Page 16] + +RFC 2210 RSVP with INTSERV September 1997 + + + Since the overall size of each data fragment is variable, it is + always necessary to examine the length field to find the end of the + fragment, rather than assuming a fixed-size structure. + + 3.3.1. RSVP ADSPEC format + + The basic ADSPEC format is shown below. The message header and the + default general parameters fragment are always present. The fragments + for Guaranteed or Controlled-Load service may be omitted if the + service is not to be used by the RSVP session. Additional data + fragments will be added if new services are defined. + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 0 (a) | reserved | Msg length - 1 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Default General Parameters fragment (Service 1) (c) | + | (Always Present) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Guaranteed Service Fragment (Service 2) (d) | + | (Present if application might use Guaranteed Service) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Controlled-Load Service Fragment (Service 5) (e) | + | (Present if application might use Controlled-Load Service) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Message format version number (0) + (b) - Overall message length not including header word + (c, d, e) - Data fragments + +3.3.2. Default General Characterization Parameters ADSPEC data fragment + + All RSVP ADSPECs carry the general characterization parameters + defined in [RFC 2215]. Values for global or default general + parameters (values which apply to the all services or the path + itself) are carried in the per-service data fragment for service + number 1, as shown in the picture above. This fragment is always + present, and always first in the message. + + + + + + + +Wroclawski Standards Track [Page 17] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 1 (c) |x| reserved | 8 (d) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 4 (e) | (f) | 1 (g) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | IS hop cnt (32-bit unsigned integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | 6 (h) | (i) | 1 (j) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | Path b/w estimate (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | 8 (k) | (l) | 1 (m) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | Minimum path latency (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | 10 (n) | (o) | 1 (p) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 9 | Composed MTU (32-bit unsigned integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (c) - Per-Service header, service number 1 (Default General + Parameters) + (d) - Global Break bit ([RFC 2215], Parameter 2) (marked x) and + length of General Parameters data block. + (e) - Parameter ID, parameter 4 (Number-of-IS-hops param from + [RFC 2215]) + (f) - Parameter 4 flag byte + (g) - Parameter 4 length, 1 word not including header + (h) - Parameter ID, parameter 6 (Path-BW param from [RFC 2215]) + (i) - Parameter 6 flag byte + (j) - Parameter 6 length, 1 word not including header + (k) - Parameter ID, parameter 8 (minimum path latency from [RFC + 2215]) + (l) - Parameter 8 flag byte + (m) - Parameter 8 length, 1 word not including header + (n) - Parameter ID, parameter 10 (composed path MTU from [RFC 2215]) + (o) - Parameter 10 flag byte + (p) - Parameter 10 length, 1 word not including header + + + Rules for composing general parameters appear in [RFC 2215]. + + In the above fragment, the global break bit (bit 23 of word 1, marked + with (x) in the picture) is used to indicate the existence of a + network element not supporting QoS control services somewhere in the + data path. This bit is cleared when the ADSPEC is created, and set + to one if a network element which does not support RSVP or integrated + + + +Wroclawski Standards Track [Page 18] + +RFC 2210 RSVP with INTSERV September 1997 + + + services is encountered. An ADSPEC arriving at a receiver with this + bit set indicates that all other parameters in the ADSPEC may be + invalid, since not all network elements along the path support + updating of the ADSPEC. + + The general parameters are updated at every network node which + supports RSVP: + + - When a PATH message ADSPEC encounters a network element + implementing integrated services, the portion of the ADSPEC + associated with service number 1 is passed to the module + implementing general parameters. This module updates the global + general parameters. + + - When a PATH message ADSPEC encounters a network element that + does *not* support RSVP or implement integrated services, the + break bit in the general parameters service header must be set. In + practice, this bit will usually be set by another network element + which supports RSVP, but has been made aware of the gap in + integrated services coverage. + + - In either case, the ADSPEC is passed back to RSVP for delivery + to the next hop along the path. + +3.3.3. Guaranteed Service ADSPEC data fragment + + The Guaranteed service uses the RSVP ADSPEC to carry data needed to + compute the C and D terms passed from the network to the application. + The minimum size of a non-empty guaranteed service data fragment is 8 + 32-bit words. The ADSPEC fragment for Guaranteed service has the + following format: + + + + + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 19] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 2 (a) |x| reserved | N-1 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 133 (c) | 0 (d) | 1 (e) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | End-to-end composed value for C [Ctot] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | 134 (f) | (g) | 1 (h) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | End-to-end composed value for D [Dtot] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | 135 (i) | (j) | 1 (k) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | Since-last-reshaping point composed C [Csum] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | 136 (l) | (m) | 1 (n) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 9 | Since-last-reshaping point composed D [Dsum] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 10 | Service-specific general parameter headers/values, if present | + . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . + N | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Per-Service header, service number 2 (Guaranteed) + (b) - Break bit and Length of per-service data in 32-bit + words not including header word. + (c) - Parameter ID, parameter 133 (Composed Ctot) + (d) - Parameter 133 flag byte + (e) - Parameter 133 length, 1 word not including header + (f) - Parameter ID, parameter 134 (Composed Dtot) + (g) - Parameter 134 flag byte + (h) - Parameter 134 length, 1 word not including header + (i) - Parameter ID, parameter 135 (Composed Csum). + (j) - Parameter 135 flag byte + (k) - Parameter 135 length, 1 word not including header + (l) - Parameter ID, parameter 136 (Composed Dsum). + (m) - Parameter 136 flag byte + (n) - Parameter 136 length, 1 word not including header + + When a node which actually implements guaranteed service creates the + guaranteed service adspec fragment, the parameter values are set to + the local values for each parameter. When an application or network + + + + + + +Wroclawski Standards Track [Page 20] + +RFC 2210 RSVP with INTSERV September 1997 + + + element which does not itself implement guaranteed service creates a + guaranteed service adspec fragment, it should set the values of each + parameter to zero, and set the break bit to indicate that the service + is not actually implemented at the node. + + An application or host RSVP which is creating a guaranteed service + adspec fragment but does not itself implement the guaranteed service + may create a truncated "empty" guaranteed adspec fragment consisting + of only a header word: + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 2 (a) |1| (b) | 0 (c) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Per-Service header, service number 2 (Guaranteed) + (b) - Break bit (set, service not implemented) + (c) - Length of per-service data in 32-bit words not + including header word. + + + This might occur if the sending application or host does not do + resource reservation iself, but still wants the network to do so. + Note that in this case the break bit will always be set, since the + creator of the adspec fragment does not itself implement guaranteed + service. + + When a PATH message ADSPEC containing a per-service header for + Guaranteed service encounters a network element implementing + Guaranteed service, the guaranteed service data fragment is updated: + + - If the data block in the ADSPEC is an empty (header-only) block + the header-only fragment must first be expanded into the complete + data fragment described above, with initial values of Ctot, Dtot, + Csum, and Dsum set to zero. An empty fragment can be recognized + quickly by checking for a size field of zero. The value of the + break bit in the header is preserved when the additional + Guaranteed service data is added. The overall message length and + the guaranteed-service data fragment size (field (b) in the + pictures above) are changed to reflect the increased message + length. + + The values of Ctot, Csum, Dtot, and Dsum in the ADSPEC data + fragment are then composed with the local values exported by the + network element according to the composition functions defined in + [RFC 2212]. + + + + +Wroclawski Standards Track [Page 21] + +RFC 2210 RSVP with INTSERV September 1997 + + + - When a PATH message ADSPEC with a Guaranteed service header + encounters a network element that supports RSVP but does *not* + implement Guaranteed service, the network element sets the break + bit in the Guaranteed service header. + + - The new values are placed in the correct fields of the ADSPEC, + and the ADSPEC is passed back to RSVP for delivery to the next hop + along the path. + + When a PATH message ADSPEC containing a Guaranteed service data + fragment encounters a network element that supports RSVP but does + *not* implement Guaranteed service, the network element sets the + break bit in the Guaranteed service header. + + When a PATH message ADSPEC *without* a Guaranteed service header + encounters a network element implementing Guaranteed service, the + Guaranteed service module of the network element leaves the ADSPEC + unchanged. The absence of a Guaranteed service per-service header in + the ADSPEC indicates that the application does not care about + Guaranteed service. + + +3.3.4. Controlled-Load Service ADSPEC data fragment + + Unlike the Guaranteed service, the Controlled-Load service does not + require extra ADSPEC data to function correctly. The only ADSPEC data + specific to the Controlled-Load service is the Controlled-Load break + bit. Therefore the usual Controlled-Load service data block contains + no extra information. The minimum size of the controlled-load service + data fragment is 1 32-bit word. + + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 5 (a) |x| (b) | N-1 (c) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | Service-specific general parameter headers/values, if present | + . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . + N | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + (a) - Per-Service header, service number 5 (Controlled-Load) + (b) - Break bit + (c) - Length of per-service data in 32 bit words not including + header word. + + + + + +Wroclawski Standards Track [Page 22] + +RFC 2210 RSVP with INTSERV September 1997 + + + The Controlled-Load portion of the ADSPEC is processed according to + the following rules: + + - When a PATH message ADSPEC with a Controlled-Load service header + encounters a network element implementing Controlled-Load service, + the network element makes no changes to the service header. + + - When a PATH message ADSPEC with a Controlled-Load service header + encounters a network element that supports RSVP but does *not* + implement Controlled-Load service, the network element sets the + break bit in the Controlled-Load service header. + + - In either case, the ADSPEC is passed back to RSVP for delivery + to the next hop along the path. + +3.3.5. Overriding Global ADSPEC Data with Service-Specific Information + + In some cases, the default values for the general parameters are not + correct for a particular service. For example, an implementation of + Guaranteed service may accept only packets with a smaller maximum + size than the link MTU, or the percentage of outgoing link bandwidth + made available to the Controlled-Load service at a network element + may be administratively limited to less than the overall bandwidth. + + In these cases, a service-specific value, as well as the default + value, is reported to the receiver receiving the ADSPEC. Service- + specific information which overrides general information is carried + by a parameter with the same name as the general parameter, placed + within the data fragment of the QoS control service to which it + applies. These service-specific values are referred to as override or + service-specific general parameters. + + For example, the following Controlled-Load ADSPEC fragment carries + information overriding the global path bandwidth estimate with a + different value: + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 23] + +RFC 2210 RSVP with INTSERV September 1997 + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 5 (a) |x| (b) | 2 (c) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 6 (d) | 0 (d) | 1 (e) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | Path b/w estimate for C-L service (32b IEEE FP number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + (a) - Per-Service header, service number 5 (Controlled-Load) + (b) - Break bit + (c) - Length of per-service data, two words not including header + (c) - Parameter ID, parameter 6 + (AVAILABLE_PATH_BANDWIDTH general parameter from [RFC 2215]) + (d) - Parameter 6 flags (none set) + (e) - Parameter 6 length, one word not including header + + + The presence of override parameters in a data fragment can be quickly + detected by examining the fragment's length field, which will be + larger than the "standard" length for the fragment. Specific + override parameters can be easily identified by examining the + parameter headers, because they have parameter_number's from the + general parameter portion of the number space (1-127), but are found + in service-specific data blocks (those with service_numbers between 2 + and 254 in the per_service header field). + + The presence of override parameters in a data fragment is optional. A + parameter header/value pair is added only when a particular + application or QoS control service wishes to override the global + value of a general parameter with a service-specific value. + + As with IP options, it is only the use of these override parameters + that is optional. All implementations must be prepared to receive and + process override parameters. + + The basic principle for handling override parameters is to use the + override value (local or adspec) if it exists, and to use the default + value otherwise. If a local node exports an override value for a + general parameter, but there is no override value in the arriving + adspec, the local node adds it. The following pseudo-code fragment + gives more detail: + + + + + + + + + +Wroclawski Standards Track [Page 24] + +RFC 2210 RSVP with INTSERV September 1997 + + + /* Adspec parameter processing rules * + + <get arriving ADSPEC from RSVP> + + for ( <each service number N with a fragment in the ADSPEC> ) { + if ( <the local node does not support the service> ) { + <set the break bit in the service header> + } else { + for ( <each parameter in the data fragment for service N> ) { + if ( < the local service N supplies a value for the parameter> ) { + <compose the arriving and values and update the adspec> + } else { + /* Must be a general parameter, or service N would have + * supplied a value.. + */ + <compose the arriving value with the local default value + and update the adspec> + } + } + for ( <any parameters supplied by the local service N + implementation but not found in the adspec> ) { + /* + * Must be an override value for a general parameter, + * or the adspec would have contained a value.. + */ + <compose the local override value with the arriving default + value (from the service 1 data fragment) and add the parameter + to the adspec's service N fragment in parameter_number order> + } + } + } + + <pass updated ADSPEC back to RSVP> + + In practice, the two 'for' loops can be combined. Since override + parameters within a service's fragment are transmitted in numerical + order, it is possible to determine whether a parameter is present + without scanning the entire fragment. Also, because the data + fragments are ordered by service_number, the default values for + general parameters will always be read before they might be needed to + update local override values in the second for loop. + +3.3.6. Example + + The picture below shows the complete adspec for an application which + can use either controlled-load or guaranteed service. In the example, + + + + + +Wroclawski Standards Track [Page 25] + +RFC 2210 RSVP with INTSERV September 1997 + + + data fragments are present for general parameters, guaranteed, and + controlled-load services. All fragments are of standard size, and + there are no override parameters present. + + + 31 24 23 16 15 8 7 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 1 | 0 (a) | Unused | 19 (b) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 2 | 1 (c) |x| reserved (d)| 8 (e) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 3 | 4 (f) | (g) | 1 (h) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 4 | zero extension of .. IS hop cnt (16-bit unsigned) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 5 | 6 (i) | (j) | 1 (k) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 6 | Path b/w estimate (32-bit IEEE floating point number) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 7 | 8 (l) | (m) | 1 (n) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 8 | Minimum path latency (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 9 | 10 (o) | (p) | 1 (q) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 10 | zero extension of .. composed MTU (16-bit unsigned) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 11 | 2 (r) |x| reserved (s)| 8 (t) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 12 | 133 (u) | (v) | 1 (w) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 13 | End-to-end composed value for C [Ctot] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 14 | 134 (x) | (y) | 1 (z) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 15 | End-to-end composed value for D [Dtot] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 16 | 135 (aa | (bb | 1 (cc) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 17 | Since-last-reshaping point composed C [Csum] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 18 | 136 (dd) | (ee) | 1 (ff) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 19 | Since-last-reshaping point composed D [Dsum] (32-bit integer) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 20 | 5 (gg |x 0 (hh) | 0 (ii) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + +Wroclawski Standards Track [Page 26] + +RFC 2210 RSVP with INTSERV September 1997 + + + Word 1: Message Header: + (a) - Message header and version number + (b) - Message length - 19 words not including header + + Words 2-7: Default general characterization parameters + (c) - Per-Service header, service number 1 + (Default General Parameters) + (d) - Global Break bit (NON_IS_HOP general parameter 2) (marked x) + (e) - Length of General Parameters data block (8 words) + (f) - Parameter ID, parameter 4 (NUMBER_OF_IS_HOPS + general parameter) + (g) - Parameter 4 flag byte + (h) - Parameter 4 length, 1 word not including header + (i) - Parameter ID, parameter 6 (AVAILABLE_PATH_BANDWIDTH + general parameter) + (j) - Parameter 6 flag byte + (k) - Parameter 6 length, 1 word not including header + (l) - Parameter ID, parameter 8 (MINIMUM_PATH_LATENCY + general parameter) + (m) - Parameter 8 flag byte + (n) - Parameter 8 length, 1 word not including header + (o) - Parameter ID, parameter 10 (PATH_MTU general parameter) + (p) - Parameter 10 flag byte + (q) - Parameter 10 length, 1 word not including header + + Words 11-19: Guaranteed service parameters + (r) - Per-Service header, service number 2 (Guaranteed) + (s) - Break bit + (t) - Length of per-service data, 8 words not including header + (u) - Parameter ID, parameter 133 (Composed Ctot) + (v) - Composed Ctot flag byte + (w) - Composed Ctot length, 1 word not including header + (x) - Parameter ID, parameter 134 (Composed Dtot) + (y) - Composed Dtot flag byte + (z) - Composed Dtot length, 1 word not including header + (aa)- Parameter ID, parameter 135 (Composed Csum). + (bb)- Composed Csum flag byte + (cc)- Composed Csum length, 1 word not including header + (dd)- Parameter ID, parameter 136 (Composed Dsum). + (ee)- Composed Dsum flag byte + (ff)- Composed Dsum length, 1 word not including header + + Word 20: Controlled-Load parameters + (gg - Per-Service header, service number 5 (Controlled-Load) + (hh)- Break bit + (ii)- Length of controlled-load data, 0 words not including header + + + + + +Wroclawski Standards Track [Page 27] + +RFC 2210 RSVP with INTSERV September 1997 + + +4. Security Considerations + + The message formatting and usage rules described in this note raise + no security issues. The overall use of these rules to implement + multiple qualities of service using RSVP and integrated services + scheduling modules introduces a new security requirement; the need to + control and authenticate access to enhanced qualities of service. + This requirement is discussed further in [RFC 2205], [RFC 2212], and + [RFC 2211]. [RFCRSVPMD5] describes the mechanism used to protect the + integrity of RSVP messages carrying the information described here. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 28] + +RFC 2210 RSVP with INTSERV September 1997 + + +Appendix 1: Message construction rules + + This section gives the rule used to generate the object formats of + Section 3. It is a general wire format for encoding integrated + services data objects within setup and management protocol messages. + The format has a three-level structure: + + - An overall message header carries a version number and message + length. Providing this header in a standard format allows the + same code library to handle data objects carried by multiple setup + protocols. + + - Per-service fragments carry information about a specific QoS + control service, such as guaranteed [RFC 2212] or controlled load + [RFC 2211]. Each per-service fragment carries one or more + parameters. The set of parameters present in a fragment is + determined by the needs of the protocol in use. Examples are given + in Section 2. + + - Parameters are the actual data used to control or monitor a + service. A parameter may be a single quantity such as an integer, + or a composite data structure such as a TSpec. The parameters + specific to a service are defined by the service specification. + The available general parameters, with definitions shared by many + services, are defined by [RFC 2215]. + + + + + + + + + + + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 29] + +RFC 2210 RSVP with INTSERV September 1997 + + +A1.1. Message Header + + The 32-bit message header specifies the message format version number + and total length of the message. The overall message must be aligned + to a 32-bit boundary within the transport protocol's data packet. + The message length is measured in 32-bit words *not including the + word containing the header*. This is to lower the probability of an + accidentally cleared word resulting in an infinite loop in the + message parser. + + The Message Header is represented by a 32-bit bitfield laid out as + shown below and then encoded as an XDR unsigned integer. Encoding as + an XDR unsigned integer is equivalent to converting the bitfield from + the machine's native format to big-endian network byte order. + + Message Header + + MSB LSB + 31 28 27 16 15 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | V | Unused | OVERALL LENGTH | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + V - Message format version; currently 0 + OVERALL LENGTH - Message length in 32-bit words not including header + + + + + + + + + + + + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 30] + +RFC 2210 RSVP with INTSERV September 1997 + + +A1.2. Per-Service Data Header + + The message header is followed by one or more service-specific data + blocks, each containing the data associated with a specific QoS + control service. Each service-specific data block begins with an + identifying header. This 32-bit header contains the service number, a + one-bit flag (the "break bit", because it indicates a break in the + QoS control path) and a length field. The length field specifies the + number of 32-bit words used to hold data specific to this service as + a count of 32-bit words *not including the word containing the + header*. + + The break bit, if set, indicates that the service specified by the + header was unsupported or unrecognized at some point in the message's + path through the network. This bit corresponds to the general + parameter NON_IS_HOP defined in [RFC 2215]. It is cleared when a + message is first generated, and set whenever the message passes + through an element that does not recognize the service_number in the + per-service header. + + The Per-Service Data Header is represented by a 32-bit bitfield laid + out as shown below and then encoded as an XDR unsigned integer. + + Per-Service Data Header + + MSB LSB + 31 24 23 16 15 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | SVC_NUMBER |B| Reserved | SVC_LENGTH | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + SVC_NUMBER - Service ID number (defined in service specification). + B - Break bit - service unsupported/break in path. + SVC_LENGTH - Service-specific data length in 32-bit words, + not including header. + + + + + + + + + + + + + + + +Wroclawski Standards Track [Page 31] + +RFC 2210 RSVP with INTSERV September 1997 + + +A1.3. Parameter Header + + The per-service header is followed by one or more service parameter + blocks, each identified by a Parameter Header. This header contains + the parameter identifier (parameter number), the length of the data + carrying the parameter's value, and a flag field. The data field(s) + of the parameter follow. The parameter number, as well as the + meaning and format of the data words following the header, are given + by the specification which defines the parameter. + + The Parameter Header is represented by a 32-bit bitfield laid out as + shown below and then encoded as an XDR unsigned integer. + + + Parameter Header + + MSB LSB + 31 24 23 16 15 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | PARAM_NUM |I FLAGS | PARAM_LENGTH | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PARAM_NUM - Parameter number (defined in service specification) + FLAGS - Per-parameter flags + PARAM_LENGTH - Length of per-parameter data in 32-bit words, not + including the header word. + + The following flags are currently defined in the FLAGS field: + + I (bit 23) - INVALID + + This flag indicates that the parameter value was + not correctly processed at one or more network + elements along a data path. It is intended for use + in a possible future service composition scheme. + + Other bits in the FLAGS field of the parameter header are currently + reserved, and should be set to zero. + + + + + + + + + + + + + +Wroclawski Standards Track [Page 32] + +RFC 2210 RSVP with INTSERV September 1997 + + +A1.4. Parameter Data + + Following the Parameter Header is the actual data representing the + parameter value. Parameter values are encoded into one or more 32-bit + words using the XDR external data representation described in [RFC + 1832], and the resulting words are placed in the message. + + The document defining a parameter should provide an XDR description + of the parameter's data fields. If it does not, a description should + be provided in this note. + +References + + [RFC 2205] Braden, B., Ed., et. al., "Resource Reservation Protocol + (RSVP) - Version 1 Functional Specification", RFC 2205, September + 1997. + + [RFC 2216] Shenker, S., and J. Wroclawski. "Network Element QoS + Control Service Specification Template", RFC 2216, September 1997. + + [RFC 2212] Shenker, S., Partridge, C., and R Guerin, "Specification + of Guaranteed Quality of Service", RFC 2212, September 1997. + + [RFC 2211] Wroclawski, J., "Specification of the Controlled Load + Quality of Service", RFC 2211, September 1997. + + [RFC 2215] Shenker, S., and J. Wroclawski, "General Characterization + Parameters for Integrated Service Network Elements", RFC 2215, + September 1997. + + [RFCRSVPMD5] Baker, F., "RSVP Cryptographic Authentication", Work in + Progress. + + [RFC 1832] Srinivansan, R., "XDR: External Data Representation + Standard", RFC 1832, August 1995. + +Author's Address + + John Wroclawski + MIT Laboratory for Computer Science + 545 Technology Sq. + Cambridge, MA 02139 + + Phone: 617-253-7885 + Fax: 617-253-2673 (FAX) + EMail: jtw@lcs.mit.edu + + + + + +Wroclawski Standards Track [Page 33] + |