--- 1/draft-ietf-cdni-control-triggers-08.txt 2015-10-17 07:15:10.394318221 -0700 +++ 2/draft-ietf-cdni-control-triggers-09.txt 2015-10-17 07:15:10.470320065 -0700 @@ -1,18 +1,18 @@ Network Working Group R. Murray Internet-Draft B. Niven-Jenkins 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 - draft-ietf-cdni-control-triggers-08 + draft-ietf-cdni-control-triggers-09 Abstract This document describes the part of the CDN Interconnection Control Interface that allows a CDN to trigger activity in an interconnected CDN that is configured to deliver content on its behalf. The upstream CDN can use this mechanism to request that the downstream CDN pre-positions metadata or content, or that it invalidates or purges metadata or content. The upstream CDN can monitor the status of activity that it has triggered in the downstream CDN. @@ -31,21 +31,21 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference 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 (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -55,74 +55,71 @@ the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 2. Model for CDNI Triggers . . . . . . . . . . . . . . . . . . . 4 2.1. Timing 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 4. CDNI Trigger Interface . . . . . . . . . . . . . . . . . . . 8 4.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 9 4.2. Checking Status . . . . . . . . . . . . . . . . . . . . . 10 4.2.1. Polling Trigger Status Resource collections . . . . . 10 4.2.2. Polling Trigger Status Resources . . . . . . . . . . 11 4.3. Cancelling Triggers . . . . . . . . . . . . . . . . . . . 11 4.4. Deleting Triggers . . . . . . . . . . . . . . . . . . . . 12 4.5. Expiry of Trigger Status Resources . . . . . . . . . . . 12 4.6. Loop Detection and Prevention . . . . . . . . . . . . . . 13 4.7. Error Handling . . . . . . . . . . . . . . . . . . . . . 13 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.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 15 5.1.2. Trigger Status Resource . . . . . . . . . . . . . . . 16 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.2. Trigger Type . . . . . . . . . . . . . . . . . . . . 20 5.2.3. Trigger Status . . . . . . . . . . . . . . . . . . . 21 5.2.4. PatternMatch . . . . . . . . . . . . . . . . . . . . 21 5.2.5. Absolute Time . . . . . . . . . . . . . . . . . . . . 22 5.2.6. Error Description . . . . . . . . . . . . . . . . . . 22 5.2.7. Error Code . . . . . . . . . . . . . . . . . . . . . 23 - 5.3. Formalization of the JSON Data . . . . . . . . . . . . . 24 - 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 26 - 6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 26 - 6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 26 + 5.3. Formalization of the JSON Data . . . . . . . . . . . . . 23 + 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 25 + 6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 25 + 6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 25 6.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . 27 - 6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 29 - 6.2.1. Collection of All Triggers . . . . . . . . . . . . . 29 - 6.2.2. Filtered Collections of Trigger Status Resources . . 30 + 6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 28 + 6.2.1. Collection of All Triggers . . . . . . . . . . . . . 28 + 6.2.2. Filtered Collections of Trigger Status Resources . . 29 6.2.3. Individual Trigger Status Resources . . . . . . . . . 31 6.2.4. Polling for Change . . . . . . . . . . . . . . . . . 33 6.2.5. Deleting Trigger Status Resources . . . . . . . . . . 36 6.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 38 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 - 7.1. Media type registrations . . . . . . . . . . . . . . . . 39 - 7.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 39 - 7.1.2. CI/T Trigger Status Resource . . . . . . . . . . . . 40 - 7.1.3. CI/T Trigger Collection . . . . . . . . . . . . . . . 41 - 8. Security Considerations . . . . . . . . . . . . . . . . . . . 42 + 7.1. CDNI Payload Type Parameter Registrations . . . . . . . . 39 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 39 8.1. Authentication, Authorization, Confidentiality, Integrity - Protection . . . . . . . . . . . . . . . . . . . . . . . 42 - 8.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 43 - 8.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 43 - 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44 - 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 - 10.1. Normative References . . . . . . . . . . . . . . . . . . 44 - 10.2. Informative References . . . . . . . . . . . . . . . . . 44 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 + Protection . . . . . . . . . . . . . . . . . . . . . . . 40 + 8.2. Denial of Service . . . . . . . . . . . . . . . . . . . . 40 + 8.3. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 41 + 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 41 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 + 10.1. Normative References . . . . . . . . . . . . . . . . . . 41 + 10.2. Informative References . . . . . . . . . . . . . . . . . 42 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 1. Introduction [RFC6707] introduces the problem scope for CDN Interconnection (CDNI) and lists the four categories of interfaces that may be used to compose a CDNI solution (Control, Metadata, Request Routing, Logging). [RFC7336] expands on the information provided in [RFC6707] and describes each of the interfaces and the relationships between them @@ -644,61 +641,60 @@ o CI/T "preposition" and "purge" commands can be reported as "processed" if affected caches are offline and the activity will complete when they return to service. o Otherwise, the dCDN SHOULD keep the Trigger Status Resource in state "pending" or "active" until the CI/T Command is acted upon, or the uCDN chooses to cancel it. 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 a cascade, that intermediate CDN MUST transform URLs in CI/T Commands it passes to its dCDN. When processing Trigger Specifications, CDNs MUST ignore the URL scheme (http or https) in comparing URLs. For example, for a CI/T invalidate or purge command, content MUST be invalidated or purged regardless of the protocol clients use to request it. 5. CI/T Object Properties and Encoding CI/T Commands, Trigger Status Resources and Trigger Collections and 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 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]. 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 the processing, and passed on by dCDN to any further dCDNs in a cascade. 5.1. CI/T Objects The top-level objects defined by the CI/T interface are described in - this section. Each has an associated MIME Media Type. The encoding - of values used by these objects is described in Section 5.2. + this section. + + The encoding of values used by these objects is described in + Section 5.2. 5.1.1. CI/T Commands - CI/T Commands SHOULD use a MIME Media Type of application/ - cdni.ci.TriggerCommand+json. + CI/T Commands MUST use a MIME Media Type of 'application/cdni; + ptype=ci-trigger-command'. A CI/T Command is encoded as a JSON object containing the following name/value pairs. Name: trigger Description: A specification of the trigger type, and a set of data to act upon. Value: A Trigger Specification, as defined in Section 5.2.1. @@ -722,22 +718,22 @@ Description: The CDN Provider Identifiers of CDNs that have already accepted the CI/T Command. Value: A non-empty JSON array of JSON strings, where each string is a CDN Provider Identifier as defined in Section 4.6. Mandatory: Yes. 5.1.2. Trigger Status Resource - Trigger Status Resources SHOULD use a MIME Media Type of application/ - cdni.ci.TriggerStatus+json. + Trigger Status Resources MUST use a MIME Media Type of 'application/ + cdni; ptype=ci-trigger-status'. A Trigger Status Resource is encoded as a JSON object containing the following name/value pairs. Name: trigger Description: The Trigger Specification posted in the body of 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- serialise the information differently. @@ -790,27 +787,28 @@ processing a Trigger Command. Value: An array of Error Description, as defined in Section 5.2.6. An empty array is allowed, and equivalent to omitting "errors" from the object. Mandatory: No. 5.1.3. Trigger Collection - Trigger Collections SHOULD use a MIME Media Type of application/ - cdni.ci.TriggerCollection+json. + Trigger Collections MUST use a MIME Media Type of 'application/cdni; + ptype=ci-trigger-collection'. A Trigger Collection is encoded as a JSON object containing the following name/value pairs. Name: triggers + Description: Links to Trigger Status Resources in the collection. Value: A JSON array of zero or more URLs, represented as JSON strings. Mandatory: Yes Name: staleresourcetime @@ -1090,39 +1088,38 @@ | | downstream CDNs. | | ecancelled | The uCDN cancelled the request. | +------------+------------------------------------------------------+ 5.3. Formalization of the JSON Data The JSON data described in this document has been formalised using CDDL [I-D.greevenbosch-appsawg-cbor-cddl] as follows: CIT-object = CIT-command / Trigger-Status-Resource / Trigger-Collection - - CIT-command ; use media type application/cdni.ci.TriggerCommand+json + CIT-command ; use media type application/cdni; ptype=ci-trigger-command = { ? trigger: Triggerspec ? cancel: [* URI] cdn-path: [* Cdn-PID] } - Trigger-Status-Resource ; application/cdni.ci.TriggerStatus+json. + Trigger-Status-Resource ; application/cdni; ptype=ci-trigger-status = { trigger: Triggerspec ctime: Absolute-Time mtime: Absolute-Time ? etime: Absolute-Time status: Trigger-Status ? errors: [* Error-Description] } - Trigger-Collection ; application/cdni.ci.TriggerCollection+json + Trigger-Collection ; application/cdni; ptype=ci-trigger-collection = { triggers: [* URI] ? staleresourcetime: int ; time in seconds ? coll-all: URI ? coll-pending: URI ? coll-active: URI ? coll-complete: URI ? coll-failed: URI ? cdn-id: Cdn-PID } @@ -1192,21 +1188,21 @@ Note that "metadata.patterns" and "content.patterns" are not allowed in a preposition Trigger Specification. REQUEST: POST /triggers HTTP/1.1 User-Agent: example-user-agent/0.1 Host: dcdn.example.com Accept: */* - Content-Type: application/cdni.ci.TriggerCommand+json + Content-Type: application/cdni; ptype=ci-trigger-command Content-Length: 347 { "trigger" : { "type": "preposition", "metadata.urls" : [ "http://metadata.example.com/a/b/c" ], "content.urls" : [ "http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/2", @@ -1208,29 +1204,28 @@ "metadata.urls" : [ "http://metadata.example.com/a/b/c" ], "content.urls" : [ "http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/2", "http://www.example.com/a/b/c/3", "http://www.example.com/a/b/c/4" ] }, "cdn-path" : [ "AS64496:1" ] - } RESPONSE: HTTP/1.1 201 Created Date: Sun, 31 Aug 2014 09:53:18 GMT 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 Server: example-server/0.1 { "ctime": 1409478798, "etime": 1409478806, "mtime": 1409478798, "status": "pending", "trigger": { "content.urls": [ @@ -1255,22 +1251,23 @@ "http://metadata.example.com/a/b/" using case-insensitive matching, and "http://www.example.com/a/b/" respectively, using case-sensitive matching. REQUEST: POST /triggers HTTP/1.1 User-Agent: example-user-agent/0.1 Host: dcdn.example.com Accept: */* - Content-Type: application/cdni.ci.TriggerCommand+json + Content-Type: application/cdni; ptype=ci-trigger-command Content-Length: 384 + { "trigger" : { "type": "invalidate", "metadata.patterns" : [ { "pattern" : "http://metadata.example.com/a/b/*" } ], "content.urls" : [ "http://www.example.com/a/index.html" ], "content.patterns" : [ @@ -1280,24 +1277,23 @@ ] }, "cdn-path" : [ "AS64496:1" ] } RESPONSE: HTTP/1.1 201 Created Date: Sun, 31 Aug 2014 09:53:19 GMT 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 Server: example-server/0.1 - { "ctime": 1409478799, "etime": 1409478807, "mtime": 1409478799, "status": "pending", "trigger": { "content.patterns": [ { "case-sensitive": true, "pattern": "http://www.example.com/a/b/*" @@ -1337,21 +1332,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 347 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "-6516741166528256414" Cache-Control: max-age=60 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", "coll-active": "/triggers/active", "coll-complete": "/triggers/complete", "coll-failed": "/triggers/failed", "coll-pending": "/triggers/pending", "staleresourcetime": 86400, "triggers": [ "http://dcdn.example.com/triggers/0", @@ -1374,21 +1369,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 153 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "5012053611544832286" Cache-Control: max-age=60 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, "triggers": [ "http://dcdn.example.com/triggers/0", "http://dcdn.example.com/triggers/1" ] } At this point, if no other Trigger Status Resources had been created, @@ -1403,21 +1398,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 56 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "2986340333785000363" Cache-Control: max-age=60 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, "triggers": [] } 6.2.3. Individual Trigger Status Resources The Trigger Status Resources can also be examined for detail about individual CI/T Trigger Commands. For example, for the CI/T @@ -1432,21 +1427,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 472 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "-4765587034697674779" Cache-Control: max-age=60 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, "etime": 1409478806, "mtime": 1409478798, "status": "pending", "trigger": { "content.urls": [ "http://www.example.com/a/b/c/1", "http://www.example.com/a/b/c/2", @@ -1469,21 +1464,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 551 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "-7657333837290433420" Cache-Control: max-age=60 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, "etime": 1409478807, "mtime": 1409478799, "status": "pending", "trigger": { "content.patterns": [ { "case-sensitive": true, @@ -1518,40 +1513,40 @@ RESPONSE: HTTP/1.1 304 Not Modified Content-Length: 0 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "5012053611544832286" Cache-Control: max-age=60 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: GET /triggers/0 HTTP/1.1 User-Agent: example-user-agent/0.1 Host: dcdn.example.com Accept: */* If-None-Match: "-4765587034697674779" RESPONSE: HTTP/1.1 304 Not Modified Content-Length: 0 Expires: Sun, 31 Aug 2014 09:54:19 GMT Server: example-server/0.1 Etag: "-4765587034697674779" Cache-Control: max-age=60 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 filtered collections will be updated along with their Entity Tags. For example, when the two example CI/T Trigger Commands are complete, the collections of pending and complete Trigger Status Resources might look like: REQUEST: GET /triggers/pending HTTP/1.1 @@ -1562,21 +1557,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 56 Expires: Sun, 31 Aug 2014 09:54:29 GMT Server: example-server/0.1 Etag: "-4471185573414616962" Cache-Control: max-age=60 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, "triggers": [] } REQUEST: GET /triggers/complete HTTP/1.1 User-Agent: example-user-agent/0.1 @@ -1586,21 +1581,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 153 Expires: Sun, 31 Aug 2014 09:54:30 GMT Server: example-server/0.1 Etag: "-1508172875796647067" Cache-Control: max-age=60 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, "triggers": [ "http://dcdn.example.com/triggers/0", "http://dcdn.example.com/triggers/1" ] } 6.2.5. Deleting Trigger Status Resources @@ -1636,21 +1631,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 106 Expires: Sun, 31 Aug 2014 09:54:30 GMT Server: example-server/0.1 Etag: "-1842390246836476263" Cache-Control: max-age=60 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, "triggers": [ "http://dcdn.example.com/triggers/1" ] } 6.2.6. Error Reporting @@ -1667,21 +1662,21 @@ RESPONSE: HTTP/1.1 200 OK Content-Length: 505 Expires: Sun, 31 Aug 2014 09:54:38 GMT Server: example-server/0.1 Etag: "-3893590191073700822" Cache-Control: max-age=60 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, "errors": [ { "content.urls": [ "http://newsite.example.com/index.html" ], "description": "No HostIndex entry found for newsite.example.com", @@ -1694,162 +1689,37 @@ "trigger": { "content.urls": [ "http://newsite.example.com/index.html" ], "type": "preposition" } } 7. IANA Considerations -7.1. Media type 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 - - - Intended Usage: COMMON - - Restrictions on usage: None - - Author: Rob Murray - - Change controller: IESG - 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 - - - Intended Usage: COMMON - - Restrictions on usage: None - - Author: Rob Murray - - Change controller: IESG - 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 - - - Intended Usage: COMMON +7.1. CDNI Payload Type Parameter Registrations - 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 + RFC Editor Note: Please replace references to [RFCthis] below with + this document's RFC number before publication. - Change controller: IESG - Note: No "charset" parameter is defined for this registration because - a charset parameter is not defined for application/json [RFC7159]. + +-----------------------+---------------+ + | Payload Type | Specification | + +-----------------------+---------------+ + | ci-trigger-command | [RFCthis] | + | ci-trigger-status | [RFCthis] | + | ci-trigger-collection | [RFCthis] | + +-----------------------+---------------+ 8. Security Considerations 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 current state. The CI/T interface does not allow access to or modification of the uCDN or dCDN metadata relating to content delivery, or to the content itself. It can only control the presence of that metadata in the dCDN, and the processing work and network utilisation involved in ensuring that presence. @@ -1873,22 +1743,23 @@ unnecessary acquisition or re-acquisition load. 8.1. Authentication, Authorization, Confidentiality, Integrity Protection A CI/T implementation MUST support TLS transport for HTTP (https) as per [RFC2818] and [RFC7230]. 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 - have mutually authenticated each other, it allows: + o The dCDN and the uCDN to authenticate each other. + + And, once they have mutually authenticated each other, it allows: o The dCDN and the uCDN to authorize each other (to ensure they are receiving CI/T Commands from, or reporting status to, an authorized CDN). o CDNI commands and responses to be transmitted with confidentiality. o Protection of the integrity of CDNI commands and responses. @@ -1946,71 +1817,89 @@ 9. Acknowledgements The authors thank Kevin Ma for his input, and Carsten Bormann for his review and formalization of the JSON data. 10. References 10.1. Normative References [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, + . - [RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data - Interchange Format", RFC 7159, March 2014. + [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data + Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March + 2014, . - [RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol - (HTTP/1.1): Message Syntax and Routing", RFC 7230, June - 2014. + [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer + Protocol (HTTP/1.1): Message Syntax and Routing", RFC + 7230, DOI 10.17487/RFC7230, June 2014, + . - [RFC7231] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol - (HTTP/1.1): Semantics and Content", RFC 7231, June 2014. + [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer + Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI + 10.17487/RFC7231, June 2014, + . - [RFC7232] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol - (HTTP/1.1): Conditional Requests", RFC 7232, June 2014. + [RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer + Protocol (HTTP/1.1): Conditional Requests", RFC 7232, DOI + 10.17487/RFC7232, June 2014, + . [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, "Recommendations for Secure Use of Transport Layer 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, . 10.2. Informative References [I-D.greevenbosch-appsawg-cbor-cddl] - Vigano, C., Birkholz, H., and R. Sun, "CBOR data - definition language: a notational convention to express - CBOR data structures.", draft-greevenbosch-appsawg-cbor- - cddl-05 (work in progress), March 2015. + Vigano, C. and H. Birkholz, "CBOR data definition + language: a notational convention to express CBOR data + structures.", draft-greevenbosch-appsawg-cbor-cddl-06 + (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] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, "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] Niven-Jenkins, B. and R. Brandenburg, "Request Routing 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, + . [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content Distribution Network Interconnection (CDNI) Problem - Statement", RFC 6707, September 2012. + Statement", RFC 6707, DOI 10.17487/RFC6707, September + 2012, . - [RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, + [RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed., "Framework for Content Distribution Network - Interconnection (CDNI)", RFC 7336, August 2014. + Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336, + August 2014, . - [RFC7337] Leung, K. and Y. Lee, "Content Distribution Network - Interconnection (CDNI) Requirements", RFC 7337, August - 2014. + [RFC7337] Leung, K., Ed. and Y. Lee, Ed., "Content Distribution + Network Interconnection (CDNI) Requirements", RFC 7337, + DOI 10.17487/RFC7337, August 2014, + . Authors' Addresses Rob Murray Velocix (Alcatel-Lucent) 3 Ely Road Milton, Cambridge CB24 6DD UK Email: rob.murray@alcatel-lucent.com