RFC 2216
Network Element Service Specification Template
RFC 2216: Network Element Service Specification Template ๐
okay bestie, this one is the Network Element Service Specification Template ๐ It's from Request for Comments: 2216, written by S. Shenker and J. Wroclawski of Xerox PARC/MIT LCS, dated September 1997. It's Informational, so it's sharing good info with the community, not laying down a standard ๐ฆ Its header doesn't list anything it obsoletes or updates.
Status of This Memo ๐
This memo gives information to the Internet community. It does not specify an Internet standard of any kind ๐ Distribution is unlimited, so share it with everyone ๐
Abstract โจ
This doc sets up a framework for describing services that network elements provide to applications inside an internetwork that offers multiple qualities of service ๐ It starts with some necessary context, including relevant definitions and suggested data formats, and then lays out a "template" that service specification documents should follow. The template covers per-element requirements like how the service handles packets, which parameters the service requires and makes available, traffic specification and policing requirements, and how traffic ordering relationships work. It also has evaluation criteria for elements that provide the service, plus examples of how the service might be implemented by network elements and used by applications ๐ง
Introduction ๐ธ
This document defines the framework for specifying what internetwork system components do when they support giving applications multiple, dynamically selectable qualities of service ๐ซถ The behavior of individual routers and subnetworks gets captured as a set of "services," and each element may offer some or all of them. When you chain these services along the end-to-end data paths an application uses, you get overall quality of service control ๐
A service definition says what a router (or any network element, like a switch or subnet) has to do when it supports a particular service ๐ญ The definition also specifies the parameters used to invoke the service, how those parameters relate to the service that gets delivered, and the end-to-end behavior you get by chaining several instances of the service ๐ฅ
Each service definition also specifies the interface between that service and its environment. That includes the parameters needed to invoke the service, informational parameters the service must make available for setup, routing, and management mechanisms to use, and information that should be carried between end-nodes and network elements by those mechanisms to get the desired end-to-end behavior โจ A service definition does not describe the specific protocols or mechanisms used to establish state in the network elements for flows that use the described service, though ๐
Services defined under this document are meant for use both across the global Internet and in private IP networks ๐ Sometimes a chain of network element services can provide a range of end-to-end behaviors. Some are better suited to a decentralized internet, and some fit a tightly managed private network better. This document points out places where that distinction may be appropriate ๐
This document has three parts. The first defines terms used both in this document and in the various service specification documents. The second discusses data formats and representations. The third describes the various components of the service specification template ๐
Definitions ๐
The following terms are used throughout this document. Service specification documents should use the same terms to express these concepts, so everyone's on the same page ๐ฆ
Quality of Service (QoS) ๐
In this document, quality of service refers to the nature of the packet delivery service, described by parameters like achieved bandwidth, packet delay, and packet loss rates ๐ Traditionally the Internet has offered a single quality of service, best-effort delivery, where the available bandwidth and delay depend on instantaneous load ๐ญ You control the quality of service applications see by properly provisioning the network infrastructure. A network with dynamically controllable quality of service is different: individual application sessions can request packet delivery characteristics that match what they need, and different applications can get different qualities of service ๐ There's a whole range of useful options between no dynamic QoS control at all and extremely precise, accurate control of QoS parameters, and it should be understood that the range is huge ๐ง
Network Element ๐
A "Network Element" (or the shorter form "Element") is any component of an internetwork that directly handles data packets and so could potentially control QoS for the data flowing through it ๐ Network elements include routers, subnetworks, and end-node operating systems. A QoS-capable network element is one that offers one or more of the services defined under the rules in this document. Note that this definition, by itself, precludes QoS-capable network elements that meet performance goals purely through adequate provisioning rather than active admission and traffic control mechanisms ๐ A "QoS-aware" network element supports the interfaces (described below) that the service definitions require. So a QoS-aware element doesn't have to offer any of the services defined under this document's format. It just needs to know how to deny service requests ๐
Flow ๐ฆ
For this document, a flow is a set of packets traversing a network element that are all covered by the same request for control of quality of service ๐ซถ At a given network element, a flow might be the packets from a single application session, or it might be an aggregation of combined data traffic from several application sessions โจ
NOTE: this definition of a flow is different from the one used in IPv6, where a flow is defined as the packets with the same source address and FlowID. ๐
Mechanisms that link a request for quality of service control to the packets covered by that request are beyond the scope of this document ๐
Service ๐ธ
The phrase "service" or "QoS Control Service" describes a named, coordinated set of QoS control capabilities provided by a single network element ๐ The definition of a service includes the functions the network element must perform, the information the element needs to perform them, and the information the element makes available to other parts of the system. Conceptually, a service is implemented inside the "service module" within the network element ๐ง
NOTE: The above gives "service" a precise meaning. Service is a word with a bunch of meanings across the networking community, and here it refers specifically to the actions and responses of a single network element like a router or subnet ๐ That's different from the more end-to-end meaning the word has in some other networking contexts ๐ซถ
Behavior ๐
A "behavior" is the QoS-related end-to-end performance an application session sees ๐ It's the end result of composing the services each network element offers along the path of the application's data flow ๐ฅ
When every network element along a data flow path offers the same service, it's often possible to explain the resulting end-to-end behavior in a straightforward way ๐ญ A data flow path made of elements using different services is more complicated and may actually be undefined. A future version of this document may add requirements to the service specification about multi-service concatenation ๐
Characterization ๐ฎ
A characterization is a computed approximation of the actual end-to-end behavior a flow would see when requesting specific QoS services from the network ๐ฆ By giving the end-nodes extra information before a flow is set up, characterizations help end-nodes choose which services to request from the network โจ
Characterization Parameters ๐งฎ
Characterizations are computed from a set of characterization parameters that each network element on the flow's path provides, plus a composition function that turns those parameters into the end-to-end characterization ๐ The composition function may in practice be run in a distributed way by the setup or routing protocol. Or the characterization parameters may be gathered to a single point and the characterization computed there ๐
Several characterizations may be computed for a single candidate data flow. On the flip side, a service may provide no characterizations at all, and under some conditions no characterizations may be available to the end-nodes requesting QoS services ๐
Composition Function โ๏ธ
A composition function accepts characterization parameters as input and computes a characterization, as described above ๐ง
Traffic Specification (TSpec) ๐ฆ
A Traffic Specification, or TSpec, describes the traffic pattern a service is being requested for ๐ Generally, the TSpec is one side of a "contract" between the data flow and the service. Once a service request is accepted, the service module has agreed to provide a specific QoS, as long as the flow's data traffic keeps matching the TSpec ๐ซถ
As examples, this specification might take the form of a token bucket filter (defined below) or an upper bound on the peak rate ๐ Note that the traffic specification describes the flow's allowed traffic pattern, not the flow's actual traffic pattern ๐ The behavior of a service when a flow's actual traffic doesn't conform to the traffic specification must be defined by the service (see "Policing" below) ๐ญ
Service Request Specification (RSpec) ๐
A Service Request Specification, or RSpec, specifies the quality of service a flow wants to request from a network element ๐ What goes in a service request specification is highly specific to a particular service. For example, these specifications might include information about bandwidth allocated to the flow, maximum delays, or packet loss rates ๐
Setup Protocol ๐ง
A setup protocol carries QoS-related information from the end-nodes requesting QoS control to the network elements that have to exercise that control. It also installs and maintains the required QoS control state in those network elements ๐ง A setup protocol may also collect QoS-related information from interior network elements along an application's data flow path, so it can be delivered to end nodes ๐ซถ Examples of protocols that perform setup functions are RSVP [RFC 2205], ST-II [RFC 1819], and Q.2931 ๐ธ
Other mechanisms, like network management protocols, may also perform this function. The phrase "setup protocol" usually refers to a protocol that has this function as its main purpose ๐
Token Bucket
Okay so picking up right where the Token Bucket definition left off ๐ A Token Bucket is a traffic spec with two dials: a token rate r and a bucket size b โจ. The r is the data rate you can keep up forever, and the b is how far you're allowed to go above that rate for short bursts ๐. The rule is that over any time period, the amount of data sent can't go past rT+b, where T is how long that period is ๐ฆ
[PARTRIDGE] has more on token buckets if you're into that ๐ง
Token Bucket Filter
A Token Bucket Filter is a filtering or policing function that sorts the packets in a traffic flow. The ones that fit a given token bucket spec count as conforming, and the ones that don't count as nonconforming ๐ This definition doesn't say what happens to nonconforming packets. Common options are dropping them to best effort service, discarding them, or marking them somehow ๐ซถ
Admission Control
Admission control is the process of deciding whether a brand new request for service from a network element can be granted ๐ Any service that wants to promise absolute, quantitative bounds on overall performance must do this. Services that only make relative statements about performance, like the Internet's current best-effort service, don't need it ๐ The exact criteria for the decision are specific to each particular service ๐
Policing
Policing is the set of actions that kick in when a flow's real traffic characteristics go past the values in its traffic specification ๐ญ Services that need policing to work correctly have to specify two things: the action to take when this happens, and where in the network those mismatches should be detected ๐ฅ Examples of actions include relegating the packet to best effort service, dropping packets, reshaping the traffic, or marking nonconforming traffic in some way ๐
Interfaces
The service module talks to other parts of the network element through a bunch of conceptual interfaces ๐ง The service specification document should clearly define the specific data that moves across each interface, including the formats. It should also make sure the mapping between those conceptual interfaces and the specific mechanisms of the service is clear ๐
Data Format and Representation โจ
A service module imports and exports a variety of data, depending on the services the network element supports ๐ Each service definition MUST specify the format of each of those data items in an abstract manner. The info has to be enough for whoever designs a setup protocol to pick a good concrete (packet) format for variables holding that data ๐ At minimum, the following information must be given:
- Type: whether the quantity is an enumeration, a numerical value, etc.
- Range: for numerical quantities, the minimum and maximum values the quantity must be able to represent. For enumerated quantities, an estimate of the maximum number of items that may need to be enumerated in the future, even if many of the values are unused right now ๐ฆ
- Precision: the precision a numerical quantity must be represented with, and whether that precision is absolute (meaning an integer quantity) or a percentage of the value (allowing a floating point quantity) ๐ธ
The service definition SHOULD also specify a preferred concrete format for each data field, using the usual packet-layout format in current Internet Standard documents, or some other accepted spec format โจ If the service definition includes these concrete definitions, they should be complete and detailed enough that the service definition can be pulled in by reference into setup protocols and other users of the data ๐ซถ
NOTE: The wording above is meant to encourage all protocols carrying data for a specific service to use common data formats ๐ง It doesn't force that common format, and it doesn't get in the way of protocol designers who want to define data representations with other mechanisms, like ASN.1 or XDR ๐
Service and Data Element Naming
End-nodes, network elements, setup protocols, and management entities in an integrated services internetwork need to swap info about services, service invocation parameters, characterization parameters, and the intermediate variables and end results of composition functions ๐ญ So there's one uniform namespace for services and their parameters ๐
The namespace is a two-level hierarchy:
<service_name>.<parameter_name>
Each of these elements is an integer numerical quantity ๐ฅ
<Service Name> is an integer from 1 to 254, and the number space is split into three regions ๐
Service number 1 means the associated parameter is "generic" and isn't tied to a specific service. More on generic parameters is in [RFC 2215] ๐ฆ
The range 2 to 127 is for services defined by the IETF. Procedures for allocating service numbers here will be set up by the IETF INT-SERV WG and the IANA. Services meant for public use should get a number from this space. The minimum requirement is a published RFC that follows the format in this note ๐
Service numbers above 127 are reserved for experimental or private services. Designers can pick numbers from this space at random for local experimental use ๐ง A policy for global but temporary allocation may be set up later if needed ๐
The value 0 is left unused so parameter names can map directly to MIB object names, as described below ๐
The value 255 is reserved for future expansion of the service number space, if that's ever needed โจ
<Parameter_name> is a number from 1 to 254, allocated per service ๐ซถ Within that range, values 1 to 127 are reserved for parameters with a common, shared meaning across all services. Those are defined in [RFC 2215] ๐ธ
Numbers for parameters specific to a service come from the range 128-254 and are assigned by the author of the service specification document ๐
The value 0 is left unused, again so parameter names can map directly to MIB object names ๐
The value 255 is reserved for future expansion of the parameter number space, if needed ๐
Beyond the integrated services framework, these <service_number>.<parameter_number> pairs should be used as the last two levels of the MIB name whenever the matching values are made available to network management protocols ๐ฅ
Specification Document Format
This part describes the layout and contents of a service specification ๐ Each service specification document MUST contain the sections marked [required] below, in the order listed. Each document SHOULD contain each of the remaining sections in the list, unless there's a compelling argument that including a section isn't beneficial ๐ Additional material, including references, goes at the end of the document โจ
Some sections are normative, meaning they describe specific requirements that conformant implementations must follow ๐ Other sections are informational, meaning they give the context and technical considerations that matter to whoever implements the service ๐ง Each section's nature (required or optional, and informational or normative) is listed below ๐
Components
The body of a service specification document includes these sections:
- End-to-End Behavior [required] [informational]
- Motivation [required] [informational]
- Network Element Data Handling Requirements [required] [normative]
- Invocation Information [required] [normative]
- Exported Information [required] [normative]
- Policing [required] [normative]
- Ordering and Merging [required] [normative]
- Guidelines for Implementors [optional] [informational]
- Evaluation Criteria [required] [informational]
- Examples of Implementation [optional] [informational]
- Examples of Use [optional] [informational]
End-to-end Behavior
This describes the behavior you get if every network element along the path offers the same service, invoked with a defined set of parameters ๐ฆ
In private networks, the required end-to-end behavior usually comes from chaining together network elements that use the same service and make significant use of characterizations ๐ธ
On the global Internet, that won't always hold ๐ญ End-to-end behaviors often come from chaining network elements that support different services, and sometimes including elements that do no QoS control at all ๐ The mechanisms for characterizing end-to-end behavior in this situation aren't fully established yet. Future versions of this document may add requirements to service specifications to help with inter-service composition ๐ฅ
This section is for informational purposes only ๐ซถ
Motivation
This section explains why the service is being defined ๐ It describes what kinds of applications might use the service, and why it might suit those applications better than other choices ๐ง This section is for informational purposes only ๐
Network Element Data Handling Requirements
This section describes the QoS properties that data packets see when a network element processes them with this service ๐ The description has to clearly explain which variables are controlled, how much control is exercised, and which parts of the service's handling model are fixed or assumed ๐ Examples of degree-of-control information include "this property must be mathematically assured" and "this property should be met under most conditions" โจ An example of a stated assumption is "this service is assumed to have extremely low packet loss; delay targets must be met using admission control rather than by discarding packets when overloaded" ๐ญ
Requirements on packet handling SHOULD, whenever possible, be written as performance requirements instead of naming a particular packet scheduling algorithm ๐ Performance requirements might specify things like the maximal packet delays or the minimal bandwidth share given to a flow ๐ฆ
This section also specifies actions the packet handling path must take to actively give feedback to end-nodes about conditions at the network element ๐ฅ Those actions might include explicitly generated congestion feedback, indicated either as bits set in the header of data packets or as separate control messages sent ๐ซถ
Okay bestie, let's get into the good stuff ๐ โจ The big goal for this part of the spec is to be super precise about what's required, but still leave room for different hardware, different setups, and different kinds of network boxes ๐ฆ Getting that balance right takes real care, so pay attention ๐
Invocation Information
This bit covers the set of parameters a service module needs to invoke the service, plus how the module actually uses those values ๐ง For example, a made-up "bounded delay" service could take a request with a delay target for the network element and the set of packets that target applies to. Then it processes those packets with a delay of the target value or less. Iconic ๐
Most services need two chunks of invocation info: the Traffic Specification (TSpec) and the Service Request Specification (RSpec) ๐ The TSpec describes the characteristics of the data traffic being handled. The RSpec says which properties you want from the service. So a service that promises a mathematical bound on delay might take a TSpec with the flow's bandwidth and burstiness written as a Token Bucket, and an RSpec with the maximum queueing delay you can tolerate ๐
Here's the vibe: when a service accepts an invocation request, it's basically signing a "contract" ๐ It promises to provide the service described by the RSpec, as long as the flow's traffic keeps matching the TSpec. If the traffic goes outside the TSpec bounds, the QoS the flow gets can change. The exact nature of that change is also spelled out in the service specification (see "Policing" below) ๐
The RSpec and TSpec should be specified separately and independently ๐ซถ That's because different parts of the internetwork will often generate them. Also, all the quantitative information in this section should follow the guidelines in the Data Formats section of this document, above ๐
Exported Information and Characterization Parameters
This section describes information that the service module must collect and export ๐ฆ Exported info is available to other modules on the network element, and by extension to setup protocols, routing protocols, network management tools, and so on ๐
Exported info can be used in a bunch of ways, lowkey all of them useful. For instance, things like how much link bandwidth is dedicated to the service, and which data flows are currently getting the service, are great to expose as network management variables ๐
A service definition can pick out a subset of its exported info and call those characterization parameters ๐ฆ These can be used to compute or estimate the end-to-end behavior of a data flow crossing a chain of network service elements. They can also describe parts of the path for use by network elements. For example, to work out how much buffer it needs, an element might need to know something about the service characteristics of the upstream part of the path ๐ง A service that defines characterization parameters also has to specify the characterizations they generate and the composition functions used to make them ๐
NOTE: Characterization parameters are identified as such by virtue of being the inputs to a service's defined composition functions. Because characterization parameters are part of a service's overall exported data set, they are also available to other functions, such as network management. The discussion below relates solely to their use as characterization parameters, and is not intended to limit other uses.
Characterization parameters can be pretty static, like the bandwidth available on a specific link, or pretty dynamic, like a running estimate of current packet delay โญ
Support for a service's defined characterization parameters is mandatory ๐ฅ Any network element offering this service must be able to measure, compute, or, if the specification allows it, estimate the service's characterization parameters. Service designers are encouraged to think hard about what it means to specify characterization parameters, especially about not unduly restricting the choice of hardware and software architectures used to build the network element ๐
Characterization parameters get used by composing the values exported by each network element along a flow's path, according to a composition rule. For every parameter or set of parameters used to build a characterization, the service specification must specify the composition rule to be used. These composition rules should give characterizations that don't depend on the order the elements are composed in. Commutativity and associativity are sufficient for that, but not necessary ๐ง
Characterization parameters are available through a general interface, and they're provided when some other module asks for them, like a setup protocol or the routing protocol ๐ Exactly how (or whether) a specific protocol, such as RSVP, uses characterization parameters to generate characterizations is described in that protocol's own specification ๐ธ
Whether characterization parameters get used correctly depends on the setup, routing, or management protocol that controls the module ๐ There's no absolute guarantee that characterizations will reach end-nodes that want to use a QoS control service. Service designers aiming for the global Internet may want to make sure a service is still useful when there are no characterizations, and to show that in the "Examples" sections of the service description document ๐
On the flip side, characterizations may be mandatory in some situations, especially for private IP networks giving tightly controlled quality of service to specific applications ๐ Designers targeting that environment should make sure the service provides adequate characterization parameters and composition functions for the target audience ๐ช It can make sense to specify the same basic service with extra characterizations that meet requirements beyond what the global Internet needs โจ
Some handy "general" characterization parameters and their composition rules aren't tied to any specific service ๐ง These include the speed-of-light latency of communication links and the available link bandwidth. These general characterization parameters are defined in [RFC 2215].
Even though every conformant implementation of a service is required to provide that service's characterization parameters, the desired parameters might still not be available for composition at every network element in a path ๐ญ This can happen when different network element services are used at different points along the end-to-end path, like in a heterogeneous internetworking environment. So characterization parameters and composition function results conceptually include a "validity flag" ๐ฉ A network element that can't provide the characterization parameter must set this flag, and otherwise leave the parameter or composed value unchanged. Once it's set, the flag is preserved by the composition function, and it tells you whether the data is valid when the final composed result reaches its destination ๐ซถ
Protocols that transport characterization parameters and composition data must define and support a concrete representation for this validity flag, as well as for the characterization parameters themselves ๐
NOTE: This service specification template does not allow a service definition to require that a setup or invocation mechanism used with the service perform any function other than transport of invocation parameters to the network elements and signalling of errors generated by the network elements to the end nodes. A notable example of this is that service specification documents may not require or assume that characterizations defined in the specification are actually computed or presented to the end nodes.
That said, how useful a specific service is can depend a lot on extra behavior in the networked system ๐ง Examples include computing and presenting characterizations to end-nodes, or reliably making sure every network element on the path from sender to receivers supports the given service. Service specification authors are strongly encouraged to clearly explain where their service stands on this ๐ Statements like these are appropriate:
The characterizations defined by this service serve as useful
hints to the application. However, the service is specifically
intended to be useful even if characterizations are not available.
or
The usefulness of this service depends strongly on the delivery of
both characterizations and the knowledge that all network elements
on the path support the service. Requests for this service when
characterizations are not available are likely to lead to
incorrect or misleading results.
It may also be worth thinking about this point in the "Examples of Use" section described below ๐ฆ
NOTE: The possibility of modifying the overall architecture to provide information about the invoking protocol in a service request, and to allow a service to require that the invocation protocol support specific additional functionality, is an area of active study. ๐ฌ
Policing
This part of the service description covers the nature of the policing used to enforce adherence to a flow's Traffic Specification ๐ The specification document must cover the following points:
- Expected policing action. This is the action taken when packets that don't conform to the TSpec are detected. Example actions include relegating nonconforming packets to best effort, immediately dropping nonconforming packets, delaying these packets until they once again "fit" into the TSpec, or "marking" nonconforming packets in some way ๐
- Legality of alternative policing actions. The section must specify whether actions not specifically mentioned in the specification's description of policing behavior are legal ๐ For example, a service description that says nonconforming packets are to be dropped should state whether an alternate action, such as delaying these packets, is acceptable ๐ค
- Location of policing actions in the internetwork. okay so this one is all about where policing happens ๐ The description of policing must specify where that policing is done. Options include "at the edges of the network only", "at every hop", "heterogeneous branch points" (where the branches of a multicast tree converge and have different TSpecs reserved downstream), and "source merge points" (where multiple data streams covered by a single resource reservation converge) ๐ฟ The specification should clearly state requirements about topology information (like "this is an edge node" or "this is a source merge point") that must be available from the setup protocol or another source ๐งญ
In this section the specification should also spell out whether policing at additional points in the network is legal, beyond those listed above. This matters because of technical effects like the ones in the next paragraph ๐
- Applicable additional technical considerations. If policing of data flows is required or legal at points other than the flow's first entry into the network, the service definition should describe any additional technical considerations that affect the design of that policing ๐ For example, lots of potential services will let a data flow get more bursty as it moves through the network ๐ฎโ๐จ If a service like that allows policing somewhere other than the network edge, the traffic specification describing the flow has to be modified from what the application gave the network, to account for that growing burstiness. Otherwise the flow is likely to get overpoliced, meaning packets get penalized for no reason ๐ญ
Ordering and Merging
Ordering and merging come into play when a network element receives several invocation requests covering the same data flow ๐ฆ This could happen if several receivers of a multicast data flow asked for QoS for that flow using the RSVP setup protocol, or if a flow had both a statically installed permanent invocation request and a dynamic request from a resource setup protocol ๐ธ
In this situation the service module must be able to answer questions about the ordering between different invocation requests, and it must be able to generate a single new invocation request that meets the semantics of the setup protocol and the requirements of all the original requesters โจ In practice, the invoking protocol asks the service module, given a set of invocation requests I1...In, to compute a new request that gives the desired behavior ๐ซถ
Five operations must be defined in this section:
- Ordering. The section must define an ordering relationship between the service's TSpecs and RSpecs. This may be a partial ordering, meaning some TSpecs or RSpecs may be unordered with respect to each other ๐งฉ
- Summation. This function computes an invocation request that represents the sum of N input invocation requests. Usually this is used to size a service request for a shared reservation covering N different flows ๐ซง It is desirable, but not required, that this function compute the "least possible sum" ๐
- Minimum. This function computes the minimum of two TSpecs. Usually this is used to get the TSpec for an actual service invocation, given a target TSpec for the service request and a TSpec for the flow's actual traffic pattern ๐ The minimum function must compute the smallest TSpec adequate to describe the minimum of the requested TSpec and the flow's actual traffic ๐ฏ
- RSVP-Merge function. This function computes the invocation request used to request service at an RSVP [RFC 2205] merge point. It must a) compute an appropriate invocation request for a set of downstream reservations being merged, and b) generate appropriate reservation parameters to be passed upstream by RSVP ๐ This function is described further below and in [RFC 2210] ๐
- Least Common Request function. This function computes an invocation request sufficient to provide service at least equivalent to any one of the original requests passed to it. It differs from the RSVP-merge function in that it simply computes an upper bound ๐ It does not need to compute new invocation parameters to be passed upstream by RSVP, and it cannot utilize the second option discussed in "Notes on RSVP Merging" below ๐ซ
Notes on Ordering
Usually the ordering relation is described separately for the service's TSpec and RSpec ๐ง An invocation request is ordered with respect to another if and only if both its TSpec and its RSpec are similarly ordered with respect to each other ๐
For TSpecs, the basic ordering relation is well defined ๐ TSpec A is substitutable for TSpec B if and only if any flow that is compliant with TSpec B is also compliant with TSpec A. The service specification must explain how to compare two TSpecs to determine whether this is true ๐
For RSpecs, the ordering relation depends on the service ๐ช RSpec A is substitutable for RSpec B if the quality of service invoked by RSpec A is at least as good as the quality of service invoked by RSpec B. There's no precise mathematical description of "goodness" of quality of service, so these ordering relations must be spelled out explicitly in the service description ๐ซ
Notes on RSVP Merging
The whole point of the RSVP merging function is to compute an invocation request that gives the merged flow service at least as good as what any of the original requests would get for its corresponding unmerged flow ๐ There are two ways to get that equivalence:
- The merged request may be computed as an upper bound on the set of original (unmerged) invocation requests. In this case, the service offered by the merged request to any particular traffic flow is identical to what the largest unmerged request offers, by definition ๐๏ธ
- The merged request may be computed as a value smaller than the upper bound on the set of original requests, but the results passed upstream may restrict the traffic sources to behavior that makes the merged and unmerged requests behave identically ๐ค
Note that the merging rules for a particular service may apply either option 1 or option 2 to the different components of a TSpec, as appropriate ๐ The decision is usually made like this:
When a downstream service module instance can tolerate a flow that exceeds the parameter, the upper bound should be used. For example, if the service supports policing to protect itself against excess traffic, the traffic rate supported by a merged reservation might be an upper bound across the traffic rates supported by each unmerged reservation. The effect is to install the merged reservation at the local node and to inform each traffic source of the largest traffic rate protected by reservation along any one distribution path from the source to a receiver. ๐ก๏ธ
When a downstream service module instance will not function properly if the parameter is exceeded, the merge function should select the least aggressive value of the parameter to install and pass upstream. In this case, the traffic sources will be informed of a parameter value that is appropriate for all distribution paths traversed by the traffic flow. For example, services that can handle only limited packet sizes can incorporate packet size in the TSpec, and treat the parameter as described in option 2. The effect is to limit packet sizes in the flow to those that every instance of the service along the flow's path can handle ๐ฆ
This merging calculation must be performed by the service module, because it is specific to a particular service ๐ง
Notes on Calculating Upper Bounds
Both the RSVP-Merge function and the Least Common Request function may use calculated upper bounds on TSpec and RSpec parameters ๐
The calculated upper bound doesn't need to be a least upper bound, and the various network elements along the path don't all need to use the same choice of upper bound ๐ท Any selection of invocation parameters Iu is compliant as long as it is substitutable for each of the parameters I1...In it's calculated from ๐ค Intuitively, one set of parameters is substitutable for another if the resulting quality of service is at least as desirable to all applications ๐ซ The precise "substitutable for" function (the ordering relation) must be specified in the service definition. (It may be specified as the empty set, in which case merging of dissimilar requests will not be allowed ๐ท) If the ordering function specified in this section gives a partial order (meaning it's possible for two RSpecs or TSpecs to be unordered), then a separate upper bound computation for the parameter must be given as well ๐งฉ
Notes on Service Substitution
This part of the service description may also note any relationships with other services that are strictly ordered with respect to the service being defined ๐ฆ Two services A and B are strictly ordered if it is always possible to substitute service B for service A, given a set of invocation parameters for service A ๐ This ordering information may let network elements that provide service B respond to requests for service A, even if the element doesn't provide service A directly ๐ช If the service specification describes such an inter-service ordering, it MUST also include a description of the invocation parameter mapping function for that ordering ๐
Substitution of one service for another in cases where they are not strictly ordered is currently not supported ๐ โโ๏ธ A future version of this document may augment the service specification format to support this capability ๐ฎ
Guidelines for Implementors
Lots of services can be defined in a way that lets the range of behavior of a compliant network element be pretty broad ๐ This section should give some guidance on the range of behaviors the author of the service specification expects the community to want in their implementations ๐ฏ Because these guidelines depend on such imprecise and undefinable notions as "typical loads", they can't be part of a strict compliance test ๐ Instead, they are for informational purposes only ๐
Evaluation Criteria
The specific functional behaviors required of an implementation to conform to a service specification are detailed in the previous sections ๐ But service specifications are meant to allow a wide range of implementations, and those implementations will differ in performance ๐๏ธ This section describes tests that can be used to evaluate a network element's implementation of a given service ๐งชโจ
Okay bestie, implementors of service modules have to juggle a bunch of tradeoffs ๐ญ, and honestly there is no single implementation that's "best" in every situation ๐ . Same service spec, totally different vibes: a build for a low-speed link might go all-in on extremely high link utilization ๐ข, while another build tries to shave non-loaded packet forwarding delay down to the minimum โก, even if the link ends up a little less utilized. The whole point of the tests in this section is to poke at the tradeoffs the implementer made ๐ and give the customer metrics to help her pick the right implementation for her needs ๐.
The tests should be designed to operate on a single network element in isolation ๐งช. That's what makes them usable in a comparative rating system for QoS-aware network elements ๐. In production networks though, users care more about the end-to-end behavior they actually get ๐, and that depends on way more than the elements picked. Things like the setup protocol and the bandwidth of the links matter too ๐. Some user-relevant performance factors are the rate of admission control rejections ๐ซ, the range of services offered ๐, and the packet delay and drop rates in the various service classes ๐ฆ. The form of any standardized end-to-end metrics and measurement tools for integrated service internetworks is not specified by this document, or by service specification documents that follow the format given here ๐.
This section is for informational purposes only. ๐
- Examples of Implementation ๐ ๏ธ
This section describes example instantiations of the service โจ. Often these will just be references to the literature, or brief sketches of how the service could be implemented ๐. The goal is to give you a more concrete sense of the service being specified, plus pointers and hints to help the implementor ๐ง. But the descriptions here are specifically not meant to rule out other implementation strategies, so don't think you're stuck with them ๐ฆ.
This section is for informational purposes only. ๐ธ
- Examples of Use ๐ฌ
In order to give a more concrete sense of how this service might be used ๐, this section walks through some example uses of the service, for informational purposes only ๐. These examples are not meant to be exhaustive, and they don't exclude any other uses of the service in any way ๐.
This section is for informational purposes only. โจ
Security Considerations ๐
Security considerations are not discussed in this memo. ๐ฑ Dramatic, I know, but that's the official word, so no spiraling in the replies ๐.
References ๐
[PARTRIDGE] C. Partridge, Gigabit Networking, Addison Wesley Publishers (1994).
[RFC 2215] Shenker, S., and J. Wroclawski, "General Characterization Parameters for Integrated Service Network Elements", RFC 2215, September 1997.
[RFC 2205] Braden, R., Ed., et. al., "Resource Reservation Protocol (RSVP) - Version 1 Functional Specification", RFC 2205, 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 1819] Delgrossi, L., and L. Berger, Editors, "Internet Stream Protocol Version 2 (ST2) Protocol Specification - Version ST2+", RFC 1819, August 1995.
[RFC 2210] Wroclawski, J., "The Use of RSVP with IETF Integrated Services", RFC 2210, September 1997.
Authors' Address ๐
Scott Shenker
Xerox PARC
3333 Coyote Hill Road
Palo Alto, CA 94304-1314
Phone: 415-812-4840
Fax: 415-812-4471
EMail: shenker@parc.xerox.com
John Wroclawski
MIT Laboratory for Computer Science
545 Technology Sq.
Cambridge, MA 02139
Phone: 617-253-7885
Fax: 617-253-2673
EMail: jtw@lcs.mit.edu
That's the whole RFC, bestie! ๐ซถ๐
๐ฆ where this page comes from
- ietf: rfc2216 1997-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms