draft-ietf-cdni-control-triggers-14.txt   draft-ietf-cdni-control-triggers-15.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 Nokia Intended status: Standards Track Nokia
Expires: November 17, 2016 May 16, 2016 Expires: November 20, 2016 May 19, 2016
CDNI Control Interface / Triggers CDNI Control Interface / Triggers
draft-ietf-cdni-control-triggers-14 draft-ietf-cdni-control-triggers-15
Abstract Abstract
This document describes the part of the CDN Interconnection Control This document describes the part of the CDN Interconnection 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 invalidates or CDN pre-positions metadata or content, or that it invalidates or
purges metadata or content. The upstream CDN can monitor the status purges 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 November 17, 2016. This Internet-Draft will expire on November 20, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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 16, line 19 skipping to change at page 16, line 19
it passes to its dCDN. it passes to its dCDN.
When processing Trigger Specifications, CDNs MUST ignore the URL When processing Trigger Specifications, CDNs MUST ignore the URL
scheme (http or https) in comparing URLs. For example, for a CI/T scheme (http or https) in comparing URLs. For example, for a CI/T
invalidate or purge command, content MUST be invalidated or purged invalidate or purge command, content MUST be invalidated or purged
regardless of the protocol clients use to request it. regardless of the protocol clients use to request it.
5. CI/T Object Properties and Encoding 5. CI/T Object Properties and Encoding
The CI/T Commands, Trigger Status Resources and Trigger Collections The CI/T Commands, Trigger Status Resources and Trigger Collections
and their properties defined in this document are encoded using JSON, and their properties are encoded using JSON, as defined in sections
as defined in sections Section 5.1.1, Section 5.2.1, and Section 5.1.1, Section 5.2.1, and Section 5.1.2. They MUST use the
Section 5.1.2. They MUST use the MIME Media Type 'application/ MIME Media Type 'application/cdni', with parameter 'ptype' values as
cdni+json', with parameter 'ptype' values as defined below and in defined below and in Section 7.1.
Section 7.1.
Names in JSON are case sensitive. The names and literal values Names in JSON are case sensitive. The names and literal values
specified in the present document MUST always use lower-case. specified in the present document MUST always use lower-case.
JSON types, including 'object', 'array', 'number' and 'string' are JSON types, including 'object', 'array', 'number' and 'string' are
defined in [RFC7159]. defined in [RFC7159].
Unrecognised name/value pairs in JSON objects SHOULD NOT be treated Unrecognised name/value pairs in JSON objects SHOULD NOT be treated
as an error by either the uCDN or dCDN. They SHOULD be ignored in as an error by either the uCDN or dCDN. They SHOULD be ignored in
the processing, and passed on by dCDN to any further dCDNs in a the processing, and passed on by dCDN to any further dCDNs in a
skipping to change at page 27, line 11 skipping to change at page 27, line 11
Note that "metadata.patterns" and "content.patterns" are not allowed Note that "metadata.patterns" and "content.patterns" are not allowed
in a preposition Trigger Specification. in a preposition Trigger Specification.
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/cdni+json; ptype=ci-trigger-command Content-Type: application/cdni; ptype=ci-trigger-command
Content-Length: 352 Content-Length: 352
{ {
"trigger" : { "trigger" : {
"type": "preposition", "type": "preposition",
"metadata.urls" : [ "https://metadata.example.com/a/b/c" ], "metadata.urls" : [ "https://metadata.example.com/a/b/c" ],
"content.urls" : [ "content.urls" : [
"https://www.example.com/a/b/c/1", "https://www.example.com/a/b/c/1",
"https://www.example.com/a/b/c/2", "https://www.example.com/a/b/c/2",
skipping to change at page 27, line 34 skipping to change at page 27, line 34
] ]
}, },
"cdn-path" : [ "AS64496:1" ] "cdn-path" : [ "AS64496:1" ]
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:48:10 GMT Date: Wed, 04 May 2016 08:48:10 GMT
Content-Length: 467 Content-Length: 467
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
Location: https://dcdn.example.com/triggers/0 Location: https://dcdn.example.com/triggers/0
Server: example-server/0.1 Server: example-server/0.1
{ {
"ctime": 1462351690, "ctime": 1462351690,
"etime": 1462351698, "etime": 1462351698,
"mtime": 1462351690, "mtime": 1462351690,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.urls": [ "content.urls": [
skipping to change at page 28, line 24 skipping to change at page 28, line 24
"https://metadata.example.com/a/b/" using case-insensitive matching, "https://metadata.example.com/a/b/" using case-insensitive matching,
and "https://www.example.com/a/b/" respectively, using case-sensitive and "https://www.example.com/a/b/" respectively, using case-sensitive
matching. 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/cdni+json; ptype=ci-trigger-command Content-Type: application/cdni; ptype=ci-trigger-command
Content-Length: 387 Content-Length: 387
{ {
"trigger" : { "trigger" : {
"type": "invalidate", "type": "invalidate",
"metadata.patterns" : [ "metadata.patterns" : [
{ "pattern" : "https://metadata.example.com/a/b/*" } { "pattern" : "https://metadata.example.com/a/b/*" }
], ],
skipping to change at page 28, line 50 skipping to change at page 28, line 50
] ]
}, },
"cdn-path" : [ "AS64496:1" ] "cdn-path" : [ "AS64496:1" ]
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Length: 545 Content-Length: 545
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
Location: https://dcdn.example.com/triggers/1 Location: https://dcdn.example.com/triggers/1
Server: example-server/0.1 Server: example-server/0.1
{ {
"ctime": 1462351691, "ctime": 1462351691,
"etime": 1462351699, "etime": 1462351699,
"mtime": 1462351691, "mtime": 1462351691,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
skipping to change at page 30, line 21 skipping to change at page 30, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 341 Content-Length: 341
Expires: Wed, 04 May 2016 08:49:11 GMT Expires: Wed, 04 May 2016 08:49:11 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-936094426920308378" ETag: "-936094426920308378"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"cdn-id": "AS64496:0", "cdn-id": "AS64496:0",
"coll-active": "/triggers/active", "coll-active": "/triggers/active",
"coll-complete": "/triggers/complete", "coll-complete": "/triggers/complete",
"coll-failed": "/triggers/failed", "coll-failed": "/triggers/failed",
"coll-pending": "/triggers/pending", "coll-pending": "/triggers/pending",
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [ "triggers": [
"https://dcdn.example.com/triggers/0", "https://dcdn.example.com/triggers/0",
skipping to change at page 31, line 21 skipping to change at page 31, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 152 Content-Length: 152
Expires: Wed, 04 May 2016 08:49:11 GMT Expires: Wed, 04 May 2016 08:49:11 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "4331492443626270781" ETag: "4331492443626270781"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [ "triggers": [
"https://dcdn.example.com/triggers/0", "https://dcdn.example.com/triggers/0",
"https://dcdn.example.com/triggers/1" "https://dcdn.example.com/triggers/1"
] ]
} }
At this point, if no other Trigger Status Resources had been created, At this point, if no other Trigger Status Resources had been created,
skipping to change at page 32, line 21 skipping to change at page 32, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 54 Content-Length: 54
Expires: Wed, 04 May 2016 08:49:11 GMT Expires: Wed, 04 May 2016 08:49:11 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "7958041393922269003" ETag: "7958041393922269003"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [] "triggers": []
} }
6.2.3. Individual Trigger Status Resources 6.2.3. Individual 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 CI/T Trigger Commands. For example, for the CI/T individual CI/T Trigger Commands. For example, for the CI/T
skipping to change at page 33, line 21 skipping to change at page 33, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 467 Content-Length: 467
Expires: Wed, 04 May 2016 08:49:10 GMT Expires: Wed, 04 May 2016 08:49:10 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "6990548174277557683" ETag: "6990548174277557683"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:10 GMT Date: Wed, 04 May 2016 08:48:10 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
{ {
"ctime": 1462351690, "ctime": 1462351690,
"etime": 1462351698, "etime": 1462351698,
"mtime": 1462351690, "mtime": 1462351690,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.urls": [ "content.urls": [
"https://www.example.com/a/b/c/1", "https://www.example.com/a/b/c/1",
"https://www.example.com/a/b/c/2", "https://www.example.com/a/b/c/2",
skipping to change at page 34, line 21 skipping to change at page 34, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 545 Content-Length: 545
Expires: Wed, 04 May 2016 08:49:11 GMT Expires: Wed, 04 May 2016 08:49:11 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-554385204989405469" ETag: "-554385204989405469"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
{ {
"ctime": 1462351691, "ctime": 1462351691,
"etime": 1462351699, "etime": 1462351699,
"mtime": 1462351691, "mtime": 1462351691,
"status": "pending", "status": "pending",
"trigger": { "trigger": {
"content.patterns": [ "content.patterns": [
{ {
"case-sensitive": true, "case-sensitive": true,
skipping to change at page 35, line 22 skipping to change at page 35, line 22
RESPONSE: RESPONSE:
HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified
Content-Length: 0 Content-Length: 0
Expires: Wed, 04 May 2016 08:49:11 GMT Expires: Wed, 04 May 2016 08:49:11 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "4331492443626270781" ETag: "4331492443626270781"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:11 GMT Date: Wed, 04 May 2016 08:48:11 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
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: "6990548174277557683" If-None-Match: "6990548174277557683"
RESPONSE: RESPONSE:
HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified
Content-Length: 0 Content-Length: 0
Expires: Wed, 04 May 2016 08:49:10 GMT Expires: Wed, 04 May 2016 08:49:10 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "6990548174277557683" ETag: "6990548174277557683"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:10 GMT Date: Wed, 04 May 2016 08:48:10 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
When the CI/T Trigger Command is complete, the contents of the When the CI/T Trigger Command is complete, the contents of the
filtered collections will be updated along with their Entity Tags. filtered collections will be updated along with their Entity Tags.
For example, when the two example CI/T Trigger Commands are complete, For example, when the two example CI/T Trigger Commands are complete,
the collections of pending and complete Trigger Status Resources the collections of pending and complete Trigger Status Resources
might look like: might look like:
REQUEST: REQUEST:
GET /triggers/pending HTTP/1.1 GET /triggers/pending HTTP/1.1
skipping to change at page 36, line 21 skipping to change at page 36, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 54 Content-Length: 54
Expires: Wed, 04 May 2016 08:49:15 GMT Expires: Wed, 04 May 2016 08:49:15 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "1337503181677633762" ETag: "1337503181677633762"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:15 GMT Date: Wed, 04 May 2016 08:48:15 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [] "triggers": []
} }
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
skipping to change at page 37, line 21 skipping to change at page 37, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 152 Content-Length: 152
Expires: Wed, 04 May 2016 08:49:22 GMT Expires: Wed, 04 May 2016 08:49:22 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "4481489539378529796" ETag: "4481489539378529796"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:22 GMT Date: Wed, 04 May 2016 08:48:22 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [ "triggers": [
"https://dcdn.example.com/triggers/0", "https://dcdn.example.com/triggers/0",
"https://dcdn.example.com/triggers/1" "https://dcdn.example.com/triggers/1"
] ]
} }
6.2.5. Deleting Trigger Status Resources 6.2.5. Deleting Trigger Status Resources
skipping to change at page 38, line 24 skipping to change at page 38, line 24
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 105 Content-Length: 105
Expires: Wed, 04 May 2016 08:49:22 GMT Expires: Wed, 04 May 2016 08:49:22 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "-6938620031669085677" ETag: "-6938620031669085677"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:22 GMT Date: Wed, 04 May 2016 08:48:22 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-collection Content-Type: application/cdni; ptype=ci-trigger-collection
{ {
"staleresourcetime": 86400, "staleresourcetime": 86400,
"triggers": [ "triggers": [
"https://dcdn.example.com/triggers/1" "https://dcdn.example.com/triggers/1"
] ]
} }
6.2.6. Error Reporting 6.2.6. Error Reporting
skipping to change at page 39, line 21 skipping to change at page 39, line 21
RESPONSE: RESPONSE:
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 486 Content-Length: 486
Expires: Wed, 04 May 2016 08:49:26 GMT Expires: Wed, 04 May 2016 08:49:26 GMT
Server: example-server/0.1 Server: example-server/0.1
ETag: "5182824839919043757" ETag: "5182824839919043757"
Cache-Control: max-age=60 Cache-Control: max-age=60
Date: Wed, 04 May 2016 08:48:26 GMT Date: Wed, 04 May 2016 08:48:26 GMT
Content-Type: application/cdni+json; ptype=ci-trigger-status Content-Type: application/cdni; ptype=ci-trigger-status
{ {
"ctime": 1462351702, "ctime": 1462351702,
"errors": [ "errors": [
{ {
"content.urls": [ "content.urls": [
"https://newsite.example.com/index.html" "https://newsite.example.com/index.html"
], ],
"description": "newsite.example.com not in HostIndex", "description": "newsite.example.com not in HostIndex",
"error": "emeta" "error": "emeta"
 End of changes. 19 change blocks. 
23 lines changed or deleted 22 lines changed or added

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