draft-ietf-cdni-control-triggers-01.txt   draft-ietf-cdni-control-triggers-02.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: April 24, 2014 October 21, 2013 Expires: June 5, 2014 December 2, 2013
CDNI Control Interface / Triggers CDNI Control Interface / Triggers
draft-ietf-cdni-control-triggers-01 draft-ietf-cdni-control-triggers-02
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 April 24, 2014. This Internet-Draft will expire on June 5, 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 22 skipping to change at page 2, line 22
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
2. Model for CDNI Triggers . . . . . . . . . . . . . . . . . . . 5 2. Model for CDNI Triggers . . . . . . . . . . . . . . . . . . . 5
2.1. Timing of Triggered Activity . . . . . . . . . . . . . . . 7 2.1. Timing of Triggered Activity . . . . . . . . . . . . . . . 7
2.2. Trigger Results . . . . . . . . . . . . . . . . . . . . . 7 2.2. Trigger Results . . . . . . . . . . . . . . . . . . . . . 7
3. Collections of Trigger Status Resources . . . . . . . . . . . 7 3. Collections of Trigger Status Resources . . . . . . . . . . . 7
4. CDNI Trigger interface . . . . . . . . . . . . . . . . . . . . 8 4. CDNI Trigger interface . . . . . . . . . . . . . . . . . . . . 8
4.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 10 4.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 9
4.2. Checking Status . . . . . . . . . . . . . . . . . . . . . 11 4.2. Checking Status . . . . . . . . . . . . . . . . . . . . . 10
4.2.1. Polling Trigger Status Resource collections . . . . . 11 4.2.1. Polling Trigger Status Resource collections . . . . . 11
4.2.2. Polling Trigger Status Resources . . . . . . . . . . . 11 4.2.2. Polling Trigger Status Resources . . . . . . . . . . . 11
4.3. Deleting Triggers . . . . . . . . . . . . . . . . . . . . 11 4.3. Deleting Triggers . . . . . . . . . . . . . . . . . . . . 11
4.4. Expiry of Trigger Status Resources . . . . . . . . . . . . 12 4.4. Expiry of Trigger Status Resources . . . . . . . . . . . . 12
4.5. Error Handling . . . . . . . . . . . . . . . . . . . . . . 12 4.5. Error Handling . . . . . . . . . . . . . . . . . . . . . . 12
5. Properties of Triggers . . . . . . . . . . . . . . . . . . . . 13 5. Properties of Triggers . . . . . . . . . . . . . . . . . . . . 13
5.1. Properties of Trigger Requests . . . . . . . . . . . . . . 13 5.1. Properties of Trigger Requests . . . . . . . . . . . . . . 13
5.1.1. Content URLs . . . . . . . . . . . . . . . . . . . . . 14 5.1.1. Content URLs . . . . . . . . . . . . . . . . . . . . . 14
5.2. Properties of Trigger Status Resources . . . . . . . . . . 14 5.2. Properties of Trigger Status Resources . . . . . . . . . . 14
5.3. Properties of ErrorDesc . . . . . . . . . . . . . . . . . 15 5.3. Properties of ErrorDesc . . . . . . . . . . . . . . . . . 15
5.4. Properties of Trigger Collections . . . . . . . . . . . . 16 5.4. Properties of Trigger Collections . . . . . . . . . . . . 15
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 . . . . . . . . . . . . . . . . . . . . . . . . . 16
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 . . . . . . . . . . . . . . . . . . . . . 18 6.1.3. PatternMatch . . . . . . . . . . . . . . . . . . . . . 18
6.1.4. ErrorDesc . . . . . . . . . . . . . . . . . . . . . . 19 6.1.4. ErrorDesc . . . . . . . . . . . . . . . . . . . . . . 19
6.1.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 19 6.1.5. ErrorCode . . . . . . . . . . . . . . . . . . . . . . 19
6.1.6. Relationship . . . . . . . . . . . . . . . . . . . . . 20 6.1.6. Relationship . . . . . . . . . . . . . . . . . . . . . 19
6.1.7. Link Object . . . . . . . . . . . . . . . . . . . . . 20
6.2. MIME Media Types . . . . . . . . . . . . . . . . . . . . . 20 6.2. MIME Media Types . . . . . . . . . . . . . . . . . . . . . 20
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 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 . . . . . . . . . . . . . . . . . . . . . . 22 7.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . . 22
7.2. Examining Trigger Status . . . . . . . . . . . . . . . . . 24 7.2. Examining Trigger Status . . . . . . . . . . . . . . . . . 23
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 . . . . . . . . . . . . . . . 26 7.2.3. Trigger Status Resources . . . . . . . . . . . . . . . 26
7.2.4. Polling for Change . . . . . . . . . . . . . . . . . . 28 7.2.4. Polling for Change . . . . . . . . . . . . . . . . . . 28
7.2.5. Cancelling or Removing a Trigger . . . . . . . . . . . 31 7.2.5. Cancelling or Removing a Trigger . . . . . . . . . . . 31
7.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 33 7.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 33
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
9. Security Considerations . . . . . . . . . . . . . . . . . . . 34 8.1. CI/T MIME Media Types . . . . . . . . . . . . . . . . . . 35
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 35
11.1. Normative References . . . . . . . . . . . . . . . . . . . 34 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.2. Informative References . . . . . . . . . . . . . . . . . . 34 11.1. Normative References . . . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 35 11.2. Informative References . . . . . . . . . . . . . . . . . . 36
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36
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
skipping to change at page 9, line 38 skipping to change at page 9, line 38
The CI/T interface builds on top of HTTP, so CI/T servers may make The CI/T interface builds on top of HTTP, so CI/T servers may make
use of any HTTP feature when implementing the CI/T interface. For use of any HTTP feature when implementing the CI/T interface. For
example, a CI/T server may make use of HTTP's caching mechanisms to example, a CI/T server may make use of HTTP's caching mechanisms to
indicate that the returned response/representation has not been indicate that the returned response/representation has not been
modified since it was last returned, reducing the processing needed modified since it was last returned, reducing the processing needed
to determine whether the status of triggered activity has changed. to determine whether the status of triggered activity has changed.
This specification is neutral with regard to the transport below the This specification is neutral with regard to the transport below the
HTTP layer. HTTP layer.
[Editor's note: It is anticipated that decisions on use of HTTPS for
other CDNI interfaces will be adopted for Triggers.]
Discovery of the CI/T Interface is outside the scope of this Discovery of the CI/T Interface is outside the scope of this
document. It is anticipated that a common mechanism for discovery of document. It is anticipated that a common mechanism for discovery of
all CDNI interfaces will be defined. all CDNI interfaces will be defined.
The dCDN must ensure that activity triggered by uCDN only affects The dCDN must ensure that activity triggered by uCDN only affects
metadata or content originating from that uCDN. Since only one CDN metadata or content originating from that uCDN. Since only one CDN
can be authoritative for a given item of metadata or content, this can be authoritative for a given item of metadata or content, this
requirement means there cannot be any "loops" in trigger requests requirement means there cannot be any "loops" in trigger requests
between CDNs. between CDNs.
skipping to change at page 15, line 34 skipping to change at page 15, line 26
Description: List of ErrorDesc. Description: List of ErrorDesc.
Mandatory: No. Mandatory: No.
5.3. Properties of ErrorDesc 5.3. Properties of ErrorDesc
An ErrorDesc object is used to report failure for URLs and patterns An ErrorDesc object is used to report failure for URLs and patterns
in a trigger request. in a trigger request.
Property: error Property: error
Type: ErrorCode. Type: ErrorCode.
Mandatory: Yes. Mandatory: Yes.
Description: List of metadata.urls, content.urls, Property: metadata.urls, content.urls, metadata.patterns,
metadata.patterns, content.patterns content.patterns
Description: Metadata and content references copied from the Description: Metadata and content references copied from the
trigger request. Only those URLs and patterns to which the trigger request. Only those URLs and patterns to which the
error applies shall be included in each property, but those error applies shall be included in each property, but those
URLs and patterns shall be exactly as they appear in the URLs and patterns shall be exactly as they appear in the
request, dCDN must not generalise the URLs. (For example, if request, dCDN must not generalise the URLs. (For example, if
uCDN requests prepositioning of URLs uCDN requests prepositioning of URLs
"http://ucdn.example.com/a" and "http://ucdn.example.com/b", "http://ucdn.example.com/a" and "http://ucdn.example.com/b",
dCDN may not generalise its error report to Pattern dCDN may not generalise its error report to Pattern
"http://ucdn.example.com/*"). "http://ucdn.example.com/*").
skipping to change at page 20, line 7 skipping to change at page 19, line 48
Key: description Key: description
Type: String Type: String
Mandatory: No. Mandatory: No.
6.1.5. ErrorCode 6.1.5. ErrorCode
One of the strings "EMETA", "ECONTENT", "EPERM", "EREJECT" or "ECDN". One of the strings "EMETA", "ECONTENT", "EPERM", "EREJECT" or "ECDN".
6.1.6. Relationship 6.1.6. Relationship
JSON: A dictionary with the following keys: The key "_links" in a dictionary object may be used to define
ralationships to other resources. Keys of the "_links" dictionary
are link relation types, the value for each relation type can either
be a Link Object or an array of Link Objects.
o href - The URI of the of the addressable object being referenced. The relation type "self" SHOULD be included, with the target being
o rel - The Relationship between the referring object and the object the containing resource.
it is referencing.
o type - The MIME Media Type of the referenced object. See
Section 6.2 for the MIME Media Types of objects specified in this
document.
o title - An optional title for the Relationship/link.
Note: The above structure follows the pattern of atom:link in 6.1.7. Link Object
[RFC4287].
Example Relationship to a CI/T Resource within a CI/T Collection: A Link Object is a JSON dictionary containing the following keys:
{
"href": "http://triggers.cdni.example.com/trigger/12345",
"rel": "Trigger",
"type": "application/cdni.ci.TriggerStatus+json"
}
The format of relationship values is expected to align with other o "href" - With a value containing the URI of the of the addressable
CDNI interfaces. For example, rather than use simple names (like object being referenced. The "href" must be specified.
"Trigger" in this case), there may be a namespace that allows well- o "type" - The MIME Media Type of the referenced object. It is
known and proprietary values to co-exist. optional to specify "type". See Section 6.2 for the MIME Media
Types of objects specified in this document.
6.2. MIME Media Types 6.2. MIME Media Types
Table 1 lists the MIME Media Type for the trigger request, and each Table 1 lists the MIME Media Type for the trigger request, and each
trigger object (resource) that is retrievable through the CI/T trigger object (resource) that is retrievable through the CI/T
interface. interface.
+-------------------+--------------------------------------------+ +-------------------+--------------------------------------------+
| Data Object | MIME Media Type | | Data Object | MIME Media Type |
+-------------------+--------------------------------------------+ +-------------------+--------------------------------------------+
skipping to change at page 22, line 4 skipping to change at page 21, line 42
{ {
"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: Mon, 11 Nov 2013 03:28:27 GMT
Content-Length: 472 Content-Length: 472
Content-Type: application/cdni.ci.TriggerStatus+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": 1384140507,
"etime": 1361629214, "etime": 1384140515,
"mtime": 1361629206, "mtime": 1384140507,
"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",
"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"
], ],
"metadata.urls": [ "metadata.urls": [
"http://metadata.example.com/a/b/c" "http://metadata.example.com/a/b/c"
skipping to change at page 23, line 24 skipping to change at page 23, line 14
{ "pattern" : "http://www.example.com/a/b/*", { "pattern" : "http://www.example.com/a/b/*",
"case-sensitive" : true "case-sensitive" : true
} }
] ]
} }
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Length: 551 Content-Length: 551
Content-Type: application/cdni.ci.TriggerStatus+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": 1384140508,
"etime": 1361629216, "etime": 1384140516,
"mtime": 1361629208, "mtime": 1384140508,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
{ {
"case-sensitive": true, "case-sensitive": true,
"pattern": "http://www.example.com/a/b/*" "pattern": "http://www.example.com/a/b/*"
} }
], ],
"content.urls": [ "content.urls": [
"http://www.example.com/a/index.html" "http://www.example.com/a/index.html"
skipping to change at page 24, line 28 skipping to change at page 24, line 21
REQUEST: REQUEST:
GET /triggers HTTP/1.1 GET /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: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 422 Content-Length: 489
Expires: Sat, 23 Feb 2013 14:21:08 GMT Expires: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "1484827667515030767" ETag: "8477575226503289820"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "_links": {
{ "Trigger": [
"href": "http://dcdn.example.com/triggers/0", {
"rel": "Trigger", "href": "http://dcdn.example.com/triggers/0",
"type": "application/cdni.ci.TriggerStatus+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "type": "application/cdni.ci.TriggerStatus+json"
"type": "application/cdni.ci.TriggerStatus+json" }
],
"self": {
"href": "http://dcdn.example.com/triggers"
} }
], },
"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 GET /triggers/pending 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: 497
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-970375801048973013" ETag: "-4197252672546627852"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "_links": {
{ "Trigger": [
"href": "http://dcdn.example.com/triggers/0", {
"rel": "Trigger", "href": "http://dcdn.example.com/triggers/0",
"type": "application/cdni.ci.TriggerStatus+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "type": "application/cdni.ci.TriggerStatus+json"
"type": "application/cdni.ci.TriggerStatus+json" }
],
"self": {
"href": "http://dcdn.example.com/triggers/pending"
} }
], },
"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: 151
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-654105208640281650" ETag: "-3759884165278932652"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [], "_links": {
"self": {
"href": "http://dcdn.example.com/triggers/complete"
}
},
"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
"invalidate" triggers from previous examples: "invalidate" triggers from previous examples:
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: */*
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: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7651038857765989381" ETag: "4936922742974586536"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerStatus+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629206, "ctime": 1384140507,
"etime": 1361629214, "etime": 1384140515,
"mtime": 1361629206, "mtime": 1384140507,
"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",
"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"
], ],
"metadata.urls": [ "metadata.urls": [
"http://metadata.example.com/a/b/c" "http://metadata.example.com/a/b/c"
skipping to change at page 28, line 16 skipping to change at page 28, line 16
GET /triggers/1 HTTP/1.1 GET /triggers/1 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: 551 Content-Length: 551
Expires: Sat, 23 Feb 2013 14:21:09 GMT Expires: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-1103964172288811711" ETag: "-4441420523993853535"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerStatus+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629208, "ctime": 1384140508,
"etime": 1361629216, "etime": 1384140516,
"mtime": 1361629208, "mtime": 1384140508,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
{ {
"case-sensitive": true, "case-sensitive": true,
"pattern": "http://www.example.com/a/b/*" "pattern": "http://www.example.com/a/b/*"
} }
], ],
"content.urls": [ "content.urls": [
"http://www.example.com/a/index.html" "http://www.example.com/a/index.html"
skipping to change at page 29, line 11 skipping to change at page 29, line 11
The uCDN may use the Entity Tags of collections or resources when The uCDN may use the Entity Tags of collections or resources when
polling for change in status, as shown in the following examples: polling for change in status, as shown in the following examples:
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
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
If-None-Match: "-970375801048973013" If-None-Match: "-4197252672546627852"
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: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-970375801048973013" ETag: "-4197252672546627852"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:09 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerCollection+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: "4936922742974586536"
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: Mon, 11 Nov 2013 03:29:28 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7651038857765989381" ETag: "4936922742974586536"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:08 GMT Date: Mon, 11 Nov 2013 03:28:28 GMT
Content-Type: application/cdni.ci.TriggerStatus+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
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
If-None-Match: "-970375801048973013"
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 53 Content-Length: 150
Expires: Sat, 23 Feb 2013 14:21:13 GMT Expires: Mon, 11 Nov 2013 03:29:39 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-7056231826368088123" ETag: "-8587750650096537234"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:13 GMT Date: Mon, 11 Nov 2013 03:28:39 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [], "_links": {
"self": {
"href": "http://dcdn.example.com/triggers/pending"
}
},
"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: 498
Expires: Sat, 23 Feb 2013 14:21:20 GMT Expires: Mon, 11 Nov 2013 03:29:39 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "2013095476705515794" ETag: "2680225545549998872"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Mon, 11 Nov 2013 03:28:39 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "_links": {
{ "Trigger": [
"href": "http://dcdn.example.com/triggers/0", {
"rel": "Trigger", "href": "http://dcdn.example.com/triggers/0",
"type": "application/cdni.ci.TriggerStatus+json" "type": "application/cdni.ci.TriggerStatus+json"
}, },
{ {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger", "type": "application/cdni.ci.TriggerStatus+json"
"type": "application/cdni.ci.TriggerStatus+json" }
],
"self": {
"href": "http://dcdn.example.com/triggers/complete"
} }
], },
"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:
DELETE /triggers/0 HTTP/1.1 DELETE /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: */*
RESPONSE: RESPONSE:
HTTP/1.1 204 No Content HTTP/1.1 204 No Content
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Mon, 11 Nov 2013 03:28:39 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
skipping to change at page 32, line 32 skipping to change at page 33, line 15
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: 304
Expires: Sat, 23 Feb 2013 14:21:20 GMT Expires: Mon, 11 Nov 2013 03:29:39 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "4257416552489354137" ETag: "535044172999094664"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:20 GMT Date: Mon, 11 Nov 2013 03:28:39 GMT
Content-Type: application/cdni.ci.TriggerCollection+json Content-Type: application/cdni.ci.TriggerCollection+json
{ {
"links": [ "_links": {
{ "Trigger": {
"href": "http://dcdn.example.com/triggers/1", "href": "http://dcdn.example.com/triggers/1",
"rel": "Trigger",
"type": "application/cdni.ci.TriggerStatus+json" "type": "application/cdni.ci.TriggerStatus+json"
},
"self": {
"href": "http://dcdn.example.com/triggers/complete"
} }
], },
"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
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
skipping to change at page 33, line 21 skipping to change at page 34, line 16
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
Host: dcdn.example.com Host: dcdn.example.com
Accept: */* Accept: */*
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: Mon, 11 Nov 2013 03:29:43 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "2621489144226897896" ETag: "3841389629056746224"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Sat, 23 Feb 2013 14:20:28 GMT Date: Mon, 11 Nov 2013 03:28:43 GMT
Content-Type: application/cdni.ci.TriggerStatus+json Content-Type: application/cdni.ci.TriggerStatus+json
{ {
"ctime": 1361629220, "ctime": 1384140519,
"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",
"error": "EMETA" "error": "EMETA"
} }
], ],
"etime": 1361629228, "etime": 1384140527,
"mtime": 1361629224, "mtime": 1384140523,
"status": "active", "status": "active",
"trigger": { "trigger": {
"content.urls": [ "content.urls": [
"http://newsite.example.com/index.html" "http://newsite.example.com/index.html"
], ],
"type": "preposition" "type": "preposition"
} }
} }
8. IANA Considerations 8. IANA Considerations
8.1. CI/T MIME Media Types
TBD. The IANA is requested to allocate the following MIME Media Types in
the MIME Media Types registry:
o application/cdni.ci.TriggerRequest
o application/cdni.ci.TriggerStatus
o application/cdni.ci.TriggerCollection
Use of these types is specified in Section 6.2 of the present
document.
9. Security Considerations 9. Security Considerations
The dCDN must ensure that each uCDN only has access to its own The dCDN must ensure that each uCDN only has access to its own
Trigger Status Resources. Trigger Status Resources.
It is anticipated that a common authentication mechanism will be used It is anticipated that a common authentication mechanism will be used
by this and other CDNI Interconnect interfaces, the mechanism must by this and other CDNI Interconnect interfaces, the mechanism must
exist but is not identified in this document. exist but is not identified in this document.
The dCDN must ensure that activity triggered by uCDN only affects The dCDN must ensure that activity triggered by uCDN only affects
metadata or content originating from that uCDN. metadata or content originating from that uCDN.
10. Acknowledgements 10. Acknowledgements
TBD. The structure of the Relationship and Link Objects specified in
Section 6 is based on Mike Kelly's work on JSON Hypertext Application
Language.
11. References 11. References
11.1. Normative References 11.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.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
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-05 (work in Interconnection", draft-ietf-cdni-framework-07 (work in
progress), September 2013. progress), November 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-02 (work in progress), July 2013. draft-ietf-cdni-metadata-03 (work in progress),
October 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-10 (work in progress), draft-ietf-cdni-requirements-13 (work in progress),
September 2013. November 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. 83 change blocks. 
147 lines changed or deleted 170 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/