CDNI Metadata Model Extensions
Lumen Technologies
US
glenng1215@gmail.com
Lumen Technologies
US
wrpower@gmail.com
Broadpeak
France
guillaume.bichot@gmail.com
Telefonica
Spain
alfonsosiloniz@gmail.com
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 proposed extensions to the Medadata Model by way of a set of GenericMetadata objects that address extend the original CDNI capabilites to meet the more general needs of the CDN and Open Caching industry.
The Streaming Video Alliance 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 of the
Streaming Video Alliance 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).
The interchange of content delivery configuration metadata between the various entities
in the delivery ecosystem is essential for efficient interoperability. The need for an
industry-standard API and metadata model becomes increasingly important as content
and service providers automate more of their operations, and as technologies, such as
open caching, require coordination of content delivery configurations. In order to achives this, the
Open Caching Configuration Interface Specification defines
an interface contemplating a set of use cases.
The following capabilites extend the Metadata Model:
Enhanced Source definitions, with load balancing, failover, and extended authorization methods
A rich set of Cache Control Policies and computed cache keys
Rules for Dynamic CORS Headers
Traffic Types
ServiceID Metadata
Processing Stage Rules, enabling metadata to be applied conditionally at various stages in the CDN request/response pipeline.
Request URI Rewrites
HTTP Header Modifications
HTTP Status Modifications
Synthetic HTTP Responses
An Expression Language for matching rules and synthesis of dynamic values
Open Caching Configuration Metadata
Private Features
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 defines and registers CDNI GenericMetadata objects (as defined in section 4 of ), registers additional CDNI Payload Types (section 7.1 of
), and adds capability objects (extending section 5 in )
The following terms are used throughout this document:
CDN - Content Delivery Network
Additionally, this document reuses the terminology defined in
,
,
,
,
, and
.
Specifically, we use the following CDNI acronyms:
uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see
)
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
when, and only when, they appear in all capitals, as shown here.
Section 4 of defines a set of GenericMetadata Object Types.
Below we define additional GenericMetadata 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 a message, then the
mandatory-to-specify property MUST also be included.
AllowCompress is a new GenericMetadata object that allows the dCDN to compress content before sending to the client.
CachePolicy is a new GenericMetadata object that allows for the uCDN to specify internal caching policies for the dCDN and external caching policies advertised to clients of the dCDN.
ComputedCacheKey is a new GenericMetadata object that allows for the specification of a cache key using the metadata expression language. Typical use cases would involve the construction of a cache key from one or more elements of the HTTP request. In cases where both the ComputedCacheKey and the Cache object are applied, the ComputedCacheKey will take precedence.
CrossoriginPolicy allows for the specification of dynamically generated CORS headers.
NegativeCachePolicy is a new GenericMetadata object that allows for the specification of caching policies based on error response codes received from the origin.
CacheBypassPolicy is a new GenericMetadata object that allows a client request to be set as non cacheable. It is expected that this feature will be used to allow clients to bypass cache when testing the uCDN fill path. Note, CacheBypassPolicy only applies to the current request. In addition, any content previously cached (by client requests that do not set CacheBypassPolicy) is not evicted.
A new GenericMetadata object that allows the uCDN to indicate to the dCDN a preference in terms of OCN selection.
A GenericMetadata configuration object as a base generic object that permits the control of private features.
A ProcessingStages object is a type of GenericMetadata that describes the matching rules, metadata, and transformations to be applied at specific stages in the request processing pipeline.
It is typical in CDN configurations to define matching rules and metadata that are to be applied at specific stages in the request processing pipeline. For example, it may be required to append a host header prior to forwarding a request to an origin, or modify the response returned from an origin prior to storing in the cache. The following four processing stages are defined:
clientRequest - Rules run on the client request prior to further processing.
originRequest - Rules run prior to making a request to the origin.
originResponse - Rules run after a response is received from the origin and before being placed in the cache.
clientResponse - Rules run prior to sending the response to the client. If the response is from the cache, rules are applied to the response retrieved from the cache prior to sending to the client.
Each of the four processing stages is represented by an array of StageRules objects, with each StageRules object defining match criteria along with metadata that should be applied if the match applies to true. It should be noted that all of the StageRules objects in the array are evaluated and processed in order. A possible future extension to this processing model could allow for an if-else structure, where processing for a stage is halted upon matching of a StageRule match expression.
MI.RequestedCapacityLimits is a new GenericMetadata object that allows the uCDN to communicate to the dCDN a desired change in the advertised traffic delegation limits for a given host and footprint.
MI.RequestRouting is a new GenericMetadata object that allows the uCDN to force the dCDN request routing mode(s) to be applied when working in iterative redirection mode. The list of redirection modes supported by the dCDN is advertised through the FCI.RedirectionMode object. The list of request routing modes supported by the dCDN is advertised through the FCI.RequestRoutingMode object.
MI.ServiceIDs is a new GenericMetadata object that allows for the specification of two tiers of CDN-specific identifiers and names. The interpretation of these identifiers is implementation specific.
SourceMetadataExtended is an alternative to the CDNi standard SourceMetadata object, which adds a property to specify load balancing across multiple sources, as well as a SourceExtended sub-object with additional attributes to the CDNi standard Source object. While both SourceMetadataExtended and SourceMetadata can be provided for backward compatibility, a dCDN that advertises capability for SourceMetadataExtended will ignore SourceMetadata if both are provided for a given host or path match.
StaleContentCachePolicy is a new GenericMetadata object that allows the uCDN to specify the policy to use by a dCDN when responding with stale content.
TrafficType metadata defines a set of descriptors that characterize either the type or usage of the traffic, enabling CDNs and OCNs to apply any internal configuration rules without exposing an unnecessary amount of internal details.
Section 5 of describes the FCI Capability Advertisement Object, which
includes a CDNI Capability Object as well as the capability object type (a CDNI Payload Type).
The section also defines the Capability Objects per such type. Below we define 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.
This object is used to signal the set of features that are supported in relation with the ProcessingStages configuration object. Those optional features depend on the CDNI-MEL language support.
This object is used to signal the supported features related to the SourceMetadataExtended configuration object.
This object is used by the dCDN to signal/announce the supported request routing modes. This can be optionally used by the uCDN to further select a subset of those modes when operating one of the iterative delegation modes.
This object is used by the dCDN to signal/announce the list of supported private features.
This object is used by the dCDN to signal/announce the supported OCN types and/or their transport arrangement and/or medium supported by OCNs.
The CDNI Metadata Expression Language provides a syntax with a rich set of variables, operators, and built-in functions to facilitate use cases within the extended CDNi metadata model. Details TBD
TBD. Two new auth-types will be introduced for use with SourceMetadataExtended: AWSv4Auth and HeaderAuth
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
and in Section 7 of
respectively.
MORE - TBD
The authors would like to express their gratitude to the members of the Streaming Video Alliance Open Caching Working Group for their guidance / contribution / reviews ...)
Streaming Video Alliance Home Page
Open Caching Home Page
Open Caching - Configuration Interface Functional Specification (Parts 1,2,3)
Lumen Technologies
Lumen Technologies
Broadpeak
Telefonica