Internet-Draft CDNI Capacity Insights Capability Advert October 2021
Ryan, et al. Expires 25 April 2022 [Page]
Workgroup:
Network Working Group
Internet-Draft:
draft-ryan-cdni-capacity-insights-extensions-01
Updates:
8006, 8008 (if approved)
Published:
Intended Status:
Standards Track
Expires:
Authors:
A. Ryan
Limelight Networks
B. Rosenblum
Vecima
N. Sopher
Qwilt

CDNI Capacity Insights Capability Advertisment Extensions

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 25 April 2022.

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 traffic from one CDN to the other, it is important to make sure that an appropriate amount of traffic is delegated. In order to achive that, the SVA 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 [OC-RR], 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 [OC-CII].

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:

  • 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..)
  • 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.

and describes usage of a CDNI Generic Metadata object:

  • MI.RequestedCapacityLimits: A generic CDNI Metadata object which allows the uCDN to solicit the dCDN to reconsider Limits. This object is being proposed as part of CDNI Metadata Model Extensions [OC-MME]

1.1. Terminology

The following terms are used throughout this document:

  • 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:

  • uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see [RFC7336] )

1.2. Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

1.3. Objectives

In order to enable information exchange between a uCDN and a dCDN about acceptable levels of traffic to delegate, a design has been developed as follows:

In normal operation a uCDN will communicate with a dCDN, via an interface, to collect and understand any limits that a dCDN has set forth for traffic delegation from a uCDN. These limits will come in the form of metrics such as bits per second, requests per second, etc.. These limits can be thought of as Not to Exceed (NTE) limits.

The dCDN should provide access to a telemetry source of near real time metrics that the uCDN can use to track current usage and compare that to the limits the dCDN has put forth and adjust traffic delegation decisions accordingly to keep current usage under the specified limits. In summary, the dCDN will inform the uCDN of limits in how much traffic it should delegate towards the dCDN and then provide a telemetry source that the uCDN can use to track its current usage. This allows for a non ambiguous definition of what a particular limit means and how to track usage against it.

Limits that are communicated from the dCDN to the uCDN should be considered valid based on the TTL of the response. The intention is that the limits would be long lived and would represent a reasonable peak limit that the uCDN should target throughout the course of a time period defined by the TTL.

In the event that a dCDN needs to inform a uCDN of an update to a previously communicated limit, the dCDN will be able to leverage a uCDN callback endpoint to inform the uCDN of adjusted limits. The most common use case for this would be related to dCDN infrastructure issues which reduced the amount of capacity available.

In the inverse of the above, if a uCDN would like to ask a dCDN to reconsider a previously established limit, the uCDN can make a call to the dCDN API interface with a proposed limit. The dCDN can consider the requested limit and choose to send the uCDN an updated limit if it meets the dCDN criteria. This is an asynchronous process. When the uCDN sends the solicitation to the dCDN, the dCDN will acknowledge receipt of the request, but will process the request with no guarantee that it will trigger an update to any limits.

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. Telemetry data is being defined as near real time aggregated metics of dCDN utilization, such as bits per second egress, and should be specific to the uCDN and dCDN traffic delegation relationship. Telemetry data is uniqiely defined by a source id, a metrics name, along with the footprints that are associated with an FCI.Capability advertisement. Telemetry data is an important component for CDNI delegation. The reasons that Telemetry information is important to traffic delegation is as follows: In situations where there are mutiple delegations, a uCDN will need to incorporate usage information from it's dCDN in such as manner as to allow higher level uCDNs to gain vislibility into traffic that is being delegated to a dCDN. An example of this is if a Content Provider delegates traffic directly to a CDN, and that CDN decides to further delegate traffic to a dCDN, if the Content Provider polls the uCDN for traffic usage, without the uCDN integrating the Telemetry data of it's dCDN, any traffic the uCDN delegated would become invisible to the Content Provider. When defining a Capacity Limit, the meaning of a limit might be considered ambiguous if the uCDN and dCDN are defining current usage via different data sources. Having the dCDN provide a data source defining usage that both itself and the uCDN reference, allows a non ambiguous metric to use when determing current usage and how that compares to a limit

  • 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 built of an associated type, a list of exposed metrics, and type-specific configuration data.

  • Property: id

    • Description: A unique identifier of a telemetry source.
    • Type: String.
    • Mandatory-to-Specify: Yes.
  • Property: type

    • Description: A valid telemetry source type. See Section 2.1.1.1.
    • Type: String.
    • Mandatory-to-Specify: Yes.
  • Property: metrics

    • Description: The metrics exposed by this source.
    • Type: A JSON array of Telemetry Source Metric objects (see Section 2.1.1.2).
    • Mandatory-to-Specify: Yes.
  • Property: configuration

    • Description: a source-specific representation of the Telemetry source configuration. For the generic source type, this configuration format is defined out-of-band. For other types, the configuration format will be specified in a yet to be defined Telemetry Interface specification. The goal of this element is to allow for forward compatability with a formal Telemetry interface.
    • Type: A JSON object: TBD
    • Mandatory-to-Specify: No.
2.1.1.1. Telemetry Source Types

Below are the listed valid telemetry source types. At the time of this draft, the type registry is limit to a single type of Generic. The intention of this type registry is to allow for future extension to reference a yet to be drafted specification for a CDNI Telemetry interface, which would standardize the definition, format,etc of Telemetry data between participants of a CDNI workflow.

