rfc-8006

Content Delivery Network Interconnection (CDNI) Metadata

B. Niven-Jenkins, R. Murray, M. Caulfield, K. Ma
date2016-12 streamIETF areawit wgcdni statusPROPOSED STANDARD pages66 canonicalhttps://www.rfc-editor.org/rfc/rfc8006 doi10.17487/RFC8006 errataview
The Content Delivery Network Interconnection (CDNI) Metadata interface enables interconnected Content Delivery Networks (CDNs) to exchange content distribution metadata in order to enable content acquisition and delivery. The CDNI Metadata associated with a piece of content provides a downstream CDN with sufficient information for the downstream CDN to service content requests on behalf of an upstream CDN. This document describes both a base set of CDNI Metadata and the protocol for exchanging that metadata.

Extracted elements (31)

design-rationale §2

The interface uses HTTP and its native caching mechanisms (ETags, Cache-Control) for metadata cacheability, reducing acquisition latency while maintaining freshness. I-JSON is used for encoding to leverage existing data structure tooling rather than defining a new format.

http, json

design-rationale §3

The metadata object model decomposes CDNI Metadata into separately addressable objects connected via Link URI references rather than always embedding sub-objects. This enables a single GenericMetadata object to be fetched once and referenced by multiple hosts and URI paths, minimizing duplication.

http

interoperability-note §4.1.6

When DNS-based redirection is employed, a dCDN cannot evaluate PathMetadata-level constraints at request-routing time because only the hostname is available. dCDNs SHOULD still process all PathMetadata before accepting a redirection request to detect unsupported mandatory-to-enforce metadata.

dns, http

normative-requirement §3.2 MUST NOT

A CDN MUST NOT attempt to use metadata that has been marked as 'incomprehensible' by a uCDN; a dCDN with MtE=true and incomprehensible=true MUST NOT serve the content.

security, http

normative-requirement §6.1 MUST

A CDNI Metadata server MUST support the HTTP GET and HEAD methods. HTTP responses containing a body SHOULD include an ETag to enable validation of cached representations.

http

normative-requirement §3.3 MUST NOT

A single HostMetadata or PathMetadata object MUST NOT contain multiple GenericMetadata objects of the same type; if duplicate types are present, the receiver MUST ignore all but the first occurrence.

http, json

normative-requirement §6.4 MUST

CDNI Metadata objects MUST be encoded as I-JSON objects [RFC7493]. All property names (dictionary keys) defined by this document MUST be lowercase.

json, http

normative-requirement §4 MUST

dCDNs and tCDNs MUST support the parsing of all CDNI Metadata objects specified in this document, though a dCDN need not implement the underlying functionality of non-structural GenericMetadata objects.

http

normative-requirement §4.1.7 MUST NOT

GenericMetadata types MUST NOT define a property named 'href', as the presence of an 'href' property is the mechanism by which dCDNs detect that an object is a Link reference rather than an embedded object.

json, http

normative-requirement §4.1.1 MUST

HostMatch objects MUST be evaluated in the order they appear, and the first matching HostMatch MUST be used. PathMatch objects MUST also be evaluated in order and only the first matching PathMatch applied.

http

normative-requirement §3.2 MUST

If a CDN does not understand or support a GenericMetadata property that is not safe-to-redistribute, it MUST set the 'incomprehensible' flag to true before redistributing that metadata object.

security, http

normative-requirement §6.2 MUST NOT

If a dCDN cannot retrieve the complete set of CDNI Metadata for a User Agent request, or the metadata is stale and cannot be revalidated (e.g., uCDN unreachable or returning 4xx/5xx), the dCDN MUST NOT serve the requested content.

http

normative-requirement §3.2 MUST NOT

If a dCDN does not understand or support a mandatory-to-enforce GenericMetadata property, the dCDN MUST NOT serve the content. Non-mandatory-to-enforce metadata may be safely ignored and content served.

security, http

normative-requirement §3.2 MUST NOT

tCDNs MUST NOT change the value of mandatory-to-enforce or safe-to-redistribute when propagating metadata to a dCDN. Although a tCDN can set 'incomprehensible' to true, it MUST NOT change it from true to false.

security, http

normative-requirement §4.2.2 MUST

The dCDN MUST use the logical AND of all ACLs (LocationACL, TimeWindowACL, ProtocolACL) to determine whether a request is allowed; a request denied by any single ACL is denied overall.

security, http

protocol-element §4.2.2

