Network Working Group A. Ryan
Internet-Draft Limelight Networks
Updates: 8006,8008 (if approved) B. Rosenblum
Intended status: Standards Track Vecima
Expires: January 6, 2022 N. Sopher
Qwilt
July 5, 2021
CDNI Capacity Insights Capability Advertisment Extensions
draft-ryan-cdni-capacity-insights-extensions-00
Abstract
Open Caching architecture is a use case of Content Delivery Networks
Interconnection (CDNI) in which the commercial Content Delivery
Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer
serves as the downstream CDN (dCDN). This document supplements to
the CDNI Capability Objects defined in RFC 8008 and CDNI Metadata
Objects in RFC 8006. The defined Capability Objects structure and
interface for advertisments and managment of a downstream CDN
capacity.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
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
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 6, 2022.
Copyright Notice
Copyright (c) 2021 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
Ryan, et al. Expires January 6, 2022 [Page 1]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
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 Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 4
2. CDNI Additonal Capability Objects . . . . . . . . . . . . . . 4
2.1. Telemetry Capability Object . . . . . . . . . . . . . . . 4
2.1.1. Telemetry Source Object . . . . . . . . . . . . . . . 4
2.1.1.1. Telemetry Source Types . . . . . . . . . . . . . 5
2.1.1.2. Telemetry Source Metric Object . . . . . . . . . 5
2.1.2. Telemetry Capability Object Serialization . . . . . . 6
2.2. CapacityLimits Capability Object . . . . . . . . . . . . 7
2.2.1. Capacity Limit Object . . . . . . . . . . . . . . . . 8
2.2.1.1. Capacity Limit Types . . . . . . . . . . . . . . 9
2.2.1.2. Capacity Limit Telemetry Source Object . . . . . 9
2.2.2. Capacity Limit Object Serialization . . . . . . . . . 10
2.3. RequestedCapacityLimits Object . . . . . . . . . . . . . 11
2.3.1. Requsted Limits Object . . . . . . . . . . . . . . . 11
2.3.2. Telemetry Capability Object Serialization . . . . . . 12
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
3.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 13
3.1.1. CDNI FCI Telemetry Payload Type . . . . . . . . . . . 14
3.1.2. CDNI FCI Capacity Limits Payload Type . . . . . . . . 14
3.1.3. CDNI MI Requested Capacity Limits Payload Type . . . 14
4. Security Considerations . . . . . . . . . . . . . . . . . . . 14
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.1. Normative References . . . . . . . . . . . . . . . . . . 15
6.2. Informative References . . . . . . . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction
The Streaming Video Alliance [SVA] is a global association that works
to solve streaming video challenges in an effort to improve end-user
experience and adoption. The Open Caching Working Group [OCWG] of
the Streaming Video Alliance [SVA] is focused on the delegation of
video delivery requests from commerical CDNs to a caching layer at
the ISP's network. Open Caching architecture is a specific use case
of CDNI where the commercial CDN is the upstream CDN (uCDN) and the
ISP caching layer is the downstream CDN (dCDN). While delegating
Ryan, et al. Expires January 6, 2022 [Page 2]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
traffic from one CDN to the other, it is important to make sure that
an appropriate amount of traffic is delegated. In order to achives
that, the TBD: Open Caching Capacity Insight Specification [OC-CII]
defines a feedback mechanism to inform the delegator how much traffic
is appropriate to delegate. The traffic level information provided
by that interface will be consumed by entities, such as the Open
Caching Request router, to help inform that entity's traffic
delegation decisions. This document defines and registers CDNI
Payload Types (as defined at section 7.1 of [RFC8006]). These
Payload types are used for Capability Objects added to those defined
at section 4 of [RFC8008], which are required for the Open Caching
Capacity Insights Interface.
For consistency with other CDNI documents this document follows the
CDNI convention of uCDN (upstream CDN) and dCDN (downstream CDN) to
represent the commercial CDN and ISP caching layer respectively.
This document registers two CDNI Payload Types (section 7.1 of
[RFC8006]) for the defined capability objects:
o Telemetry Payload Type: A payload type for the capability object
which defines the supported telemetry sources, the metrics made
available by that source, and corresponding configuration
appropriate to the type of the source (host, port, protocol,
etc..)
o CapacityLimits Payload Type: a payload type for the capability
object which defines Capacity Limits based on a set of defined
limit types and a mapping from those limits to corresponding
telemetry sources for supporting real-time metrics.
1.1. Terminology
The following terms are used throughout this document:
o CDN - Content Delivery Network
Additionally, this document reuses the terminology defined in
[RFC6707], [RFC7336], [RFC8006], [RFC8007], [RFC8008], and [RFC8804].
Specifically, we use the following CDNI acronyms:
o uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see
[RFC7336] )
Ryan, et al. Expires January 6, 2022 [Page 3]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
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.
2. CDNI Additonal Capability Objects
Section 5 of [RFC8008] describes the FCI Capability Advertisement
Object, which contains a CDNI Capability Object as well as the
capability object type (a CDNI Paylod 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
"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 also be included.
2.1. Telemetry Capability Object
The Telemetry Capability Object is used to define a list of telemetry
sources made available by the dCDN to the uCDN.
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 build of an associated type, a list of
exposed metrics, and type-specific configuration data.
Property: id
Description: A unique identifier.
Type: String.
Ryan, et al. Expires January 6, 2022 [Page 4]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
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: Type specific configuration data.
Type: TBD.
Mandatory-to-Specify: No.
2.1.1.1. Telemetry Source Types
Below are listed the valid telemetry source types. TBD: How do we
extend this list? Do we need a registry?
+---------------------------------+---------------------------------+
| Source Type | Description |
+---------------------------------+---------------------------------+
| generic | TBD |
+---------------------------------+---------------------------------+
2.1.1.2. Telemetry Source Metric Object
The Telemetry Source Metric Object describe the metric to be exposed.
Property: name
Description: An identifier unique within this telemetry source.
Type: String.
Ryan, et al. Expires January 6, 2022 [Page 5]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Mandatory-to-Specify: Yes.
Property: time-granularity
Description: Represents the time frame that the data represents
in seconds. I.e. is this a data set over 5 minutes, one hour,
etc..
Type: Float (or Integer - TBD).
Mandatory-to-Specify: No.
Property: data-percentile
Description: The percentile calculation the data represents,
i.e. 50 percentile would equate to the average over the time-
granularity.
Type: Float (or Integer - TBD).
Mandatory-to-Specify: No.
Property: latency
Description: Time in second that the data is behind of real
time.
Type: Float (or Integer - TBD).
Mandatory-to-Specify: No.
2.1.2. Telemetry Capability Object Serialization
The following shows an example of Telemetry Capability including 2
sources.
Ryan, et al. Expires January 6, 2022 [Page 6]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
"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 Capacity Limits Capability Object represents the limits to be
advertised based on a particular Telemetry element..
Property: total-limits-host
Description:The "Distinguished CDN-Domain" used for adjustment
of the total limits.
Type: String.
Mandatory-to-Specify: No. Required only if
MI.RequestedCapacityLimits is supported.
Property: total-limits
Description: The top level limits for the footprint.
Ryan, et al. Expires January 6, 2022 [Page 7]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Type: A JSON array of Capacity Limit objects (see
Section 2.2.1).
Mandatory-to-Specify: Yes.
Property: host-limits
Description: Limits for particular CDN Domains.
Type: A JSON array of Capcity Limit objects (see
Section 2.2.1).
Mandatory-to-Specify: No.
2.2.1. Capacity Limit Object
The Capacity Limit Object is built of TBD.
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: maximum-hard
Description: The maximum unit of capacity that is available for
use.
Type: Float (or Integer - TBD).
Mandatory-to-Specify: Yes.
Property: maximum-soft
Description: A soft limit at which an upstream should consider
deducing traffic to prevent hitting the hard limit.
Type: Float (or Integer - TBD).
Mandatory-to-Specify: No.
Property: telemetry-source
Ryan, et al. Expires January 6, 2022 [Page 8]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Description: Mapping of each a particular limit to a specific
metric with relevant real-time data provided by a telemetry
source.
Type: Capcity Limit Telemetry Source object (see
Section 2.2.1.2).
Mandatory-to-Specify: No.
Property: host
Description: The CDN Domain to which the limit applies.
Type: String.
Mandatory-to-Specify: Only when is part of the host-limits
list.
2.2.1.1. Capacity Limit Types
Below are listed the valid capacity limit types. TBD: How do we
extend this list? Do we need a registry? Maybe omit this list and
make it subject ot bootstrapping?
+----------------------------------+--------------------------------+
| Limit Type | Units |
+----------------------------------+--------------------------------+
| egress | Bits per second |
| requests | Requests per second |
| storage-size | Total bytes |
| storage-objects | Count |
| sessions | Count |
| cache-size | Total bytes |
+----------------------------------+--------------------------------+
2.2.1.2. Capacity Limit Telemetry Source Object
The Capacity Limit Telemetry Source Object refers to a specific
metric within a Telementry Source.
Property: id
Description: Reference to the "id" of a telemetry source
defined by a Telemetry Capability object.
Type: String.
Mandatory-to-Specify: Yes.
Ryan, et al. Expires January 6, 2022 [Page 9]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Property: metric
Description: Reference to the "name" property of a metric as
defined for the referenced telemetry source.
Type: String.
Mandatory-to-Specify: Yes.
2.2.2. Capacity Limit Object Serialization
The following shows an example of ... TBD.
"capabilities": [
{
"capability-type": "FCI.CapacityLimits"
"capability-value": {
"total-limits-host": "op-b.op-a.com",
"total-limits": [
{
"limit-type": "egress",
"maximum-hard": 50000000000,
"maximum-soft": 25000000000,
"telemetry-source": {
"id": "capacity_metrics_region1",
"metric": "egress_5m"
}
}
],
"host-limits": [
{
"host": "serviceA.cdn.example.com",
"limits": [
"limit-type": "egress",
"maximum-hard": 20000000000,
"maximum-soft": 10000000000,
"telemetry-source": {
"id": "capacity_metrics_region1",
"metric": "egress_service2_5m"
}
]
},
{
"host": "serviceB.cdn.example.com",
"limits": [
"limit-type": "egress",
"maximum-hard": 30000000000,
Ryan, et al. Expires January 6, 2022 [Page 10]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
"maximum-soft": 15000000000,
"telemetry-source": {
"id": "capacity_metrics_region1",
"metric": "egress_service2_5m"
}
]
}
]
},
"footprints": [
<footprint objects>
]
}
]
2.3. RequestedCapacityLimits Object
To enable the uCDN to request changes in the dCDN limits, a new
metadata object is introduced. As metadata is associated with a
host, the total limits for the uCDN on a particular footprint are
associated with the "Distinguished CDN-Domain" as defined by
[RFC7336]. This will typically be a host utilized in
FCI.RedirectTarget, though it can be any arbitrary host as long as it
is not one of the CDN-Domains used for serving client requests. This
host as used for requested changes in the total limits is defined in
the total-limits-host property of FCI.CapacityLimits. Similarly, an
adjustment request for any CDN-Domain may be made using the same
metadata object associated with the corresponding host. These
correspond to the limits defined as host-limits in
FCI.CapacityLimits.
Property: requested-limits
Description: Capacity Limits being requedted by the uCDN to the
dCDN.
Type: A JSON array of Requested Limits objects (see
Section 2.3.1).
Mandatory-to-Specify: Yes.
2.3.1. Requsted Limits Object
The Requested Limit Object is build of an associated type, a value
assocaited with the type, and the footprints that the limit should be
associated with.
Ryan, et al. Expires January 6, 2022 [Page 11]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Property: limit-type
Description: A limit type as defined in Section 2.2.1.1.
Type: String.
Mandatory-to-Specify: Yes.
Property: limit-value
Description: A unit of capacity defined in the maximum-hard
property of Section 2.2.1.
Type: Float (or Integer - TBD).
Mandatory-to-Specify: Yes.
Property: footprints
Description: The CDNI Footprint objects this requested limit
are associated with.
Type: A JSON array of CDNI Footprints (see [RFC8006]).
Mandatory-to-Specify: Yes.
2.3.2. Telemetry Capability Object Serialization
The following shows an example of MI.RequestedCapacityLimits object.
Ryan, et al. Expires January 6, 2022 [Page 12]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
{
"host": "op-b.op-a.com",
"host-metadata": {
"metadata": [
...,
{
"generic-metadata-type": "MI.RequestedCapacityLimits",
"generic-metadata-value": {
"requested-limits": [
{
"limit-type": "egress",
"limit-value": 80000000000,
"footprints": [{
"footprint-type": "ipv4cidr",
"footprint-value": ["192.0.2.0/24", "198.51.100.0/24"]
}]
},
{
...
}
]
}
}
]
}
}
3. IANA Considerations
3.1. CDNI Payload Types
As described in section 7.1 of [RFC8006] , the "CDNI Payload Types"
subregistry was created within the "Content Delivery Network
Interconnection (CDNI) Parameters" registry (TBD verify name or omit
extra info). The created namespace defines the valid Payload Types,
and is already populated with the types described in Section 7.1 of
[RFC8006] as well as the types described in section 6.1 of [RFC8008].
This document requests the registration of the two additional payload
types:
Ryan, et al. Expires January 6, 2022 [Page 13]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
+---------------------------------+---------------------------------+
| Payload Type | Specification |
+---------------------------------+---------------------------------+
| FCI.Telemetry | RFCthis |
| FCI.CapacityLimits | RFCthis |
| MI.RequestedCapacityLimits | RFCthis |
+---------------------------------+---------------------------------+
[RFC Editor: Please replace RFCthis with the published RFC number for
this document.]
3.1.1. CDNI FCI Telemetry Payload Type
Purpose: The purpose of this Payload Type is TBD (maybe: to list
the supported telemetry sources and the metrics made available by
each source).
Interface: FCI.
Encoding: See section Section 2.1.
3.1.2. CDNI FCI Capacity Limits Payload Type
Purpose: The purpose of this Payload Type is TBD (maybe: defines
Capacity Limits based on a set of defined limit types and a
mapping from those limits to corresponding telemetry sources for
supporting real-time metrics).
Interface: FCI.
Encoding: See section Section 2.2.
3.1.3. CDNI MI Requested Capacity Limits Payload Type
Purpose: The purpose of this Payload Type is to allow a uCDN to
request a CapacityLimit update from a dCDN
Interface: MI.
Encoding: See section Section 2.3.
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 8 of
[RFC8006] and in Section 7 of [RFC8008] respectively.
Ryan, et al. Expires January 6, 2022 [Page 14]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
MORE - TBD
5. Acknowledgements
The authors would like to express their gratitude to TBD for TBD
(their guidance / contribution / reviews ...)
6. References
6.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>.
[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>.
[RFC8007] Murray, R. and B. Niven-Jenkins, "Content Delivery Network
Interconnection (CDNI) Control Interface / Triggers",
RFC 8007, DOI 10.17487/RFC8007, December 2016,
<https://www.rfc-editor.org/info/rfc8007>.
[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>.
[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>.
[RFC8804] Finkelman, O. and S. Mishra, "Content Delivery Network
Interconnection (CDNI) Request Routing Extensions",
RFC 8804, DOI 10.17487/RFC8804, September 2020,
<https://www.rfc-editor.org/info/rfc8804>.
6.2. Informative References
Ryan, et al. Expires January 6, 2022 [Page 15]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
[OC-CII] Finkelman, O., Ed., Hofmann, J., Klein, E., Mishra, S.,
Ma, K., Sahar, D., and B. Zurat, "Open Caching - Capacity
Insights Interface Functional Specification (TBD: write it
and fix the reference)", Version 1.1, October 2019,
<https://www.streamingvideoalliance.org/books/open-cache-
request-routing-functional-specification/>.
[OCWG] "Open Caching Home Page",
<https://www.streamingvideoalliance.org/technical-groups/
open-caching/>.
[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>.
[RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed.,
"Framework for Content Distribution Network
Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336,
August 2014, <https://www.rfc-editor.org/info/rfc7336>.
[SVA] "Streaming Video Alliance Home Page",
<https://www.streamingvideoalliance.org>.
Authors' Addresses
Andrew Ryan
Limelight Networks
5177 Brandin Ct.
Fremont
,
CA
94538
US
Email:
andrew@andrewnryan.com
Ryan, et al. Expires January 6, 2022 [Page 16]
Internet-DraCDNI Capacity Insights Capability Advertisment Ex July 2021
Ben Rosenblum
Vecima
4375 River Green Pkwy #100
Duluth
,
GA
30096
US
Email:
ben@rosenblum.dev
Nir B. Sopher
Qwilt
6, Ha'harash
Hod HaSharon
,
4524079
Israel
Email:
nir@apache.org
Ryan, et al. Expires January 6, 2022 [Page 17]