draft-ietf-cdni-metadata-00.txt   draft-ietf-cdni-metadata-01.txt 
Network Working Group B. Niven-Jenkins Network Working Group B. Niven-Jenkins
Internet-Draft R. Murray Internet-Draft R. Murray
Intended status: Standards Track G. Watson Intended status: Standards Track G. Watson
Expires: April 5, 2013 Velocix (Alcatel-Lucent) Expires: August 29, 2013 Velocix (Alcatel-Lucent)
M. Caulfield M. Caulfield
K. Leung K. Leung
Cisco Systems Cisco Systems
K. Ma K. Ma
Azuki Systems, Inc. Azuki Systems, Inc.
October 2, 2012 February 25, 2013
CDN Interconnect Metadata CDN Interconnect Metadata
draft-ietf-cdni-metadata-00 draft-ietf-cdni-metadata-01
Abstract Abstract
The CDNI Metadata Interface enables interconnected CDNs to exchange The CDNI Metadata Interface enables interconnected CDNs to exchange
content distribution metadata in order to enable content acquisition content distribution metadata in order to enable content acquisition
and delivery. The CDNI metadata associated with a piece of content and delivery. The CDNI metadata associated with a piece of content
provides a downstream CDN with sufficient information for the provides a downstream CDN with sufficient information for the
downstream CDN to service content requests on behalf of an upstream downstream CDN to service content requests on behalf of an upstream
CDN. This document describes both the core set of CDNI metadata and CDN. This document describes both the core set of CDNI metadata and
the protocol for exchanging that metadata. the protocol for exchanging that metadata.
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 5, 2013. This Internet-Draft will expire on August 29, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
2. Design Principles . . . . . . . . . . . . . . . . . . . . . . 5 2. Design Principles . . . . . . . . . . . . . . . . . . . . . . 4
3. CDNI Metadata Data Model . . . . . . . . . . . . . . . . . . . 5 3. CDNI Metadata Data Model . . . . . . . . . . . . . . . . . . . 5
3.1. HostIndex, HostMetadata & PathMetadata objects . . . . . . 6 3.1. HostIndex, HostMetadata & PathMetadata objects . . . . . . 6
3.2. Generic CDNI Metadata Object Properties . . . . . . . . . 9 3.2. Generic CDNI Metadata Object Properties . . . . . . . . . 9
3.3. Metadata Inheritance . . . . . . . . . . . . . . . . . . . 10 3.3. Metadata Inheritance and Override . . . . . . . . . . . . 10
3.4. Metadata Naming . . . . . . . . . . . . . . . . . . . . . 10 3.4. Metadata Naming . . . . . . . . . . . . . . . . . . . . . 11
4. Encoding-Independent CDNI Metadata Object Descriptions . . . . 11 4. Encoding-Independent CDNI Metadata Object Descriptions . . . . 11
4.1. CDNI Metadata Structural Object Descriptions . . . . . . . 11 4.1. CDNI Metadata Structural Object Descriptions . . . . . . . 12
4.1.1. HostIndex . . . . . . . . . . . . . . . . . . . . . . 11 4.1.1. HostIndex . . . . . . . . . . . . . . . . . . . . . . 12
4.1.2. HostMatch . . . . . . . . . . . . . . . . . . . . . . 12 4.1.2. HostMatch . . . . . . . . . . . . . . . . . . . . . . 12
4.1.3. HostMetadata . . . . . . . . . . . . . . . . . . . . . 12 4.1.3. HostMetadata . . . . . . . . . . . . . . . . . . . . . 12
4.1.4. PathMatch . . . . . . . . . . . . . . . . . . . . . . 12 4.1.4. PathMatch . . . . . . . . . . . . . . . . . . . . . . 13
4.1.5. PathMetadata . . . . . . . . . . . . . . . . . . . . . 13 4.1.5. PathMetadata . . . . . . . . . . . . . . . . . . . . . 13
4.1.6. PatternMatch . . . . . . . . . . . . . . . . . . . . . 13 4.1.6. PatternMatch . . . . . . . . . . . . . . . . . . . . . 14
4.1.7. GenericMetadata . . . . . . . . . . . . . . . . . . . 14 4.1.7. GenericMetadata . . . . . . . . . . . . . . . . . . . 14
4.2. CDNI Metadata Property Object Descriptions . . . . . . . . 14 4.2. CDNI Metadata Property Object Descriptions . . . . . . . . 15
4.2.1. Source Metadata . . . . . . . . . . . . . . . . . . . 14 4.2.1. Source Metadata . . . . . . . . . . . . . . . . . . . 15
4.2.1.1. Source . . . . . . . . . . . . . . . . . . . . . . 14 4.2.1.1. Source . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2. LocationACL Metadata . . . . . . . . . . . . . . . . . 15 4.2.2. LocationACL Metadata . . . . . . . . . . . . . . . . . 15
4.2.2.1. LocationRule . . . . . . . . . . . . . . . . . . . 15 4.2.2.1. LocationRule . . . . . . . . . . . . . . . . . . . 16
4.2.2.2. Location . . . . . . . . . . . . . . . . . . . . . 15 4.2.2.2. Location . . . . . . . . . . . . . . . . . . . . . 16
4.2.3. TimeWindowACL Metadata . . . . . . . . . . . . . . . . 16 4.2.3. TimeWindowACL Metadata . . . . . . . . . . . . . . . . 16
4.2.3.1. TimeWindowRule . . . . . . . . . . . . . . . . . . 16 4.2.3.1. TimeWindowRule . . . . . . . . . . . . . . . . . . 17
4.2.3.2. TimeWindow . . . . . . . . . . . . . . . . . . . . 16 4.2.3.2. TimeWindow . . . . . . . . . . . . . . . . . . . . 17
4.2.4. ProtocolACL Metadata . . . . . . . . . . . . . . . . . 17 4.2.4. ProtocolACL Metadata . . . . . . . . . . . . . . . . . 17
4.2.4.1. ProtocolRule . . . . . . . . . . . . . . . . . . . 17 4.2.4.1. ProtocolRule . . . . . . . . . . . . . . . . . . . 17
4.2.5. Authorization Metadata . . . . . . . . . . . . . . . . 17 4.2.5. Authorization Metadata . . . . . . . . . . . . . . . . 18
4.2.6. Auth . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.6. Auth . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.7. Cache . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. CDNI Metadata Simple Data Type Descriptions . . . . . . . 18 4.2.8. Logging . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1. Link . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3. CDNI Metadata Simple Data Type Descriptions . . . . . . . 19
4.3.2. Protocol . . . . . . . . . . . . . . . . . . . . . . . 18 4.3.1. Link . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.3. Endpoint . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.2. Protocol . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.4. IPRange . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.3. RedirectionMethod . . . . . . . . . . . . . . . . . . 20
4.3.5. URI . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.4. Endpoint . . . . . . . . . . . . . . . . . . . . . . . 20
4.3.6. Time . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.5. IPRange . . . . . . . . . . . . . . . . . . . . . . . 20
5. CDNI Metadata interface . . . . . . . . . . . . . . . . . . . 20 4.3.6. URI . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1. Transport . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3.7. Time . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2. Retrieval of CDNI Metadata resources . . . . . . . . . . . 21 5. CDNI Metadata Capabilities . . . . . . . . . . . . . . . . . . 21
5.3. Bootstrapping . . . . . . . . . . . . . . . . . . . . . . 22 5.1. Protocol ACL Capabilities . . . . . . . . . . . . . . . . 21
5.4. Encoding . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2. Authorization Metadata Capabilities . . . . . . . . . . . 22
5.4.1. MIME Media Types . . . . . . . . . . . . . . . . . . . 22 5.3. Host Metadata Capabilities . . . . . . . . . . . . . . . . 22
5.4.2. JSON Encoding of Objects . . . . . . . . . . . . . . . 23 6. CDNI Metadata interface . . . . . . . . . . . . . . . . . . . 22
5.4.2.1. JSON Example . . . . . . . . . . . . . . . . . . . 24 6.1. Transport . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4.3. XML Encoding of Objects . . . . . . . . . . . . . . . 27 6.2. Retrieval of CDNI Metadata resources . . . . . . . . . . . 23
5.4.3.1. XML Example . . . . . . . . . . . . . . . . . . . 27 6.3. Bootstrapping . . . . . . . . . . . . . . . . . . . . . . 24
5.5. Extensibility . . . . . . . . . . . . . . . . . . . . . . 30 6.4. Encoding . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.5.1. Metadata Enforcement . . . . . . . . . . . . . . . . . 30 6.4.1. MIME Media Types . . . . . . . . . . . . . . . . . . . 25
5.5.2. Metadata Override . . . . . . . . . . . . . . . . . . 31 6.4.2. JSON Encoding of Objects . . . . . . . . . . . . . . . 26
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 6.4.2.1. JSON Example . . . . . . . . . . . . . . . . . . . 26
7. Security Considerations . . . . . . . . . . . . . . . . . . . 31 6.4.3. XML Encoding of Objects . . . . . . . . . . . . . . . 30
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 32 6.4.3.1. XML Example . . . . . . . . . . . . . . . . . . . 30
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5. Extensibility . . . . . . . . . . . . . . . . . . . . . . 33
9.1. Normative References . . . . . . . . . . . . . . . . . . . 32 6.5.1. Metadata Enforcement . . . . . . . . . . . . . . . . . 33
9.2. Informative References . . . . . . . . . . . . . . . . . . 32 6.5.2. Metadata Override . . . . . . . . . . . . . . . . . . 34
Appendix A. Relationship to the CDNI Requirements . . . . . . . . 33 6.6. Versioning . . . . . . . . . . . . . . . . . . . . . . . . 34
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 34 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
8. Security Considerations . . . . . . . . . . . . . . . . . . . 35
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 35
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35
10.1. Normative References . . . . . . . . . . . . . . . . . . . 35
10.2. Informative References . . . . . . . . . . . . . . . . . . 36
Appendix A. Relationship to the CDNI Requirements . . . . . . . . 36
Appendix B. Metadata Rewriting . . . . . . . . . . . . . . . . . 37
B.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 38
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 38
1. Introduction 1. Introduction
CDNI enables a downstream CDN to service content requests on behalf CDNI enables a downstream CDN to service content requests on behalf
of an upstream CDN. The CDNI metadata associated with a piece of of an upstream CDN. The CDNI metadata associated with a piece of
content (or with a set of contents) provides a downstream CDN with content (or with a set of contents) provides a downstream CDN with
sufficient information for servicing content requests on behalf of an sufficient information for servicing content requests on behalf of an
upstream CDN in accordance with the policies defined by the upstream upstream CDN in accordance with the policies defined by the upstream
CDN. CDN.
The CDNI Metadata Interface is introduced by The CDNI Metadata Interface is introduced by [RFC6707] along with
[I-D.ietf-cdni-problem-statement] along with three other interfaces three other interfaces that may be used to compose a CDNI solution
that may be used to compose a CDNI solution (Control, Request Routing (Control, Request Routing and Logging). [I-D.ietf-cdni-framework]
and Logging). [I-D.davie-cdni-framework] expands on the information expands on the information provided in [RFC6707] and describes each
provided in [I-D.ietf-cdni-problem-statement] and describes each
interface, and the relationships between them, in more detail. The interface, and the relationships between them, in more detail. The
requirements for the CDNI metadata interface are specified in requirements for the CDNI metadata interface are specified in
[I-D.ietf-cdni-requirements] [I-D.ietf-cdni-requirements].
This document focuses on the CDNI Metadata interface which enables a This document focuses on the CDNI Metadata interface which enables a
downstream CDN to obtain CDNI Metadata from an upstream CDN so that downstream CDN to obtain CDNI Metadata from an upstream CDN so that
the downstream CDN can properly process and respond to: the downstream CDN can properly process and respond to:
o Redirection Requests received over the CDNI Request Routing o Redirection Requests received over the CDNI Request Routing
protocol. protocol.
o Content Requests received directly from User Agents. o Content Requests received directly from User Agents.
Specifically this document proposes: Specifically this document proposes:
o A data structure for mapping content requests to CDNI Metadata o A data structure for mapping content requests to CDNI Metadata
properties (Section 3). properties (Section 3).
o An initial set of CDNI Metadata properties (Section 4.2). o An initial set of CDNI Metadata properties (Section 4.2).
o A RESTful web service for the transfer of CDNI Metadata o A RESTful web service for the transfer of CDNI Metadata
(Section 5). (Section 6).
1.1. Terminology 1.1. Terminology
This document reuses the terminology defined in This document reuses the terminology defined in [RFC6707].
[I-D.ietf-cdni-problem-statement].
Additionally, the following terms are used throughout this document Additionally, the following terms are used throughout this document
and are defined as follows: and are defined as follows:
o Object - a collection of properties o Object - a collection of properties
o Property - a key and value pair where the key is a property name o Property - a key and value pair where the key is a property name
and the value is the property value or an object. and the value is the property value or an object.
2. Design Principles 2. Design Principles
The proposed CDNI Metadata Interface aims to achieve the following The proposed CDNI Metadata Interface was designed to achieve the
design principles: following objectives:
1. Cacheability of CDNI metadata objects 1. Cacheability of CDNI metadata objects
2. Deterministic mapping from content requests to CDNI metadata 2. Deterministic mapping from redirection and content requests to
properties CDNI metadata properties
3. Support for DNS redirection as well as application-specific 3. Support for DNS redirection as well as application-specific
redirection (for example HTTP redirection) redirection (for example HTTP redirection)
4. Minimal duplication of CDNI metadata 4. Minimal duplication of CDNI metadata
5. Leverage existing protocols 5. Leverage existing protocols
Cacheability improves the latency of acquiring metadata and therefore Cacheability improves the latency of acquiring metadata while
improves the latency of serving content requests. The CDNI Metadata maintaining its freshness and therefore improves the latency of
Interface uses HTTP to achieve cacheability. serving content requests. The CDNI Metadata Interface uses HTTP to
achieve cacheability.
Deterministic mappings from content requests to metadata properties Deterministic mappings from content to metadata properties eliminates
eliminates ambiguity and ensures that the same policies are applied ambiguity and ensures that policies are applied consistently by all
consistently by all downstream CDNs. downstream CDNs.
Support for both HTTP and DNS redirection ensures that the CDNI Support for both HTTP and DNS redirection ensures that the CDNI
Metadata Interface can be used for HTTP and DNS redirection and also Metadata Interface can be used for HTTP and DNS redirection and also
meets the same design principles for both HTTP and DNS based meets the same design principles for both HTTP and DNS based
redirection schemes. redirection schemes.
Minimal duplication of CDNI metadata provides space efficiency on Minimal duplication of CDNI metadata provides space efficiency on
storage in the CDNs, on caches in the network, and across the network storage in the CDNs, on caches in the network, and across the network
between CDNs. between CDNs.
Leveraging existing protocols avoids reinventing common mechanisms Leveraging existing protocols avoids reinventing common mechanisms
such as data structure encoding (e.g. XML, JSON) and data transport such as data structure encoding (e.g. XML, JSON) and data transport
(e.g. HTTP). (e.g. HTTP).
3. CDNI Metadata Data Model 3. CDNI Metadata Data Model
The CDNI Metadata Model describes a data structure for mapping The CDNI Metadata Model describes a data structure for mapping
content requests to metadata properties. Metadata properties redirection requests and content requests to metadata properties.
describe how to acquire, authorize, and deliver content from a Metadata properties describe how to acquire, authorize, and deliver
downstream CDN. The data model relies on the assumption that these content from a downstream CDN. The data model relies on the
metadata properties may be aggregated based on the hostname of the assumption that these metadata properties may be aggregated based on
content and subsequently on the resource path of the content. The the hostname of the content and subsequently on the resource path of
data model associates a set of CDNI Metadata properties with a the content. The data model associates a set of CDNI Metadata
Hostname to form a default set of metadata properties for content properties with a Hostname to form a default set of metadata
delivered for that Hostname. That default set of metadata properties properties for content delivered for that Hostname. That default set
can be overridden by properties that apply to specific paths within a of metadata properties can be overridden by properties that apply to
URI. specific paths within a URI.
Different Hostnames and URI paths will contain different sets of CDNI Different Hostnames and URI paths will be associated with different
Metadata properties in order to describe the required behaviour when sets of CDNI Metadata properties in order to describe the required
a dCDN surrogate is processing User Agent requests for content at behaviour when a dCDN surrogate is processing User Agent requests for
that Hostname or URI path. As a result of this structure, content at that Hostname or URI path. As a result of this structure,
significant commonality may exist between the CDNI Metadata significant commonality may exist between the CDNI Metadata
properties specified for different Hostnames, different URI paths properties specified for different Hostnames, different URI paths
within a Hostname and different URI paths on different Hostnames. within a Hostname and different URI paths on different Hostnames.
For example the definition of which User Agent IP addresses should be For example the definition of which User Agent IP addresses should be
treated as being grouped together into a single network or geographic treated as being grouped together into a single network or geographic
location is likely to be common for a number of different Hostnames. location is likely to be common for a number of different Hostnames.
Another example is that although a uCDN is likely to have several Another example is that although a uCDN is likely to have several
different policies configured to express geo-blocking rules, it is different policies configured to express geo-blocking rules, it is
likely that a single geo-blocking policy would be applied to multiple likely that a single geo-blocking policy would be applied to multiple
Hostnames delivered through the CDN. Hostnames delivered through the CDN.
skipping to change at page 6, line 45 skipping to change at page 6, line 41
Metadata override occurs between HostMetadata and PathMetadata Metadata override occurs between HostMetadata and PathMetadata
objects. objects.
Section 4 describes in detail the specific CDNI Metadata objects and Section 4 describes in detail the specific CDNI Metadata objects and
properties which may be contained within a CDNI GenericMetadata properties which may be contained within a CDNI GenericMetadata
object. object.
3.1. HostIndex, HostMetadata & PathMetadata objects 3.1. HostIndex, HostMetadata & PathMetadata objects
A HostIndex object contains a list of Hostnames (and/or IP addresses) A HostIndex object contains a list of Hostnames (and/or IP addresses)
that may be delegated to the downstream CDN. The HostIndex is the for which content requests may be delegated to the downstream CDN.
starting point for accessing the uCDN's CDNI Metadata data store. It The HostIndex is the starting point for accessing the uCDN's CDNI
enables surrogates in the dCDN to deterministically discover, on Metadata data store. It enables surrogates in the dCDN to
receipt of a User Agent request for content, which other CDNI deterministically discover, on receipt of a User Agent request for
Metadata objects it requires in order to deliver the requested content, which other CDNI Metadata objects it requires in order to
content. deliver the requested content.
The HostIndex links Hostnames (and/or IP addresses) to HostMetadata The HostIndex links Hostnames (and/or IP addresses) to HostMetadata
objects via HostMatch objects. HostMetadata objects contain (or objects via HostMatch objects. HostMetadata objects contain (or
reference) the default CDNI Metadata required to serve content for reference) the default CDNI Metadata required to serve content for
that host. When looking up CDNI Metadata, the downstream CDN looks that host. When looking up CDNI Metadata, the downstream CDN looks
up the requested Hostname (or IP address) in the HostIndex, from up the requested Hostname (or IP address) in the HostIndex, from
there it can find HostMetadata which describes delivery rules for a there it can find HostMetadata which describes properties for a host
host and PathMetadata which may override those rules for given URI and PathMetadata which may override those properties for given URI
paths within the host. paths within the host.
As well as containing the default CDNI Metadata for the specified As well as containing the default CDNI Metadata for the specified
Hostname, HostMetadata and PathMetadata objects may also contain Hostname, HostMetadata and PathMetadata objects may also contain
PathMatch objects which in turn contain PathMetadata objects. PathMatch objects which in turn contain PathMetadata objects.
PathMatch objects override the CDNI Metadata in the HostMetadata PathMatch objects override the CDNI Metadata in the HostMetadata
object or one or more preceding PathMetadata objects with more object or one or more preceding PathMetadata objects with more
specific CDNI Metadata that applies to content requests matching the specific CDNI Metadata that applies to content requests matching the
pattern defined in that PathMatch object. pattern defined in that PathMatch object.
For the purposes of retrieving CDNI Metadata all other required CDNI For the purposes of retrieving CDNI Metadata all other required CDNI
Metadata objects and their properties are discoverable from the Metadata objects and their properties are discoverable from the
appropriate HostMetadata, PathMatch and PathMetadata objects for the appropriate HostMetadata, PathMatch and PathMetadata objects for the
requested content. requested content.
The relationships between the HostIndex, HostMatch, HostMetadata, The relationships between the HostIndex, HostMatch, HostMetadata,
PathMatch and PathMetadata objects are described in Figure 1. PathMatch and PathMetadata objects are described in Figure 1.
+---------+ +---------+ +------------+ +---------+ +---------+ +------------+
|HostIndex+---->|HostMatch|---->|HostMetadata+----------------+ |HostIndex+-(*)->|HostMatch|-(1)->|HostMetadata+-------(*)------+
+---------+ +---------+ +------+-----+ | +---------+ +---------+ +------+-----+ |
| | | |
V V (*) |
+---------+ ************************** | |
+--->|PathMatch| *Generic Metadata Objects* --> References V V
| +---------+ ************************** (1) One and only one +---------+ **************************
| | ^ (*) Zero or more +--->|PathMatch| *Generic Metadata Objects*
| V | | +---------+ **************************
| +------------+ | | | ^
+--|PathMetadata+----------------+ (*) (1) |
+------------+ | | |
| V |
| +------------+ |
+--|PathMetadata+-------(*)------+
+------------+
Key: ----> = References Key: ----> = References
Figure 1: Relationships between the HostIndex, HostMetadata & Figure 1: Relationships between the HostIndex, HostMetadata &
PathMetadata CDNI Metadata Objects PathMetadata CDNI Metadata Objects
The relationships in Figure 1 are summarised in Table 1 below. The relationships in Figure 1 are summarised in Table 1 below.
+--------------+----------------------------------------------------+ +--------------+----------------------------------------------------+
| Data Object | Objects it References | | Data Object | Objects it References |
skipping to change at page 8, line 25 skipping to change at page 8, line 25
+--------------+----------------------------------------------------+ +--------------+----------------------------------------------------+
Table 1: Relationships between CDNI Metadata Objects Table 1: Relationships between CDNI Metadata Objects
The table below describes the HostIndex, HostMetadata and The table below describes the HostIndex, HostMetadata and
PathMetadata objects in more detail. PathMetadata objects in more detail.
+-----------------+-------------------------------------------------+ +-----------------+-------------------------------------------------+
| Data Object | Description | | Data Object | Description |
+-----------------+-------------------------------------------------+ +-----------------+-------------------------------------------------+
| HostIndex | A HostIndex object lists the Hostnames (and/or | | HostIndex | A HostIndex object lists HostMatch objects |
| | IP addresses) that an upstream CDN can provide |
| | CDNI Metadata for and the URIs to use for |
| | retrieving that CDNI Metadata. For example, if |
| | "example.com" is a content provider, the |
| | HostIndex object may include an entry for |
| | "example.com" with the URI of the associated |
| | HostMetadata object. These hostnames are |
| | contained inside a list of HostMatch objects. |
| HostMatch | A HostMatch object defines a hostname to match | | HostMatch | A HostMatch object defines a hostname to match |
| | against a requested host, and contains or | | | against a requested host, and contains or |
| | references a HostMetadata object which contains | | | references a HostMetadata object which contains |
| | CDNI Metadata objects to be applied when a | | | CDNI Metadata objects to be applied when a |
| | content request matches against the hostname. | | | request matches against the hostname. For |
| | example, if "example.com" is a content |
| | provider, a HostMatch object may include an |
| | entry for "example.com" with the URI of the |
| | associated HostMetadata object. |
| HostMetadata | A HostMetadata object contains (or references) | | HostMetadata | A HostMetadata object contains (or references) |
| | the default CDNI Metadata objects for content | | | the default CDNI Metadata objects for content |
| | served from that host, i.e. the CDNI Metadata | | | served from that host, i.e. the CDNI Metadata |
| | objects for content requests that do not match | | | objects for content requests that do not match |
| | any of the PathMatch objects contained or | | | any of the PathMatch objects contained or |
| | referenced by that HostMetadata object. For | | | referenced by that HostMetadata object. For |
| | example, a HostMetadata object may describe the | | | example, a HostMetadata object may describe the |
| | metadata properties which apply to | | | metadata properties which apply to |
| | "example.com" and may contain PathMatches for | | | "example.com" and may contain PathMatches for |
| | "example.com/movies/*" and | | | "example.com/movies/*" and |
| | "example.com/music/*" which reference | | | "example.com/music/*" which reference |
| | corresponding PathMetadata objects that contain | | | corresponding PathMetadata objects that contain |
| | the CDNI Metadata objects for those more | | | the CDNI Metadata objects for those more |
| | specific URI paths. | | | specific URI paths. |
| PathMatch | A PathMatch object defines a pattern to match | | PathMatch | A PathMatch object defines a pattern to match |
| | against the requested path, and contains or | | | against the requested URI path, and contains or |
| | references a PathMetadata object which contains | | | references a PathMetadata object which contains |
| | (or references) the CDNI Metadata objects to be | | | (or references) the CDNI Metadata objects to be |
| | applied when a content request matches against | | | applied when a content request matches against |
| | the defined URI path pattern. | | | the defined URI path pattern. |
| PathMetadata | A PathMetadata object contains the CDNI | | PathMetadata | A PathMetadata object contains the CDNI |
| | GenericMetadata objects for content served with | | | GenericMetadata objects for content served with |
| | the associated URI path (defined in a PathMatch | | | the associated URI path (defined in a PathMatch |
| | object). A PathMetadata object may also | | | object). A PathMetadata object may also |
| | contain PathMatch objects in order to | | | contain PathMatch objects in order to |
| | recursively define more specific URI paths that | | | recursively define more specific URI paths that |
| | require different (e.g. more specific) CDNI | | | require different (e.g. more specific) CDNI |
| | Metadata to this one. For example, the | | | Metadata to this one. For example, the |
| | PathMetadata object which applies to | | | PathMetadata object which applies to |
| | "example.com/movies/*" may describe CDNI | | | "example.com/movies/*" may describe CDNI |
| | Metadata which apply to that resource path and | | | Metadata which apply to that resource path and |
| | may contain a PathMatch object for | | | may contain a PathMatch object for |
| | "example.com/movies/hd/*" which would reference | | | "example.com/movies/hd/*" which would reference |
| | the corresponding PathMetadata object for the | | | the corresponding PathMetadata object for the |
| | "example.com/movies/hd/" path prefix. | | | "example.com/movies/hd/" path prefix. |
| GenericMetadata | A GenericMetadata object contains individual | | GenericMetadata | A GenericMetadata object contains individual |
| | CDNI Metadata property objects which define the | | | CDNI Metadata objects which define the specific |
| | specific policies and attributes needed to | | | policies and attributes needed to properly |
| | properly deliver the associated content. | | | deliver the associated content. |
+-----------------+-------------------------------------------------+ +-----------------+-------------------------------------------------+
Table 2: HostIndex, HostMetadata and PathMetadata CDNI Metadata Table 2: HostIndex, HostMetadata and PathMetadata CDNI Metadata
Objects Objects
3.2. Generic CDNI Metadata Object Properties 3.2. Generic CDNI Metadata Object Properties
The HostMetadata and PathMetadata objects contain or can reference The HostMetadata and PathMetadata objects contain or can reference
other CDNI Metadata objects that contain properties which describe other CDNI Metadata objects that contain properties which describe
how User Agent requests for content should be processed, for example how User Agent requests for content should be processed, for example
where to acquire the content, authorization rules that should be where to acquire the content, authorization rules that should be
applied, delivery location restrictions and so on. Each such CDNI applied, delivery location restrictions and so on. Each such CDNI
Metadata object is a specialization of a CDNI GenericMetadata object. Metadata object is a specialization of a CDNI GenericMetadata object.
The GenericMetadata object abstracts the basic information required The GenericMetadata object abstracts the basic information required
for Metadata override and opaque Metadata distribution, from the for Metadata override and opaque Metadata distribution, from the
specifics of any given property (e.g., property semantics, specifics of any given property (e.g., property semantics,
enforcement options, serialization rules, etc.). enforcement options, etc.).
The GenericMetadata object defines the type of properties contained The GenericMetadata object defines the type of properties contained
within it as well as whether or not the properties are mandatory to within it as well as whether or not the properties are mandatory to
enforce. If the dCDN does not understand or support the property enforce. If the dCDN does not understand or support the property
type and the property type is mandatory to enforce, the dCDN MUST NOT type and the property type is mandatory to enforce, the dCDN MUST NOT
serve the content to the User Agent. If the dCDN does not understand serve the content to the User Agent. If the dCDN does not understand
or support the property type it is also not going to be able to or support the property type it is also not going to be able to
properly deserialize and reserialize the Metadata for cascaded properly propagate the Metadata for cascaded distribution. If the
distribution. dCDN does not understand or support the property type and the
property type is not mandatory to enforce, then the GenericMetadata
object may be safely ignored.
For Metadata which does not require customization, the data Although a CDN cannot serve content to a User Agent if a mandatory
representation received off the wire MAY be stored and redistributed property cannot be enforced, it may be safe to redistribute that
without being natively understood or supported by the transit CDN. metadata to another CDN without modification. For example, in the
However, for Metadata which require for translations, transparent cascaded CDN case, a transit CDN may pass through mandatory-to-
redistribution of the uCDN Metadata values may not be appropriate. enforce metadata to the delivery CDN. For Metadata which does not
Certain Metadata may be safely, though possibly not optimially, require customization, the data representation received off the wire
redistributed unmodified, e.g., source acquisition address may not be MAY be stored and redistributed without being natively understood or
optimal if transparently redistributed, but may still work. supported by the transit CDN. However, for Metadata which require
Redistribution safety MUST be specified for each GenericMetadata. translations, transparent redistribution of the uCDN Metadata values
may not be appropriate. Certain Metadata may be safely, though
possibly not optimially, redistributed unmodified, e.g., source
acquisition address may not be optimal if transparently
redistributed, but may still work. Redistribution safety MUST be
specified for each GenericMetadata.
3.3. Metadata Inheritance 3.3. Metadata Inheritance and Override
In the data model, a HostMetadata object may contain (or reference) In the data model, a HostMetadata object may contain (or reference)
multiple PathMetadata objects (via PathMatch objects). Each multiple PathMetadata objects (via PathMatch objects). Each
PathMetadata object may in turn contain (or reference) other PathMetadata object may in turn contain (or reference) other
PathMetadata objects. HostMetadata and PathMetadata objects form an PathMetadata objects. HostMetadata and PathMetadata objects form an
inheritance tree where each node in the tree inherits or overrides inheritance tree where each node in the tree inherits or overrides
the property values set by its parent. the property values set by its parent.
GenericMetadata objects of a given type override all GenericMetadata GenericMetadata objects of a given type override all GenericMetadata
objects of the same type previously defined by any parent object in objects of the same type previously defined by any parent object in
the tree. For example, if HostMetadata for the host "example.com" the tree. GenericMetadata objects of a given type previously defined
contains GenericMetadata objects of type LocationACL and by a parent object in the tree are inherited when no object of the
TimeWindowACL, while a PathMetadata object which applies to same type is defined by the child object. For example, if
"example.com/movies/*" defines an alternate GenericMetadata object of HostMetadata for the host "example.com" contains GenericMetadata
type TimeWindowACL, The PathMetadata defined TimeWindowACL would objects of type LocationACL and TimeWindowACL, while a PathMetadata
override the TimeWindowACL defined in the HostMetadata for all User object which applies to "example.com/movies/*" defines an alternate
Agent requests for movies. GenericMetadata object of type TimeWindowACL, then:
the TimeWindowACL defined in the PathMetadata would override the
TimeWindowACL defined in the HostMetadata
the LocationACL defined in the HostMetadata would be inherited for
all User Agent requests for content under "example.com/movies".
The PathMetadata defined TimeWindowACL would override the
TimeWindowACL defined in the HostMetadata for all User Agent requests
for movies.
3.4. Metadata Naming 3.4. Metadata Naming
GenericMetadata objects are identified by their type. The type GenericMetadata objects are identified by their type. The type
SHOULD be descriptive, and MAY be hierarchical to support aggregating SHOULD be descriptive, and MAY be hierarchical to support aggregating
groups of properties for the purpose of readability and for avoiding groups of properties for the purpose of readability and for avoiding
name conflicts between vendor extensions. A dotted alpha-numeric name conflicts between vendor extensions. A dotted alpha-numeric
notation is suggested for human readability. For example: notation is suggested for human readability.
Metadata types defined by this document are not hierarchical.
Examples of GenericMetadata object type names:
LocationACL
ext.vendor1.featurex ext.vendor1.featurex
ext.vendor1.featurey ext.vendor1.featurey
ext.vendor2.featurex ext.vendor2.featurex
Metadata types defined by this document are not hierarchical.
[Ed. It is intended that Metadata capability advertisements will [Ed. It is intended that Metadata capability advertisements will
allow either individual Metadata names or Metadata bundle identifiers allow either individual Metadata names or Metadata bundle identifiers
to be used. Need to have a procedure for defining and distributing to be used. Need to have a procedure for defining and distributing
bundle information to be used in Metadata capability advertisement.] bundle information to be used in Metadata capability advertisement.]
4. Encoding-Independent CDNI Metadata Object Descriptions 4. Encoding-Independent CDNI Metadata Object Descriptions
Section 4.1 provides the definitions of each object type declared in Section 4.1 provides the definitions of each object type declared in
Section 3. These objects are described as structural objects as they Section 3. These objects are described as structural objects as they
provide the structure for the inheritance tree and identifying which provide the structure for the inheritance tree and identifying which
skipping to change at page 11, line 44 skipping to change at page 12, line 14
object. object.
4.1. CDNI Metadata Structural Object Descriptions 4.1. CDNI Metadata Structural Object Descriptions
Each of the sub-sections below describe the structural objects Each of the sub-sections below describe the structural objects
defined in Table 2. defined in Table 2.
4.1.1. HostIndex 4.1.1. HostIndex
The HostIndex object is the entry point into the CDNI Metadata The HostIndex object is the entry point into the CDNI Metadata
hierarchy. An incoming content request is matched against the list hierarchy. It contains a list of HostMatch objects. An incoming
of hosts to find the HostMatch object which applies to the request. content request is matched against the hostname inside of each of the
listed HostMatch objects to find the HostMatch object which applies
to the request.
Property: hosts Property: hosts
Description: List of HostMatch objects. Description: List of HostMatch objects, in priority order.
Type: List of HostMatch objects
Type: List of HostMatch
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
4.1.2. HostMatch 4.1.2. HostMatch
The HostMatch object contains a hostname or IP address to match The HostMatch object contains a hostname or IP address to match
against content requests. The HostMatch object references Metadata against content requests. The HostMatch object also contains a
objects to apply if a match is found. reference to Metadata objects to apply if a match is found.
Property: host Property: host
Description: String (hostname or IP address) to match against Description: String (hostname or IP address) to match against
the requested host. the requested host.
Type: String Type: String
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: host-metadata Property: host-metadata
Description: CDNI Metadata to apply when delivering content Description: CDNI Metadata to apply when delivering content
that matches this host. that matches this host.
Type: HostMetadata Type: HostMetadata
skipping to change at page 12, line 34 skipping to change at page 13, line 4
4.1.3. HostMetadata 4.1.3. HostMetadata
The HostMetadata object contains both Metadata that applies to The HostMetadata object contains both Metadata that applies to
content requests for a particular host and a list of pattern matches content requests for a particular host and a list of pattern matches
for finding more specific Metadata based on the resource path in a for finding more specific Metadata based on the resource path in a
content request. content request.
Property: metadata Property: metadata
Description: List of host related metadata. Description: List of host related metadata.
Type: List of GenericMetadata
Type: List of GenericMetadata objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: paths Property: paths
Description: Path specific rules. First match applies. Description: Path specific rules. First match applies.
Type: List of PathMatch Type: List of PathMatch objects
Mandatory-to-Specify: No. Mandatory-to-Specify: No.
Property: modes
Description: Defines which redirection methods are supported.
Type: List of RedirectionMethod
Mandatory-to-Specify: Yes.
4.1.4. PathMatch 4.1.4. PathMatch
The PathMatch object contains an expression given as a PatternMatch The PathMatch object contains an expression given as a PatternMatch
object to match against a resource URI path and Metadata objects to object to match against a resource URI path and Metadata objects to
apply if a match is found. apply if a match is found.
Property: path-pattern Property: path-pattern
Description: Pattern to match against the requested path, i.e. Description: Pattern to match against the requested path, i.e.
against the [RFC3986] path-absolute. against the [RFC3986] path-absolute.
skipping to change at page 13, line 22 skipping to change at page 13, line 44
A PathMetadata object contains the CDNI Metadata properties for A PathMetadata object contains the CDNI Metadata properties for
content served with the associated URI path (defined in a PathMatch content served with the associated URI path (defined in a PathMatch
object). Note that if CDNI metadata is used as an input to CDNI object). Note that if CDNI metadata is used as an input to CDNI
request routing and DNS-based redirection is employed, then any request routing and DNS-based redirection is employed, then any
metadata at the PathMetadata level or below will be inaccessible at metadata at the PathMetadata level or below will be inaccessible at
request routing time. request routing time.
Property: metadata Property: metadata
Description: List of path related metadata. Description: List of path related metadata.
Type: List of GenericMetadata Type: List of GenericMetadata objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: paths Property: paths
Description: Path specific rules. First match applies. Description: Path specific rules. First match applies.
Type: List of PathMatch Type: List of PathMatch objects
Mandatory-to-Specify: No. Mandatory-to-Specify: No.
4.1.6. PatternMatch 4.1.6. PatternMatch
A PatternMatch object contains the pattern string and flags that A PatternMatch object contains the pattern string and flags that
describe the PathMatch expression. describe the PathMatch expression.
Property: pattern Property: pattern
Description: >A pattern for string matching. The pattern may Description: A pattern for string matching. The pattern may
contain the wildcards * and ?, where * matches any sequence of contain the wildcards * and ?, where * matches any sequence of
characters (including the empty string) and ? matches exactly characters (including the empty string) and ? matches exactly
one character. The three literals \ , * and ? should be one character. The three literals \ , * and ? should be
escaped as \\, \* and \? escaped as \\, \* and \?
Type: String Type: String
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: case-sensitive Property: case-sensitive
Description: Flag indicating whether or not case-sensitive Description: Flag indicating whether or not case-sensitive
matching should be used. matching should be used.
Type: Boolean Type: Boolean
skipping to change at page 14, line 28 skipping to change at page 14, line 49
Property: value Property: value
Description: CDNI Metadata property object. Description: CDNI Metadata property object.
Type: matches the type property above Type: matches the type property above
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: mandatory-to-enforce Property: mandatory-to-enforce
Description: Flag identifying whether or not the enforcement of Description: Flag identifying whether or not the enforcement of
the property Metadata is required. the property Metadata is required.
Type: Boolean Type: Boolean
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: safe-to-redistribute Property: safe-to-redistribute
Description: Flag identifying whether or not the the property Description: Flag identifying whether or not the property
Metadata may be safely redistributed without modification. Metadata may be safely redistributed without modification.
Type: Boolean Type: Boolean
Mandatory-to-Specify: No. Default is allow transparent Mandatory-to-Specify: No. Default is allow transparent
redistribution. redistribution.
4.2. CDNI Metadata Property Object Descriptions 4.2. CDNI Metadata Property Object Descriptions
4.2.1. Source Metadata 4.2.1. Source Metadata
Source Metadata provides the dCDN information about content Source Metadata provides the dCDN information about content
acquisition e.g. how to contact an uCDN Surrogate or an Origin acquisition e.g. how to contact an uCDN Surrogate or an Origin Server
Server. The sources are not necessarily the actual Origin Servers to obtain the content to be served. The sources are not necessarily
operated by the CSP but might be a set of Surrogates in the uCDN. the actual Origin Servers operated by the CSP but might be a set of
Surrogates in the uCDN.
Property: sources Property: sources
Description: Sources from which the dCDN can acquire content. Description: Sources from which the dCDN can acquire content,
Type: List of Source listed in priority order.
Mandatory-to-Specify: No. Type: List of Source objects
Mandatory-to-Specify: No. Default is to use static
configuration, out of band of the metadata interface.
4.2.1.1. Source 4.2.1.1. Source
A Source object describes the Source which should be used by the dCDN A Source object describes the Source which should be used by the dCDN
for content acquisition, e.g. a Surrogate within the uCDN or an for content acquisition, e.g. a Surrogate within the uCDN or an
alternate Origin Server, the protocol to be used and any alternate Origin Server, the protocol to be used and any
authentication method. authentication method.
Property: auth Property: auth
Description: Authentication method to use when requesting Description: Authentication method to use when requesting
content from this source. content from this source.
Type: Auth Type: Auth
Mandatory-to-Specify: No. Default is no authentication is Mandatory-to-Specify: No. Default is no authentication is
required. required.
Property: endpoints Property: endpoints
Description: Origins from which the dCDN can acquire content. Description: Origins from which the dCDN can acquire content.
Type: List of EndPoint Type: List of EndPoint objects
Mandatory-to-Specify: Yes.
Property: protocol
Description: Protocol to use for content acquisition.
Type: Protocol
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
4.2.2. LocationACL Metadata 4.2.2. LocationACL Metadata
LocationACL Metadata defines location-based restrictions. LocationACL Metadata defines location-based restrictions.
Property: locations Property: locations
Description: Access control list which applies restrictions to Description: Access control list which applies restrictions to
delivery based on client location. delivery based on client location.
Type: List of LocationRule
Type: List of LocationRule objects
Mandatory-to-Specify: No. Default is allow all locations. Mandatory-to-Specify: No. Default is allow all locations.
4.2.2.1. LocationRule 4.2.2.1. LocationRule
A LocationRule contains or references a list of Location objects. A LocationRule contains or references a list of Location objects and
LocationRule objects are used to construct a LocationACL to apply the corresponding action.
restrictions to content delivery.
Property: locations Property: locations
Description: List of locations to which the rule applies. Description: List of locations to which the rule applies.
Type: List of Location Type: List of Location objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
[Ed: reusing locations as a property name is confusing and should
likely be changed]
Property: action Property: action
Description: Defines whether the rule specifies locations to Description: Defines whether the rule specifies locations to
allow or deny. allow or deny.
Type: Enumeration [allow|deny] Type: Enumeration [allow|deny]
Mandatory-to-Specify: Yes. Mandatory-to-Specify: No. Default is deny.
4.2.2.2. Location 4.2.2.2. Location
A Location object describes a Location which may be applied by an A Location object describes a Location which may be applied by a
ACLRule, e.g. a Location may be an IPv4 address range or a geographic LocationRule, e.g. a Location may be an IPv4 address range or a
location. geographic location.
Property: iprange Property: iprange
Description: A set of IP Addresses. Description: A set of IP Addresses.
Type: List of IPRange. Type: List of IPRange objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
[Ed: Location as specified above only supports the Class 1a names [Ed: Location as specified above only supports the Class 1a names
described in [I-D.jenkins-cdni-names]. Need to add support for Class described in [I-D.jenkins-cdni-names]. Need to add support for Class
1b names to a later version.] 1b names to a later version.]
4.2.3. TimeWindowACL Metadata 4.2.3. TimeWindowACL Metadata
TimeWindowACL Metadata defines time-based restrictions. TimeWindowACL Metadata defines time-based restrictions.
Property: times Property: times
Description: Access control list which applies restrictions to Description: Access control list which applies restrictions to
delivery based on request time. delivery based on request time.
Type: List of TimeWindowRule Type: List of TimeWindowRule objects
Mandatory-to-Specify: No. Default is allow all time windows. Mandatory-to-Specify: No. Default is allow all time windows.
4.2.3.1. TimeWindowRule 4.2.3.1. TimeWindowRule
A TimeWindowRule contains or references a list of TimeWindow objects. A TimeWindowRule contains or references a list of TimeWindow objects
TimeWindowRule objects are used to construct a TimeWindowACL to apply and the corresponding action.
restrictions to content delivery.
Property: times Property: times
Description: List of time windows to which the rule applies. Description: List of time windows to which the rule applies.
Type: List of TimeWindow Type: List of TimeWindow objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: action Property: action
Description: Defines whether the rule specifies time windows to Description: Defines whether the rule specifies time windows to
allow or deny. allow or deny.
Type: Enumeration [allow|deny] Type: Enumeration [allow|deny]
Mandatory-to-Specify: Yes. Mandatory-to-Specify: No. Default is deny.
4.2.3.2. TimeWindow 4.2.3.2. TimeWindow
A TimeWindow object describes a time range which may be applied by an A TimeWindow object describes a time range which may be applied by an
ACLRule, e.g. Start 09:00AM 01/01/2000 UTC End 17:00PM 01/01/2000 ACLRule, e.g. Start 09:00AM 01/01/2000 UTC End 17:00PM 01/01/2000
UTC. UTC.
Property: start Property: start
Description: The start time of the window. Description: The start time of the window.
Type: Time Type: Time
skipping to change at page 17, line 15 skipping to change at page 17, line 42
Type: Time Type: Time
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
4.2.4. ProtocolACL Metadata 4.2.4. ProtocolACL Metadata
ProtocolACL Metadata defines delivery protocol restrictions. ProtocolACL Metadata defines delivery protocol restrictions.
Property: protocols Property: protocols
Description: Access control list which applies restrictions to Description: Access control list which applies restrictions to
delivery based on delivery protocol. delivery based on delivery protocol.
Type: List of ProtocolRule Type: List of ProtocolRule objects
Mandatory-to-Specify: No. Default is allow all protocols. Mandatory-to-Specify: No. Default is allow all protocols.
4.2.4.1. ProtocolRule 4.2.4.1. ProtocolRule
A ProtocolRule contains or references a list of Protocol objects. A ProtocolRule contains or references a list of Protocol objects.
ProtocolRule objects are used to construct a ProtocolACL to apply ProtocolRule objects are used to construct a ProtocolACL to apply
restrictions to content delivery. restrictions to content acquisition or delivery.
Property: protocols Property: protocols
Description: List of protocols to which the rule applies. Description: List of protocols to which the rule applies.
Type: List of protocol Type: List of protocol objects
Mandatory-to-Specify: Yes. Mandatory-to-Specify: Yes.
Property: action Property: action
Description: Defines whether the rule specifies protocols to Description: Defines whether the rule specifies protocols to
allow or deny. allow or deny.
Type: Enumeration [allow|deny] Type: Enumeration [allow|deny]
Mandatory-to-Specify: Yes. Mandatory-to-Specify: No. Default is allow all protocols.
Property: direction
Description: Defines whether the ProtocolRule specifies
protocols for acquisition or delivery.
Type: Enumeration [acquisition|delivery]
Mandatory-to-Specify: No. Default is to apply the rule to both
acquisition and delivery.
4.2.5. Authorization Metadata 4.2.5. Authorization Metadata
Authorization Metadata define content authorization methods. Authorization Metadata define content authorization methods.
Property: methods Property: methods
Description: Options for authenticating content requests. All Description: Options for authenticating content requests. All
options in the list are equally valid. options in the list are equally valid.
Type: List of Auth Type: List of Auth objects
Mandatory-to-Specify: No. Default is no authorization Mandatory-to-Specify: No. Default is no authorization
required. required.
4.2.6. Auth 4.2.6. Auth
An Auth object defines authentication and authorization methods to be An Auth object defines authentication and authorization methods to be
used during content delivery and content acquisition, e.g. methods used during content delivery and content acquisition, e.g. methods
such as tokenization and URL Signing. such as tokenization and URL Signing.
[Ed. Need to synchronize authentication configuration with CDNI URL [Ed. Need to synchronize authentication configuration with CDNI URL
signing draft definitions.] signing draft definitions.]
[Ed. Need to consider how to separate protocol specific method [Ed. Need to consider how to separate protocol specific method
configuration (e.g., HTTP basic/digest authentication), which must configuration (e.g., HTTP basic/digest authentication), which must
match the HostMatch protocol, from protocol agnostic method match the HostMatch protocol, from protocol agnostic method
configurations (e.g., URL signing/tokenization).] configurations (e.g., URL signing/tokenization).]
Property: direction
Description: Defines whether the Auth object applies to
acquisition or delivery requests.
Type: Enumeration [acquisition|delivery]
Mandatory-to-Specify: No. Default is to apply the rule to both
acquisition and delivery.
4.2.7. Cache
[Ed. note: placeholder for cache control metadata - TBD]
4.2.8. Logging
[Ed. note: placeholder for logging metadata - TBD]
4.3. CDNI Metadata Simple Data Type Descriptions 4.3. CDNI Metadata Simple Data Type Descriptions
This section describes the simpler data types that are used for This section describes the simpler data types that are used for
properties of CDNI Metadata objects. properties of CDNI Metadata objects.
4.3.1. Link 4.3.1. Link
A link object may be used in place of any of the objects described A link object may be used in place of any of the objects or
above. Links can be used to avoid duplication if the same metadata properties described above. Links can be used to avoid duplication
information is repeated within the metadata tree. When a link if the same metadata information is repeated within the metadata
replaces an object, its href property is set to the URI of the tree. When a link replaces an object, its href property is set to
resource, its rel property is set to the name of the property it is the URI of the resource, its rel property is set to the name of the
replacing, and its type property is set to the type of the object it property it is replacing, and its type property is set to the type of
is replacing. the object it is replacing.
Property: href Property: href
Description: The URI of the of the addressable object being Description: The URI of the of the addressable object being
referenced. referenced.
Type: URI Type: URI
Mandatory: Yes Mandatory: Yes
Property: rel Property: rel
Description: The Relationship between the referring object and Description: The Relationship between the referring object and
the object it is referencing. the object it is referencing.
Type: String Type: String
Mandatory: Yes Mandatory: Yes
Property: type Property: type
Description: The type of the object being referenced. Description: The type of the object being referenced.
Type: String Type: String
Mandatory: Yes Mandatory: Yes
4.3.2. Protocol 4.3.2. Protocol
This type only appears in Links. Links with this type are not Protocol objects are used to specify registered protocols for content
machine readable but rather represent particular feature sets of a acquisition or delivery.
protocol defined in a specification and implemented in code. The URI
contained in the link needs to be defined for each delivery protocol
with an associated interoperable feature set.
The following examples are illustrative: [Ed. Need to reference protocol registry.]
o http://url.cdni.ietf.example/protocol/delivery/http/rfcABCD Type: Enumeration [HTTP|RTSP|RTMP]
o http://url.cdni.ietf.example/protocol/delivery/rtmp/rfcEFGH
o http://url.vendorY.ietf.example/protocol/delivery/rtmp/releaseP.Q
[Editor's Note: It may be more appropriate to use the 'tag' URI 4.3.3. RedirectionMethod
scheme [RFC4151] for these URIs.]
4.3.3. Endpoint RedirectionMethod objects are used to specify registered content
redirection modes.
[Ed. Need to reference redirection method registry.]
Type: Enumeration [HTTP-I|HTTP-R|DNS-I|DNS-R]
4.3.4. Endpoint
A hostname (with optional port) or an IP address (with optional A hostname (with optional port) or an IP address (with optional
port). port).
Note: All implementations MUST support IPv4 addresses encoded as Note: All implementations MUST support IPv4 addresses encoded as
specified by the 'IPv4address' rule in Section 3.2.2 of [RFC3986] and specified by the 'IPv4address' rule in Section 3.2.2 of [RFC3986] and
MUST support all IPv6 address formats specified in [RFC4291]. Server MUST support all IPv6 address formats specified in [RFC4291]. Server
implementations SHOULD use IPv6 address formats specified in implementations SHOULD use IPv6 address formats specified in
[RFC5952]. [RFC5952].
4.3.4. IPRange 4.3.5. IPRange
One of: One of:
o A range of consecutive IP addresses (IPv4 or IPv6) expressed as o A range of consecutive IP addresses (IPv4 or IPv6) expressed as
Address1-Address2 which does not have to be to power of two Address1-Address2 which does not have to be to power of two
aligned, for example the range 192.0.2.1-192.0.2.10 is valid. The aligned, for example the range 192.0.2.1-192.0.2.10 is valid. The
first Address in the range MUST be 'lower' than the final address first Address in the range MUST be 'lower' than the final address
in the range. in the range.
o A valid IP subnet (IPv4 or IPv6) expressed using CIDR notation. o A valid IP subnet (IPv4 or IPv6) expressed using CIDR notation.
o A single IP address (IPv4 or IPv6). o A single IP address (IPv4 or IPv6).
Note: Client implementations MUST support IPv4 addresses encoded as Note: Client implementations MUST support IPv4 addresses encoded as
specified by the 'IPv4address' rule in Section 3.2.2 of [RFC3986] and specified by the 'IPv4address' rule in Section 3.2.2 of [RFC3986] and
MUST support all IPv6 address formats specified in [RFC4291]. Server MUST support all IPv6 address formats specified in [RFC4291]. Server
implementations SHOULD use IPv6 address formats specified in implementations SHOULD use IPv6 address formats specified in
[RFC5952]. [RFC5952].
4.3.5. URI 4.3.6. URI
A URI as specified in [RFC3986]. A URI as specified in [RFC3986].
4.3.6. Time 4.3.7. Time
A time value expressed in seconds since Unix epoch in the UTC A time value expressed in seconds since Unix epoch in the UTC
timezone. timezone.
5. CDNI Metadata interface 5. CDNI Metadata Capabilities
CDNI Metadata is used to convey information pertaining to content
delivery from uCDN to dCDN. For optional metadata, it may be useful
for the uCDN to know if the dCDN supports the metadata, prior to
delegating any content requests to the dCDN. If optional-to-
implement metadata is mandatory-to-enforce and the dCDN does not
support it, any delegated requests for that content will fail, so
there is no reason to delegate those requests. Likewise, for any
metadata which may be assigned optional values, it may be useful for
the uCDN to know which values the dCDN supports, prior to delegating
any content requests to the dCDN. If a the optional value assigned
to a given piece of content's metadata is not supported by the dCDN,
any delegated requests for that content may fail, so there is likely
no reason to delegate those requests.
The CDNI Footprint and Capabilities Interface provides a means of
advertising capabilities from dCDN to uCDN. Support for optional
metadata and support for optional metadata values may be advertised
using the capabilities interface. This section describes the
capabilities advertisement requirements for the metadata defined in
Section 4.2
5.1. Protocol ACL Capabilities
The ProtoclACL object contains a list of Protocol values. The dCDN
MUST advertise which delivery protocols it supports so that the uCDN
knows what type of content requests it can redirect to the dCDN. If
the dCDN does not support a given acquisition or delivery protocol,
the uCDN should not delegate requests requiring those protocols to
the dCDN as the dCDN will not be able to properly acquire or deliver
the content.
ProtocolRules are defined for either acquisition or delivery. For
some CDNs, certain combinations of acquisition and delivery protocols
may not make sense (e.g., RTSP acquisition for HTTP delivery), while
other CDNs may support customized protocol adaptation. ProtocolACL
capabilities are not intended to define which combinations of
protocols should be used. ProtocolACL capabilties are only intended
to describe which protocols the dCDN does or does not support.
Protocol combination restrictions are specified in the metadata
itself and associated with specific groups of content assets.
[Ed. Need to register delivery protocol capability ID.]
[Ed. Need to reference protocol registry, and discuss specification
of overlapping protocol values.]
5.2. Authorization Metadata Capabilities
The Authorization object contains a list of Auth values. The dCDN
MUST advertise which authorization algorithms it supports so that the
uCDN knows what type of content requests it can redirect to the dCDN.
If the dCDN does not support a given authorization algorithm, the
uCDN should not delegate requests requiring that algorithm to the
dCDN as the dCDN will not be able to properly acquire the content or
enforce delivery restrictions.
[Ed. Need to register authorization algorithm capability ID.]
[Ed. Need to reference auth registry, and discuss specification of
overlapping auth values.]
5.3. Host Metadata Capabilities
The HostMetadata object contains a list of redirection method values.
The dCDN MUST advertise which redirection modes it supports so that
the uCDN knows how to redirect content requests to the dCDN. If the
dCDN does not support a given redirection method, the uCDN should not
delegate requests to the dCDN using that method as the dCDN will not
be able to properly handle the redirection.
[Ed. Need to register redirection method capability ID.]
[Ed. Need to reference redirection method registry.]
6. CDNI Metadata interface
This section specifies an interface to enable a Downstream CDN to This section specifies an interface to enable a Downstream CDN to
retrieve CDNI Metadata objects from an Upstream CDN. retrieve CDNI Metadata objects from an Upstream CDN.
The interface can be used by a Downstream CDN to retrieve CDNI The interface can be used by a Downstream CDN to retrieve CDNI
Metadata objects either dynamically as required by the Downstream CDN Metadata objects either dynamically as required by the Downstream CDN
to process received requests (for example in response to receiving a to process received requests (for example in response to receiving a
CDNI Request Routing request from an Upstream CDN or in response to CDNI Request Routing request from an Upstream CDN or in response to
receiving a request for content from a User Agent) or in advance of receiving a request for content from a User Agent) or in advance of
being required. being required (for example in case of prepositioned CDNI Metadata
acquisition).
The CDNI Metadata interface is built on the principles of RESTful web The CDNI Metadata interface is built on the principles of RESTful web
services. This means that requests and responses over the interface services. This means that requests and responses over the interface
are built around the transfer of representations of hyperlinked are built around the transfer of representations of hyperlinked
resources. A resource in the context of the CDNI Metadata interface resources. A resource in the context of the CDNI Metadata interface
is any object in the Data Model (as described in Section 3 through is any object in the Data Model (as described in Section 3 through
Section 4). Section 4).
In the general case a CDNI Metadata server makes each instance of an In the general case a CDNI Metadata server makes each instance of an
addressable CDNI Metadata object available via a unique URI that addressable CDNI Metadata object available via a unique URI that
skipping to change at page 20, line 37 skipping to change at page 23, line 18
object. When an object needs to reference another addressable CDNI object. When an object needs to reference another addressable CDNI
Metadata object (for example a HostIndex object referencing a Metadata object (for example a HostIndex object referencing a
HostMetadata object) it does so by including a link to the referenced HostMetadata object) it does so by including a link to the referenced
object. object.
CDNI Metadata servers are free to assign whatever structure they CDNI Metadata servers are free to assign whatever structure they
desire to the URIs for CDNI Metadata objects and CDNI Metadata desire to the URIs for CDNI Metadata objects and CDNI Metadata
clients MUST NOT make any assumptions regarding the structure of CDNI clients MUST NOT make any assumptions regarding the structure of CDNI
Metadata URIs or the mapping between CDNI Metadata objects and their Metadata URIs or the mapping between CDNI Metadata objects and their
associated URIs. Therefore any URIs present in the examples below associated URIs. Therefore any URIs present in the examples below
are purely illustrative and are not intended impose a definitive are purely illustrative and are not intended to impose a definitive
structure on CDNI Metadata interface implementations. structure on CDNI Metadata interface implementations.
5.1. Transport 6.1. Transport
The CDNI Metadata interface uses HTTP as the underlying protocol The CDNI Metadata interface uses HTTP as the underlying protocol
transport. transport.
The HTTP Method in the request defines the operation the request The HTTP Method in the request defines the operation the request
would like to perform. Servers implementing the CDNI Metadata would like to perform. Servers implementing the CDNI Metadata
interface MUST support the HTTP GET and HEAD methods. interface MUST support the HTTP GET and HEAD methods.
The corresponding HTTP Response returns the status of the operation The corresponding HTTP Response returns the status of the operation
in the HTTP Status Code and returns the current representation of the in the HTTP Status Code and returns the current representation of the
skipping to change at page 21, line 19 skipping to change at page 23, line 49
POST and DELETE etc. is not specified. Server implementations of POST and DELETE etc. is not specified. Server implementations of
this interface SHOULD reject all methods other than GET and HEAD. this interface SHOULD reject all methods other than GET and HEAD.
As the CDNI Metadata interface builds on top of HTTP, CDNI Metadata As the CDNI Metadata interface builds on top of HTTP, CDNI Metadata
servers may make use of any HTTP feature when implementing the CDNI servers may make use of any HTTP feature when implementing the CDNI
Metadata interface, for example a CDNI Metadata server may make use Metadata interface, for example a CDNI Metadata server may make use
of HTTP's caching mechanisms to indicate that the returned response/ of HTTP's caching mechanisms to indicate that the returned response/
representation can be reused without re-contacting the CDNI Metadata representation can be reused without re-contacting the CDNI Metadata
server. server.
5.2. Retrieval of CDNI Metadata resources 6.2. Retrieval of CDNI Metadata resources
In the general case a CDNI Metadata server makes each instance of an In the general case a CDNI Metadata server makes each instance of an
addressable CDNI Metadata object available via a unique URI and addressable CDNI Metadata object available via a unique URI and
therefore in order to retrieve CDNI Metadata, a CDNI Metadata client therefore in order to retrieve CDNI Metadata, a CDNI Metadata client
first makes a HTTP GET request for the URI of the HostIndex which first makes a HTTP GET request for the URI of the HostIndex which
provides the CDNI Metadata client with a list of Hostnames that the provides the CDNI Metadata client with a list of Hostnames for which
upstream CDN may delegate to the downstream CDN. the upstream CDN may delegate content delivery to the downstream CDN.
In order to retrieve the CDNI Metadata for a particular request the In order to retrieve the CDNI Metadata for a particular request the
CDNI Metadata client processes the received HostIndex object and CDNI Metadata client processes the received HostIndex object and
finds the corresponding HostMetadata entry (by matching the hostname finds the corresponding HostMetadata entry (by matching the hostname
in the request against the hostnames in the HostIndex). The CDNI in the request against the hostnames in the HostMatch). If the
metadata client then makes a GET request for the URI specified in the HostMetadata is linked (rather than embedded), the CDNI metadata
href key of that Host's entry in the HostIndex. client then makes a GET request for the URI specified in the href
property of the Link object which points to the HostMetadata object
itself.
In order to retrieve the most specific metadata for a particular In order to retrieve the most specific metadata for a particular
request, the CDNI metadata client inspects the HostMetadata for request, the CDNI metadata client inspects the HostMetadata for
references to more specific PathMetadata objects. If any references to more specific PathMetadata objects. If any
PathMetadata match the request, the CDNI metadata client makes PathMetadata match the request (and are linked rather than embedded),
another GET request for the PathMetadata. Each PathMetadata object the CDNI metadata client makes another GET request for the
may also include references to yet more specific metadata. If this PathMetadata. Each PathMetadata object may also include references
is the case, the CDNI metadata client continues requesting to yet more specific metadata. If this is the case, the CDNI
PathMetadata recursively. metadata client continues requesting PathMetadata recursively.
Where a downstream CDN is interconnected with multiple upstream CDNs, Where a downstream CDN is interconnected with multiple upstream CDNs,
the downstream CDN must decide which upstream CDN's CDNI metadata the downstream CDN must decide which upstream CDN's CDNI metadata
should be used to handle a particular User Agent request. should be used to handle a particular User Agent request.
When application level redirection (e.g. HTTP 302 redirects) is When application level redirection (e.g. HTTP 302 redirects) is
being used between CDNs, it is expected that the downstream CDN will being used between CDNs, it is expected that the downstream CDN will
be able to determine the upstream CDN that redirected a particular be able to determine the upstream CDN that redirected a particular
request from information contained in the received request (e.g. via request from information contained in the received request (e.g. via
the URI in case of HTTP redirection across CDNs). With knowledge of the URI). With knowledge of which upstream CDN routed the request,
which upstream CDN routed the request, the downstream CDN can choose the downstream CDN can choose the correct metadata server from which
the correct metadata server from which to obtain the HostIndex. Note to obtain the HostIndex. Note that the HostIndex served by each uCDN
that the HostIndex served by each uCDN may be unique. may be unique.
In the case of DNS redirection there is not sufficient information In the case of DNS redirection there is not always sufficient
carried in the DNS request from User Agents to determine the upstream information carried in the DNS request from User Agents to determine
CDN that redirected a particular request and therefore downstream the upstream CDN that redirected a particular request (e.g. when
CDNs may have to apply local policy when deciding which upstream content from a given host is redirected to a given downstream CDN by
CDN's metadata to apply. more than one upstream CDN) and therefore downstream CDNs may have to
apply local policy when deciding which upstream CDN's metadata to
apply.
5.3. Bootstrapping 6.3. Bootstrapping
The URI for the HostIndex object of a given upstream CDN needs to be The URI for the HostIndex object of a given upstream CDN needs to be
either discovered by or configured in the downstream CDN. All other either discovered by or configured in the downstream CDN. All other
objects/resources are then discoverable from the HostIndex object by objects/resources are then discoverable from the HostIndex object by
following the links in the HostIndex object and the referenced following the links in the HostIndex object and the referenced
HostMetadata and PathMetadata objects. HostMetadata and PathMetadata objects.
If the URI for the HostIndex object is not manually configured in the If the URI for the HostIndex object is not manually configured in the
downstream CDN then the HostIndex URI could be discovered via the downstream CDN then the HostIndex URI could be discovered. A
CDNI Control interface. An upstream CDN would provide the URI of the mechanism allowing the downstream CDN to discover the URI of the
HostIndex object to the downstream CDN via the CDNI Control HostIndex is outside the scope of this document.
Interface.
5.4. Encoding 6.4. Encoding
Object are resources that may be: Object are resources that may be:
o Addressable, where the object is a resource that may be retrieved o Addressable, where the object is a resource that may be retrieved
or referenced via its own URI. or referenced via its own URI.
o Embedded, where the object is contained (or inlined) within a o Embedded, where the object is contained (or inlined) within a
property of an addressable object. property of an addressable object.
In the descriptions of objects we use the term "X contains Y" to mean In the descriptions of objects we use the term "X contains Y" to mean
either Y is directly embedded in X or that Y is linked to by X. It is either Y is directly embedded in X or that Y is linked to by X. It is
generally a deployment choice for the uCDN implementation to decide generally a deployment choice for the uCDN implementation to decide
when and which CDNI Metadata objects to embed and which are when and which CDNI Metadata objects to embed and which are
separately addressable. separately addressable.
5.4.1. MIME Media Types 6.4.1. MIME Media Types
All MIME types are prefixed with "application/cdni." The MIME type All MIME types are prefixed with "application/cdni." The MIME type
for each object matches the type name of that object as defined by for each object matches the type name of that object as defined by
this document.Table 3 lists a few examples of the MIME Media Type for this document. Table 3 lists a few examples of the MIME Media Type
each object (resource) that is retrievable through the CDNI Metadata for each object (resource) that is retrievable through the CDNI
interface. The MIME type suffix depends on the metadata encoding, Metadata interface. The MIME type suffix depends on the metadata
either "+xml" or "+json". encoding, either "+xml" or "+json".
+--------------+-------------------------------+ +--------------+-------------------------------+
| Data Object | MIME Media Type | | Data Object | MIME Media Type |
+--------------+-------------------------------+ +--------------+-------------------------------+
| HostIndex | application/cdni.HostIndex | | HostIndex | application/cdni.HostIndex |
| HostMatch | application/cdni.HostMatch | | HostMatch | application/cdni.HostMatch |
| HostMetadata | application/cdni.HostMetadata | | HostMetadata | application/cdni.HostMetadata |
| PathMatch | application/cdni.PathMatch | | PathMatch | application/cdni.PathMatch |
| PathMetadata | application/cdni.PathMetadata | | PathMetadata | application/cdni.PathMetadata |
+--------------+-------------------------------+ +--------------+-------------------------------+
Table 3: MIME Media Types for CDNI Metadata resources Table 3: Example MIME Media Types for CDNI Metadata objects
See http://www.iana.org/assignments/media-types/index.html for See http://www.iana.org/assignments/media-types/index.html for
reference. reference.
5.4.2. JSON Encoding of Objects 6.4.2. JSON Encoding of Objects
One possible encoding for a CDNI Metadata object is a JSON object One possible encoding for a CDNI Metadata object is a JSON object
containing a dictionary of (key,value) pairs where the keys are the containing a dictionary of (key,value) pairs where the keys are the
property names and the values are the associated property values. property names and the values are the associated property values.
The keys of the dictionary are the names of the properties associated The keys of the dictionary are the names of the properties associated
with the object and are therefore dependent on the specific object with the object and are therefore dependent on the specific object
being encoded (i.e. dependent on the MIME Media Type of the returned being encoded (i.e. dependent on the MIME Media Type of the returned
resource). Likewise, the values associated with each key are resource). Likewise, the values associated with each key are
dependent on the specific object being encoded (i.e. dependent on the dependent on the specific object being encoded (i.e. dependent on the
MIME Media Type of the returned resource). MIME Media Type of the returned resource).
Dictionary keys in JSON are case sensitive and therefore any Dictionary keys in JSON are case sensitive and therefore by
dictionary key defined by this document (for example the names of convention any dictionary key defined by this document (for example
CDNI Metadata object properties) MUST always be represented in the names of CDNI Metadata object properties) MUST be represented in
lowercase. lowercase.
In addition to the properties specific to each object type, the keys In addition to the properties specific to each object type, the keys
defined below may be present in any object. defined below may be present in any object.
Key: base Key: base
Description: Provides a prefix for any relative URLs in the Description: Provides a prefix for any relative URLs in the
object. This is similar to the XML base tag [XML-BASE]. If object. This is similar to the XML base tag [XML-BASE]. If
absent, all URLs in the remainder of the document must be absent, all URLs in the remainder of the document must be
absolute URLs. absolute URLs.
Type: URI Type: URI
Mandatory: No Mandatory: No
Key: links Key: links
Description: The links of this object to other addressable Description: The links of this object to other addressable
objects. Any property may be replaced by a link to an object objects. Any property may be replaced by a link to an object
with the same type as the property it replaces. with the same type as the property it replaces.
Type: List of Link objects
Type: List of Link
Mandatory: Yes Mandatory: Yes
5.4.2.1. JSON Example 6.4.2.1. JSON Example
A downstream CDN may request the HostIndex and receive the following A downstream CDN may request the HostIndex and receive the following
object of type "application/cdni.HostIndex+json": object of type "application/cdni.HostIndex+json":
{ {
"hosts": [ "hosts": [
{ {
"host": "video.example.com", "host": "video.example.com",
"links": [ "links": [
{ {
skipping to change at page 27, line 24 skipping to change at page 30, line 24
"end": "1327393200" "end": "1327393200"
} }
], ],
"type": "allow" "type": "allow"
] ]
} }
} }
] ]
} }
5.4.3. XML Encoding of Objects 6.4.3. XML Encoding of Objects
Another possible encoding for a CDNI Metadata object is an XML Another possible encoding for a CDNI Metadata object is an XML
document containing elements with tag names which match property document containing elements with tag names which match property
names and values which match the associated property values. names and values which match the associated property values.
Tag names of elements are the names of the properties associated with Tag names of elements are the names of the properties associated with
the object and are therefore dependent on the specific object being the object and are therefore dependent on the specific object being
encoded (i.e. dependent on the MIME Media Type of the returned encoded (i.e. dependent on the MIME Media Type of the returned
resource). Likewise, the values associated with each element are resource). Likewise, the values associated with each element are
dependent on the specific object being encoded (i.e. dependent on the dependent on the specific object being encoded (i.e. dependent on the
skipping to change at page 27, line 48 skipping to change at page 30, line 48
For example the "hosts" property is a list of "HostMatch" objects. For example the "hosts" property is a list of "HostMatch" objects.
This list would be encoded as multiple "host" elements. This list would be encoded as multiple "host" elements.
Link objects are a special case. If a Link object replaces a Link objects are a special case. If a Link object replaces a
property then a "link" element replaces the expected element. The property then a "link" element replaces the expected element. The
properties of the Link object are encoded as XML attributes. The properties of the Link object are encoded as XML attributes. The
type attribute is set to the MIME type of the target object. The type attribute is set to the MIME type of the target object. The
href attribute is set to the URI of the target object. The rel href attribute is set to the URI of the target object. The rel
attribute is set to the name of the element being replaced. attribute is set to the name of the element being replaced.
5.4.3.1. XML Example 6.4.3.1. XML Example
A downstream CDN may request the HostIndex and receive the following A downstream CDN may request the HostIndex and receive the following
object of type "application/cdni.HostIndex+xml": object of type "application/cdni.HostIndex+xml":
<HostIndex> <HostIndex>
<host> <host>
<host>video.example.com</host> <host>video.example.com</host>
<link rel="host-metadata" type="application/cdni.HostMetadata" <link rel="host-metadata" type="application/cdni.HostMetadata"
href="http://metadata.ucdn.example.com/video"/> href="http://metadata.ucdn.example.com/video"/>
</host> </host>
skipping to change at page 30, line 19 skipping to change at page 33, line 19
<time> <time>
<time> <time>
<start>1213948800</start> <start>1213948800</start>
<end>1327393200</end> <end>1327393200</end>
</time> </time>
<type>allow</type> <type>allow</type>
</time> </time>
</metadata> </metadata>
</PathMetadata> </PathMetadata>
5.5. Extensibility 6.5. Extensibility
The set of property Metadata may be extended with proprietary and/or The set of property Metadata may be extended with proprietary and/or
custom property Metadata. The GenericMetadata object defined in custom property Metadata. The GenericMetadata object defined in
Section 4.1.7 allows any Metadata property to be included in either Section 4.1.7 allows any Metadata property to be included in either
the HostMetadata or PathMetadata lists. As described in Section 3.4, the HostMetadata or PathMetadata lists. As described in Section 3.4,
it is suggested that proprietary and/or custom property Metadata be any proprietary and/or custom property Metadata SHOULD be identified
identified by the "ext." prefix in an appropriately descriptive type by the "ext." prefix in an appropriately descriptive type which
which conveys the organization defining the property Metadata and the conveys the organization defining the property Metadata and the
function of the property Metadata. function of the property Metadata.
Note: Identification of the property Metadata defining organization Note: Identification of the property Metadata defining organization
in the property Metadata type decreases the possibility of property in the property Metadata type decreases the possibility of property
Metadata type collision. Metadata type collision. The fully-qualified domain name of the
organization in reverse order may be used for this purpose.
5.5.1. Metadata Enforcement 6.5.1. Metadata Enforcement
At any given time, the set of property Metadata supported by the uCDN At any given time, the set of property Metadata supported by the uCDN
may not match the set of property Metadata supported by the dCDN. may not match the set of property Metadata supported by the dCDN.
The uCDN may or may not know which property Metadata the dCDN The uCDN may or may not know which property Metadata the dCDN
supports. In cases where the uCDN supports Metadata that the dCDN supports. In cases where the uCDN supports Metadata that the dCDN
does not, the dCDN MUST be aware of any Metadata marked as does not, the dCDN MUST be aware of any Metadata marked as
"mandatory-to-enforce". If a CDN does not understand or is unable to "mandatory-to-enforce". If a CDN does not understand or is unable to
perform the functions associated with any "mandatory-to-enforce" perform the functions associated with any "mandatory-to-enforce"
Metadata, the CDN MUST NOT service any requests for the corresponding Metadata, the CDN MUST NOT service any requests for the corresponding
content. content.
Note: Ideally, uCDNs would not delegate content requests to a dCDN Note: Ideally, uCDNs would not delegate content requests to a dCDN
which does not support the Metadata associated with the content being which does not support the mandatory-to-enforce Metadata associated
requested. However, even if the uCDN has a priori knowledge of the with the content being requested. However, even if the uCDN has a
Metadata supported by the dCDN (e.g., via the CDNI capabilities priori knowledge of the Metadata supported by the dCDN (e.g., via the
interface or through out-of-band negotiation between CDN operators) CDNI capabilities interface or through out-of-band negotiation
Metadata support may fluctuate or be inconsistent (e.g., due to mis- between CDN operators) Metadata support may fluctuate or be
communication, mis-configuration, or temporary outage). The dCDN inconsistent (e.g., due to mis-communication, mis-configuration, or
MUST evaluate all Metadata associated with content requests and temporary outage). Thus, the dCDN MUST evaluate all Metadata
reject any requests where "mandatory-to-enforce" Metadata associated associated with content requests and reject any requests where
with the content cannot be enforced. "mandatory-to-enforce" Metadata associated with the content cannot be
enforced.
5.5.2. Metadata Override 6.5.2. Metadata Override
It is possible that new Metadata definitions may obsolete or override It is possible that new Metadata definitions may obsolete or override
existing property Metadata (e.g., a future revision of the CDNI existing property Metadata (e.g., a future revision of the CDNI
Metadata interface may redefine the Auth Metadata or a custom vendor Metadata interface may redefine the Auth Metadata or a custom vendor
extension may implement an alternate Auth Metadata option). If extension may implement an alternate Auth Metadata option). If
multiple Metadata (e.g., cdni.v2.Auth, ext.vendor1.Auth, and multiple Metadata (e.g., cdni.v2.Auth, ext.vendor1.Auth, and
ext.vendor2.Auth) all override an existing Metadata (e.g., cdni.Auth) ext.vendor2.Auth) all override an existing Metadata (e.g., cdni.Auth)
and all are marked as "mandatory-to-enforce", it may be ambiguous and all are marked as "mandatory-to-enforce", it may be ambiguous
which Metadata should be applied, especially if the functionality of which Metadata should be applied, especially if the functionality of
the Metadata conflict. the Metadata conflict.
As described in Section 3.3, Metadata override only applies to As described in Section 3.3, Metadata override only applies to
Metadata objects of the same exact type, found in HostMetadata and Metadata objects of the same exact type, found in HostMetadata and
nested PathMetadata structures. The CDNI Metadata interface does not nested PathMetadata structures. The CDNI Metadata interface does not
support enforcement of dependencies between different Metadata types. support enforcement of dependencies between different Metadata types.
It is the responsibility of the CSP and the CDN operators to ensure It is the responsibility of the CSP and the CDN operators to ensure
that Metadata assigned to a given content asset do not conflict. that Metadata assigned to a given content do not conflict.
Note: Because Metadata is inherently ordered in GenericMetadata Note: Because Metadata is inherently ordered in GenericMetadata
lists, as well as in the PathMetadata hierarchy and PathMatch lists, lists, as well as in the PathMetadata hierarchy and PathMatch lists,
multiple conflicting Metadata types MAY be used, however, Metadata multiple conflicting Metadata types MAY be used, however, Metadata
hierarchies MUST ensure that independent PathMatch root objects are hierarchies MUST ensure that independent PathMatch root objects are
used to prevent ambiguous or conflicting Metadata definitions. used to prevent ambiguous or conflicting Metadata definitions.
6. IANA Considerations 6.6. Versioning
The first version of the CDNI Metadata interface does not include
version numbering. Subsequent versions will incorporate a syntax for
versioning.
7. IANA Considerations
This document requests the registration of the "application/cdni" This document requests the registration of the "application/cdni"
MIME type. MIME Media Type under the IANA MIME Media Type registry
(http://www.iana.org/assignments/media-types/index.html).
[Ed. Need to consider a registry for Metadata type identifiers.] [Ed. Need to consider a registry for Metadata type identifiers.]
7. Security Considerations 8. Security Considerations
The CDNI Metadata Interface is expected to be secured as a function The CDNI Metadata Interface is expected to be secured as a function
of the transport protocol (e.g. HTTP authentication, HTTPS, or of the transport protocol (e.g. HTTP authentication [RFC2617], HTTPS
inter-domain IPSec). [RFC2818], or inter-domain IPSec).
If a malicious metadata server is contacted by a downstream CDN, the If a malicious metadata server is contacted by a downstream CDN, the
malicious server may provide metadata to the downstream CDN which malicious server may provide metadata to the downstream CDN which
denies service for any piece of content to any user agent. The denies service for any piece of content to any user agent. The
malicious server may also provide metadata which directs a downstream malicious server may also provide metadata which directs a downstream
CDN to a malicious origin server instead of the actual origin server. CDN to a malicious origin server instead of the actual origin server.
The dCDN is expected to authenticate the server to prevent this
situation (e.g. by using HTTPS and validating the server's
certificate).
A malicious metadata client could request metadata for a piece of A malicious metadata client could request metadata for a piece of
content from an upstream CDN. The metadata information may then be content from an upstream CDN. The metadata information may then be
used to glean information regarding the uCDN or to contact an used to glean information regarding the uCDN or to contact an
upstream origin server. The uCDN is expected to authenticate client upstream origin server. The uCDN is expected to authenticate client
requests to prevent this situation. requests to prevent this situation.
8. Acknowledgements 9. Acknowledgements
The authors would like to thank David Ferguson and Francois le The authors would like to thank David Ferguson and Francois le
Faucheur for their valuable comments and input to this document. Faucheur for their valuable comments and input to this document.
9. References 10. References
9.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
Leach, P., Luotonen, A., and L. Stewart, "HTTP
Authentication: Basic and Digest Access Authentication",
RFC 2617, June 1999.
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, February 2006. Architecture", RFC 4291, February 2006.
[RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6
Address Text Representation", RFC 5952, August 2010. Address Text Representation", RFC 5952, August 2010.
9.2. Informative References 10.2. Informative References
[I-D.davie-cdni-framework]
Davie, B. and L. Peterson, "Framework for CDN
Interconnection", draft-davie-cdni-framework-00 (work in
progress), July 2011.
[I-D.ietf-cdni-problem-statement] [I-D.ietf-cdni-framework]
Niven-Jenkins, B., Faucheur, F., and N. Bitar, "Content Peterson, L. and B. Davie, "Framework for CDN
Distribution Network Interconnection (CDNI) Problem Interconnection", draft-ietf-cdni-framework-03 (work in
Statement", draft-ietf-cdni-problem-statement-03 (work in progress), February 2013.
progress), January 2012.
[I-D.ietf-cdni-requirements] [I-D.ietf-cdni-requirements]
Leung, K. and Y. Lee, "Content Distribution Network Leung, K. and Y. Lee, "Content Distribution Network
Interconnection (CDNI) Requirements", Interconnection (CDNI) Requirements",
draft-ietf-cdni-requirements-02 (work in progress), draft-ietf-cdni-requirements-05 (work in progress),
December 2011. February 2013.
[I-D.zyp-json-schema] [I-D.zyp-json-schema]
Zyp, K. and G. Court, "A JSON Media Type for Describing Zyp, K. and G. Court, "A JSON Media Type for Describing
the Structure and Meaning of JSON Documents", the Structure and Meaning of JSON Documents",
draft-zyp-json-schema-03 (work in progress), draft-zyp-json-schema-03 (work in progress),
November 2010. November 2010.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, January 2005. RFC 3986, January 2005.
[RFC4151] Kindberg, T. and S. Hawke, "The 'tag' URI Scheme", [RFC4151] Kindberg, T. and S. Hawke, "The 'tag' URI Scheme",
RFC 4151, October 2005. RFC 4151, October 2005.
[RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom [RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom
Syndication Format", RFC 4287, December 2005. Syndication Format", RFC 4287, December 2005.
[RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
Distribution Network Interconnection (CDNI) Problem
Statement", RFC 6707, September 2012.
[XML-BASE] [XML-BASE]
Marsh, J., Ed. and R. Tobin, Ed., "XML Base (Second Marsh, J., Ed. and R. Tobin, Ed., "XML Base (Second
Edition) - http://www.w3.org/TR/xmlbase/", January 2009. Edition) - http://www.w3.org/TR/xmlbase/", January 2009.
Appendix A. Relationship to the CDNI Requirements Appendix A. Relationship to the CDNI Requirements
Section 6 of [I-D.ietf-cdni-requirements] lists the requirements for Section 6 of [I-D.ietf-cdni-requirements] lists the requirements for
the CDNI Metadata Distribution interface. This section outlines the CDNI Metadata Distribution interface. This section outlines
which of those requirements are met by the CDNI Metadata interface which of those requirements are met by the CDNI Metadata interface
specified in this document. specified in this document.
All metadata requirements are met either directly or indirectly by All metadata requirements are met either directly or indirectly by
the CDNI Metadata Interface described in this document. The the CDNI Metadata Interface described in this document, with the
following paragraphs describe notable exceptions. clarifications or exceptions described in the following paragraphs.
Requirements related to pre-positioning of metadata are not met Requirements related to pre-positioning of metadata are met by this
directly by this document. Triggering metadata pre-positioning is document on the assumption that other CDNI Interfaces are to be used
beyond the scope of the CDNI Metadata interface. However, the by the upstream CDN to trigger the pre-positioning of metadata by the
interface as described by this document supports pulling metadata on- downstream CDN via the CDNI Metadata Interface. Triggering metadata
demand for the purpose of pre-positioning. pre-positioning is beyond the scope of the CDNI Metadata interface.
However, the interface as described by this document supports pulling
metadata on-demand for the purpose of pre-positioning.
Requirement META-13 relating to feedback from the downstream CDN to Requirement META-7 relating to modification of metadata by the
the upstream CDN with respect to metadata is not directly supported upstream CDN is met both by allowing timeouts on the cacheability of
by the pull-based interface described in this document. As an metadata objects and by allowing other CDNI interfaces to initiate a
alternative, the downstream CDN may use the CDNI Logging interface to refetch or purge of metadata.
convey error conditions related to metadata.
Requirement META-18 relating to surrogate cache behavior parameters Requirement META-18 relating to surrogate cache behavior parameters
is supported via extensibility. However, the example parameters in is supported via extensibility. However, the example parameters in
META-18 are not described in this document. META-18 are not described in this document.
Appendix B. Metadata Rewriting
For some use cases, one CDN in a chain of interconnected CDNs must be
able to rewrite CDNI Metadata received from its upstream CDN before
presenting that CDNI Metadata to its downstream CDN.
The CDN which is performing the metadata rewriting is referred to as
the 'Transit' CDN (tCDN), its upstream CDN as the uCDN and its
downstream CDN as the dCDN.
Two (non-exhaustive) examples of when rewriting are:
Allowing the dCDN is to acquire content from the tCDN instead of
(or as well as) the uCDN. The tCDN must modify the appropriate
CDNI Source Metadata objects to include itself as a possible
source for the content.
If the tCDN is transforming the original URI as part of CDNI
request redirection on-route to the dCDN, the tCDN may need to
modify the PatternMatch objects in any PathMetadata to take
account of any URI path transformation it has performed.
When performing HTTP redirection between CDNs, the dCDN must be able
to map an UA request to a host and path which are meaningful to the
tCDN. The dCDN needs only to identify its immediate upstream
neighbor and does not need to map (or understand) the entire chain of
CDNs that precede the tCDN.
A dCDN may encode the identity of the tCDN in the URI it returns to
the UA as part of request redirection (either directly or via the
CDNI Request Routing Redirection interface). The exact method the
dCDN uses to encode the information it requires is a local
implementation decision provided it enables the dCDN to identify the
correct upstream CDN (tCDN) and to map the request to the appropriate
host and path so that the dCDN can find and retrieve the correct CDNI
Metadata from tCDN.
B.1. Example
The example in this section is not necessarily representative of URL
rewriting in practice.
The UA requests the following URI from the uCDN:
http://video.example/foo/bar
The uCDN makes a CDNI Request Routing Redirection request to tCDN and
tCDN returns a redirection URI of:
http://tcdn.example/tcdn-prefix/foo/bar
The tcdn-prefix/ encodes sufficient information for tCDN to identify
uCDN as its upstream CDN neighbor. The tCDN makes a CDNI Request
Routing Redirection request to dCDN and dCDN returns a redirection
URI of:
http://dcdn.example/dcdn-prefix/tcdn-prefix/foo/bar
Therefore when dCDN receives a request for:
http://dcdn.example/dcdn-prefix/tcdn-prefix/foo/bar
The dCDN can use /dcdn-prefix/ to identify tCDN as its upstream CDN
neighbor and reconstruct the URI tCDN expects. The tCDN can in turn
use /tcdn-prefix/ to identify uCDN as its upstream CDN neighbour and
reconstruct the URI uCDN expects.
Authors' Addresses Authors' Addresses
Ben Niven-Jenkins Ben Niven-Jenkins
Velocix (Alcatel-Lucent) Velocix (Alcatel-Lucent)
3 Ely Road 3 Ely Road
Milton, Cambridge CB24 6AA Milton, Cambridge CB24 6AA
UK UK
Email: ben@velocix.com Email: ben@velocix.com
Rob Murray Rob Murray
Velocix (Alcatel-Lucent) Velocix (Alcatel-Lucent)
3 Ely Road 3 Ely Road
Milton, Cambridge CB24 6AA Milton, Cambridge CB24 6AA
UK UK
Email: rmurray@velocix.com Email: rmurray@velocix.com
Grant Watson Grant Watson
Velocix (Alcatel-Lucent) Velocix (Alcatel-Lucent)
 End of changes. 126 change blocks. 
304 lines changed or deleted 518 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/