Table 1
Source Type Description
generic An object which allows for advertisement of generic datasources
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.
    • 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: Integer.
    • Mandatory-to-Specify: No.
  • Property: data-percentile

    • Description: The percentile calculation the data represents, i.e. 50 percentile would equate to the median over the time-granularity. Lack of a data-percentile will mean that the data is the average over the time representation.
    • Type: Integer.
    • Mandatory-to-Specify: No.
  • Property: latency

    • Description: Time in seconds that the data is behind of real time. This is important to specify to help the uCDN to understand how long it might take to reflect traffic adjustments in the metrics.
    • Type: Integer.
    • Mandatory-to-Specify: No.

2.1.2. Telemetry Capability Object Serialization

The following shows an example of Telemetry Capability including 2 metrics for a source, that is scoped to a footprint.


"capabilities": [
  {
    "capability-type": "FCI.Telemetry",
    "capability-value": {
      "sources": [
        {
          "id": "capacity_metrics_region1",
          "type": "generic",
          "metrics": [
            {
              "name": "egress_5m",
              "time-granularity": 300,
              "data-percentile": 50,
              "latency": 1500
            },
            {
              "name": "requests_5m",
               ...
            }
          ]
        }
      ]
    },
    "footprints": [
      <footprint objects>
    ]
  }
]

2.2. CapacityLimits Capability Object

The Capacity Limits Capability Object enables the dCDN to specify traffic delegation limits to a uCDN within an FCI.Capabilities advertisement. The limits specified by the dCDN will inform the uCDN on how much traffic can be delegated to the dCDN. The limits specified by the dCDN should be considered Not To Exceed (NTE) limits. The limits should be based on near time telemetry data that the dCDN provides to the uCDN. In any instance where there are multiple limits, the uCDN must consider and honor all specified limits and use the most restrictive limit when applicable.

  • Property: total-limits

    • Description: The top level limits for the footprint. This limit represents traffic limits scoped to total delegation from the uCDN towards the dCDN.
    • 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. These limits are more specific than the total-limits values since they are scoped to a particual host value.
    • Type: A JSON array of Capacity Limit objects (see Section 2.2.1).
    • Mandatory-to-Specify: No.

2.2.1. Capacity Limit Object

The Capacity Limit Object is a JSON object which will be used with the total-limits and host-limits objects.

  • 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: Integer.
    • 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: Integer.
    • Mandatory-to-Specify: No.
  • Property: telemetry-source

    • 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 included within a host-limits array.
2.2.1.1. Capacity Limit Types

Below are listed the valid capacity limit types. Additional limits would need to be specified and extended into this list. The values specified here represent the types that were identified as being the most relevant metrics for the purposes of traffic delegation between CDNs.

Table 2
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.
  • Property: metric

    • Description: Reference to the "name" property of a metric defined within a telemetry source of an FCI.Telemetry Capability object.
    • Type: String.
    • Mandatory-to-Specify: Yes.

2.2.2. Capacity Limit Object Serialization

The following shows an example of an FCI.CapacityLimits object.


"capabilities": [
  {
    "capability-type": "FCI.CapacityLimits"
    "capability-value": {
      "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,
            "maximum-soft": 15000000000,
            "telemetry-source": {
              "id": "capacity_metrics_region1",
              "metric": "egress_service2_5m"
            }
          ]
        }
      ]
    },
    "footprints": [
      <footprint objects>
    ]
  }
]

2.3. RequestedCapacityLimits Object

The MI.RequestedCapacityLimits Generic Metadata object, which is cross referenced in CDNI Metadata Model Extensions [OC-MME], is fully detailed within this document. To enable the uCDN to request changes in dCDN limits, a new metadata object is introduced. Using this object, a uCDN can request that a dCDN reconsider limits, as defined by an FCI.CapacityLimits advertisement. The MI.RequestedCapacityLimits object must be scoped within an MI.HostIndex object and as such must be scoped to a host. The host parameter value must be a CDN-Domain that the dCDN has been configured to accept requests for. It is the responsibility of the dCDN to make any required adjustments to the FCI.CapacityLimits.total-limits if any per host limit updates might exceed values specified via the FCI.CapacityLimits.total-limit. The requested limits must specify a footprint, and that footprint should be one in which the dCDN has advertised a capability to support.

  • 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.

  • 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: Integer.
    • 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.


{
  "host": "serviceA.cdn.example.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

simialr to the type definitions 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 three additional payload types:

Table 3
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 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 to define Capacity Limits based on a utilization metrics corresponding to telemetry sources provided by the dCDN.
  • 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.

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, , <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, , <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, , <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, , <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, , <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, , <https://www.rfc-editor.org/info/rfc8804>.

6.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.streamingvideoalliance.org/books/open-cache-capacity-insights-functional-specification/>.
[OC-MME]
Goldstein, G., Ed., Power, W., Bichot, G., and A. Siloniz, "CDNI Metadata Model Extensions", Version 00, , <https://datatracker.ietf.org/doc/html/draft-goldstein-cdni-metadata-model-extensions-00>.
[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, , <https://www.streamingvideoalliance.org/books/open-cache-request-routing-functional-specification/>.
[OCWG]
"Open Caching Home Page", <https://opencaching.streamingvideoalliance.org/>.
[RFC6707]
Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content Distribution Network Interconnection (CDNI) Problem Statement", RFC 6707, DOI 10.17487/RFC6707, , <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, , <https://www.rfc-editor.org/info/rfc7336>.
[SVA]
"Streaming Video Alliance Home Page", <https://www.streamingvideoalliance.org>.

Authors' Addresses

Andrew Ryan
Limelight Networks
1465 N Scottsdale Road, Suite 500
Scottsdale , AZ 85257
United States of America
Ben Rosenblum
Vecima
4375 River Green Pkwy #100
Duluth , GA 30096
United States of America
Nir B. Sopher
Qwilt
6, Ha'harash
Hod HaSharon 4524079
Israel