Content Delivery Network Interconnection (CDNI) Capacity Capability Advertisement Extensions
How a downstream CDN tells its upstream partner how much traffic it can take, and where to watch the numbers.
Ryan, A., Rosenblum, B., and N. Sopher, "Content Delivery Network Interconnection (CDNI) Capacity Capability Advertisement Extensions", RFC 9808, DOI 10.17487/RFC9808, July 2025, <https://www.rfc-editor.org/info/rfc9808>.
@misc{rfc9808,
series = {Request for Comments},
number = 9808,
howpublished = {RFC 9808},
publisher = {RFC Editor},
doi = {10.17487/RFC9808},
url = {https://www.rfc-editor.org/info/rfc9808},
author = {A. Ryan and B. Rosenblum and N. Sopher},
title = {{Content Delivery Network Interconnection (CDNI) Capacity Capability Advertisement Extensions}},
pagetotal = 15,
year = 2025,
month = jul,
} RFC text
Contents
Internet Engineering Task Force (IETF) A. Ryan
Request for Comments: 9808 Disney Streaming
Category: Standards Track B. Rosenblum
ISSN: 2070-1721 Vecima
N. Sopher
Qwilt
July 2025
Content Delivery Network Interconnection (CDNI) Capacity Capability
Advertisement Extensions
Abstract
This specification defines a set of additional Capability Objects
that provide information about current downstream CDN (dCDN)
utilization and specified usage limits to the delegating upstream CDN
(uCDN) in order to inform traffic delegation decisions.
This document supplements the CDNI Capability Objects, defined in RFC
8008 as part of the Footprint & Capabilities Advertisement Interface
(FCI), with two additional Capability Objects: FCI.CapacityLimits and
FCI.Telemetry.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9808.
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
1.1. Terminology
1.2. Requirements Language
1.3. Objectives
2. CDNI Additional Capability Objects
2.1. Telemetry Capability Object
2.1.1. Telemetry Source Object
2.1.1.1. Telemetry Source Types
2.1.1.2. Telemetry Source Metric Object
2.1.2. Telemetry Capability Object Serialization
2.2. CapacityLimits Capability Object
2.2.1. CapacityLimit Object
2.2.1.1. CapacityLimit Types
2.2.1.2. CapacityLimitTelemetrySource Object
2.2.2. CapacityLimit Object Serialization
3. IANA Considerations
3.1. CDNI Payload Types
3.1.1. CDNI FCI.Telemetry Payload Type
3.1.2. CDNI FCI.CapacityLimits Payload Type
3.2. CDNI Telemetry Source Types Registry
3.2.1. CDNI Generic Telemetry Source Type
3.3. CDNI Capacity Limit Types Registry
4. Security Considerations
5. References
5.1. Normative References
5.2. Informative References
Acknowledgements
Authors' Addresses
1. Introduction
While delegating traffic from an upstream CDN (uCDN) to a downstream
CDN (dCDN), it is important to ensure that an appropriate amount of
traffic is delegated. To achieve that, this specification defines a
feedback mechanism to inform the delegator how much traffic may be
delegated. The traffic level information provided by that interface
will be consumed by services, such as a request router, to inform
that service's traffic delegation decisions. The provided
information is advisory and does not represent a guarantee,
commitment, or reservation of capacity.
This document defines and registers CDNI Payload Types (as defined in
Section 7.1 of [RFC8006]). These Payload Types are used for
Capability Objects, which are added to those defined in Section 4 of
[RFC8008].
1.1. Terminology
The following term is used throughout this document:
CDN: Content Delivery Network
Additionally, this document reuses the terminology defined in
[RFC6707]. Specifically, the following CDNI acronyms are used:
uCDN: upstream CDN
dCDN: downstream CDN
1.2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
1.3. Objectives
To enable information exchange between a uCDN and a dCDN regarding
acceptable levels of traffic delegation, the following process has
been defined:
In normal operation, a uCDN will communicate with a dCDN, via an
interface, to collect and understand any limits that a dCDN has
set forth for traffic delegation from a uCDN. These limits will
come in the form of metrics such as bits per second, requests per
second, etc. These limits can be thought of as Not to Exceed
(NTE) limits.
The dCDN should provide access to a Telemetry Source of near real-
time metrics that the uCDN can use to track current usage. The
uCDN should compare its current usage to the limits the dCDN has
put forth and adjust traffic delegation decisions accordingly to
keep current usage under the specified limits.
In summary, the dCDN will inform the uCDN of the amount of traffic
that may be delegated. Additionally, it will provide a Telemetry
Source aligned with this limit, allowing the uCDN to monitor its
current usage against the advertised value. Having a limit and a
corresponding Telemetry Source creates an unambiguous definition
understood by both parties.
Limits that are communicated from the dCDN to the uCDN should be
considered valid based on the Time to Live (TTL) provided by a
mechanism of the underlying transport, e.g., an HTTP Cache-Control
header. The intention is that the limits would have a long-lived TTL
and would represent a reasonable peak utilization limit that the uCDN
should target. If the underlying transport does not provide a
mechanism for the dCDN to communicate the TTL of the limits, the TTL
should be communicated through an out-of-band mechanism agreed upon
between the dCDN and uCDN.
2. CDNI Additional Capability Objects
Section 5 of [RFC8008] describes the FCI Capability Advertisement
Object, which contains a CDNI Capability Object as well as the
capability-type (a CDNI Payload Type). The section also defines the
Capability Objects per such type. Below, we define two additional
Capability Objects.
| Note: In the following sections, the term "mandatory-to-
| specify" is used to convey which properties MUST be included
| when serializing a given capability object. When mandatory-to-
| specify is defined as a "Yes" for an individual property, it
| means that if the object containing that property is included
| in an FCI message, then the mandatory-to-specify property MUST
| be included.
2.1. Telemetry Capability Object
The Telemetry Capability Object advertises a list of Telemetry
Sources made available to the uCDN by the dCDN. In this document,
telemetry data is being defined as near real-time aggregated metrics
of dCDN utilization, such as bits per second egress, and is specific
to the uCDN and dCDN traffic delegation relationship.
Telemetry data is uniquely defined by a source ID, a metric name, and
the footprints that are associated with an FCI Capabilities
advertisement. When defining a CapacityLimit, the meaning of a limit
might be ambiguous if the uCDN and dCDN are observing telemetry via
different data sources. A dCDN-provided Telemetry Source that both
parties reference serves as a non-ambiguous metric for use when
comparing current usage to a limit.
Telemetry data is important for making informed traffic delegation
decisions. Additionally, it is essential in providing visibility of
traffic that has been delegated. In situations where there are
multiple CDN delegations, a uCDN will need to aggregate the usage
information from any dCDNs to which it delegated when asked to
provide usage information, otherwise the traffic may seem unaccounted
for.
Example: A Content Provider delegates traffic directly to a uCDN, and
that uCDN delegates that traffic to a dCDN. When the Content
Provider polls the uCDN telemetry interface, any of the traffic the
uCDN delegated to the dCDN would become invisible to the Content
Provider, unless the uCDN aggregates the dCDN telemetry with its own
metrics.
Property: sources
Description: Telemetry Sources made available to the uCDN.
Type: A JSON array of Telemetry Source objects (see
Section 2.1.1).
Mandatory-to-Specify: Yes
2.1.1. Telemetry Source Object
The Telemetry Source Object is made of an associated type, a list of
exposed metrics, and type-specific configuration data.
Property: id
Description: An identifier of a telemetry source. The ID string
assigned to this Telemetry Source MUST be unique across all
Telemetry Source objects in the advertisement containing this
Telemetry Source Object. The ID string MUST remain consistent
for the same source reference across advertisements.
Type: String
Mandatory-to-Specify: Yes
Property: type
Description: A valid Telemetry Source Type (see Section 2.1.1.1).
Type: String
Mandatory-to-Specify: Yes
Property: metrics
Description: The metrics exposed by this source.
Type: A JSON array of Telemetry Source Metric Objects (see
Section 2.1.1.2).
Mandatory-to-Specify: Yes
Property: configuration
Description: A source-specific representation of the Telemetry
Source configuration. For the generic source type, this
configuration format is defined as out-of-band. For other
types, the configuration format will be specified in a yet-to-
be-defined telemetry interface specification. The goal of this
element is to allow for forward compatibility with a formal
telemetry interface.
Type: A JSON object, the structure of which is specific to the
Telemetry Source and outside the scope of this document.
Mandatory-to-Specify: No
2.1.1.1. Telemetry Source Types
At the time of this writing, the "CDNI Telemetry Source Types"
registry is limited to a single type: generic (see Table 3 in
Section 3.2.1).
2.1.1.2. Telemetry Source Metric Object
The Telemetry Source Metric Object describes the metric to be
exposed.
Property: name
Description: An identifier for this metric. This name MUST be
unique among metric objects within the containing Telemetry
Source. The name MUST remain consistent for the same source
reference across advertisements.
Type: String
Mandatory-to-Specify: Yes
Property: time-granularity
Description: The time, in seconds, representing the metric data.
For example, a value representing the last 5 minutes would have
a time-granularity of 300.
Type: Unsigned Integer
Mandatory-to-Specify: No
Property: data-percentile
Description: The percentile calculation the data represents,
i.e., 50 percentile would equate to the median over the time-
granularity. Lack of a data-percentile indicates that the data
MUST be the mean over the time representation.
Type: Unsigned Integer
Mandatory-to-Specify: No
Property: latency
Description: Time in seconds that the data is behind real-time.
This is important to specify to help the uCDN understand how
long it might take to reflect traffic adjustments in the
metrics.
Type: Unsigned Integer
Mandatory-to-Specify: No
2.1.2. Telemetry Capability Object Serialization
The following shows an example of a Telemetry Capability Object,
including two metrics for a source, that is scoped to a footprint.
{
"capabilities": [
{
"capability-type": "FCI.Telemetry",
"capability-value": {
"sources": [
{
"id": "capacity_metrics_region1",
"type": "generic",
"metrics": [
{
"name": "egress_5m",
"time-granularity": 300,
"data-percentile": 50,
"latency": 1500
},
{
"name": "requests_5m",
...
}
]
}
]
},
"footprints": [
<footprint objects>
]
}
]
}
2.2. CapacityLimits Capability Object
The CapacityLimits Capability Object enables the dCDN to specify
traffic delegation limits to a uCDN within an FCI Capabilities
advertisement. The limits specified by the dCDN will inform the uCDN
on how much traffic may be delegated to the dCDN. The limits
specified by the dCDN should be considered NTE limits. The limits
should be based on near real-time telemetry data that the dCDN
provides to the uCDN. In other words, for each limit that is
advertised, there should also exist a Telemetry Source that provides
current utilization data against the particular advertised limit.
Property: limits
Description: A collection of CapacityLimit Objects.
Type: A JSON array of CapacityLimit Objects (see Section 2.2.1).
Mandatory-to-Specify: Yes
2.2.1. CapacityLimit Object
A CapacityLimit Object is used to represent traffic limits for
delegation from the uCDN towards the dCDN. The limit object is
scoped to the footprint associated with the FCI Capabilities
advertisement encompassing this object. Limits MUST be considered
using a logical "AND": A uCDN will need to ensure that all limits are
considered rather than choosing only the most specific.
Property: limit-type
Description: The units of maximum-hard and maximum-soft.
Type: String. One of the values listed in Section 2.2.1.1.
Mandatory-to-Specify: Yes
Property: id
Description: Specifies an identifier associated with a limit.
This MAY be used as a relational identifier to a specific
CapacityLimit Object. If specified, this identifier MUST be
unique among specified identifiers associated with any other
CapacityLimit Objects in the advertisement containing this
CapacityLimit Object.
Type: String
Mandatory-to-Specify: No
Property: maximum-hard
Description: The maximum unit of capacity that is available for
use.
Type: Unsigned Integer
Mandatory-to-Specify: Yes
Property: maximum-soft
Description: A soft limit at which a uCDN SHOULD reduce traffic
before hitting the hard limit. This value MUST be less than
the value of maximum-hard. If this value is not specified, it
is equal to the value of maximum-hard.
Type: Unsigned Integer
Mandatory-to-Specify: No
Property: current
Description: Specifies the current usage value of the limit. It
is NOT RECOMMENDED to specify the current usage value inline
with the FCI.CapacityLimits advertisements as it will reduce
the ability to cache the response, but this mechanism exists
for simple use cases where an external Telemetry Source cannot
be feasibly implemented. The intended method for providing
telemetry data is to reference a Telemetry Source Object (see
Section 2.1.1) to poll for the current usage.
Type: Unsigned Integer
Mandatory-to-Specify: No
Property: telemetry-source
Description: The mapping of each particular limit to a specific
metric with relevant real-time data provided by a Telemetry
Source.
Type: CapacityLimitTelemetrySource object (see Section 2.2.1.2).
Mandatory-to-Specify: No
2.2.1.1. CapacityLimit Types
Below are listed the valid limit-type entries registered in the "CDNI
Capacity Limit Types" registry. The values specified here represent
the types that were identified as being the most relevant metrics for
the purposes of traffic delegation between CDNs.
+=====================+=====================+
| Capacity Limit Type | Units |
+=====================+=====================+
| egress | Bits per second |
+---------------------+---------------------+
| requests | Requests per second |
+---------------------+---------------------+
| storage-size | Total bytes |
+---------------------+---------------------+
| storage-objects | Count |
+---------------------+---------------------+
| sessions | Count |
+---------------------+---------------------+
| cache-size | Total bytes |
+---------------------+---------------------+
Table 1
2.2.1.2. CapacityLimitTelemetrySource Object
The CapacityLimitTelemetrySource Object refers to a specific metric
within a Telemetry Source.
Property: id
Description: Reference to the "id" of a Telemetry Source defined
by a Telemetry Capability Object as defined in Section 2.1.
Type: String
Mandatory-to-Specify: Yes
Property: metric
Description: Reference to the "name" property of a metric defined
within a Telemetry Source of a Telemetry Capability object.
Type: String
Mandatory-to-Specify: Yes
2.2.2. CapacityLimit Object Serialization
The following shows an example of an FCI.CapacityLimits object.
{
"capabilities": [
{
"capability-type":"FCI.CapacityLimits",
"capability-value":{
"limits":[
{
"id":"capacity_limit_region1",
"limit-type":"egress",
"maximum-hard":50000000000,
"maximum-soft":25000000000,
"telemetry-source":{
"id":"capacity_metrics_region1",
"metric":"egress_5m"
}
}
]
},
"footprints":[
"<footprint objects>"
]
}
]
}
3. IANA Considerations
3.1. CDNI Payload Types
Per this document, IANA has registered two additional payload types
in the "CDNI Payload Types" registry within the "Content Delivery
Network Interconnection (CDNI) Parameters" registry group:
+====================+===========+
| Payload Type | Reference |
+====================+===========+
| FCI.Telemetry | RFC 9808 |
+--------------------+-----------+
| FCI.CapacityLimits | RFC 9808 |
+--------------------+-----------+
Table 2
3.1.1. CDNI FCI.Telemetry Payload Type
Purpose: The purpose of this Payload Type is to list the supported
Telemetry Sources and the metrics made available by each source.
Interface: FCI
Encoding: See Section 2.1.
3.1.2. CDNI FCI.CapacityLimits Payload Type
Purpose: The purpose of this Payload Type is to define Capacity
Limits based on utilization metrics corresponding to Telemetry
Sources provided by the dCDN.
Interface: FCI
Encoding: See Section 2.2.
3.2. CDNI Telemetry Source Types Registry
IANA has added the following new registry within the "Content
Delivery Network Interconnection (CDNI) Parameters" registry group at
<https://www.iana.org/assignments/cdni-parameters>:
Registry Name: CDNI Telemetry Source Types
Registry Description: The "CDNI Telemetry Source Types" registry
defines the valid values for the "type" property of the Telemetry
Source object defined in Section 2.1.1.
Registration Procedure: The registry follows the Specification
Required policy as defined in [RFC8126]. The designated expert
should consider the following guidelines when evaluating
registration requests:
* The new type definition does not duplicate existing types.
* The review should verify that the Telemetry Source is
applicable to the CDNI use cases and that the description is
clear and unambiguous.
* The registration is applicable for general use and is not
proprietary.
* The "configuration" property has a fully specified object
definition with a description of each defined property.
The following value has been registered:
+=============+=======================================+===========+
| Source Type | Description | Reference |
+=============+=======================================+===========+
| generic | An object that allows for | RFC 9808 |
| | advertisement of generic data sources | |
+-------------+---------------------------------------+-----------+
Table 3
3.2.1. CDNI Generic Telemetry Source Type
Purpose: The purpose of this Telemetry Source Type is to provide a
source-agnostic telemetry type that may be used for generic
Telemetry Source advertisement.
Usage: See Section 2.1.1.
3.3. CDNI Capacity Limit Types Registry
IANA has added the following new registry within the "Content
Delivery Network Interconnection (CDNI) Parameters" registry group at
<https://www.iana.org/assignments/cdni-parameters>:
Registry Name: CDNI Capacity Limit Types
Registry Description: The "CDNI Capacity Limit Types" registry
defines the valid values of the "limit-type" property of a
CapacityLimit Object defined in Section 2.2.1.
Registration Procedure: The registry follows the Specification
Required policy as defined in [RFC8126]. The designated expert
should consider the following guidelines when evaluating
registration requests:
* The new capacity limit-type does not duplicate existing
entries.
* The submission has a defined purpose. The newly defined
capacity limit-type should be clearly justified in the context
of one or more CDNI use cases.
* The description of the capacity limit-type is well-documented
and unambiguous.
The following values have been registered:
+=====================+=====================+===========+
| Capacity Limit Type | Units | Reference |
+=====================+=====================+===========+
| egress | Bits per second | RFC 9808 |
+---------------------+---------------------+-----------+
| requests | Requests per second | RFC 9808 |
+---------------------+---------------------+-----------+
| storage-size | Total bytes | RFC 9808 |
+---------------------+---------------------+-----------+
| storage-objects | Count | RFC 9808 |
+---------------------+---------------------+-----------+
| sessions | Count | RFC 9808 |
+---------------------+---------------------+-----------+
| cache-size | Total bytes | RFC 9808 |
+---------------------+---------------------+-----------+
Table 4
Usage: See Section 2.2.1.1.
4. Security Considerations
This specification is in accordance with the CDNI Request Routing:
Footprint and Capabilities Semantics. As such, it is subject to the
security and privacy considerations as defined in Section 7 of
[RFC8008].
5. References
5.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg,
R., and K. Ma, "Content Delivery Network Interconnection
(CDNI) Request Routing: Footprint and Capabilities
Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016,
<https://www.rfc-editor.org/info/rfc8008>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
5.2. Informative References
[RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
Distribution Network Interconnection (CDNI) Problem
Statement", RFC 6707, DOI 10.17487/RFC6707, September
2012, <https://www.rfc-editor.org/info/rfc6707>.
[RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma,
"Content Delivery Network Interconnection (CDNI)
Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016,
<https://www.rfc-editor.org/info/rfc8006>.
[SVTA] "Streaming Video Technology Alliance Home Page",
<https://www.svta.org>.
Acknowledgements
The authors would like to express their gratitude to the members of
the Streaming Video Technology Alliance [SVTA] Open Caching Working
Group for their guidance, contribution, and review.
Authors' Addresses
Andrew Ryan
Disney Streaming
1211 Avenue of the Americas
New York, NY 10036
United States of America
Email: andrew@andrewnryan.com
Ben Rosenblum
Vecima
4375 River Green Pkwy #100
Duluth, GA 30096
United States of America
Email: ben@rosenblum.dev
Nir B. Sopher
Qwilt
6, Ha'harash
Hod HaSharon 4524079
Israel
Email: nir@apache.org
AI ELI5
On this page
§1Introduction and Goals
When an upstream CDN (uCDN) delegates traffic to a downstream CDN (dCDN), it matters that the right amount is delegated. RFC 9808 defines a feedback mechanism that tells the delegator how much traffic may be sent. A service such as a request router can use that information in its delegation decisions.
The information is advisory. The RFC states that it does not represent a guarantee, commitment, or reservation of capacity. It adds two Capability Objects to those defined in Section 4 of RFC 8008, and registers matching CDNI Payload Types (a concept from RFC 8006).
A shop that sends orders to a partner shop needs to know how many it can send. The partner's answer is only a helpful hint, not a promise.
§1.3How Limits and Usage Fit Together
In normal operation the uCDN talks to the dCDN through an interface to learn the limits the dCDN has set. Limits are expressed as metrics such as bits per second or requests per second, and can be thought of as Not to Exceed (NTE) limits.
The dCDN should also give access to a Telemetry Source of near real-time metrics. The uCDN compares its current usage with the limits and adjusts delegation to stay under them. Pairing a limit with a corresponding Telemetry Source gives both parties an unambiguous definition.
Limits are valid for the Time to Live (TTL) given by the underlying transport, for example an HTTP Cache-Control header. The intent is a long-lived TTL and a reasonable peak utilization limit. If the transport cannot carry a TTL, it should be agreed out of band.
The partner shop gives you a number and a scoreboard. You watch the scoreboard and slow down before you hit the number.
§2.1The Telemetry Capability Object
The FCI.Telemetry Capability Object advertises a list of Telemetry Sources the dCDN makes available to the uCDN. Telemetry here means near real-time aggregated metrics of dCDN utilization, such as bits per second egress, specific to the uCDN and dCDN delegation relationship.
It has one mandatory property, sources, an array of Telemetry Source objects. Each source has a mandatory id (unique within the advertisement and consistent across advertisements), a mandatory type, a mandatory array of metrics, and an optional configuration object. Its structure depends on the source and is outside this document's scope; for the generic type it is defined out of band.
Each metric has a mandatory name, unique within its source, plus optional properties:
time-granularity: seconds the data represents, so 300 means the last 5 minutes.data-percentile: the percentile the data represents. If absent, the data MUST be the mean over the time representation.latency: seconds the data is behind real time, which helps the uCDN judge how long its adjustments take to show up.
The RFC notes that in multi-CDN chains a uCDN needs to aggregate dCDN usage with its own, otherwise delegated traffic becomes invisible to the content provider.
A telemetry source is a scoreboard. Each line on it says what is being counted, over how long, and how old the number is.
§2.2The CapacityLimits Capability Object
The FCI.CapacityLimits object lets the dCDN state delegation limits inside an FCI Capabilities advertisement. It has one mandatory property, limits, an array of CapacityLimit objects. Each limit is scoped to the footprint of the advertisement that contains it. Multiple limits MUST be combined with a logical AND, so the uCDN must respect all of them, not just the most specific one.
A CapacityLimit has these properties:
limit-type(mandatory): the units of the maximums.maximum-hard(mandatory): the maximum capacity available for use.maximum-soft(optional): a level at which the uCDN SHOULD reduce traffic before the hard limit. It MUST be less thanmaximum-hard, and if absent it equalsmaximum-hard.id(optional): an identifier, unique among limit ids in the advertisement.current(optional): inline current usage. This is NOT RECOMMENDED because it reduces cacheability; the intended method is a Telemetry Source.telemetry-source(optional): maps the limit to a specific metric, using anidnaming a Telemetry Source and ametricnaming one of its metrics.
Each limit says 'please stay under this number', and a softer 'start slowing down here' number. All the rules apply at the same time.
§2.2.1.1Limit Types and Source Types
The valid limit-type values are those in the 'CDNI Capacity Limit Types' registry. The RFC lists six, chosen as the most relevant for traffic delegation between CDNs: egress (bits per second), requests (requests per second), storage-size (total bytes), storage-objects (count), sessions (count) and cache-size (total bytes).
For telemetry, the 'CDNI Telemetry Source Types' registry holds a single type at the time of writing: generic, a source-agnostic type for advertising generic data sources. Other types are expected to be specified later in a telemetry interface specification.
The limits can count different things: data speed, number of requests, storage, or how many visitors are connected at once.
- egressEgress — Bits per second.
- requestsRequests — Requests per second.
- storage-sizeStorage size — Total bytes.
- storage-objectsStorage objects — Count.
- sessionsSessions — Count.
- cache-sizeCache size — Total bytes.
§2.2.2A Worked Example
The RFC gives a JSON example of each object. In the telemetry example, a source capacity_metrics_region1 of type generic exposes a metric egress_5m with time-granularity 300, data-percentile 50 and latency 1500, alongside a second metric requests_5m.
In the limits example, a limit capacity_limit_region1 of type egress has a hard maximum of 50000000000 and a soft maximum of 25000000000, and its telemetry-source points at that source and its egress_5m metric. This is the link that makes the limit and the measurement refer to the same thing.
The example says 'stay under this many bits per second, and here is the exact scoreboard line to check'.
§3IANA Registrations
IANA has registered two CDNI Payload Types, FCI.Telemetry and FCI.CapacityLimits, both for the FCI interface. It also created two registries in the CDNI Parameters registry group: 'CDNI Telemetry Source Types' (initially generic) and 'CDNI Capacity Limit Types' (initially the six types above). Both use the Specification Required policy from RFC 8126, with guidelines for the designated expert, for example that a new type does not duplicate an existing one and is clearly justified.
The names of the new message kinds and the lists of allowed limit and source types are written in an official public list.
§4Security Considerations
The RFC adds no new security text of its own. It is in accordance with the CDNI Request Routing: Footprint and Capabilities Semantics, and so is subject to the security and privacy considerations in Section 7 of RFC 8008.
It follows the same safety rules as the document it extends.