LocationACL defines geo-blocking via an ordered array of LocationRule objects pairing Footprint objects (footprint-type: ipv4cidr, ipv6cidr, asn, or countrycode) with allow/deny actions. Absent 'locations' means allow-all; non-matching footprints result in deny.

http, ip, security

protocol-element §4.2.4

ProtocolACL restricts content delivery based on the delivery protocol via an ordered array of ProtocolRule objects pairing protocol strings (from the 'CDNI Metadata Protocol Types' registry) with allow/deny actions. Absent 'protocol-acl' means allow-all.

http, security

protocol-element §4.2.1

SourceMetadata provides the dCDN with content acquisition information as an ordered-by-preference array of Source objects, each specifying an equivalent endpoint pool, a protocol, and an optional acquisition-auth.

http

protocol-element §4.2.7

The Auth object is an extensible wrapper for authentication/authorization methods, carrying auth-type (CDNI Payload Type) and auth-value (typed object). No auth methods are defined in this document; they are specified separately (e.g., URI Signing).

http, security

protocol-element §4.2.6

The Cache object controls cache key generation: 'exclude-path-pattern' uses wildcard syntax to strip matching path prefixes from cache keys, and 'include-query-strings' lists which query parameters to include (empty list means ignore all query parameters).

http

protocol-element §4.1.7

The GenericMetadata wrapper object carries: generic-metadata-type (CDNI Payload Type string), generic-metadata-value (typed object), mandatory-to-enforce (boolean, default true), safe-to-redistribute (boolean, default true), and incomprehensible (boolean, default false).

http, json

protocol-element §4.1.1

The HostIndex object is the entry point into the CDNI Metadata hierarchy, containing an array of HostMatch objects. The dCDN retrieves the HostIndex URI via out-of-band bootstrapping configuration and uses it to discover all downstream metadata.

http

protocol-element §4.3.1

The Link object replaces any CDNI Metadata object with an href URI and optional type (CDNI Payload Type), enabling shared objects to be referenced rather than duplicated. A dCDN detects a Link by the presence of the 'href' property.

http, json

protocol-element §4.2.3

TimeWindowACL defines time-based access restrictions via an ordered array of TimeWindowRule objects, each pairing TimeWindow objects (UNIX epoch integer start/end) with allow/deny actions. Absent 'times' means allow-all; non-matching windows result in deny.

http, security

registry §7.2

This document creates the 'CDNI Metadata Footprint Types' registry with four initial values: 'ipv4cidr', 'ipv6cidr', 'asn', and 'countrycode'. New entries require IETF Review or IESG Approval.

registry, ip

registry §7.3

This document creates the 'CDNI Metadata Protocol Types' registry with 'http/1.1' as the initial value for plaintext HTTP/1.1 delivery and acquisition. HTTP/2 and HTTPS variants require separate registration before use.

registry, http

registry §7.1

This document registers 20 new CDNI Payload Types in the 'CDNI Payload Types' registry under the 'MI.' namespace, covering all structural objects (MI.HostIndex, MI.HostMatch, MI.HostMetadata, MI.PathMatch, MI.PatternMatch, MI.PathMetadata) and GenericMetadata objects (MI.SourceMetadata, MI.LocationACL, MI.TimeWindowACL, MI.ProtocolACL, MI.DeliveryAuthorization, MI.Cache, MI.Auth, MI.Grouping, and associated sub-object types).

registry, http

security-consideration §8.2

CDNI Metadata may contain sensitive content policy information (geo-blocking rules, ACLs, origin server addresses, authorization keys) and SHOULD be protected for confidentiality. The CDNI Metadata interface SHOULD be secured using TLS.

security, privacy, tls

security-consideration §8.1

The CDNI Metadata interface must be secured to ensure mutual authentication of uCDN and dCDN peers and integrity of exchanged metadata. Unauthenticated or tampered metadata could cause a dCDN to misserve content, violate content policies, or disclose sensitive policy information.

security, http

wire-format §4.3.5

Footprint values use four string encodings: IPv4CIDR (e.g., '192.0.2.0/24'), IPv6CIDR per RFC 5952 (e.g., '2001:db8::/32'), ASN prefixed with lowercase 'as' (e.g., 'as64496'), and Country Code as ISO 3166-1 alpha-2 lowercase (e.g., 'us').

json, ip

wire-format §4.1.5

The PatternMatch pattern string uses '*' to match any sequence of pchar or '/' characters and '?' to match exactly one pchar; literals '$', '*', and '?' MUST be escaped as '$$', '$*', and '$?'. Default matching is case-insensitive.

http