IntServ Parameters: General Characterization Parameters for Integrated Service Network Elements
The shared set of numbers every Integrated Services router reports about itself, and how they add up along a path.
Shenker, S. and J. Wroclawski, "General Characterization Parameters for Integrated Service Network Elements", RFC 2215, DOI 10.17487/RFC2215, September 1997, <https://www.rfc-editor.org/info/rfc2215>.
@misc{rfc2215,
series = {Request for Comments},
number = 2215,
howpublished = {RFC 2215},
publisher = {RFC Editor},
doi = {10.17487/RFC2215},
url = {https://www.rfc-editor.org/info/rfc2215},
author = {S. Shenker and J. Wroclawski},
title = {{General Characterization Parameters for Integrated Service Network Elements}},
pagetotal = 16,
year = 1997,
month = sep,
} RFC text
Contents
Network Working Group S. Shenker
Request for Comments: 2215 J. Wroclawski
Category: Standards Track Xerox PARC/MIT LCS
September 1997
General Characterization Parameters for
Integrated Service Network Elements
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 memo defines a set of general control and characterization
parameters for network elements supporting the IETF integrated
services QoS control framework. General parameters are those with
common, shared definitions across all QoS control services.
1. Introduction
This memo defines the set of general control and characterization
parameters used by network elements supporting the integrated
services framework. "General" means that the parameter has a common
definition and shared meaning across all QoS control services.
Control parameters are used by applications to provide information to
the network related to QoS control requests. An example is the
traffic specification (TSpec) generated by application senders and
receivers.
Characterization parameters are used to discover or characterize the
QoS management environment along the path of a packet flow requesting
active end-to-end QoS control. These characterizations may
eventually be used by the application requesting QoS control, or by
other network elements along the path. Examples include information
about which QoS control services are available along a network path
and estimates of the available path bandwidth.
Individual QoS control service specifications may refer to these
parameter definitions as well as defining additional parameters
specific to the needs of that service.
Parameters are assigned machine-oriented ID's using a method
described in [RFC 2216] and summarized here. These ID's may be used
within protocol messages (e.g., as described in [RFC 2210]) or
management interfaces to describe the parameter values present. Each
parameter ID is composed from two numerical fields, one identifying
the service associated with the parameter (the <service_number>), and
the other (the <parameter_number>) identifying the parameter itself.
Because the definitions of the parameters defined in this note are
common to all QoS control services, the <parameter_number> values for
the parameters defined here are assigned from the "general
parameters" range (1 - 127).
NOTE: <parameter_numbers> in the range 128 - 254 name parameters
with definitions specific to a particular QoS control service. In
contrast to the general parameters described here, it is necessary
to consider both the <service_number> and <parameter_number> to
determine the meaning of the parameter.
Service number 1 is reserved for use as described in Section 2 of
this note. Service numbers 2 through 254 will be allocated to
individual QoS control services. Currently, Guaranteed service
[RFC 2212] is allocated number 2, and Controlled-load service [RFC
2211] is allocated number 5.
In this note, the textual form
<service_number, parameter_number>
is used to write a service_number, parameter_number pair. The range
of possible of service_number and parameter_number values specified
in [RFC 2216] allow the parameter ID to directly form the tail
portion of a MIB object ID representing the parameter. This
simplifies the task of making parameter values available to network
management applications.
The definition of each parameter used to characterize a path through
the network describes two types of values; local and composed. A
Local value gives information about a single network element.
Composed values reflect the running composition of local values along
a path, specified by some composition rule. Each parameter
definition specifies the composition rule for that parameter. The
composition rule tells how to combine an incoming composed value
(from the already-traversed portion of the path) and the local value,
to give a new composed value which is passed to the next network
element in the path. Note that the composition may proceed either
downstream, toward the receiver(s), or upstream, toward the sender.
Each parameter may give only one definition for the local value, but
may potentially give more than one definition for composition rules
and composed values. This is because it may be useful to compose the
same local value several times following different composition rules.
Because characterization parameters are used to compute the
properties of a specific path through the internetwork, all
characterization parameter definitions are conceptually "per-next-
hop", as opposed to "per interface" or "per network element". In
cases where the network element is (or is controlling) a shared media
or large-cloud subnet, the element may need to provide different
values for different next-hops within the cloud. In practice, it may
be appropriate for vendors to choose and document a tolerance range,
such that if all next-hop values are within the tolerance range only
a single value need be stored and provided.
Local and composed characterization parameter values have distinct
ID's so that a network management entity can examine the value of
either a local or path-composed parameter at any point within the
network.
Each parameter definition includes a description of the minimal
properties, such as range and precision, required of any wire
representation of that parameter's values. Each definition also
includes an XDR [RFC 1832] description of the parameter, describing
an appropriate external (wire) data representation for the
parameter's values. This dual definition is intended to encourage a
common wire representation format whenever possible, while still
allowing other representations when required by the specific
circumstances (e.g., ASN.1 within SNMP).
The message formats specified in [RFC 2210] for use with the RSVP
setup protocol use the XDR data representation parameters.
All of the parameters described in this note are mandatory, in the
sense that a network element claiming to support integrated service
must recognize arriving values in setup and management protocol
messages, process them correctly, and export a reasonable value in
response. For some parameters, the specification requires that the
network element compute and export an *accurate* local value. For
other parameters, it is acceptable for the network element to
indicate that it cannot compute and export an accurate local value.
The definition of these parameters provides a reserved value which
indicates "indeterminate" or "invalid". This value signals that an
element cannot process the parameter accurately, and consequently
that the result of the end-to-end composition is also questionable.
NOTE (temporary): Previous versions of this and the RSVP use
document used both the reserved-value approach and a separate
INVALID flag to record this fact. Now, the reserved-value
approach is used exclusively. This is so that any protocol which
retrieves a parameter value, including SNMP, can carry the invalid
indication without needing a separate flag. The INVALID flag
remains in the RSVP message format but is reserved for use only
with a possible future service-composition scheme.
2. Default and Service-Specific Values for General Parameters
General parameters have a common *definition* across all QoS control
services. Frequently, the same *value* of a general parameter will be
correct for all QoS control services offered by a network element. In
this circumstance, there is no need to export a separate copy of the
value for each QoS control service; instead the node can export one
number which applies to all supported services.
A general parameter value which applies to all services supported at
a network node is called a default or global value. For example, if
all of the QoS control services provided at a node support the same
maximum packet size, the node may export a single default value for
the PATH_MTU parameter described in Section 3, rather than providing
a separate copy of the value for each QoS control service. In the
common case, this reduces both message size and processing overhead
for the setup protocol.
Occasionally an individual service needs to report a value differing
from the default value for a particular general parameter. For
example, if the implementation of Guaranteed Service [RFC 2212] at a
router is restricted by scheduler or hardware considerations to a
maximum packet size smaller than supported by the router's best-
effort forwarding path, the implementation may wish to export a
"service-specific" value of the PATH_MTU parameter so that
applications using the Guaranteed service will function correctly.
In the example above, the router might supply a value of 1500 for the
default PATH_MTU parameter, and a value of 250 for the PATH_MTU
parameter applying to guaranteed service. In this case, the setup
protocol providing path characterization carries (and delivers to the
application) both a value for Guaranteed service and a value for
other services.
The distinction between default and service-specific parameter values
makes no sense for non-general parameters (those defined by a
specific QoS control service, rather than this note), because both
the definition and value of the parameter are always specific to the
particular service.
The distinction between default and service-specific values for
general parameters is reflected in the parameter ID name space. This
allows network nodes, setup protocols, and network management tools
to distinguish default from service-specific values, and to determine
which service a service-specific parameter value is associated with.
Service number 1 is used to indicate the default value. A parameter
value identified by the ID:
<1, parameter_number>
is a default value, which applies to all services unless it is
overridden by a service-specific value for the same parameter.
A parameter value identified by the ID:
<service_number, parameter_number>
where service_number is not equal to 1, is a service-specific value.
It applies only to the service identified by service_number.
These service-specific values are also called override values. This
is because when both service-specific and default values are present
for a parameter, the service-specific value overrides the default
value (for the service to which it applies). The rules for composing
service-specific and global general parameters support this override
capability. The basic rule is to use the service-specific value if
it exists, and otherwise the global value.
A complete summary of the characterization parameter composition
process is given below. In this summary, the "arriving value" is the
incompletely composed parameter value arriving from a neighbor node.
The "local value" is the (global or service-specific) value made
available by the local node. The "result" is the newly composed value
to be sent to the next node on the data path.
1. Examine the <service_number, parameter_number> pair associated
with the arriving value. This information is conveyed by the setup
protocol together with the arriving value.
2. If the arriving value is for a parameter specific to a single
service (this is true when the parameter_number is larger than
128), compose the arriving value with the local value exported by
the specified service, and pass the result to the next hop. In this
case there is no need to consider global values, because the
parameter itself is specific to just one service.
3. If the arriving value is a service-specific value for a
generally defined parameter (the parameter_number is 127 or less,
and the service_number is other than 1), and the local
implementation of that service also exports a service-specific
value for the parameter, compose the service-specific arriving
value and the service-specific local value of the parameter, and
pass the result as a service-specific value to the next-hop node.
4. If the arriving value is a service-specific value for a general
parameter (the parameter_number is 127 or less, and the
service_number is other than 1), and the local implementation of
that service does *not* export a service-specific value, compose
the service-specific arriving value with the global value for that
parameter exported by the local node, and pass the result as a
service-specific value to the next-hop node.
5. If the arriving value is a global value for a general parameter
(parameter_number is 127 or less, and the service_number is 1), and
the local implementation of *any* service exports a service-
specific value for that general parameter, compose the arriving
(global) value with the service-specific value for that parameter
exported by the local service, and pass the result as a service-
specific value to the next-hop node. This will require adding a new
data field to the message passed to the next hop, to hold the newly
generated service-specific value. Repeat this process for each
service that exports a service-specific value for the parameter.
6. If the arriving value is a global value for a general parameter
(the service_number is 1, and the parameter_number is 127 or less),
compose the arriving (global) value with the global parameter value
exported by the local node, and pass the result as a global
(service 1) value to the next-hop node. This step is performed
whether or not any service-specific values were generated and
exported in step 5.
3. General Parameter Definitions
3.1 NON-IS_HOP flag parameter
This parameter provides information about the presence of network
elements which do not implement QoS control services along the data
path.
The local value of the parameter is 1 if the network element does not
implement the relevant QoS control service, or knows that there is a
break in the chain of elements which implement the service. The
local parameter is 0 otherwise. The local parameter is assigned
parameter_number 1.
The composition rule for this parameter is the OR function. A
composed parameter value of 1 arriving at the endpoint of a path
indicates that at least one point along the path does not offer the
indicated QoS control service. The parameter_number for the composed
quantity is 2.
The global NON_IS_HOP flag parameter thus has the ID <1,2>. If this
flag is set, it indicates that one or more network elements along the
application's data path does not support the integrated services
framework at all. An example of such an element would be an IP router
offering only best-effort packet delivery and not supporting any
resource reservation requests.
Obviously, a network element which does not support this
specification will not know to set this flag. The actual
responsibility for determining that a network node does not support
integrated services may fall to the network element, the setup
protocol, or a manual configuration operation and is dependent on
implementation and usage. This calculation must be conservative.
For example, a router sending packets into an IP tunnel must assume
that the tunneled packets will not receive QoS control services
unless it or the setup protocol can prove otherwise.
Service-specific versions of the NON_IS_HOP flag indicate that one or
more network elements along a path don't support the particular
service. For example, the flag parameter identified by ID <2,2> being
set indicates that some network element along the path does not
support the Guaranteed service, though it might support another
service such as Controlled-Load.
If the global NON_IS_HOP flag <1,2> is set for a path, the receiver
(network element or application) should consider the values of all
other parameters defined in this specification, including service-
specific NON_IS_HOP flags, as possibly inaccurate. If a service
specific NON_IS_HOP flag is set for a path, the receiver should
consider the values of all other parameters associated with that
service as possibly inaccurate.
The NON_IS_HOP parameter may be represented in any form which can
express boolean true and false. However, note that a network element
must set this flag precisely when it does *not* fully understand the
format or data representation of an arriving protocol message
(because it does not support the specified service). Therefore, the
data representation used for this parameter by setup and management
protocols must allow the parameter value to be read and set even if
the network element cannot otherwise parse the protocol message.
An appropriate XDR description of this parameter is:
bool NON_IS_HOP;
However, the standard XDR data encoding for this description will not
meet the requirement described above unless other restrictions are
placed on message formats. An alternative data representation may be
more appropriate.
NOTE: The message format described for RSVP in [RFC 2210] carries
this parameter as a single-bit flag, referred to as the "break
bit".
3.2 NUMBER_OF_IS_HOPS
IS stands for "integrated services aware". An integrated services
aware network element is one that conforms to the various
requirements described in this and other referenced documents. The
network element need not offer a specific service, but if it does it
must support and characterize the service in conformance with the
relevant specification, and if it does not it must correctly set the
NON_IS_HOP flag parameter for the service. For completeness, the
local parameter is assigned the parameter_number 3.
The composition rule for this parameter is to increment the counter
by one at each IS-aware hop. This quantity, when composed end-to-
end, informs the endpoint of the number of integrated-services aware
network elements traversed along the path. The parameter_number for
this composed parameter is 4.
Values of the composed parameter will range from 1 to 255, limited by
the bound on IP hop count.
The XDR representation of this parameter is:
unsigned int NUMBER_OF_IS_HOPS;
3.3. AVAILABLE_PATH_BANDWIDTH
This parameter provides information about the bandwidth available
along the path followed by a data flow. The local parameter is an
estimate of the bandwidth the network element has available for
packets following the path. Computation of the value of this
parameter should take into account all information available to the
network element about the path, taking into consideration
administrative and policy controls on bandwidth, as well as physical
resources.
NOTE: This parameter should reflect, as closely as possible, the
actual bandwidth available to packets following a path. However,
the bandwidth available may depend on a number of factors not
known to the network element until a specific QoS request is in
place, such as the destination(s) of the packet flow, the service
to be requested by the flow, or external policy information
associated with a reservation request. Because the parameter must
in fact be provided before any specific QoS request is made, it is
frequently difficult to provide the parameter accurately. In
circumstances where the parameter cannot be provided accurately,
the network element should make the best attempt possible, but it
is acceptable to overestimate the available bandwidth by a
significant amount.
The parameter_number for AVAILABLE_PATH_BANDWIDTH is 5. The global
parameter <1, 5> is an estimate of the bandwidth available to any
packet following the path, without consideration of which (if any)
QoS control service the packets may be subject to.
In cases where a particular service is administratively or
technically restricted to a limited portion of the overall available
bandwidth, the service module may wish to export an override
parameter which specifies this smaller bandwidth value.
The composition rule for this parameter is the MIN function. The
composed value is the minimum of the network element's value and the
previously composed value. This quantity, when composed end-to-end,
informs the endpoint of the minimal bandwidth link along the path
from sender to receiver. The parameter_number for the composed
minimal bandwidth along the path is 6.
Values of this parameter are measured in bytes per second. The
representation must be able to express values ranging from 1 byte per
second to 40 terabytes per second, about what is believed to be the
maximum theoretical bandwidth of a single strand of fiber.
Particularly for large bandwidths, only the first few digits are
significant, so the use of a floating point representation, accurate
to at least 0.1%, is encouraged.
The XDR representation for this parameter is:
float AVAILABLE_PATH_BANDWIDTH;
For values of this parameter only valid non-negative floating point
numbers are allowed. Negative numbers (including "negative zero"),
infinities, and NAN's are not allowed.
NOTE: An implementation which utilizes general-purpose hardware or
software IEEE floating-point support may wish to verify that
arriving parameter values meet these requirements before using the
values in floating-point computations, in order to avoid
unexpected exceptions or traps.
If the network element cannot or chooses not to provide an estimate
of path bandwidth, it may export a local value of zero for this
parameter. A network element or application receiving a composed
value of zero for this parameter must assume that the actual
bandwidth available is unknown.
3.4 MINIMUM_PATH_LATENCY
The local parameter is the latency of the packet forwarding process
associated with the network element, where the latency is defined to
be the *smallest* possible packet delay added by the network element.
This delay results from speed-of-light propagation delay, from packet
processing limitations, or both. It does not include any variable
queuing delay which may be present.
The purpose of this parameter is to provide a baseline minimum path
latency for use with services which provide estimates or bounds on
additional path delay, such as Guaranteed [RFC 2212]. Together with
the queuing delay bound offered by Guaranteed and similar services,
this parameter gives the application knowledge of both the minimum
and maximum packet delivery delay. Knowing both the minimum and
maximum latency experienced by data packets allows the receiving
application to accurately compute its de-jitter buffer requirements.
Note that the quantity characterized by this parameter is the
absolute smallest possible value for the packet processing and
transmission latency of the network element. This value is the
quantity required to provide the end hosts with jitter bounds. The
parameter does *not* provide an upper-bound estimate of minimum
latency, which might be of interest for best-effort traffic and QoS
control services which do not explicitly offer delay bounds. In other
words, the parameter will always underestimate, rather than
overestimate, latency, particularly in multicast and large cloud
situations.
When packets traversing a network element may experience different
minimal latencies over different paths, this parameter should, if
possible, report an accurate latency value for each path. For
example, when an ATM point-multipoint virtual circuit is used to
implement IP multicast, the mechanism that implements this parameter
for the ATM cloud should ideally compute a separate value for each
destination. Doing this may require cooperation between the ingress
and egress elements bounding the multi-access communication cloud.
The method by which this cooperation is achieved, and the choice of
which IP-level network element actually provides and composes the
value, is technology-dependent.
An alternative choice is to provide the same value of this parameter
for all paths through the cloud. The value reported must be the
smallest latency for any possible path. Note that in this situation,
QoS control services (e.g., Guaranteed) which provide an upper bound
on latency cannot simply add their queuing delay to the value
computed by this parameter; they must also compensate for path delays
above the minimum. In this case the range between the minimum and
maximum packet delays reported to the application may be larger than
actually occurs, because the application will be told about the
minimum delay along the shortest path and the maximum delay along the
actual path. This is acceptable in most situations.
A third alternative is to report the "indeterminate" value, as
specified below. In this circumstance the client application may
either deduce a minimum path latency through measurement, or assume a
value of zero.
The composition rule for this parameter is summation with a clamp of
(2**32 - 1) on the maximum value. This quantity, when composed end-
to-end, informs the endpoint of the minimal packet delay along the
path from sender to receiver. The parameter_number for the latency of
the network element's link is 7. The parameter_number for the
cumulative latency along the path is 8.
The latencies are reported in units of one microsecond. An individual
element can advertise a latency value between 1 and 2**28 (somewhat
over two minutes) and the total latency added across all elements can
range as high as (2**32)-2. If the sum of the different elements
delays exceeds (2**32)-2, the end-to-end advertised delay should be
reported as indeterminate. This is described below.
Note that while the granularity of measurement is microseconds, a
conforming element is free to actually measure delays more loosely.
The minimum requirement is that the element estimate its delay
accurately to the nearest 100 microsecond granularity. Elements that
can measure more accurately are, of course, encouraged to do so.
NOTE: Measuring in milliseconds is not acceptable, because if the
minimum delay value is a millisecond, a path with several hops
will lead to a composed delay of at least several milliseconds,
which is likely to be misleading.
The XDR description of this parameter is:
unsigned int MINIMUM_PATH_LATENCY;
The distinguished value (2**32)-1 is taken to mean "indeterminate
latency". A network element which cannot accurately predict the
latency of packets it is processing should set its local parameter to
this value. Because the composition function limits the composed sum
to this value, receipt of this value at a network element or
application indicates that the true path latency is not known. This
may happen because one or more network elements could not supply a
value, or because the range of the composition calculation was
exceeded.
3.5. PATH_MTU
This parameter computes the maximum transmission unit (MTU) for
packets following a data path. This value is required to invoke QoS
control services which require that IP packet size be strictly
limited to a specific MTU. Existing MTU discovery mechanisms cannot
be used because they provide information only to the sender and they
do not directly allow for QoS control services to specify MTU's
smaller than the physical MTU.
The local characterization parameter is the IP MTU, where the MTU of
a network element is defined to be the maximum transmission unit the
network element can accommodate without fragmentation, including IP
and upper-layer protocol headers but not including link level
headers. The composition rule is to take the minimum of the network
element's MTU and the previously composed value. This quantity, when
composed end-to-end, informs the endpoint of the maximum transmission
unit that can traverse the path from sender to receiver without
fragmentation. The parameter_number for the MTU of the network
element's link is 9. The parameter_number for the composed MTU along
the path is 10.
A correct and valid value of this parameter must be provided by all
IS-aware network elements.
A specific service module may specify an MTU smaller than that of the
overall network element by overriding this parameter with one giving
the service's MTU value. A service module may not specify an MTU
value larger than that given by the global parameter.
Values of this parameter are measured in bytes. The representation
must be able to express values ranging from 1 byte to 2**32-1 bytes.
The XDR description of this parameter is:
unsigned int PATH_MTU;
3.6. TOKEN_BUCKET_TSPEC
This parameter is used to describe data traffic parameters using a
simple token bucket filter. This parameter is used by data senders to
describe the traffic parameters of traffic it expects to generate,
and by QoS control services to describe the parameters of traffic for
which the reservation should apply. It is defined as a general rather
than service-specific parameter because the same traffic description
may be used by several QoS control services in some situations.
NOTE: All previous definitions in this note have described
"characterization parameters", with local values set by network
elements to characterize their behavior and composition rules to
give the resulting end-to-end behavior. The TOKEN_BUCKET_TSPEC is
not a characterization parameter, because intermediate nodes
within the network do not export local values for
TOKEN_BUCKET_TSPECs. The TOKEN_BUCKET_TSPEC is simply a data
structure definition given here because it is common to more than
one QoS control service.
The TOKEN_BUCKET_TSPEC parameter is assigned parameter_number 127.
The TOKEN_BUCKET_TSPEC takes the form of a token bucket specification
plus a peak rate [p], minimum policed unit [m], and a maximum packet
size [M].
The token bucket specification includes an average or token rate [r]
and a bucket depth [b]. Both [r] and [b] must be positive.
The token rate [r] is measured in bytes of IP datagrams per second.
Values of this parameter may range from 1 byte per second to 40
terabytes per second. In practice, only the first few digits of the
[r] and [p] parameters are significant, so the use of floating point
representations, accurate to at least 0.1% is encouraged.
The bucket depth, [b], is measured in bytes. Values of this parameter
may range from 1 byte to 250 gigabytes. In practice, only the first
few digits of the [b] parameter are significant, so the use of
floating point representations, accurate to at least 0.1% is
encouraged.
The peak traffic rate [p] is measured in bytes of IP datagrams per
second. Values of this parameter may range from 1 byte per second to
40 terabytes per second. In practice, only the first few digits of
the [r] and [p] parameters are significant, so the use of floating
point representations, accurate to at least 0.1% is encouraged. The
peak rate value may be set to positive infinity, indicating that it
is unknown or unspecified.
The range of values allowed for these parameters is intentionally
large to allow for future network technologies. A particular network
element is not expected to support the full range of values.
The minimum policed unit, [m], is an integer measured in bytes. This
size includes the application data and all protocol headers at or
above the IP level (IP, TCP, UDP, RTP, etc.). It does not include the
link-level header size, because these headers will change in size as
the packet crosses different portions of the internetwork.
All IP datagrams less than size [m] are treated as being of size m
for purposes of resource allocation and policing. The purpose of this
parameter is to allow reasonable estimation of the per-packet
resources needed to process a flow's packets (maximum packet rate can
be computed from the [b] and [m] terms) and to reasonably bound the
bandwidth overhead consumed by the flow's link-level packet headers.
The maximum bandwidth overhead consumed by link-level headers when
carrying a flow's packets is bounded by the ratio of the link-level
header size to [m]. Without the [m] term, it would be necessary to
compute this bandwidth overhead assuming that every flow was always
sending minimum-sized packets, which is unacceptable.
The maximum packet size, [M], is the biggest packet that will conform
to the traffic specification; it is also measured in bytes. Any
packets of larger size sent into the network may not receive QoS-
controlled service, since they are considered to not meet the traffic
specification.
Both [m] and [M] must be positive, and [m] must be less then or equal
to [M].
The XDR description of this parameter is:
struct {
float r;
float b;
float p;
unsigned m;
unsigned M;
} TOKEN_BUCKET_TSPEC;
For the fields [r] and [b] only valid non-negative floating point
numbers are allowed. Negative numbers (including "negative zero),
infinities, and NAN's are not allowed.
For the field [p], only valid non-negative floating point numbers or
positive infinity are allowed. Negative numbers (including "negative
zero), negative infinities, and NAN's are not allowed.
NOTE: An implementation which utilizes general-purpose hardware or
software IEEE floating-point support may wish to verify that
arriving parameter values meet these requirements before using the
values in floating-point computations, in order to avoid
unexpected exceptions or traps.
4. Security Considerations
Implementation of the characterization parameters described in this
memo creates no known new avenues for malicious attack on the network
infrastructure. Implementation of these characterization parameters
does, of necessity, reveal some additional information about a
network's performance, which in extremely rare circumstances could be
viewed as a security matter by the network provider.
5. References
[RFC 2005] Braden, R., Ed., et. al., "Resource Reservation Protocol
(RSVP) - Version 1 Functional Specification", RFC 2205, September
1997.
[RFC 2210] Wroclawski, J., "The Use of RSVP with IETF Integrated
Services", RFC 2210, 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 the 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 1832] Srinivansan, R., "XDR: External Data Representation
Standard", RFC 1832, August 1995.
Authors' Addresses
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
Ffax: 617-253-2673 (FAX)
EMail: jtw@lcs.mit.edu
ISO Plain Language
On this page
§1What the Memo Defines
RFC 2215 defines the general control and characterization parameters used by network elements that support the IETF integrated services framework for quality of service (QoS) control. A parameter is general when it has one definition and one shared meaning across all QoS control services, so several services can reuse the same number instead of each inventing its own.
The memo separates two kinds of parameter. Control parameters carry information from an application to the network about a QoS request; the traffic specification (TSpec) produced by a sending or receiving application is the example given. Characterization parameters describe the management environment along the path of a flow that is asking for active end-to-end QoS control, for example which QoS control services are available along the path and how much bandwidth the path has.
Every characterization parameter has a local value, which describes one network element, and a composed value, the running result of combining local values along the path. The parameter definition fixes the composition rule that says how an incoming composed value and the local value are combined into a new composed value, which is then passed to the next element. Composition may proceed downstream towards the receiver or upstream towards the sender.
Because these parameters describe a specific path, they are conceptually per next hop rather than per interface or per element. An element sitting at the edge of a shared medium may have to report different values for different next hops inside that medium, and a vendor may choose to publish a documented tolerance range so that one value can stand for all of them.
This memo gives every router that supports quality of service reservations the same set of numbers for describing itself, so different services can share them. Each router reports a local value, and a rule fixed per parameter combines those values along the path into a single value.
- PATH REQUESTThe setup protocol asks each element on the path to characterize its part of it.
- COMPOSED VALUENode A combines the value that arrived with its own local value, using the composition rule for that parameter.
- COMPOSED VALUEEach hop composes in turn, so the receiver ends up with the value for the whole path.
§1Parameter Identifiers
Parameters are given machine-oriented identifiers using the method described in RFC 2216. Each identifier pairs a service_number, which names the QoS control service the parameter belongs to, with a parameter_number, which names the parameter itself. The memo writes such a pair in the textual form <service_number, parameter_number>.
Because the parameters defined here are common to every QoS control service, their parameter_number values are taken from the general range, 1 to 127. Numbers from 128 to 254 name parameters whose definitions are specific to one service, and for those both numbers are needed to know what the parameter means.
Service number 1 is reserved for the default value described in the next section. Service numbers 2 through 254 are allocated to individual QoS control services: Guaranteed Service has number 2 and Controlled-load Service has number 5.
The ranges are chosen so that the identifier can form the tail portion of a MIB object identifier, which makes the values easy to publish to network management applications. The identifiers travel inside protocol messages, such as the RSVP setup messages described in RFC 2210, or inside management interfaces.
Each parameter gets a two-part number: one part names the service, the other names the parameter. Because the parameters in this memo mean the same thing for every service, they use the low number range, 1 to 127, and the service part says 'applies to all services' with the number 1.
§2Default and Service-Specific Values
Frequently the same value of a general parameter is correct for every QoS control service a node offers. Such a value is called a default or global value, and the node exports one number that applies to all its services instead of a separate copy per service. In the common case this reduces both the size of setup messages and the work of processing them.
Sometimes one service needs a different value. The memo's example: a router whose Guaranteed Service implementation is limited by its scheduler or hardware to a maximum packet size smaller than the router's best-effort path can export a service-specific PATH_MTU. The router might then publish 1500 as the default PATH_MTU and 250 as the PATH_MTU that applies to Guaranteed Service. A service-specific value is also called an override value, because it overrides the default for the service it names.
The identifier carries this distinction. A value with the identifier <1, parameter_number> is a default value that applies to all services unless a service-specific value for the same parameter overrides it. A value whose service_number is not 1 is a service-specific value and applies only to that service.
The memo then gives the composition procedure in six steps. The arriving value, the local value and the result are the three inputs. The steps are: if the arriving value belongs to a parameter specific to one service, compose it with the local value of that service; if the arriving value is service-specific for a generally defined parameter and the local implementation of that service exports its own service-specific value, compose the two service-specific values; if the local implementation does not export one, compose the arriving service-specific value with the local global value and pass the result as service-specific; if the arriving value is global and any local service exports a service-specific value, compose the arriving global value with each of those service-specific values and pass each result as a service-specific value, adding a field to the message for each; and if the arriving value is global, compose it with the local global value and pass the result on as a global value.
The basic rule behind all six steps is simple: use the service-specific value if one exists, and the global value otherwise.
Most routers report one number per parameter that applies to all services. A service that needs a different number, such as a smaller maximum packet size, reports its own value, and that value wins for that service alone. The memo lists the exact steps a router follows to combine the value it received with the value it holds.
| Aspect | Default value | Service-specific value |
|---|---|---|
| Identifier | 1, parameter_number | service_number, parameter_number |
| Applies to | Every QoS control service at the element | Only the service named by the service number |
| Precedence | Used when no service-specific value exists | Overrides the default for its own service |
| PATH_MTU example | 1500 for the router as a whole | 250 for Guaranteed Service |
§3The General Parameters
Section 3 defines each general parameter. Five of them are characterization parameters, with a local value, a composed value and a composition rule.
NON-IS_HOP reports whether the path is fully managed. The local value is 1 if the element does not implement the relevant QoS control service, or knows there is a break in the chain of elements that do, and 0 otherwise. The composition rule is the logical OR, so a composed value of 1 at the end of a path means at least one point along it does not offer the service. A router that sends packets into an IP tunnel must assume the tunneled packets get no QoS control unless it or the setup protocol can prove otherwise. When the global flag is set, the receiver should treat all other parameter values on that path as possibly inaccurate. The parameter may be represented in any form that expresses true and false, but the representation must allow the value to be read and set even when the element cannot otherwise parse the message, because an element that does not support the service cannot know to set the flag. The RSVP message format of RFC 2210 carries this parameter as a single-bit flag, called the break bit.
NUMBER_OF_IS_HOPS counts the integrated-services-aware elements on the path. IS stands for integrated services aware: an element that conforms to the requirements of this and the other referenced documents, need not offer a specific service, but if it does it must support and characterize that service, and if it does not it must set the NON-IS_HOP flag for that service. The composition rule increments the counter by one at each aware hop, and the composed value ranges from 1 to 255, limited by the bound on the IP hop count.
AVAILABLE_PATH_BANDWIDTH is an estimate of the bandwidth the element has available for packets following the path, taking into account administrative and policy controls as well as physical resources. The composition rule is the minimum, so the composed value reports the smallest bandwidth on the path. Values are measured in bytes per second and the representation must express anything from 1 byte per second to 40 terabytes per second, about what is believed to be the maximum theoretical bandwidth of a single strand of fiber. A floating point representation accurate to at least 0.1% is encouraged, and negative numbers, infinities and NANs are not allowed. Because the value has to be published before any specific QoS request exists, it is often hard to be accurate, and overestimating by a significant amount is acceptable. A local value of zero means the element cannot estimate the bandwidth, so a composed value of zero means the real bandwidth is unknown.
MINIMUM_PATH_LATENCY is the smallest packet delay the element adds, from propagation and from processing limits, but not including any variable queuing delay. The composition rule is summation with a clamp of 2 to the power of 32 minus 1 on the maximum value. Latencies are reported in units of one microsecond; an individual element can advertise a value between 1 and 2 to the power of 28, somewhat over two minutes, and the total can reach 2 to the power of 32 minus 2. The distinguished value 2 to the power of 32 minus 1 means indeterminate latency, and a network element that cannot predict its latency sets its local value to it. A conforming element is free to measure loosely, but must be accurate to the nearest 100 microsecond granularity, and measuring in milliseconds is not acceptable. Together with the queuing delay bound offered by services such as Guaranteed Service, this parameter gives an application both the minimum and the maximum delivery delay, which is what it needs to size a de-jitter buffer.
PATH_MTU is the maximum transmission unit for packets following the path, defined as the largest unit the element can take without fragmentation, counting IP and upper layer headers but not link level headers. The composition rule is the minimum, so the composed value is the largest packet that can cross the whole path without fragmentation. Every integrated-services-aware element must provide a correct and valid value for it. A service module may override it with a smaller MTU but may not specify one larger than the global value. Values are measured in bytes, and the representation must express anything from 1 byte to 2 to the power of 32 minus 1 bytes. Existing MTU discovery mechanisms cannot be used, because they inform only the sender and do not let a QoS control service specify an MTU smaller than the physical one.
All of these parameters are mandatory in the sense that a network element claiming to support integrated services must recognize arriving values, process them correctly and export a reasonable value in response. For some parameters the specification requires an accurate local value; for others it is enough to signal the reserved indeterminate value.
Five numbers describe a path. One says whether every router on it takes part in reservations. One counts the routers that do. One estimates the free bandwidth, and the path's value is the smallest estimate along it. One gives the smallest delay a router adds, and the path's value is the sum. One gives the largest packet that fits, and the path's value is the smallest of those too.
- 1NON_IS_HOP, local — 1 when this element does not implement the relevant QoS control service, or knows the chain is broken; 0 otherwise.
- 2NON_IS_HOP, composed — Logical OR of the local values along the path. Set means at least one element on the path does not offer the service.
- 3NUMBER_OF_IS_HOPS, local — Assigned by an element that conforms to the integrated services requirements.
- 4NUMBER_OF_IS_HOPS, composed — Count of integrated-services-aware elements traversed, from 1 to 255.
- 5AVAILABLE_PATH_BANDWIDTH, local — Estimate of the bandwidth available for packets following the path, in bytes per second.
- 6AVAILABLE_PATH_BANDWIDTH, composed — The smallest bandwidth on the path: the minimum of the local value and the arriving composed value.
- 7MINIMUM_PATH_LATENCY, local — The smallest packet delay this element adds, in microseconds.
- 8MINIMUM_PATH_LATENCY, composed — The sum of the local delays along the path, clamped at 2 to the power of 32 minus 1.
- 9PATH_MTU, local — The largest IP packet this element handles without fragmentation, in bytes.
- 10PATH_MTU, composed — The smallest MTU on the path: the minimum of the local value and the arriving composed value.
- 127TOKEN_BUCKET_TSPEC — Traffic specification in token bucket form. Not a characterization parameter: intermediate elements export no local value for it.
§3.6The Token Bucket Traffic Specification
The sixth definition in Section 3, TOKEN_BUCKET_TSPEC, is not a characterization parameter. Intermediate nodes inside the network do not export local values for it. It is included here as a data structure definition because the same traffic description may be used by more than one QoS control service, and it is assigned parameter number 127.
It describes a flow with a simple token bucket filter plus three more values. The token bucket part holds an average or token rate [r] and a bucket depth [b], and both must be positive. The token rate is measured in bytes of IP datagrams per second and ranges from 1 byte per second to 40 terabytes per second. The bucket depth is measured in bytes and ranges from 1 byte to 250 gigabytes. A floating point representation accurate to at least 0.1% is encouraged for both. The peak traffic rate [p] is also measured in bytes of IP datagrams per second, ranges from 1 byte per second to 40 terabytes per second, and may be set to positive infinity to mean unknown or unspecified.
The minimum policed unit [m] is a whole number of bytes covering the application data and all protocol headers at or above the IP level, such as IP, TCP, UDP and RTP, but not the link level header, because those headers change size as the packet crosses different parts of the network. Every datagram smaller than [m] is treated as being of size [m] for resource allocation and policing. That lets the network estimate the per-packet resources a flow needs, since the maximum packet rate can be computed from [b] and [m], and it bounds the bandwidth the flow's link level headers consume by the ratio of the link level header size to [m]. Without [m] the network would have to assume every flow always sent minimum sized packets, which the memo calls unacceptable.
The maximum packet size [M] is the biggest packet that conforms to the traffic specification, also measured in bytes. Packets larger than it may not receive QoS-controlled service, because they are considered not to meet the specification. Both [m] and [M] must be positive, and [m] must be less than or equal to [M].
Each parameter definition also carries an XDR description, the external data representation standard of RFC 1832, giving an appropriate wire form for the values. The dual definition of a minimal set of properties plus a wire description is meant to encourage a common representation while still allowing others where the circumstances require, such as ASN.1 inside SNMP. The setup messages of RFC 2210 use the XDR representation.
The memo also fixes one shared structure for describing a flow's traffic, because several services need it. It holds an average rate, a bucket depth, a peak rate, a smallest packet size to charge the flow for, and a largest packet size the flow may send.
bool NON_IS_HOP;
unsigned int NUMBER_OF_IS_HOPS;
float AVAILABLE_PATH_BANDWIDTH;
unsigned int MINIMUM_PATH_LATENCY;
unsigned int PATH_MTU;
struct {
float r;
float b;
float p;
unsigned m;
unsigned M;
} TOKEN_BUCKET_TSPEC;§4Security Considerations
The memo says that implementing the characterization parameters creates no known new avenues for malicious attack on the network infrastructure. It does note that implementing them reveals some additional information about a network's performance, which in extremely rare circumstances could be viewed as a security matter by the network provider.
The accuracy rules elsewhere in the memo are the practical limit on how much is revealed. An element that cannot compute a value exports the reserved indeterminate value, and an element that cannot estimate the available bandwidth exports zero, which the receiver must read as unknown. The NON-IS_HOP flag deliberately hides the reason for a gap: the element sets it when it does not fully understand the arriving message, and it must be readable even then.
The memo says these parameters open no new attack route. The one concern it notes is that a router now publishes a little about its own performance, which a network operator may occasionally treat as sensitive.