draft-ietf-cdni-control-triggers-00.txt   draft-ietf-cdni-control-triggers-01.txt 
Network Working Group R. Murray Network Working Group R. Murray
Internet-Draft B. Niven-Jenkins Internet-Draft B. Niven-Jenkins
Intended status: Standards Track Velocix (Alcatel-Lucent) Intended status: Standards Track Velocix (Alcatel-Lucent)
Expires: October 10, 2013 April 8, 2013 Expires: April 24, 2014 October 21, 2013
CDNI Control Interface / Triggers CDNI Control Interface / Triggers
draft-ietf-cdni-control-triggers-00 draft-ietf-cdni-control-triggers-01
Abstract Abstract
This document describes the part of the CDN Interconnect Control This document describes the part of the CDN Interconnect Control
Interface that allows a CDN to trigger activity in an interconnected Interface that allows a CDN to trigger activity in an interconnected
CDN that is configured to deliver content on its behalf. The CDN that is configured to deliver content on its behalf. The
upstream CDN can use this mechanism to request that the downstream upstream CDN can use this mechanism to request that the downstream
CDN pre-positions metadata or content, or that it re-validate or CDN pre-positions metadata or content, or that it re-validate or
purge metadata or content. The upstream CDN can monitor the status purge metadata or content. The upstream CDN can monitor the status
of activity that it has triggered in the downstream CDN. of activity that it has triggered in the downstream CDN.
skipping to change at page 1, line 42 skipping to change at page 1, line 42
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 October 10, 2013. This Internet-Draft will expire on April 24, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 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
skipping to change at page 2, line 45 skipping to change at page 2, line 45
5.5. Trigger Resource Simple Data Type Descriptions . . . . . . 16 5.5. Trigger Resource Simple Data Type Descriptions . . . . . . 16
5.5.1. TriggerType . . . . . . . . . . . . . . . . . . . . . 16 5.5.1. TriggerType . . . . . . . . . . . . . . . . . . . . . 16
5.5.2. TriggerStatus . . . . . . . . . . . . . . . . . . . . 16 5.5.2. TriggerStatus . . . . . . . . . . . . . . . . . . . . 16
5.5.3. URLs . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.5.3. URLs . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.5.4. AbsoluteTime . . . . . . . . . . . . . . . . . . . . . 17 5.5.4. AbsoluteTime . . . . . . . . . . . . . . . . . . . . . 17
5.5.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 17 5.5.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 17
6. JSON Encoding of Objects . . . . . . . . . . . . . . . . . . . 17 6. JSON Encoding of Objects . . . . . . . . . . . . . . . . . . . 17
6.1. JSON Encoding of Embedded Types . . . . . . . . . . . . . 18 6.1. JSON Encoding of Embedded Types . . . . . . . . . . . . . 18
6.1.1. TriggerType . . . . . . . . . . . . . . . . . . . . . 18 6.1.1. TriggerType . . . . . . . . . . . . . . . . . . . . . 18
6.1.2. TriggerStatus . . . . . . . . . . . . . . . . . . . . 18 6.1.2. TriggerStatus . . . . . . . . . . . . . . . . . . . . 18
6.1.3. PatternMatch . . . . . . . . . . . . . . . . . . . . . 19 6.1.3. PatternMatch . . . . . . . . . . . . . . . . . . . . . 18
6.1.4. ErrorDesc . . . . . . . . . . . . . . . . . . . . . . 19 6.1.4. ErrorDesc . . . . . . . . . . . . . . . . . . . . . . 19
6.1.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 20 6.1.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 19
6.1.6. Relationship . . . . . . . . . . . . . . . . . . . . . 20 6.1.6. Relationship . . . . . . . . . . . . . . . . . . . . . 20
6.2. MIME Media Types . . . . . . . . . . . . . . . . . . . . . 20 6.2. MIME Media Types . . . . . . . . . . . . . . . . . . . . . 20
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 21 7.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 21
7.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 21 7.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 21
7.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . . 23 7.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . . 22
7.2. Examining Trigger Status . . . . . . . . . . . . . . . . . 24 7.2. Examining Trigger Status . . . . . . . . . . . . . . . . . 24
7.2.1. Collection of All Triggers . . . . . . . . . . . . . . 24 7.2.1. Collection of All Triggers . . . . . . . . . . . . . . 24
7.2.2. Filtered Collections of Triggers . . . . . . . . . . . 25 7.2.2. Filtered Collections of Triggers . . . . . . . . . . . 25
7.2.3. Trigger Status Resources . . . . . . . . . . . . . . . 27 7.2.3. Trigger Status Resources . . . . . . . . . . . . . . . 26
7.2.4. Polling for Change . . . . . . . . . . . . . . . . . . 29 7.2.4. Polling for Change . . . . . . . . . . . . . . . . . . 28
7.2.5. Cancelling or Removing a Trigger . . . . . . . . . . . 32 7.2.5. Cancelling or Removing a Trigger . . . . . . . . . . . 31
7.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 34 7.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 33
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 9. Security Considerations . . . . . . . . . . . . . . . . . . . 34
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 35 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.1. Normative References . . . . . . . . . . . . . . . . . . . 35 11.1. Normative References . . . . . . . . . . . . . . . . . . . 34
11.2. Informative References . . . . . . . . . . . . . . . . . . 35 11.2. Informative References . . . . . . . . . . . . . . . . . . 34
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction 1. Introduction
[RFC6707] introduces the Problem scope for CDN Interconnection (CDNI) [RFC6707] introduces the Problem scope for CDN Interconnection (CDNI)
and lists the four categories of interfaces that may be used to and lists the four categories of interfaces that may be used to
compose a CDNI solution (Control, Metadata, Request Routing, compose a CDNI solution (Control, Metadata, Request Routing,
Logging). Logging).
[I-D.ietf-cdni-framework] expands on the information provided in [I-D.ietf-cdni-framework] expands on the information provided in
[RFC6707] and describes each of the interfaces and the relationships [RFC6707] and describes each of the interfaces and the relationships
between them in more detail. between them in more detail.
This draft concentrates on the "High" and "Medium" priority This document describes the "CI/T" interface, "CDNI Control interface
requirements for the CDNI Control Interface identified in section 4 / Triggers". It does not consider those parts of the control
of [I-D.ietf-cdni-requirements], reproduced here for convenience: interface that relate to configuration, bootstrapping or
authentication of CDN Interconnect interfaces. Requirements for CI/T
CNTL-1 [HIGH] The CDNI Control interface shall allow the Upstream are the "High" and "Medium" priority requirements for the CI
CDN to request that the Downstream CDN (and, if cascaded CDNs are identified in section 4 of [I-D.ietf-cdni-requirements], reproduced
supported by the solution, that the potential cascaded Downstream here for convenience:
CDNs) perform the following actions on an object or object set:
* Mark an object or set of objects and/or its CDNI metadata as CI-1 [HIGH] The CDNI Control interface shall allow the Upstream
"stale" and revalidate them before they are delivered again CDN to request that the Downstream CDN, including downstream
* Delete an object or set of objects and/or its CDNI metadata cascaded CDNs, delete an object or set of objects and/or its CDNI
from the CDN surrogates and any storage. Only the object(s) metadata from the CDN surrogates and any storage. Only the
and CDNI metadata that pertain to the requesting Upstream CDN object(s) and CDNI metadata that pertain to the requesting
are allowed to be purged. Upstream CDN are allowed to be purged.
CNTL-2 [HIGH] The CDNI Control interface shall allow the CI-2 [MED] The CDNI Control interface should allow for multiple
Downstream CDN to report on the completion of these actions (by content items identified by a Content Collection ID to be purged
itself, and if cascaded CDNs are supported by the solution, by using a single Content Purge action.
potential cascaded Downstream CDNs), in a manner appropriate for CI-3 [MED] The CDNI Control interface should allow the Upstream
CDN to request that the Downstream CDN, including downstream
cascaded CDNs, mark an object or set of objects and/or its CDNI
metadata as "stale" and revalidate them before they are delivered
again.
CI-4 [HIGH] The CDNI Control interface shall allow the Downstream
CDN to report on the completion of these actions (by itself, and
including downstream cascaded CDNs, in a manner appropriate for
the action (e.g. synchronously or asynchronously). The the action (e.g. synchronously or asynchronously). The
confirmation receipt should include a success or failure confirmation receipt should include a success or failure
indication. The failure indication is used if the Downstream CDN indication. The failure indication along with the reason are used
cannot delete the content in its storage. if the Downstream CDN cannot delete the content in its storage.
CNTL-3 [HIGH] The CDNI Control interface shall support initiation CI-5 [MED] The CDNI Control interface should support initiation
and control by the Upstream CDN of pre-positioned CDNI metadata and control by the Upstream CDN of pre-positioned CDNI metadata
acquisition by the Downstream CDN. acquisition by the Downstream CDN.
CNTL-4 [MED] The CDNI Control interface should support initiation CI-6 [MED] The CDNI Control interface should support initiation
and control by the Upstream CDN of pre-positioned content and control by the Upstream CDN of pre-positioned content
acquisition by the Downstream CDN. acquisition by the Downstream CDN.
CNTL-12 [MED] The CDNI Control interface should allow for multiple
content items identified by a Content Collection ID to be purged
using a single Content Purge action.
This document describes the CI/T interface, Control Interface /
Triggers. It does not consider those parts of the control interface
that relate to configuration, bootstrapping or authentication of CDN
Interconnect interfaces.
o Section 2 outlines the model for the Trigger Interface at a high o Section 2 outlines the model for the CI/T Interface at a high
level. level.
o Section 3 describes collections of Trigger Resources. o Section 3 describes collections of Trigger Resources.
o Section 4 defines the RESTful web service provided by dCDN. o Section 4 defines the RESTful web service provided by dCDN.
o Section 5 lists properties of Trigger Requests and Status o Section 5 lists properties of Trigger Requests and Status
Resources. Resources.
o Section 6 defines a JSON encoding for Trigger Requests and Status o Section 6 defines a JSON encoding for Trigger Requests and Status
Resources. Resources.
o Section 7 contains example messages. o Section 7 contains example messages.
1.1. Terminology 1.1. Terminology
skipping to change at page 8, line 43 skipping to change at page 8, line 43
o Failed - Trigger Status Resources representing activity that o Failed - Trigger Status Resources representing activity that
failed. failed.
4. CDNI Trigger interface 4. CDNI Trigger interface
This section describes an interface to enable an upstream CDN to This section describes an interface to enable an upstream CDN to
trigger defined activities in a downstream CDN. The interface is trigger defined activities in a downstream CDN. The interface is
intended to be independent of the set of activities defined now, or intended to be independent of the set of activities defined now, or
that may be defined in future. that may be defined in future.
The CI/T interface is built on the principles of RESTful web CI/T is built on the principles of RESTful web services. Requests
services. Requests are made over HTTP, and the HTTP Method defines are made over HTTP, and the HTTP Method defines the operation the
the operation the request would like to perform. The corresponding request would like to perform. The corresponding HTTP Response
HTTP Response returns the status of the operation in the HTTP Status returns the status of the operation in the HTTP Status Code and
Code and returns the current representation of the resource (if returns the current representation of the resource (if appropriate)
appropriate) in the Response Body. HTTP Responses from servers in the Response Body. HTTP Responses from servers implementing CI/T
implementing the CI/T interface that contain a response body SHOULD that contain a response body SHOULD include an ETag to enable
include an ETag to enable validation of cached versions of returned validation of cached versions of returned resources.
resources.
Servers implementing the CI/T interface MUST support the HTTP GET, Servers implementing CI/T MUST support the HTTP GET, HEAD, POST and
HEAD, POST and DELETE methods. The only representation specified in DELETE methods. The only representation specified in this document
this document is JSON. is JSON.
Trigger Requests are POSTed to a URI in dCDN. If the trigger is Trigger Requests are POSTed to a URI in dCDN. If the trigger is
accepted by dCDN, it creates a Trigger Status Resource and returns accepted by dCDN, it creates a Trigger Status Resource and returns
its URI to dCDN in an HTTP 201 response. The triggered activity can its URI to dCDN in an HTTP 201 response. The triggered activity can
then be monitored by uCDN using that resource and the collections then be monitored by uCDN using that resource and the collections
described in Section 3. described in Section 3.
The URI that Trigger Requests should be POSTed to needs to be either The URI that Trigger Requests should be POSTed to needs to be either
discovered by or configured in the upstream CDN. Performing a GET on discovered by or configured in the upstream CDN. Performing a GET on
that URI retrieves a collection of the URIs of all Trigger Status that URI retrieves a collection of the URIs of all Trigger Status
skipping to change at page 14, line 31 skipping to change at page 14, line 31
To refer to content in dCDN, uCDN must present URLs in the same form To refer to content in dCDN, uCDN must present URLs in the same form
clients will use to access content in that dCDN, after transformation clients will use to access content in that dCDN, after transformation
to remove any surrogate-specific parts of a 302-redirect URL form. to remove any surrogate-specific parts of a 302-redirect URL form.
By definition, it is always possible to locate content based on URLs By definition, it is always possible to locate content based on URLs
in this form. in this form.
If content URLs are transformed by an intermediate CDN in a cascade, If content URLs are transformed by an intermediate CDN in a cascade,
that intermediate CDN must transform URLs in trigger requests it that intermediate CDN must transform URLs in trigger requests it
passes to its dCDN. passes to its dCDN.
[Editor's note: Design for CDNI Metadata transformation, including When processing trigger requests, CDNs SHOULD ignore the URL scheme
discussion of URL transformation, is being undertaken as part of the
work on the metadata interface. The intention is to align with that
document or make reference to it when it's complete.]
When processing trigger requests, CDNs may ignore the URL scheme
(http or https) in comparing URLs. For example, for an invalidate or (http or https) in comparing URLs. For example, for an invalidate or
purge trigger, content may invalidated or purged regardless of the purge trigger, content may invalidated or purged regardless of the
protocol clients use to request it. protocol clients use to request it.
5.2. Properties of Trigger Status Resources 5.2. Properties of Trigger Status Resources
Property: trigger Property: trigger
Description: The properties of trigger request that created Description: The properties of trigger request that created
this record. this record.
Type: TriggerRequest Type: TriggerRequest
skipping to change at page 20, line 30 skipping to change at page 20, line 24
document. document.
o title - An optional title for the Relationship/link. o title - An optional title for the Relationship/link.
Note: The above structure follows the pattern of atom:link in Note: The above structure follows the pattern of atom:link in
[RFC4287]. [RFC4287].
Example Relationship to a CI/T Resource within a CI/T Collection: Example Relationship to a CI/T Resource within a CI/T Collection:
{ {
"href": "http://triggers.cdni.example.com/trigger/12345", "href": "http://triggers.cdni.example.com/trigger/12345",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
} }
The format of relationship values is expected to align with other The format of relationship values is expected to align with other
CDNI interfaces. For example, rather than use simple names (like CDNI interfaces. For example, rather than use simple names (like
"Trigger" in this case), there may be a namespace that allows well- "Trigger" in this case), there may be a namespace that allows well-
known and proprietary values to co-exist. known and proprietary values to co-exist.
6.2. MIME Media Types 6.2. MIME Media Types
Table 1 lists the MIME Media Type for each trigger object (resource) Table 1 lists the MIME Media Type for the trigger request, and each
that is retrievable through the CI/T interface. trigger object (resource) that is retrievable through the CI/T
interface.
Note: A prefix of "vnd.cdni" is used, however it is expected that a
more appropriate prefix will be used if the CDNI WG accepts this
document.
+-------------------+-----------------------------------------------+ +-------------------+--------------------------------------------+
| Data Object | MIME Media Type | | Data Object | MIME Media Type |
+-------------------+-----------------------------------------------+ +-------------------+--------------------------------------------+
| TriggerStatus | application/ | | TriggerRequest | application/cdni.ci.TriggerRequest+json |
| | vnd.cdni.control.trigger.status+json | | TriggerStatus | application/cdni.ci.TriggerStatus+json |
| TriggerCollection | application/ | | TriggerCollection | application/cdni.ci.TriggerCollection+json |
| | vnd.cdni.control.trigger.collection+json | +-------------------+--------------------------------------------+
+-------------------+-----------------------------------------------+
Table 1: MIME Media Types for CDNI Trigger resources Table 1: MIME Media Types for CDNI Trigger resources
7. Examples 7. Examples
The following sections provide examples of different CI/T objects The following sections provide examples of different CI/T objects
encoded as JSON. encoded as JSON.
No authentication is shown in the following illustrative examples, it No authentication is shown in the following illustrative examples, it
is anticipated that authentication mechanisms will be aligned with is anticipated that authentication mechanisms will be aligned with
skipping to change at page 22, line 9 skipping to change at page 21, line 40
collection. collection.
Note that "metadata.patterns" and "content.patterns" are not allowed Note that "metadata.patterns" and "content.patterns" are not allowed
in a preposition trigger request. in a preposition trigger request.
REQUEST: REQUEST:
POST /triggers HTTP/1.1 POST /triggers HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
Content-Type: application/vnd.cdni.control.trigger.request+json Content-Type: application/cdni.ci.TriggerRequest+json
Content-Length: 315 Content-Length: 315
{ {
"trigger" : { "trigger" : {
"type": "preposition", "type": "preposition",
"metadata.urls" : [ "http://metadata.example.com/a/b/c" ], "metadata.urls" : [ "http://metadata.example.com/a/b/c" ],
"content.urls" : [ "content.urls" : [
"http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/1",
"http://www.example.com/a/b/c/2", "http://www.example.com/a/b/c/2",
skipping to change at page 22, line 22 skipping to change at page 22, line 4
{ {
"trigger" : { "trigger" : {
"type": "preposition", "type": "preposition",
"metadata.urls" : [ "http://metadata.example.com/a/b/c" ], "metadata.urls" : [ "http://metadata.example.com/a/b/c" ],
"content.urls" : [ "content.urls" : [
"http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/1",
"http://www.example.com/a/b/c/2", "http://www.example.com/a/b/c/2",
"http://www.example.com/a/b/c/3", "http://www.example.com/a/b/c/3",
"http://www.example.com/a/b/c/4" "http://www.example.com/a/b/c/4"
] ]
} }
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Sat, 23 Feb 2013 14:20:06 GMT Date: Sat, 23 Feb 2013 14:20:06 GMT
Content-Length: 472 Content-Length: 472
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
Location: http://dcdn.example.com/triggers/0 Location: http://dcdn.example.com/triggers/0
Server: example-server/0.1 Server: example-server/0.1
{ {
"ctime": 1361629206, "ctime": 1361629206,
"etime": 1361629214, "etime": 1361629214,
"mtime": 1361629206, "mtime": 1361629206,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.urls": [ "content.urls": [
skipping to change at page 23, line 19 skipping to change at page 22, line 51
content at "http://www.example.com/a/index.html", as well as any content at "http://www.example.com/a/index.html", as well as any
metadata and content whose URLs are prefixed by metadata and content whose URLs are prefixed by
"http://metadata.example.com/a/b/" and "http://www.example.com/a/b/" "http://metadata.example.com/a/b/" and "http://www.example.com/a/b/"
respectively, using case-insensitive matching. respectively, using case-insensitive matching.
REQUEST: REQUEST:
POST /triggers HTTP/1.1 POST /triggers HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
Content-Type: application/vnd.cdni.control.trigger.request+json Content-Type: application/cdni.ci.TriggerRequest+json
Content-Length: 352 Content-Length: 352
{ {
"trigger" : { "trigger" : {
"type": "invalidate", "type": "invalidate",
"metadata.patterns" : [ "metadata.patterns" : [
{ "pattern" : "http://metadata.example.com/a/b/*" } { "pattern" : "http://metadata.example.com/a/b/*" }
], ],
"content.urls" : [ "http://www.example.com/a/index.html" ], "content.urls" : [ "http://www.example.com/a/index.html" ],
"content.patterns" : [ "content.patterns" : [
skipping to change at page 23, line 44 skipping to change at page 23, line 26
} }
] ]
} }
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Sat, 23 Feb 2013 14:20:08 GMT
Content-Length: 551 Content-Length: 551
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
Location: http://dcdn.example.com/triggers/1 Location: http://dcdn.example.com/triggers/1
Server: example-server/0.1 Server: example-server/0.1
{ {
"ctime": 1361629208, "ctime": 1361629208,
"etime": 1361629216, "etime": 1361629216,
"mtime": 1361629208, "mtime": 1361629208,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
skipping to change at page 25, line 4 skipping to change at page 24, line 18
Once triggers have been created, uCDN can check their status as shown Once triggers have been created, uCDN can check their status as shown
in these examples. in these examples.
7.2.1. Collection of All Triggers 7.2.1. Collection of All Triggers
The uCDN can fetch the set of all the triggers it has created and The uCDN can fetch the set of all the triggers it has created and
which have not yet been deleted or removed as expired. After which have not yet been deleted or removed as expired. After
creation of the "preposition" and "invalidate" triggers shown above, creation of the "preposition" and "invalidate" triggers shown above,
this collection might look as follows: this collection might look as follows:
REQUEST:
REQUEST: GET /triggers HTTP/1.1
User-Agent: example-user-agent/0.1
GET /triggers HTTP/1.1 Host: dcdn.example.com
User-Agent: example-user-agent/0.1 Accept: */*
Host: dcdn.example.com
Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 422 Content-Length: 422
Expires: Sat, 23 Feb 2013 14:21:08 GMT Expires: Sat, 23 Feb 2013 14:21:08 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "1484827667515030767" ETag: "1484827667515030767"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Sat, 23 Feb 2013 14:20:08 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "links": [
{ {
"href": "http://dcdn.example.com/triggers/0", "href": "http://dcdn.example.com/triggers/0",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
} }
], ],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
7.2.2. Filtered Collections of Triggers 7.2.2. Filtered Collections of Triggers
The filtered collections are also available to uCDN. Before dCDN The filtered collections are also available to uCDN. Before dCDN
starts processing the two triggers shown above, both will appear in starts processing the two triggers shown above, both will appear in
the collection of Pending Triggers, for example: the collection of Pending Triggers, for example:
REQUEST:
REQUEST: GET /triggers/pending HTTP/1.1
User-Agent: example-user-agent/0.1
GET /triggers/pending HTTP/1.1 Host: dcdn.example.com
User-Agent: example-user-agent/0.1 Accept: */*
Host: dcdn.example.com
Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 422 Content-Length: 422
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Sat, 23 Feb 2013 14:21:09 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-970375801048973013" ETag: "-970375801048973013"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Sat, 23 Feb 2013 14:20:09 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "links": [
{ {
"href": "http://dcdn.example.com/triggers/0", "href": "http://dcdn.example.com/triggers/0",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
} }
], ],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
At this point, if no other triggers had been created, the other At this point, if no other triggers had been created, the other
filtered views of the triggers would be empty. For example: filtered views of the triggers would be empty. For example:
REQUEST: REQUEST:
GET /triggers/complete HTTP/1.1 GET /triggers/complete HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 53 Content-Length: 53
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Sat, 23 Feb 2013 14:21:09 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-654105208640281650" ETag: "-654105208640281650"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Sat, 23 Feb 2013 14:20:09 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [], "links": [],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
7.2.3. Trigger Status Resources 7.2.3. Trigger Status Resources
The Trigger Status Resources can also be examined for detail about The Trigger Status Resources can also be examined for detail about
individual triggers. For example, for the "preposition" and individual triggers. For example, for the "preposition" and
skipping to change at page 28, line 21 skipping to change at page 27, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 472 Content-Length: 472
Expires: Sat, 23 Feb 2013 14:21:08 GMT Expires: Sat, 23 Feb 2013 14:21:08 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7651038857765989381" ETag: "-7651038857765989381"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Sat, 23 Feb 2013 14:20:08 GMT
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629206, "ctime": 1361629206,
"etime": 1361629214, "etime": 1361629214,
"mtime": 1361629206, "mtime": 1361629206,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.urls": [ "content.urls": [
"http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/1",
"http://www.example.com/a/b/c/2", "http://www.example.com/a/b/c/2",
skipping to change at page 29, line 21 skipping to change at page 28, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 551 Content-Length: 551
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Sat, 23 Feb 2013 14:21:09 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-1103964172288811711" ETag: "-1103964172288811711"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Sat, 23 Feb 2013 14:20:09 GMT
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629208, "ctime": 1361629208,
"etime": 1361629216, "etime": 1361629216,
"mtime": 1361629208, "mtime": 1361629208,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
{ {
"case-sensitive": true, "case-sensitive": true,
skipping to change at page 30, line 22 skipping to change at page 29, line 22
RESPONSE: RESPONSE:
HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified
Content-Length: 0 Content-Length: 0
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Sat, 23 Feb 2013 14:21:09 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-970375801048973013" ETag: "-970375801048973013"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Sat, 23 Feb 2013 14:20:09 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
REQUEST: REQUEST:
GET /triggers/0 HTTP/1.1 GET /triggers/0 HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
If-None-Match: "-7651038857765989381" If-None-Match: "-7651038857765989381"
RESPONSE: RESPONSE:
HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified
Content-Length: 0 Content-Length: 0
Expires: Sat, 23 Feb 2013 14:21:08 GMT Expires: Sat, 23 Feb 2013 14:21:08 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7651038857765989381" ETag: "-7651038857765989381"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Sat, 23 Feb 2013 14:20:08 GMT
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
When the triggered activity is complete, the contents of the filtered When the triggered activity is complete, the contents of the filtered
collections will be updated, along with their Entity Tags. For collections will be updated, along with their Entity Tags. For
example, when the two example triggers are complete, the collections example, when the two example triggers are complete, the collections
of pending and complete triggers may look like: of pending and complete triggers may look like:
REQUEST: REQUEST:
GET /triggers/pending HTTP/1.1 GET /triggers/pending HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
skipping to change at page 31, line 22 skipping to change at page 30, line 22
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 53 Content-Length: 53
Expires: Sat, 23 Feb 2013 14:21:13 GMT Expires: Sat, 23 Feb 2013 14:21:13 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7056231826368088123" ETag: "-7056231826368088123"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:13 GMT Date: Sat, 23 Feb 2013 14:20:13 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [], "links": [],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
REQUEST: REQUEST:
GET /triggers/complete HTTP/1.1 GET /triggers/complete HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 422 Content-Length: 422
Expires: Sat, 23 Feb 2013 14:21:20 GMT Expires: Sat, 23 Feb 2013 14:21:20 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "2013095476705515794" ETag: "2013095476705515794"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Sat, 23 Feb 2013 14:20:20 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "links": [
{ {
"href": "http://dcdn.example.com/triggers/0", "href": "http://dcdn.example.com/triggers/0",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
} }
], ],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
7.2.5. Cancelling or Removing a Trigger 7.2.5. Cancelling or Removing a Trigger
To request dCDN to cancel a Trigger, uCDN may delete the Trigger To request dCDN to cancel a Trigger, uCDN may delete the Trigger
Resource. It may also delete completed and failed triggers to reduce Resource. It may also delete completed and failed triggers to reduce
the size of the collections. For example, to remove the the size of the collections. For example, to remove the
"preposition" request from earlier examples: "preposition" request from earlier examples:
REQUEST: REQUEST:
skipping to change at page 33, line 22 skipping to change at page 32, line 22
RESPONSE: RESPONSE:
HTTP/1.1 204 No Content HTTP/1.1 204 No Content
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Sat, 23 Feb 2013 14:20:20 GMT
Content-Length: 0 Content-Length: 0
Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8
Server: example-server/0.1 Server: example-server/0.1
This would, for example, cause the collection of completed triggers This would, for example, cause the collection of completed triggers
shown in the example above to be updated to: shown in the example above to be updated to:
REQUEST: REQUEST:
GET /triggers/complete HTTP/1.1 GET /triggers/complete HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 239 Content-Length: 239
Expires: Sat, 23 Feb 2013 14:21:20 GMT Expires: Sat, 23 Feb 2013 14:21:20 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "4257416552489354137" ETag: "4257416552489354137"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Sat, 23 Feb 2013 14:20:20 GMT
Content-Type: application/vnd.cdni.control.trigger.collection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "links": [
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "rel": "Trigger",
"type": "application/vnd.cdni.control.trigger.status+json" "type": "application/cdni.ci.TriggerStatus+json"
} }
], ],
"staleresourcetime": 86400 "staleresourcetime": 86400
} }
7.2.6. Error Reporting 7.2.6. Error Reporting
In this example uCDN has requested prepositioning of In this example uCDN has requested prepositioning of
"http://newsite.example.com/index.html", but dCDN was unable to "http://newsite.example.com/index.html", but dCDN was unable to
locate metadata for that site: locate metadata for that site:
REQUEST: REQUEST:
GET /triggers/2 HTTP/1.1 GET /triggers/2 HTTP/1.1
User-Agent: example-user-agent/0.1 User-Agent: example-user-agent/0.1
skipping to change at page 34, line 26 skipping to change at page 33, line 26
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 505 Content-Length: 505
Expires: Sat, 23 Feb 2013 14:21:28 GMT Expires: Sat, 23 Feb 2013 14:21:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "2621489144226897896" ETag: "2621489144226897896"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:28 GMT Date: Sat, 23 Feb 2013 14:20:28 GMT
Content-Type: application/vnd.cdni.control.trigger.status+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629220, "ctime": 1361629220,
"errors": [ "errors": [
{ {
"content.urls": [ "content.urls": [
"http://newsite.example.com/index.html" "http://newsite.example.com/index.html"
], ],
"description": "description":
"No HostIndex entry found for newsite.example.com", "No HostIndex entry found for newsite.example.com",
skipping to change at page 35, line 44 skipping to change at page 34, line 44
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[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.
11.2. Informative References 11.2. Informative References
[I-D.ietf-cdni-framework] [I-D.ietf-cdni-framework]
Peterson, L. and B. Davie, "Framework for CDN Peterson, L. and B. Davie, "Framework for CDN
Interconnection", draft-ietf-cdni-framework-03 (work in Interconnection", draft-ietf-cdni-framework-05 (work in
progress), February 2013. progress), September 2013.
[I-D.ietf-cdni-metadata] [I-D.ietf-cdni-metadata]
Niven-Jenkins, B., Murray, R., Watson, G., Caulfield, M., Niven-Jenkins, B., Murray, R., Watson, G., Caulfield, M.,
Leung, K., and K. Ma, "CDN Interconnect Metadata", Leung, K., and K. Ma, "CDN Interconnect Metadata",
draft-ietf-cdni-metadata-01 (work in progress), draft-ietf-cdni-metadata-02 (work in progress), July 2013.
February 2013.
[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-05 (work in progress), draft-ietf-cdni-requirements-10 (work in progress),
February 2013. September 2013.
[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 [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
Distribution Network Interconnection (CDNI) Problem Distribution Network Interconnection (CDNI) Problem
Statement", RFC 6707, September 2012. 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
 End of changes. 56 change blocks. 
213 lines changed or deleted 198 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/