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": [ ] } ] 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": [ ] } ] 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, . [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, . [RFC8007] Murray, R. and B. Niven-Jenkins, "Content Delivery Network Interconnection (CDNI) Control Interface / Triggers", RFC 8007, DOI 10.17487/RFC8007, December 2016, . [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, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8804] Finkelman, O. and S. Mishra, "Content Delivery Network Interconnection (CDNI) Request Routing Extensions", RFC 8804, DOI 10.17487/RFC8804, September 2020, . 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, . [OCWG] "Open Caching Home Page", . [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, . [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, . [SVA] "Streaming Video Alliance Home Page", . 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]