CDNI Rate Pacing
Cisco Systems
1414 Massachusetts Ave
Boxborough
01719
MA
USA
+1 978 936 9307
mcaulfie@cisco.com
Rate pacing is a class of network traffic shaping which limits the
transmission rate of data over a network. This document defines CDNI
extensions for downstream CDNs to support rate pacing on behalf of
upstream CDNs.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.
Rate pacing is a class of network traffic shaping which limits the
transmission rate of data over a network. In the context of a Content
Delivery Network (CDN), rate pacing provides an important business
advantage to a Content Service Provider (CSP) by ensuring that a CDN
which is delivering content on behalf of that CSP does not deliver
significantly more data than necessary to an end client.
For example, suppose an end client is watching some Constant Bit Rate
(CBR) video encoded at 1500 kbps. In the absence of rate pacing, the CDN
delivering this content may send it to the client at 3000 kbps. If the
client chooses to terminate the session before watching the entire
video, up to half the transmitted data is wasted. This waste leads to
unnecessary cost for the CSP and diminished useful capacity for the
CDN.
Rate pacing requires configuration on a per-content basis. In order
to enable rate pacing in a CDNI environment, the CDNI interfaces need to
be extended to optionally support this feature.
This document describes:
CDNI interface extensions required for supporting rate pacing
a token bucket rate pacing algorithm for CDNs
defines
the CDNI Footprint and Capabilities semantics. But at the time of
writing, no FCI syntax specification has been accepted as a working
group document.
states
that:
"The CDNI FCI specification SHOULD define the registry (and the
rules for adding new entries to the registry) for the different
capability types. Each capability type MAY further have a list of
valid values. The individual CDNI interface specifications which
define a given capability SHOULD define any necessary registries (and
the rules for adding new entries to the registry) for the values
advertised for a given capability type."
This document defines a new capability type:
“RatePacing” to be added to the FCI capability types
registry. The value of this capability contains one or more rate
pacing algorithm names from the Rate Pacing algorithms registry.
For example, the value may be “token-bucket/v1” to indicate
that the advertising CDN supports the token bucket algorithm described
later in this document.
A CDN MAY advertise the “RatePacing” capability in the
FCI if it implements this specification and at least one rate pacing algorithm
registered in the Rate Pacing algorithms registry.
A new RatePacing metadata object is defined to represent the
configuration for rate pacing. The RatePacing object has MIME type
“application/cdni.RatePacing.v1”. RatingPacing MAY appear
within the metadata list of either HostMetadata or PathMetadata (i.e.
may have either host-level scope or a path-level scope). The following
section defines the properties of the RatingPacing object.
The presence of the RatePacing Metadata indicates that a dCDN
MUST comply with this specification in order to deliver a piece of content. The
metadata indicates the rate pacing algorithm name required for delivering
the content and the relevant parameters for that algorithm.
Property: algo
Description: Rate pacing algorithm name from the Rate Pacing Algorithms
registry. Dictates the structure of the “params” value. For example,
“token-bucket./v1”.
Type: String
Mandatory-to-Specify: Yes.
Property: params
Description: An object containing algorithm-specific properties and
values which are relevant to the rate
pacing algorithm specified by the “algo” property. Each
algorithm dictates its own parameters.
Type: Object
Mandatory-to-Specify: Yes.
The RRI is not impacted by rate pacing. However, if the metadata for
a piece of content indicates that rate pacing is required by the uCDN,
then a request router should only redirect requests for that content
to CDNs which advertise “RatePacing” as a capability. The request router
should also limit its choice of dCDNs to those which advertise the same
rate pacing algorithm as is specified by the rate pacing metadata.
For example, if the metadata for a piece of content includes a
GenericMetadata object of type “application/cdni.RatePacing.v1”
and the “algo” property in the value of that GenericMetadata is
“token-bucket/v1”, then the request router of the uCDN should only
redirect requests for that piece of content to dCDNs which advertise a capability
type of “RatePacing” and a capability value of “token-bucket/v1”.
The rate at which a piece of content was delivered MAY be indicated
via the LI. The “sc-rate” field indicates the rate in
bytes per second as a decimal number. The bytes measured should
correspond to the sc-entity-bytes field.
sc-rate:
format: DEC
field value: the average rate in bytes per second at which
a response was delivered from Surrogate to client.
occurence: there MUST be zero or exactly one instances of
this field.
Note that existing fields defined by
include the bytes delivered and the time taken to service a request. However, the time
taken includes the acquisition latency which is not relevant to rate pacing.
The CI is not impacted by rate pacing.
Token bucket is one example of a rate pacing algorithm. This document
extends the CDNI interfaces with generic support for rate pacing and
registers token bucket as a rate pacing algorithm for CDNI.
Other algorithms MAY be defined but are beyond the scope of this document.
Token bucket is described by
.
The token bucket algorithm is characterized by two parameters:
Rate – the number of tokens added to the bucket per
second
Size – the maximum number of tokens in the bucket
For the purpose of this document, each token represents one byte.
The algorithm name “token-bucket/v1” is registered as a Rate
Pacing algorithm. This algorithm name may appear as the value of the “RatePacing”
capability. This name may also appear as the value of the “algo” property in the
“RatePacing” metadata object.
If a RatePacing metadata object's “algo” value is “token-bucket/v1”
then the metadata object's “params” is an object of type TokenBucketParams, described below.
Property: rate
Description: Rate of tokens per second to be added to the
bucket as described by the token bucket algorithm. This
value MUST be a positive integer. Each token represents one
byte.
Type: Integer
Mandatory-to-Specify: Yes.
Property: size
Description: Maximum number of tokens per bucket as
described by the token bucket algorithm. This value MUST be
a positive integer.
Type: Integer
Mandatory-to-Specify: Yes.
This document requests the following of IANA:
Addition of RatePacing in the CDNI Capability Registry defined in TBD.
Addition of “RatePacing” to the standard partition of the CDNI
GenericMetadata Type Registry defined in :
Type name
Specification
Version
MTE
STR
RatePacing
RFCthis
1
true
true
Addition of “sc-rate” in the CDNI Logging Field Names Registry defined
in .
IANA is requested to create new registry, CDNI Rate Pacing Algorithms. The following
table defines the initial values of the registry:
Algorithm Name
Specification
Version
token-bucket
RFCthis
1
New rate pacing algorithm registrations SHOULD specify RatePacing parameter objects as shown in
and SHOULD describe the algorithm for rate pacing.
A malicious CSP might attempt to use rate pacing to instruct a dCDN
to delivery some content at a very low rate thereby in order to exhaust
the resources of a dCDN by forcing connection state to be maintained for
longer than usual. The decision to enforce a rate is left to the discretion of a
dCDN. An implementation of rate pacing should implement reasonable lower (and upper)
bounds to avoid such cases.
The author would like to thank Francois Le Faucheur for his
contributions and feedback.