rfc9808.original | rfc9808.txt | |||
---|---|---|---|---|
Content Delivery Networks Interconnection A. Ryan | Internet Engineering Task Force (IETF) A. Ryan | |||
Internet-Draft Disney Streaming | Request for Comments: 9808 Disney Streaming | |||
Intended status: Standards Track B. Rosenblum | Category: Standards Track B. Rosenblum | |||
Expires: 15 June 2025 Vecima | ISSN: 2070-1721 Vecima | |||
N. Sopher | N. Sopher | |||
Qwilt | Qwilt | |||
12 December 2024 | June 2025 | |||
CDNI Capacity Capability Advertisement Extensions | Content Delivery Network Interconnection (CDNI) Capacity Capability | |||
draft-ietf-cdni-capacity-insights-extensions-12 | Advertisement Extensions | |||
Abstract | Abstract | |||
The Content Delivery Networks Interconnection (CDNI) Capacity | The Content Delivery Network Interconnection (CDNI) Capacity | |||
Capability Advertisement Extensions define a set of additional | Capability Advertisement Extensions define a set of additional | |||
Capability Objects that provide information about current downstream | Capability Objects that provide information about current downstream | |||
CDN (dCDN) utilization and specified usage limits to the delegating | CDN (dCDN) utilization and specified usage limits to the delegating | |||
upstream CDN (uCDN) in order to inform traffic delegation decisions. | upstream CDN (uCDN) in order to inform traffic delegation decisions. | |||
This document supplements the CDNI Capability Objects, defined in RFC | This document supplements the CDNI Capability Objects, defined in RFC | |||
8008 as part of the Footprints & Capabilities Advertisement Interface | 8008 as part of the Footprint & Capabilities Advertisement Interface | |||
(FCI), with two additional Capability Objects: FCI.CapacityLimits and | (FCI), with two additional Capability Objects: FCI.CapacityLimits and | |||
FCI.Telemetry. | FCI.Telemetry. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 15 June 2025. | 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 Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.2. Requirements Language | |||
1.3. Objectives . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.3. Objectives | |||
2. CDNI Additional Capability Objects . . . . . . . . . . . . . 4 | 2. CDNI Additional Capability Objects | |||
2.1. Telemetry Capability Object . . . . . . . . . . . . . . . 4 | 2.1. Telemetry Capability Object | |||
2.1.1. Telemetry Source Object . . . . . . . . . . . . . . . 5 | 2.1.1. Telemetry Source Object | |||
2.1.1.1. Telemetry Source Types . . . . . . . . . . . . . 6 | 2.1.1.1. Telemetry Source Types | |||
2.1.1.2. Telemetry Source Metric Object . . . . . . . . . 6 | 2.1.1.2. Telemetry Source Metric Object | |||
2.1.2. Telemetry Capability Object Serialization . . . . . . 7 | 2.1.2. Telemetry Capability Object Serialization | |||
2.2. CapacityLimits Capability Object . . . . . . . . . . . . 8 | 2.2. CapacityLimits Capability Object | |||
2.2.1. CapacityLimit Object . . . . . . . . . . . . . . . . 9 | 2.2.1. CapacityLimit Object | |||
2.2.1.1. CapacityLimit Types . . . . . . . . . . . . . . . 10 | 2.2.1.1. CapacityLimit Types | |||
2.2.1.2. CapacityLimitTelemetrySource Object . . . . . . . 11 | 2.2.1.2. CapacityLimitTelemetrySource Object | |||
2.2.2. CapacityLimit Object Serialization . . . . . . . . . 11 | 2.2.2. CapacityLimit Object Serialization | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 3. IANA Considerations | |||
3.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 12 | 3.1. CDNI Payload Types | |||
3.1.1. CDNI FCI Telemetry Payload Type . . . . . . . . . . . 13 | 3.1.1. CDNI FCI Telemetry Payload Type | |||
3.1.2. CDNI FCI Capacity Limits Payload Type . . . . . . . . 13 | 3.1.2. CDNI FCI Capacity Limits Payload Type | |||
3.2. "CDNI Telemetry Source Types" Registry . . . . . . . . . 13 | 3.2. CDNI Telemetry Source Types Registry | |||
3.2.1. CDNI Generic Telemetry Source Type . . . . . . . . . 14 | 3.2.1. CDNI Generic Telemetry Source Type | |||
3.3. "CDNI Capacity Limit Types" Registry . . . . . . . . . . 14 | 3.3. CDNI Capacity Limit Types Registry | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 4. Security Considerations | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 | 5. References | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. Normative References | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 5.2. Informative References | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
While delegating traffic from an upstream CDN (uCDN) to a downstream | While delegating traffic from an upstream CDN (uCDN) to a downstream | |||
CDN (dCDN), it is important to ensure that an appropriate amount of | CDN (dCDN), it is important to ensure that an appropriate amount of | |||
traffic is delegated. To achieve that, this specification defines a | traffic is delegated. To achieve that, this specification defines a | |||
feedback mechanism to inform the delegator how much traffic may be | feedback mechanism to inform the delegator how much traffic may be | |||
delegated. The traffic level information provided by that interface | delegated. The traffic level information provided by that interface | |||
will be consumed by services, such as a request router, to inform | will be consumed by services, such as a request router, to inform | |||
that service's traffic delegation decisions. The provided | that service's traffic delegation decisions. The provided | |||
information is advisory and does not represent a guarantee, | information is advisory and does not represent a guarantee, | |||
commitment, or reservation of capacity. | commitment, or reservation of capacity. | |||
This document defines and registers CDNI Payload Types (as defined at | This document defines and registers CDNI Payload Types (as defined in | |||
section 7.1 of [RFC8006]). These Payload types are used for | Section 7.1 of [RFC8006]). These Payload types are used for | |||
Capability Objects added to those defined at section 4 of [RFC8008]. | Capability Objects, which are added to those defined in Section 4 of | |||
[RFC8008]. | ||||
1.1. Terminology | 1.1. Terminology | |||
The following terms are used throughout this document: | The following term is used throughout this document: | |||
* CDN - Content Delivery Network | CDN: Content Delivery Network | |||
Additionally, this document reuses the terminology defined in | Additionally, this document reuses the terminology defined in | |||
[RFC6707]. Specifically, we use the following CDNI acronyms: | [RFC6707]. Specifically, the following CDNI acronyms are used: | |||
* uCDN, dCDN - Upstream CDN and Downstream CDN, respectively | uCDN: upstream CDN | |||
dCDN: downstream CDN | ||||
1.2. Requirements Language | 1.2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
1.3. Objectives | 1.3. Objectives | |||
To enable information exchange between a uCDN and a dCDN regarding | To enable information exchange between a uCDN and a dCDN regarding | |||
acceptable levels of traffic delegation, the following process has | acceptable levels of traffic delegation, the following process has | |||
been defined: | been defined: | |||
In normal operation a uCDN will communicate with a dCDN, via an | In normal operation, a uCDN will communicate with a dCDN, via an | |||
interface, to collect and understand any limits that a dCDN has set | interface, to collect and understand any limits that a dCDN has | |||
forth for traffic delegation from a uCDN. These limits will come in | set forth for traffic delegation from a uCDN. These limits will | |||
the form of metrics such as bits per second, requests per second, | come in the form of metrics such as bits per second, requests per | |||
etc. These limits can be thought of as Not to Exceed (NTE) limits. | 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- | 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 | time metrics that the uCDN can use to track current usage. The | |||
should compare its current usage to the limits the dCDN has put forth | uCDN should compare its current usage to the limits the dCDN has | |||
and adjust traffic delegation decisions accordingly to keep current | put forth and adjust traffic delegation decisions accordingly to | |||
usage under the specified limits. | keep current usage under the specified limits. | |||
In summary, the dCDN will inform the uCDN of the amount of traffic | In summary, the dCDN will inform the uCDN of the amount of traffic | |||
that may be delegated. Additionally, it will provide a telemetry | that may be delegated. Additionally, it will provide a telemetry | |||
source aligned with this limit, allowing the uCDN to monitor its | source aligned with this limit, allowing the uCDN to monitor its | |||
current usage against the advertised value. Having a limit and a | current usage against the advertised value. Having a limit and a | |||
corresponding telemetry source creates an unambiguous definition | corresponding telemetry source creates an unambiguous definition | |||
understood by both parties. | understood by both parties. | |||
Limits that are communicated from the dCDN to the uCDN should be | Limits that are communicated from the dCDN to the uCDN should be | |||
considered valid based on the TTL (Time To Live) provided by a | considered valid based on the Time to Live (TTL) provided by a | |||
mechanism of the underlying transport, e.g., an HTTP Cache-Control | mechanism of the underlying transport, e.g., an HTTP Cache-Control | |||
header. The intention is that the limits would have a long-lived TTL | header. The intention is that the limits would have a long-lived TTL | |||
and would represent a reasonable peak utilization limit that the uCDN | and would represent a reasonable peak utilization limit that the uCDN | |||
should target. If the underlying transport does not provide a | should target. If the underlying transport does not provide a | |||
mechanism for the dCDN to communicate the TTL of the limits, the TTL | mechanism for the dCDN to communicate the TTL of the limits, the TTL | |||
should be communicated through an out-of-band mechanism agrred | should be communicated through an out-of-band mechanism agreed upon | |||
between the dCDN and uCDN. | between the dCDN and uCDN. | |||
2. CDNI Additional Capability Objects | 2. CDNI Additional Capability Objects | |||
Section 5 of [RFC8008] describes the FCI Capability Advertisement | Section 5 of [RFC8008] describes the FCI Capability Advertisement | |||
Object, which contains a CDNI Capability Object as well as the | Object, which contains a CDNI Capability Object as well as the | |||
capability object type (a CDNI Payload Type). The section also | capability object type (a CDNI Payload Type). The section also | |||
defines the Capability Objects per such type. Below, we define two | defines the Capability Objects per such type. Below, we define two | |||
additional Capability Objects. | additional Capability Objects. | |||
skipping to change at page 5, line 13 ¶ | skipping to change at line 203 ¶ | |||
traffic that has been delegated. In situations where there are | traffic that has been delegated. In situations where there are | |||
multiple CDN delegations, a uCDN will need to aggregate the usage | multiple CDN delegations, a uCDN will need to aggregate the usage | |||
information from any dCDNs to which it delegated when asked to | information from any dCDNs to which it delegated when asked to | |||
provide usage information, otherwise the traffic may seem unaccounted | provide usage information, otherwise the traffic may seem unaccounted | |||
for. | for. | |||
Example: A Content Provider delegates traffic directly to a uCDN, and | Example: A Content Provider delegates traffic directly to a uCDN, and | |||
that uCDN delegates that traffic to a dCDN. When the Content | that uCDN delegates that traffic to a dCDN. When the Content | |||
Provider polls the uCDN telemetry interface, any of the traffic the | Provider polls the uCDN telemetry interface, any of the traffic the | |||
uCDN delegated to the dCDN would become invisible to the Content | uCDN delegated to the dCDN would become invisible to the Content | |||
Provider unless the uCDN aggregates the dCDN telemetry with its own | Provider, unless the uCDN aggregates the dCDN telemetry with its own | |||
metrics. | metrics. | |||
Property: sources | Property: sources | |||
Description: Telemetry sources made available to the uCDN. | Description: Telemetry sources made available to the uCDN. | |||
Type: A JSON array of Telemetry Source objects (see | Type: A JSON array of Telemetry Source objects (see | |||
Section 2.1.1). | Section 2.1.1). | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
2.1.1. Telemetry Source Object | 2.1.1. Telemetry Source Object | |||
The Telemetry Source Object is built of an associated type, a list of | The Telemetry Source Object is made of an associated type, a list of | |||
exposed metrics, and type-specific configuration data. | exposed metrics, and type-specific configuration data. | |||
Property: id | Property: id | |||
Description: An identifier of a telemetry source. The ID | Description: An identifier of a telemetry source. The ID string | |||
string assigned to this Telemetry Source MUST be unique across | assigned to this Telemetry Source MUST be unique across all | |||
all Telemetry Source objects in the advertisement containining | Telemetry Source objects in the advertisement containing this | |||
this Telemetry Source Object. The ID string MUST remain | Telemetry Source Object. The ID string MUST remain consistent | |||
consistent for the same source reference across advertisements. | for the same source reference across advertisements. | |||
Type: String. | Type: String. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: type | Property: type | |||
Description: A valid telemetry source type. See | Description: A valid telemetry source type (see Section 2.1.1.1). | |||
Section 2.1.1.1. | ||||
Type: String. | Type: String. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: metrics | Property: metrics | |||
Description: The metrics exposed by this source. | ||||
Type: A JSON array of Telemetry Source Metric objects (see | Description: The metrics exposed by this source. | |||
Type: A JSON array of Telemetry Source Metric objects (see | ||||
Section 2.1.1.2). | Section 2.1.1.2). | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: configuration | Property: configuration | |||
Description: a source-specific representation of the Telemetry | Description: a source-specific representation of the Telemetry | |||
Source configuration. For the generic source type, this | Source configuration. For the generic source type, this | |||
configuration format is defined out-of-band. For other types, | configuration format is defined as out-of-band. For other | |||
the configuration format will be specified in a yet to be | types, the configuration format will be specified in a yet-to- | |||
defined telemetry interface specification. The goal of this | be-defined telemetry interface specification. The goal of this | |||
element is to allow for forward compatibility with a formal | element is to allow for forward compatibility with a formal | |||
telemetry interface. | telemetry interface. | |||
Type: A JSON object, the structure of which is specific to the | Type: A JSON object, the structure of which is specific to the | |||
Telemetry Source and outside the scope of this document. | Telemetry Source and outside the scope of this document. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
2.1.1.1. Telemetry Source Types | 2.1.1.1. Telemetry Source Types | |||
At the time of this writing, the registry of valid Telemetry Source | At the time of this writing, the registry of valid Telemetry Source | |||
Object types is limited to a single type: Generic (see | Types is limited to a single type: generic (see Section 3.2.1). | |||
Section 3.2.1). | ||||
+=============+=======================================+ | +=============+=======================================+ | |||
| Source Type | Description | | | Source Type | Description | | |||
+=============+=======================================+ | +=============+=======================================+ | |||
| generic | An object which allows for | | | generic | An object that allows for | | |||
| | advertisement of generic data sources | | | | advertisement of generic data sources | | |||
+-------------+---------------------------------------+ | +-------------+---------------------------------------+ | |||
Table 1 | Table 1 | |||
2.1.1.2. Telemetry Source Metric Object | 2.1.1.2. Telemetry Source Metric Object | |||
The Telemetry Source Metric Object describes the metric to be | The Telemetry Source Metric Object describes the metric to be | |||
exposed. | exposed. | |||
Property: name | Property: name | |||
Description: An identifier for this metric. This name MUST be | Description: An identifier for this metric. This name MUST be | |||
unique among metric objects within the containing Telemetry | unique among metric objects within the containing Telemetry | |||
Source. The name MUST remain consistent for the same source | Source. The name MUST remain consistent for the same source | |||
reference across advertisements. | reference across advertisements. | |||
Type: String. | Type: String. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: time-granularity | Property: time-granularity | |||
Description: The time, in seconds, representing the metric | Description: The time, in seconds, representing the metric data. | |||
data. For example, a value representing the last 5 minutes | For example, a value representing the last 5 minutes would have | |||
would have a time-granularity of 300. | a time-granularity of 300. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
Property: data-percentile | Property: data-percentile | |||
Description: The percentile calculation the data represents, | Description: The percentile calculation the data represents, | |||
i.e., 50 percentile would equate to the median over the time- | i.e., 50 percentile would equate to the median over the time- | |||
granularity. Lack of a data-percentile indicates that the data | granularity. Lack of a data-percentile indicates that the data | |||
MUST be the mean over the time representation. | MUST be the mean over the time representation. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
Property: latency | Property: latency | |||
Description: Time in seconds that the data is behind real-time. | Description: Time in seconds that the data is behind real-time. | |||
This is important to specify to help the uCDN understand how | This is important to specify to help the uCDN understand how | |||
long it might take to reflect traffic adjustments in the | long it might take to reflect traffic adjustments in the | |||
metrics. | metrics. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
2.1.2. Telemetry Capability Object Serialization | 2.1.2. Telemetry Capability Object Serialization | |||
The following shows an example of Telemetry Capability including two | The following shows an example of Telemetry Capability including two | |||
metrics for a source, that is scoped to a footprint. | metrics for a source, that is scoped to a footprint. | |||
{ | { | |||
"capabilities": [ | "capabilities": [ | |||
{ | { | |||
"capability-type": "FCI.Telemetry", | "capability-type": "FCI.Telemetry", | |||
skipping to change at page 8, line 42 ¶ | skipping to change at line 368 ¶ | |||
} | } | |||
] | ] | |||
} | } | |||
2.2. CapacityLimits Capability Object | 2.2. CapacityLimits Capability Object | |||
The CapacityLimits Capability Object enables the dCDN to specify | The CapacityLimits Capability Object enables the dCDN to specify | |||
traffic delegation limits to a uCDN within an FCI.Capabilities | traffic delegation limits to a uCDN within an FCI.Capabilities | |||
advertisement. The limits specified by the dCDN will inform the uCDN | advertisement. The limits specified by the dCDN will inform the uCDN | |||
on how much traffic may be delegated to the dCDN. The limits | on how much traffic may be delegated to the dCDN. The limits | |||
specified by the dCDN should be considered Not To Exceed (NTE) | specified by the dCDN should be considered NTE limits. The limits | |||
limits. The limits should be based on near real-time telemetry data | should be based on near real-time telemetry data that the dCDN | |||
that the dCDN provides to the uCDN. In other words, for each limit | provides to the uCDN. In other words, for each limit that is | |||
that is advertised, there should also exist a telemetry source which | advertised, there should also exist a telemetry source that provides | |||
provides current utilization data against the particular advertised | current utilization data against the particular advertised limit. | |||
limit. | ||||
Property: limits | Property: limits | |||
Description: A collection of CapacityLimit objects. | Description: A collection of CapacityLimit objects. | |||
Type: A JSON array of CapacityLimit objects (see | Type: A JSON array of CapacityLimit objects (see Section 2.2.1). | |||
Section 2.2.1). | ||||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
2.2.1. CapacityLimit Object | 2.2.1. CapacityLimit Object | |||
A CapacityLimit object is used to represent traffic limits for | A CapacityLimit object is used to represent traffic limits for | |||
delegation from the uCDN towards the dCDN. The limit object is | delegation from the uCDN towards the dCDN. The limit object is | |||
scoped to the footprint associated with the FCI capability | scoped to the footprint associated with the FCI capability | |||
advertisement encompassing this object. Limits MUST be considered | advertisement encompassing this object. Limits MUST be considered | |||
using a logical "AND": a uCDN will need to ensure that all limits are | using a logical "AND": A uCDN will need to ensure that all limits are | |||
considered rather than choosing only the most specific. | considered rather than choosing only the most specific. | |||
Property: limit-type | Property: limit-type | |||
Description: The units of maximum-hard and maximum-soft. | Description: The units of maximum-hard and maximum-soft. | |||
Type: String. One of the values listed in Section 2.2.1.1. | Type: String. One of the values listed in Section 2.2.1.1. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: id | Property: id | |||
Description: Specifies an identifier associated with a limit. | Description: Specifies an identifier associated with a limit. | |||
This MAY be used as a relational identifier to a specific | This MAY be used as a relational identifier to a specific | |||
CapacityLimit Object. If specified, this identifier MUST be | CapacityLimit Object. If specified, this identifier MUST be | |||
unique among specified identifiers associated with any other | unique among specified identifiers associated with any other | |||
CapacityLimit objects in the advertisement containing this | CapacityLimit objects in the advertisement containing this | |||
CapacityLimit Object. | CapacityLimit Object. | |||
Type: String. | Type: String. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
Property: maximum-hard | Property: maximum-hard | |||
Description: The maximum unit of capacity that is available for | Description: The maximum unit of capacity that is available for | |||
use. | use. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: maximum-soft | Property: maximum-soft | |||
Description: A soft limit at which a uCDN SHOULD reduce traffic | ||||
Description: A soft limit at which a uCDN SHOULD reduce traffic | ||||
before hitting the hard limit. This value MUST be less than | before hitting the hard limit. This value MUST be less than | |||
the value of maximum-hard. If this value is not specified, it | the value of maximum-hard. If this value is not specified, it | |||
is equal to the value of maximum-hard. | is equal to the value of maximum-hard. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
Property: current | Property: current | |||
Description: Specifies the current usage value of the limit. | Description: Specifies the current usage value of the limit. It | |||
It is NOT RECOMMENDED to specify the current usage value inline | is NOT RECOMMENDED to specify the current usage value inline | |||
with the FCI.CapacityLimits advertisements as it will reduce | with the FCI.CapacityLimits advertisements as it will reduce | |||
the ability to cache the response, but this mechanism exists | the ability to cache the response, but this mechanism exists | |||
for simple use cases where an external telemetry source cannot | for simple use cases where an external telemetry source cannot | |||
be feasibly implemented. The intended method for providing | be feasibly implemented. The intended method for providing | |||
telemetry data is to reference a Telemetry Source object (see | telemetry data is to reference a Telemetry Source object (see | |||
Section 2.1.1) to poll for the current usage. | Section 2.1.1) to poll for the current usage. | |||
Type: Unsigned Integer. | Type: Unsigned Integer. | |||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
Property: telemetry-source | Property: telemetry-source | |||
Description: Mapping of each particular limit to a specific | Description: The mapping of each particular limit to a specific | |||
metric with relevant real-time data provided by a telemetry | metric with relevant real-time data provided by a telemetry | |||
source. | source. | |||
Type: CapacityLimitTelemetrySource object (see | Type: CapacityLimitTelemetrySource object (see Section 2.2.1.2). | |||
Section 2.2.1.2). | ||||
Mandatory-to-Specify: No. | Mandatory-to-Specify: No. | |||
2.2.1.1. CapacityLimit Types | 2.2.1.1. CapacityLimit Types | |||
Below are listed the valid capacity limit-types registered in the | Below are listed the valid capacity limit-types registered in the | |||
CDNI Capacity Limit Types registry. The values specified here | "CDNI Capacity Limit Types" registry. The values specified here | |||
represent the types that were identified as being the most relevant | represent the types that were identified as being the most relevant | |||
metrics for the purposes of traffic delegation between CDNs. | metrics for the purposes of traffic delegation between CDNs. | |||
+=================+=====================+ | +=====================+=====================+ | |||
| Limit Type | Units | | | Capacity Limit Type | Units | | |||
+=================+=====================+ | +=====================+=====================+ | |||
| egress | Bits per second | | | egress | Bits per second | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
| requests | Requests per second | | | requests | Requests per second | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
| storage-size | Total bytes | | | storage-size | Total bytes | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
| storage-objects | Count | | | storage-objects | Count | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
| sessions | Count | | | sessions | Count | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
| cache-size | Total bytes | | | cache-size | Total bytes | | |||
+-----------------+---------------------+ | +---------------------+---------------------+ | |||
Table 2 | Table 2 | |||
2.2.1.2. CapacityLimitTelemetrySource Object | 2.2.1.2. CapacityLimitTelemetrySource Object | |||
The CapacityLimitTelemetrySource Object refers to a specific metric | The CapacityLimitTelemetrySource Object refers to a specific metric | |||
within a Telemetry Source. | within a Telemetry Source. | |||
Property: id | Property: id | |||
Description: Reference to the "id" of a telemetry source | Description: Reference to the "id" of a telemetry source defined | |||
defined by a Telemetry Capability object as defined in | by a Telemetry Capability object as defined in Section 2.1. | |||
Section 2.1. | ||||
Type: String. | Type: String. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: metric | Property: metric | |||
Description: Reference to the "name" property of a metric | Description: Reference to the "name" property of a metric defined | |||
defined within a telemetry source of a Telemetry Capability | within a telemetry source of a Telemetry Capability object. | |||
object. | ||||
Type: String. | Type: String. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
2.2.2. CapacityLimit Object Serialization | 2.2.2. CapacityLimit Object Serialization | |||
The following shows an example of an FCI.CapacityLimits object. | The following shows an example of an FCI.CapacityLimits object. | |||
{ | { | |||
"capabilities": [ | "capabilities": [ | |||
{ | { | |||
"capability-type":"FCI.CapacityLimits", | "capability-type":"FCI.CapacityLimits", | |||
"capability-value":{ | "capability-value":{ | |||
skipping to change at page 12, line 34 ¶ | skipping to change at line 538 ¶ | |||
"<footprint objects>" | "<footprint objects>" | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
3. IANA Considerations | 3. IANA Considerations | |||
3.1. CDNI Payload Types | 3.1. CDNI Payload Types | |||
This document requests the registration of two additional payload | Per this document, IANA has registered two additional payload types | |||
types to the Content Delivery Network Interconnection (CDNI) | in the "CDNI Payload Types" registry within the "Content Delivery | |||
Parameters "CDNI Payload Types" registry: | Network Interconnection (CDNI) Parameters" registry group: | |||
+====================+===============+ | +====================+===========+ | |||
| Payload Type | Specification | | | Payload Type | Reference | | |||
+====================+===============+ | +====================+===========+ | |||
| FCI.Telemetry | RFCthis | | | FCI.Telemetry | RFC 9808 | | |||
+--------------------+---------------+ | +--------------------+-----------+ | |||
| FCI.CapacityLimits | RFCthis | | | FCI.CapacityLimits | RFC 9808 | | |||
+--------------------+---------------+ | +--------------------+-----------+ | |||
Table 3 | Table 3 | |||
[RFC Editor: Please replace RFCthis with the published RFC number for | ||||
this document.] | ||||
3.1.1. CDNI FCI Telemetry Payload Type | 3.1.1. CDNI FCI Telemetry Payload Type | |||
Purpose: The purpose of this Payload Type is to list the supported | Purpose: The purpose of this Payload Type is to list the supported | |||
telemetry sources and the metrics made available by each source. | telemetry sources and the metrics made available by each source. | |||
Interface: FCI. | Interface: FCI. | |||
Encoding: See Section 2.1. | Encoding: See Section 2.1. | |||
3.1.2. CDNI FCI Capacity Limits Payload Type | 3.1.2. CDNI FCI Capacity Limits Payload Type | |||
Purpose: The purpose of this Payload Type is to define Capacity | Purpose: The purpose of this Payload Type is to define Capacity | |||
Limits based on utilization metrics corresponding to telemetry | Limits based on utilization metrics corresponding to telemetry | |||
sources provided by the dCDN. | sources provided by the dCDN. | |||
Interface: FCI. | Interface: FCI. | |||
Encoding: See Section 2.2. | Encoding: See Section 2.2. | |||
3.2. "CDNI Telemetry Source Types" Registry | 3.2. CDNI Telemetry Source Types Registry | |||
IANA will add the following new registry to the "Content Delivery | IANA has added the following new registry within the "Content | |||
Network Interconnection (CDNI) Parameters" group at | Delivery Network Interconnection (CDNI) Parameters" registry group at | |||
https://www.iana.org/assignments/cdni-parameters: | <https://www.iana.org/assignments/cdni-parameters>: | |||
Registry Name: CDNI Telemetry Source Types | Registry Name: CDNI Telemetry Source Types | |||
Registry Description: The CDNI Telemetry Source Types registry | Registry Description: The "CDNI Telemetry Source Types" registry | |||
defines the valid values for the "type" property of the Telemetry | defines the valid values for the "type" property of the Telemetry | |||
Source object defined in Section 2.1.1. | Source object defined in Section 2.1.1. | |||
Registration Procedure: The registry follows the Specification | Registration Procedure: The registry follows the Specification | |||
Required policy as defined in [RFC8126]. The Designated Expert | Required policy as defined in [RFC8126]. The designated expert | |||
should consider the following guidelines when evaluating registration | should consider the following guidelines when evaluating | |||
requests: | registration requests: | |||
* The new type definition does not duplicate existing types. | * The new type definition does not duplicate existing types. | |||
* The review should verify that the telemetry source is applicable | * The review should verify that the telemetry source is | |||
to the CDNI use cases and that the description is clear and | applicable to the CDNI use cases and that the description is | |||
unambiguous. | clear and unambiguous. | |||
* The registration is applicable for general use and not | * The registration is applicable for general use and is not | |||
proprietary. | proprietary. | |||
* The "configuration" property has a fully specified object | * The "configuration" property has a fully specified object | |||
definition with a description of each defined property. | definition with a description of each defined property. | |||
The following values will be registered: | The following value has been registered: | |||
+=============+===============+ | +=============+===========+ | |||
| Source Type | Specification | | | Source Type | Reference | | |||
+=============+===============+ | +=============+===========+ | |||
| generic | RFCthis | | | generic | RFC 9808 | | |||
+-------------+---------------+ | +-------------+-----------+ | |||
Table 4 | Table 4 | |||
3.2.1. CDNI Generic Telemetry Source Type | 3.2.1. CDNI Generic Telemetry Source Type | |||
Purpose: The purpose of this Telemetry Source Type is to provide a | Purpose: The purpose of this Telemetry Source Type is to provide a | |||
source-agnostic telemetry type that may be used for generic | source-agnostic telemetry type that may be used for generic | |||
telemetry source advertisement. | telemetry source advertisement. | |||
Usage: See Section 2.1.1. | Usage: See Section 2.1.1. | |||
3.3. "CDNI Capacity Limit Types" Registry | 3.3. CDNI Capacity Limit Types Registry | |||
IANA will add the following new registry to the "Content Delivery | IANA has added the following new registry within the "Content | |||
Network Interconnection (CDNI) Parameters" group at | Delivery Network Interconnection (CDNI) Parameters" registry group at | |||
https://www.iana.org/assignments/cdni-parameters: | <https://www.iana.org/assignments/cdni-parameters>: | |||
Registry Name: CDNI Capacity Limit Types | Registry Name: CDNI Capacity Limit Types | |||
Registry Description: The CDNI Capacity Limit Types registry defines | Registry Description: The "CDNI Capacity Limit Types" registry | |||
the valid values of the "limit-type" property of a CapacityLimit | defines the valid values of the "limit-type" property of a | |||
object defined in Section 2.2.1. | CapacityLimit object defined in Section 2.2.1. | |||
Registration Procedure: The registry follows the Specification | Registration Procedure: The registry follows the Specification | |||
Required policy as defined in [RFC8126]. The Designated Expert | Required policy as defined in [RFC8126]. The designated expert | |||
should consider the following guidelines when evaluating registration | should consider the following guidelines when evaluating | |||
requests: | registration requests: | |||
* The new capacity limit type does not duplicate existing entries. | * The new capacity limit type does not duplicate existing | |||
entries. | ||||
* The submission has a defined purpose. The newly defined capacity | * The submission has a defined purpose. The newly defined | |||
limit type should be clearly justified in the context of one or | capacity limit type should be clearly justified in the context | |||
more CDNI use cases. | of one or more CDNI use cases. | |||
* The description of the capacity limit type is well-documented and | * The description of the capacity limit type is well-documented | |||
unambiguous. | and unambiguous. | |||
The following values will be registered: | The following values have been registered: | |||
+=====================+=====================+===============+ | +=====================+=====================+===========+ | |||
| Capacity Limit Type | Units | Specification | | | Capacity Limit Type | Units | Reference | | |||
+=====================+=====================+===============+ | +=====================+=====================+===========+ | |||
| egress | Bits per second | RFCthis | | | egress | Bits per second | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| requests | Requests per second | RFCthis | | | requests | Requests per second | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| storage-size | Total bytes | RFCthis | | | storage-size | Total bytes | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| storage-objects | Count | RFCthis | | | storage-objects | Count | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| sessions | Count | RFCthis | | | sessions | Count | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
| cache-size | Total bytes | RFCthis | | | cache-size | Total bytes | RFC 9808 | | |||
+---------------------+---------------------+---------------+ | +---------------------+---------------------+-----------+ | |||
Table 5 | Table 5 | |||
Usage: See Section 2.2.1.1. | Usage: See Section 2.2.1.1. | |||
4. Security Considerations | 4. Security Considerations | |||
This specification is in accordance with the CDNI Request Routing: | This specification is in accordance with the CDNI Request Routing: | |||
Footprint and Capabilities Semantics. As such, it is subject to the | Footprint and Capabilities Semantics. As such, it is subject to the | |||
security and privacy considerations as defined in Section 7 of | security and privacy considerations as defined in Section 7 of | |||
[RFC8008]. | [RFC8008]. | |||
5. Acknowledgements | 5. References | |||
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. | ||||
6. References | ||||
6.1. Normative References | 5.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | |||
R., and K. Ma, "Content Delivery Network Interconnection | R., and K. Ma, "Content Delivery Network Interconnection | |||
(CDNI) Request Routing: Footprint and Capabilities | (CDNI) Request Routing: Footprint and Capabilities | |||
Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | |||
skipping to change at page 16, line 14 ¶ | skipping to change at line 698 ¶ | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
6.2. Informative References | 5.2. Informative References | |||
[OC-CII] Ryan, A., Ed., Rosenblum, B., Goldstein, G., Roskin, R., | ||||
and G. Bichot, "Open Caching Capacity Insights - | ||||
Functional Specification (Placeholder before | ||||
publication)", <https://www.svta.org/document/open- | ||||
caching-capacity-interface/>. | ||||
[OC-RR] Finkelman, O., Ed., Hofmann, J., Klein, E., Mishra, S., | ||||
Ma, K., Sahar, D., and B. Zurat, "Open Caching Request | ||||
Routing - Functional Specification", Version 1.1, 4 | ||||
October 2019, <https://www.svta.org/product/open-cache- | ||||
request-routing-functional-specification/>. | ||||
[OCWG] "Open Caching Home Page", <https://opencaching.svta.org/>. | ||||
[RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | |||
Distribution Network Interconnection (CDNI) Problem | Distribution Network Interconnection (CDNI) Problem | |||
Statement", RFC 6707, DOI 10.17487/RFC6707, September | Statement", RFC 6707, DOI 10.17487/RFC6707, September | |||
2012, <https://www.rfc-editor.org/info/rfc6707>. | 2012, <https://www.rfc-editor.org/info/rfc6707>. | |||
[RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | |||
"Content Delivery Network Interconnection (CDNI) | "Content Delivery Network Interconnection (CDNI) | |||
Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | |||
<https://www.rfc-editor.org/info/rfc8006>. | <https://www.rfc-editor.org/info/rfc8006>. | |||
[SVTA] "Streaming Video Technology Alliance Home Page", | [SVTA] "Streaming Video Technology Alliance Home Page", | |||
<https://www.svta.org>. | <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 | Authors' Addresses | |||
Andrew Ryan | Andrew Ryan | |||
Disney Streaming | Disney Streaming | |||
1211 Avenue of the Americas | 1211 Avenue of the Americas | |||
New York | New York, NY 10036 | |||
, NY 10036 | ||||
United States of America | United States of America | |||
Email: andrew@andrewnryan.com | Email: andrew@andrewnryan.com | |||
Ben Rosenblum | Ben Rosenblum | |||
Vecima | Vecima | |||
4375 River Green Pkwy #100 | 4375 River Green Pkwy #100 | |||
Duluth | Duluth, GA 30096 | |||
, GA 30096 | ||||
United States of America | United States of America | |||
Email: ben@rosenblum.dev | Email: ben@rosenblum.dev | |||
Nir B. Sopher | Nir B. Sopher | |||
Qwilt | Qwilt | |||
6, Ha'harash | 6, Ha'harash | |||
Hod HaSharon | Hod HaSharon 4524079 | |||
4524079 | ||||
Israel | Israel | |||
Email: nir@apache.org | Email: nir@apache.org | |||
End of changes. 142 change blocks. | ||||
312 lines changed or deleted | 291 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |