draft-ietf-cdni-control-triggers-08.txt | draft-ietf-cdni-control-triggers-09.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: January 3, 2016 July 2, 2015 | Expires: April 18, 2016 October 16, 2015 | |||
CDNI Control Interface / Triggers | CDNI Control Interface / Triggers | |||
draft-ietf-cdni-control-triggers-08 | draft-ietf-cdni-control-triggers-09 | |||
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 January 3, 2016. | This Internet-Draft will expire on April 18, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Model for CDNI Triggers . . . . . . . . . . . . . . . . . . . 4 | 2. Model for CDNI Triggers . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Timing of Triggered Activity . . . . . . . . . . . . . . 6 | 2.1. Timing of Triggered Activity . . . . . . . . . . . . . . 6 | |||
2.2. Scope of Triggered Activity . . . . . . . . . . . . . . . 6 | 2.2. Scope of Triggered Activity . . . . . . . . . . . . . . . 6 | |||
2.3. Trigger Results . . . . . . . . . . . . . . . . . . . . . 7 | 2.3. Trigger Results . . . . . . . . . . . . . . . . . . . . . 6 | |||
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 . . . . . . . . . . . . . . . . . . . . 9 | 4.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 9 | |||
4.2. Checking Status . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. Checking Status . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.2.1. Polling Trigger Status Resource collections . . . . . 10 | 4.2.1. Polling Trigger Status Resource collections . . . . . 10 | |||
4.2.2. Polling Trigger Status Resources . . . . . . . . . . 11 | 4.2.2. Polling Trigger Status Resources . . . . . . . . . . 11 | |||
4.3. Cancelling Triggers . . . . . . . . . . . . . . . . . . . 11 | 4.3. Cancelling Triggers . . . . . . . . . . . . . . . . . . . 11 | |||
4.4. Deleting Triggers . . . . . . . . . . . . . . . . . . . . 12 | 4.4. Deleting Triggers . . . . . . . . . . . . . . . . . . . . 12 | |||
4.5. Expiry of Trigger Status Resources . . . . . . . . . . . 12 | 4.5. Expiry of Trigger Status Resources . . . . . . . . . . . 12 | |||
4.6. Loop Detection and Prevention . . . . . . . . . . . . . . 13 | 4.6. Loop Detection and Prevention . . . . . . . . . . . . . . 13 | |||
4.7. Error Handling . . . . . . . . . . . . . . . . . . . . . 13 | 4.7. Error Handling . . . . . . . . . . . . . . . . . . . . . 13 | |||
4.8. Content URLs . . . . . . . . . . . . . . . . . . . . . . 14 | 4.8. Content URLs . . . . . . . . . . . . . . . . . . . . . . 14 | |||
5. CI/T Object Properties and Encoding . . . . . . . . . . . . . 15 | 5. CI/T Object Properties and Encoding . . . . . . . . . . . . . 14 | |||
5.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 15 | 5.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 15 | |||
5.1.2. Trigger Status Resource . . . . . . . . . . . . . . . 16 | 5.1.2. Trigger Status Resource . . . . . . . . . . . . . . . 16 | |||
5.1.3. Trigger Collection . . . . . . . . . . . . . . . . . 17 | 5.1.3. Trigger Collection . . . . . . . . . . . . . . . . . 17 | |||
5.2. Properties of CI/T Objects . . . . . . . . . . . . . . . 19 | 5.2. Properties of CI/T Objects . . . . . . . . . . . . . . . 18 | |||
5.2.1. Trigger Specification . . . . . . . . . . . . . . . . 19 | 5.2.1. Trigger Specification . . . . . . . . . . . . . . . . 19 | |||
5.2.2. Trigger Type . . . . . . . . . . . . . . . . . . . . 20 | 5.2.2. Trigger Type . . . . . . . . . . . . . . . . . . . . 20 | |||
5.2.3. Trigger Status . . . . . . . . . . . . . . . . . . . 21 | 5.2.3. Trigger Status . . . . . . . . . . . . . . . . . . . 21 | |||
5.2.4. PatternMatch . . . . . . . . . . . . . . . . . . . . 21 | 5.2.4. PatternMatch . . . . . . . . . . . . . . . . . . . . 21 | |||
5.2.5. Absolute Time . . . . . . . . . . . . . . . . . . . . 22 | 5.2.5. Absolute Time . . . . . . . . . . . . . . . . . . . . 22 | |||
5.2.6. Error Description . . . . . . . . . . . . . . . . . . 22 | 5.2.6. Error Description . . . . . . . . . . . . . . . . . . 22 | |||
5.2.7. Error Code . . . . . . . . . . . . . . . . . . . . . 23 | 5.2.7. Error Code . . . . . . . . . . . . . . . . . . . . . 23 | |||
5.3. Formalization of the JSON Data . . . . . . . . . . . . . 24 | 5.3. Formalization of the JSON Data . . . . . . . . . . . . . 23 | |||
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 26 | 6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 25 | |||
6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 26 | 6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 25 | |||
6.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . 27 | 6.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . 27 | |||
6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 29 | 6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 28 | |||
6.2.1. Collection of All Triggers . . . . . . . . . . . . . 29 | 6.2.1. Collection of All Triggers . . . . . . . . . . . . . 28 | |||
6.2.2. Filtered Collections of Trigger Status Resources . . 30 | 6.2.2. Filtered Collections of Trigger Status Resources . . 29 | |||
6.2.3. Individual Trigger Status Resources . . . . . . . . . 31 | 6.2.3. Individual Trigger Status Resources . . . . . . . . . 31 | |||
6.2.4. Polling for Change . . . . . . . . . . . . . . . . . 33 | 6.2.4. Polling for Change . . . . . . . . . . . . . . . . . 33 | |||
6.2.5. Deleting Trigger Status Resources . . . . . . . . . . 36 | 6.2.5. Deleting Trigger Status Resources . . . . . . . . . . 36 | |||
6.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 38 | 6.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 38 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | |||
7.1. Media type registrations . . . . . . . . . . . . . . . . 39 | 7.1. CDNI Payload Type Parameter Registrations . . . . . . . . 39 | |||
7.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 39 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | |||
7.1.2. CI/T Trigger Status Resource . . . . . . . . . . . . 40 | ||||
7.1.3. CI/T Trigger Collection . . . . . . . . . . . . . . . 41 | ||||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | ||||
8.1. Authentication, Authorization, Confidentiality, Integrity | 8.1. Authentication, Authorization, Confidentiality, Integrity | |||
Protection . . . . . . . . . . . . . . . . . . . . . . . 42 | Protection . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
8.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 43 | 8.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 40 | |||
8.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 43 | 8.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 41 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 44 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 41 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 44 | 10.2. Informative References . . . . . . . . . . . . . . . . . 42 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
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). | |||
[RFC7336] expands on the information provided in [RFC6707] and | [RFC7336] expands on the information provided in [RFC6707] and | |||
describes each of the interfaces and the relationships between them | describes each of the interfaces and the relationships between them | |||
skipping to change at page 14, line 41 | skipping to change at page 14, line 35 | |||
o CI/T "preposition" and "purge" commands can be reported as | o CI/T "preposition" and "purge" commands can be reported as | |||
"processed" if affected caches are offline and the activity will | "processed" if affected caches are offline and the activity will | |||
complete when they return to service. | complete when they return to service. | |||
o Otherwise, the dCDN SHOULD keep the Trigger Status Resource in | o Otherwise, the dCDN SHOULD keep the Trigger Status Resource in | |||
state "pending" or "active" until the CI/T Command is acted upon, | state "pending" or "active" until the CI/T Command is acted upon, | |||
or the uCDN chooses to cancel it. | or the uCDN chooses to cancel it. | |||
4.8. Content URLs | 4.8. Content URLs | |||
To refer to content in the dCDN, the uCDN MUST present URLs in the | ||||
same form as in the metadata it supplied to the dCDN. By definition, | ||||
it is always possible for the dCDN to locate content based on URLs in | ||||
this form. | ||||
Therefore, if content URLs are transformed by an intermediate CDN in | Therefore, if content URLs are transformed by an intermediate CDN in | |||
a cascade, that intermediate CDN MUST transform URLs in CI/T Commands | a cascade, that intermediate CDN MUST transform URLs in CI/T Commands | |||
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 | |||
CI/T Commands, Trigger Status Resources and Trigger Collections and | CI/T Commands, Trigger Status Resources and Trigger Collections and | |||
their properties are encoded using JSON, as defined in sections | their properties are encoded using JSON, as defined in sections | |||
Section 5.1.1, Section 5.2.1, and Section 5.1.2. | Section 5.1.1, Section 5.2.1, and Section 5.1.2. They MUST use the | |||
MIME Media Type 'application/cdni', with parameter 'ptype' values as | ||||
defined below and in 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 | |||
cascade. | cascade. | |||
5.1. CI/T Objects | 5.1. CI/T Objects | |||
The top-level objects defined by the CI/T interface are described in | The top-level objects defined by the CI/T interface are described in | |||
this section. Each has an associated MIME Media Type. The encoding | this section. | |||
of values used by these objects is described in Section 5.2. | ||||
The encoding of values used by these objects is described in | ||||
Section 5.2. | ||||
5.1.1. CI/T Commands | 5.1.1. CI/T Commands | |||
CI/T Commands SHOULD use a MIME Media Type of application/ | CI/T Commands MUST use a MIME Media Type of 'application/cdni; | |||
cdni.ci.TriggerCommand+json. | ptype=ci-trigger-command'. | |||
A CI/T Command is encoded as a JSON object containing the following | A CI/T Command is encoded as a JSON object containing the following | |||
name/value pairs. | name/value pairs. | |||
Name: trigger | Name: trigger | |||
Description: A specification of the trigger type, and a set of | Description: A specification of the trigger type, and a set of | |||
data to act upon. | data to act upon. | |||
Value: A Trigger Specification, as defined in Section 5.2.1. | Value: A Trigger Specification, as defined in Section 5.2.1. | |||
skipping to change at page 16, line 23 | skipping to change at page 16, line 17 | |||
Description: The CDN Provider Identifiers of CDNs that have | Description: The CDN Provider Identifiers of CDNs that have | |||
already accepted the CI/T Command. | already accepted the CI/T Command. | |||
Value: A non-empty JSON array of JSON strings, where each | Value: A non-empty JSON array of JSON strings, where each | |||
string is a CDN Provider Identifier as defined in Section 4.6. | string is a CDN Provider Identifier as defined in Section 4.6. | |||
Mandatory: Yes. | Mandatory: Yes. | |||
5.1.2. Trigger Status Resource | 5.1.2. Trigger Status Resource | |||
Trigger Status Resources SHOULD use a MIME Media Type of application/ | Trigger Status Resources MUST use a MIME Media Type of 'application/ | |||
cdni.ci.TriggerStatus+json. | cdni; ptype=ci-trigger-status'. | |||
A Trigger Status Resource is encoded as a JSON object containing the | A Trigger Status Resource is encoded as a JSON object containing the | |||
following name/value pairs. | following name/value pairs. | |||
Name: trigger | Name: trigger | |||
Description: The Trigger Specification posted in the body of | Description: The Trigger Specification posted in the body of | |||
the CI/T Command. Note that this need not be a byte-for-byte | the CI/T Command. Note that this need not be a byte-for-byte | |||
copy. For example, in the JSON representation the dCDN may re- | copy. For example, in the JSON representation the dCDN may re- | |||
serialise the information differently. | serialise the information differently. | |||
skipping to change at page 17, line 44 | skipping to change at page 17, line 37 | |||
processing a Trigger Command. | processing a Trigger Command. | |||
Value: An array of Error Description, as defined in | Value: An array of Error Description, as defined in | |||
Section 5.2.6. An empty array is allowed, and equivalent to | Section 5.2.6. An empty array is allowed, and equivalent to | |||
omitting "errors" from the object. | omitting "errors" from the object. | |||
Mandatory: No. | Mandatory: No. | |||
5.1.3. Trigger Collection | 5.1.3. Trigger Collection | |||
Trigger Collections SHOULD use a MIME Media Type of application/ | Trigger Collections MUST use a MIME Media Type of 'application/cdni; | |||
cdni.ci.TriggerCollection+json. | ptype=ci-trigger-collection'. | |||
A Trigger Collection is encoded as a JSON object containing the | A Trigger Collection is encoded as a JSON object containing the | |||
following name/value pairs. | following name/value pairs. | |||
Name: triggers | Name: triggers | |||
Description: Links to Trigger Status Resources in the | Description: Links to Trigger Status Resources in the | |||
collection. | collection. | |||
Value: A JSON array of zero or more URLs, represented as JSON | Value: A JSON array of zero or more URLs, represented as JSON | |||
strings. | strings. | |||
Mandatory: Yes | Mandatory: Yes | |||
Name: staleresourcetime | Name: staleresourcetime | |||
skipping to change at page 24, line 30 | skipping to change at page 24, line 4 | |||
| | downstream CDNs. | | | | downstream CDNs. | | |||
| ecancelled | The uCDN cancelled the request. | | | ecancelled | The uCDN cancelled the request. | | |||
+------------+------------------------------------------------------+ | +------------+------------------------------------------------------+ | |||
5.3. Formalization of the JSON Data | 5.3. Formalization of the JSON Data | |||
The JSON data described in this document has been formalised using | The JSON data described in this document has been formalised using | |||
CDDL [I-D.greevenbosch-appsawg-cbor-cddl] as follows: | CDDL [I-D.greevenbosch-appsawg-cbor-cddl] as follows: | |||
CIT-object = CIT-command / Trigger-Status-Resource / Trigger-Collection | CIT-object = CIT-command / Trigger-Status-Resource / Trigger-Collection | |||
CIT-command ; use media type application/cdni; ptype=ci-trigger-command | ||||
CIT-command ; use media type application/cdni.ci.TriggerCommand+json | ||||
= { | = { | |||
? trigger: Triggerspec | ? trigger: Triggerspec | |||
? cancel: [* URI] | ? cancel: [* URI] | |||
cdn-path: [* Cdn-PID] | cdn-path: [* Cdn-PID] | |||
} | } | |||
Trigger-Status-Resource ; application/cdni.ci.TriggerStatus+json. | Trigger-Status-Resource ; application/cdni; ptype=ci-trigger-status | |||
= { | = { | |||
trigger: Triggerspec | trigger: Triggerspec | |||
ctime: Absolute-Time | ctime: Absolute-Time | |||
mtime: Absolute-Time | mtime: Absolute-Time | |||
? etime: Absolute-Time | ? etime: Absolute-Time | |||
status: Trigger-Status | status: Trigger-Status | |||
? errors: [* Error-Description] | ? errors: [* Error-Description] | |||
} | } | |||
Trigger-Collection ; application/cdni.ci.TriggerCollection+json | Trigger-Collection ; application/cdni; ptype=ci-trigger-collection | |||
= { | = { | |||
triggers: [* URI] | triggers: [* URI] | |||
? staleresourcetime: int ; time in seconds | ? staleresourcetime: int ; time in seconds | |||
? coll-all: URI | ? coll-all: URI | |||
? coll-pending: URI | ? coll-pending: URI | |||
? coll-active: URI | ? coll-active: URI | |||
? coll-complete: URI | ? coll-complete: URI | |||
? coll-failed: URI | ? coll-failed: URI | |||
? cdn-id: Cdn-PID | ? cdn-id: Cdn-PID | |||
} | } | |||
skipping to change at page 26, line 37 | skipping to change at page 26, line 9 | |||
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.ci.TriggerCommand+json | Content-Type: application/cdni; ptype=ci-trigger-command | |||
Content-Length: 347 | Content-Length: 347 | |||
{ | { | |||
"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 27, line 4 | skipping to change at page 26, line 25 | |||
"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" | |||
] | ] | |||
}, | }, | |||
"cdn-path" : [ "AS64496:1" ] | "cdn-path" : [ "AS64496:1" ] | |||
} | } | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
Date: Sun, 31 Aug 2014 09:53:18 GMT | Date: Sun, 31 Aug 2014 09:53:18 GMT | |||
Content-Length: 472 | Content-Length: 472 | |||
Content-Type: application/cdni.ci.TriggerStatus+json | Content-Type: application/cdni; ptype=ci-trigger-status | |||
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": 1409478798, | "ctime": 1409478798, | |||
"etime": 1409478806, | "etime": 1409478806, | |||
"mtime": 1409478798, | "mtime": 1409478798, | |||
"status": "pending", | "status": "pending", | |||
"trigger": { | "trigger": { | |||
"content.urls": [ | "content.urls": [ | |||
skipping to change at page 27, line 51 | skipping to change at page 27, line 23 | |||
"http://metadata.example.com/a/b/" using case-insensitive matching, | "http://metadata.example.com/a/b/" using case-insensitive matching, | |||
and "http://www.example.com/a/b/" respectively, using case-sensitive | and "http://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.ci.TriggerCommand+json | Content-Type: application/cdni; ptype=ci-trigger-command | |||
Content-Length: 384 | Content-Length: 384 | |||
{ | { | |||
"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 28, line 27 | skipping to change at page 27, line 49 | |||
] | ] | |||
}, | }, | |||
"cdn-path" : [ "AS64496:1" ] | "cdn-path" : [ "AS64496:1" ] | |||
} | } | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Length: 551 | Content-Length: 551 | |||
Content-Type: application/cdni.ci.TriggerStatus+json | Content-Type: application/cdni; ptype=ci-trigger-status | |||
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": 1409478799, | "ctime": 1409478799, | |||
"etime": 1409478807, | "etime": 1409478807, | |||
"mtime": 1409478799, | "mtime": 1409478799, | |||
"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/*" | |||
skipping to change at page 29, line 36 | skipping to change at page 29, line 21 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 347 | Content-Length: 347 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-6516741166528256414" | Etag: "-6516741166528256414" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | 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": [ | |||
"http://dcdn.example.com/triggers/0", | "http://dcdn.example.com/triggers/0", | |||
skipping to change at page 30, line 27 | skipping to change at page 30, line 21 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 153 | Content-Length: 153 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "5012053611544832286" | Etag: "5012053611544832286" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | Content-Type: application/cdni; ptype=ci-trigger-collection | |||
{ | { | |||
"staleresourcetime": 86400, | "staleresourcetime": 86400, | |||
"triggers": [ | "triggers": [ | |||
"http://dcdn.example.com/triggers/0", | "http://dcdn.example.com/triggers/0", | |||
"http://dcdn.example.com/triggers/1" | "http://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 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: 56 | Content-Length: 56 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "2986340333785000363" | Etag: "2986340333785000363" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | 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 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: 472 | Content-Length: 472 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-4765587034697674779" | Etag: "-4765587034697674779" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerStatus+json | Content-Type: application/cdni; ptype=ci-trigger-status | |||
{ | { | |||
"ctime": 1409478798, | "ctime": 1409478798, | |||
"etime": 1409478806, | "etime": 1409478806, | |||
"mtime": 1409478798, | "mtime": 1409478798, | |||
"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 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: 551 | Content-Length: 551 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-7657333837290433420" | Etag: "-7657333837290433420" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerStatus+json | Content-Type: application/cdni; ptype=ci-trigger-status | |||
{ | { | |||
"ctime": 1409478799, | "ctime": 1409478799, | |||
"etime": 1409478807, | "etime": 1409478807, | |||
"mtime": 1409478799, | "mtime": 1409478799, | |||
"status": "pending", | "status": "pending", | |||
"trigger": { | "trigger": { | |||
"content.patterns": [ | "content.patterns": [ | |||
{ | { | |||
"case-sensitive": true, | "case-sensitive": true, | |||
skipping to change at page 34, line 22 | skipping to change at page 34, line 22 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 304 Not Modified | HTTP/1.1 304 Not Modified | |||
Content-Length: 0 | Content-Length: 0 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "5012053611544832286" | Etag: "5012053611544832286" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | 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: "-4765587034697674779" | If-None-Match: "-4765587034697674779" | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 304 Not Modified | HTTP/1.1 304 Not Modified | |||
Content-Length: 0 | Content-Length: 0 | |||
Expires: Sun, 31 Aug 2014 09:54:19 GMT | Expires: Sun, 31 Aug 2014 09:54:19 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-4765587034697674779" | Etag: "-4765587034697674779" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:19 GMT | Date: Sun, 31 Aug 2014 09:53:19 GMT | |||
Content-Type: application/cdni.ci.TriggerStatus+json | 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 35, line 22 | skipping to change at page 35, line 22 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 56 | Content-Length: 56 | |||
Expires: Sun, 31 Aug 2014 09:54:29 GMT | Expires: Sun, 31 Aug 2014 09:54:29 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-4471185573414616962" | Etag: "-4471185573414616962" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:29 GMT | Date: Sun, 31 Aug 2014 09:53:29 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | 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 36, line 22 | skipping to change at page 36, line 22 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 153 | Content-Length: 153 | |||
Expires: Sun, 31 Aug 2014 09:54:30 GMT | Expires: Sun, 31 Aug 2014 09:54:30 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-1508172875796647067" | Etag: "-1508172875796647067" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:30 GMT | Date: Sun, 31 Aug 2014 09:53:30 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | Content-Type: application/cdni; ptype=ci-trigger-collection | |||
{ | { | |||
"staleresourcetime": 86400, | "staleresourcetime": 86400, | |||
"triggers": [ | "triggers": [ | |||
"http://dcdn.example.com/triggers/0", | "http://dcdn.example.com/triggers/0", | |||
"http://dcdn.example.com/triggers/1" | "http://dcdn.example.com/triggers/1" | |||
] | ] | |||
} | } | |||
6.2.5. Deleting Trigger Status Resources | 6.2.5. Deleting Trigger Status Resources | |||
skipping to change at page 37, line 39 | skipping to change at page 37, line 39 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 106 | Content-Length: 106 | |||
Expires: Sun, 31 Aug 2014 09:54:30 GMT | Expires: Sun, 31 Aug 2014 09:54:30 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-1842390246836476263" | Etag: "-1842390246836476263" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:30 GMT | Date: Sun, 31 Aug 2014 09:53:30 GMT | |||
Content-Type: application/cdni.ci.TriggerCollection+json | Content-Type: application/cdni; ptype=ci-trigger-collection | |||
{ | { | |||
"staleresourcetime": 86400, | "staleresourcetime": 86400, | |||
"triggers": [ | "triggers": [ | |||
"http://dcdn.example.com/triggers/1" | "http://dcdn.example.com/triggers/1" | |||
] | ] | |||
} | } | |||
6.2.6. Error Reporting | 6.2.6. Error Reporting | |||
skipping to change at page 38, line 27 | skipping to change at page 38, line 27 | |||
RESPONSE: | RESPONSE: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 505 | Content-Length: 505 | |||
Expires: Sun, 31 Aug 2014 09:54:38 GMT | Expires: Sun, 31 Aug 2014 09:54:38 GMT | |||
Server: example-server/0.1 | Server: example-server/0.1 | |||
Etag: "-3893590191073700822" | Etag: "-3893590191073700822" | |||
Cache-Control: max-age=60 | Cache-Control: max-age=60 | |||
Date: Sun, 31 Aug 2014 09:53:38 GMT | Date: Sun, 31 Aug 2014 09:53:38 GMT | |||
Content-Type: application/cdni.ci.TriggerStatus+json | Content-Type: application/cdni; ptype=ci-trigger-status | |||
{ | { | |||
"ctime": 1409478810, | "ctime": 1409478810, | |||
"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 39, line 7 | skipping to change at page 39, line 7 | |||
"trigger": { | "trigger": { | |||
"content.urls": [ | "content.urls": [ | |||
"http://newsite.example.com/index.html" | "http://newsite.example.com/index.html" | |||
], | ], | |||
"type": "preposition" | "type": "preposition" | |||
} | } | |||
} | } | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. Media type registrations | 7.1. CDNI Payload Type Parameter Registrations | |||
7.1.1. CI/T Commands | ||||
The MIME media type for CI/T Commands is application/ | ||||
cdni.ci.TriggerCommand+json. | ||||
Type Name: application | ||||
Subtype name: cdni.ci.TriggerCommand+json | ||||
Required parameters: N/A | ||||
Optional parameters: N/A | ||||
Encoding considerations: binary | ||||
Security Considerations: See [RFCthis], Section 8 | ||||
Interoperability Considerations: Described in [RFCthis] | ||||
Published Specification: [RFCthis] | ||||
Applications that use this media type: No known applications | ||||
currently use this media type. | ||||
Additional Information: | ||||
Deprecated alias names for this type: N/A | ||||
Magic number(s): N/A | ||||
File Extensions: N/A | ||||
Macintosh file type code(s): TEXT | ||||
Person & email address to contact for further information: IESG | ||||
<iesg@ietf.org> | ||||
Intended Usage: COMMON | ||||
Restrictions on usage: None | ||||
Author: Rob Murray <rob.murray@alcatel-lucent.com> | ||||
Change controller: IESG <iesg@ietf.org> | ||||
Note: No "charset" parameter is defined for this registration because | ||||
a charset parameter is not defined for application/json [RFC7159]. | ||||
7.1.2. CI/T Trigger Status Resource | ||||
The MIME media type for CI/T Trigger Status Resources is application/ | ||||
cdni.ci.TriggerStatus+json. | ||||
Type Name: application | ||||
Subtype name: cdni.ci.TriggerStatus+json | ||||
Required parameters: N/A | ||||
Optional parameters: N/A | ||||
Encoding considerations: binary | ||||
Security Considerations: See [RFCthis], Section 8 | ||||
Interoperability Considerations: Described in [RFCthis] | ||||
Published Specification: [RFCthis] | ||||
Applications that use this media type: No known applications | ||||
currently use this media type. | ||||
Additional Information: | ||||
Deprecated alias names for this type: N/A | ||||
Magic number(s): N/A | ||||
File Extensions: N/A | ||||
Macintosh file type code(s): TEXT | ||||
Person & email address to contact for further information: IESG | ||||
<iesg@ietf.org> | ||||
Intended Usage: COMMON | ||||
Restrictions on usage: None | ||||
Author: Rob Murray <rob.murray@alcatel-lucent.com> | ||||
Change controller: IESG <iesg@ietf.org> | ||||
Note: No "charset" parameter is defined for this registration because | ||||
a charset parameter is not defined for application/json [RFC7159]. | ||||
7.1.3. CI/T Trigger Collection | ||||
The MIME media type for CI/T Trigger Collections is application/ | ||||
cdni.ci.TriggerCollection+json. | ||||
Type Name: application | ||||
Subtype name: cdni.ci.TriggerCollection+json | ||||
Required parameters: N/A | ||||
Optional parameters: N/A | ||||
Encoding considerations: binary | ||||
Security Considerations: See [RFCthis], Section 8 | ||||
Interoperability Considerations: Described in [RFCthis] | ||||
Published Specification: [RFCthis] | ||||
Applications that use this media type: No known applications | ||||
currently use this media type. | ||||
Additional Information: | ||||
Deprecated alias names for this type: N/A | ||||
Magic number(s): N/A | ||||
File Extensions: N/A | ||||
Macintosh file type code(s): TEXT | ||||
Person & email address to contact for further information: IESG | ||||
<iesg@ietf.org> | ||||
Intended Usage: COMMON | ||||
Restrictions on usage: None | The IANA is requested to register the following new Payload Types in | |||
the CDNI Payload Type Parameter registry defined by | ||||
[I-D.ietf-cdni-media-type], for use with the 'application/cdni' MIME | ||||
media type. | ||||
Author: Rob Murray <rob.murray@alcatel-lucent.com> | RFC Editor Note: Please replace references to [RFCthis] below with | |||
this document's RFC number before publication. | ||||
Change controller: IESG <iesg@ietf.org> | +-----------------------+---------------+ | |||
Note: No "charset" parameter is defined for this registration because | | Payload Type | Specification | | |||
a charset parameter is not defined for application/json [RFC7159]. | +-----------------------+---------------+ | |||
| ci-trigger-command | [RFCthis] | | ||||
| ci-trigger-status | [RFCthis] | | ||||
| ci-trigger-collection | [RFCthis] | | ||||
+-----------------------+---------------+ | ||||
8. Security Considerations | 8. Security Considerations | |||
The CI/T interface provides a mechanism to allow a uCDN to generate | The CI/T interface provides a mechanism to allow a uCDN to generate | |||
requests into the dCDN and to inspect its own CI/T requests and their | requests into the dCDN and to inspect its own CI/T requests and their | |||
current state. The CI/T interface does not allow access to or | current state. The CI/T interface does not allow access to or | |||
modification of the uCDN or dCDN metadata relating to content | modification of the uCDN or dCDN metadata relating to content | |||
delivery, or to the content itself. It can only control the presence | delivery, or to the content itself. It can only control the presence | |||
of that metadata in the dCDN, and the processing work and network | of that metadata in the dCDN, and the processing work and network | |||
utilisation involved in ensuring that presence. | utilisation involved in ensuring that presence. | |||
skipping to change at page 42, line 43 | skipping to change at page 40, line 13 | |||
unnecessary acquisition or re-acquisition load. | unnecessary acquisition or re-acquisition load. | |||
8.1. Authentication, Authorization, Confidentiality, Integrity | 8.1. Authentication, Authorization, Confidentiality, Integrity | |||
Protection | Protection | |||
A CI/T implementation MUST support TLS transport for HTTP (https) as | A CI/T implementation MUST support TLS transport for HTTP (https) as | |||
per [RFC2818] and [RFC7230]. | per [RFC2818] and [RFC7230]. | |||
The use of TLS for transport of the CI/T interface allows: | The use of TLS for transport of the CI/T interface allows: | |||
o The dCDN and the uCDN to authenticate each other and, once they | o The dCDN and the uCDN to authenticate each other. | |||
have mutually authenticated each other, it allows: | ||||
And, once they have mutually authenticated each other, it allows: | ||||
o The dCDN and the uCDN to authorize each other (to ensure they are | o The dCDN and the uCDN to authorize each other (to ensure they are | |||
receiving CI/T Commands from, or reporting status to, an | receiving CI/T Commands from, or reporting status to, an | |||
authorized CDN). | authorized CDN). | |||
o CDNI commands and responses to be transmitted with | o CDNI commands and responses to be transmitted with | |||
confidentiality. | confidentiality. | |||
o Protection of the integrity of CDNI commands and responses. | o Protection of the integrity of CDNI commands and responses. | |||
skipping to change at page 44, line 19 | skipping to change at page 41, line 39 | |||
9. Acknowledgements | 9. Acknowledgements | |||
The authors thank Kevin Ma for his input, and Carsten Bormann for his | The authors thank Kevin Ma for his input, and Carsten Bormann for his | |||
review and formalization of the JSON data. | review and formalization of the JSON data. | |||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data | [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
Interchange Format", RFC 7159, March 2014. | Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | |||
2014, <http://www.rfc-editor.org/info/rfc7159>. | ||||
[RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
(HTTP/1.1): Message Syntax and Routing", RFC 7230, June | Protocol (HTTP/1.1): Message Syntax and Routing", RFC | |||
2014. | 7230, DOI 10.17487/RFC7230, June 2014, | |||
<http://www.rfc-editor.org/info/rfc7230>. | ||||
[RFC7231] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
(HTTP/1.1): Semantics and Content", RFC 7231, June 2014. | Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI | |||
10.17487/RFC7231, June 2014, | ||||
<http://www.rfc-editor.org/info/rfc7231>. | ||||
[RFC7232] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | [RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
(HTTP/1.1): Conditional Requests", RFC 7232, June 2014. | Protocol (HTTP/1.1): Conditional Requests", RFC 7232, DOI | |||
10.17487/RFC7232, June 2014, | ||||
<http://www.rfc-editor.org/info/rfc7232>. | ||||
[RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | |||
"Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
(DTLS)", BCP 195, RFC 7525, May 2015. | (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | |||
2015, <http://www.rfc-editor.org/info/rfc7525>. | ||||
10.2. Informative References | 10.2. Informative References | |||
[I-D.greevenbosch-appsawg-cbor-cddl] | [I-D.greevenbosch-appsawg-cbor-cddl] | |||
Vigano, C., Birkholz, H., and R. Sun, "CBOR data | Vigano, C. and H. Birkholz, "CBOR data definition | |||
definition language: a notational convention to express | language: a notational convention to express CBOR data | |||
CBOR data structures.", draft-greevenbosch-appsawg-cbor- | structures.", draft-greevenbosch-appsawg-cbor-cddl-06 | |||
cddl-05 (work in progress), March 2015. | (work in progress), July 2015. | |||
[I-D.ietf-cdni-media-type] | ||||
Ma, K., "CDNI Media Type Registration", draft-ietf-cdni- | ||||
media-type-06 (work in progress), October 2015. | ||||
[I-D.ietf-cdni-metadata] | [I-D.ietf-cdni-metadata] | |||
Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | |||
"CDN Interconnection Metadata", draft-ietf-cdni- | "CDN Interconnection Metadata", draft-ietf-cdni- | |||
metadata-09 (work in progress), March 2015. | metadata-11 (work in progress), July 2015. | |||
[I-D.ietf-cdni-redirection] | [I-D.ietf-cdni-redirection] | |||
Niven-Jenkins, B. and R. Brandenburg, "Request Routing | Niven-Jenkins, B. and R. Brandenburg, "Request Routing | |||
Redirection Interface for CDN Interconnection", draft- | Redirection Interface for CDN Interconnection", draft- | |||
ietf-cdni-redirection-09 (work in progress), April 2015. | ietf-cdni-redirection-13 (work in progress), October 2015. | |||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, DOI 10.17487/ | |||
RFC2818, May 2000, | ||||
<http://www.rfc-editor.org/info/rfc2818>. | ||||
[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, DOI 10.17487/RFC6707, September | |||
2012, <http://www.rfc-editor.org/info/rfc6707>. | ||||
[RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, | [RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed., | |||
"Framework for Content Distribution Network | "Framework for Content Distribution Network | |||
Interconnection (CDNI)", RFC 7336, August 2014. | Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336, | |||
August 2014, <http://www.rfc-editor.org/info/rfc7336>. | ||||
[RFC7337] Leung, K. and Y. Lee, "Content Distribution Network | [RFC7337] Leung, K., Ed. and Y. Lee, Ed., "Content Distribution | |||
Interconnection (CDNI) Requirements", RFC 7337, August | Network Interconnection (CDNI) Requirements", RFC 7337, | |||
2014. | DOI 10.17487/RFC7337, August 2014, | |||
<http://www.rfc-editor.org/info/rfc7337>. | ||||
Authors' Addresses | Authors' Addresses | |||
Rob Murray | Rob Murray | |||
Velocix (Alcatel-Lucent) | Velocix (Alcatel-Lucent) | |||
3 Ely Road | 3 Ely Road | |||
Milton, Cambridge CB24 6DD | Milton, Cambridge CB24 6DD | |||
UK | UK | |||
Email: rob.murray@alcatel-lucent.com | Email: rob.murray@alcatel-lucent.com | |||
End of changes. 58 change blocks. | ||||
227 lines changed or deleted | 116 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |