--- 1/draft-ietf-cdni-triggers-extensions-05.txt 2020-09-24 06:13:28.810443480 -0700 +++ 2/draft-ietf-cdni-triggers-extensions-06.txt 2020-09-24 06:13:28.854444094 -0700 @@ -1,32 +1,34 @@ Network Working Group O. Finkelman Internet-Draft Qwilt Updates: 8007 (if approved) S. Mishra Intended status: Standards Track Verizon -Expires: March 22, 2021 September 18, 2020 +Expires: March 28, 2021 N. Sopher + Qwilt + September 24, 2020 CDNI Control Triggers Interface Extensions - draft-ietf-cdni-triggers-extensions-05 + draft-ietf-cdni-triggers-extensions-06 Abstract This document updates RFC 8007 to include generic extensions and more granular content matching options, required by the Open Caching - architecture. The Open Caching working group of the Streaming Video - Alliance is focused on the delegation of video delivery request from - commercial CDNs to a caching layer at the ISP. In that aspect, Open - Caching is a specific use case of CDNI, where the commercial CDN is - the upstream CDN (uCDN) and the ISP caching layer is the downstream - CDN (dCDN). The extensions specified in this document to the CDNI - Control Interface / Triggers are derived from requirements of Open - Caching but are applicable to CDNI use cases in general. + architecture. The Open Caching architeccture is a use case of + Content Delivery Network Interconnection (CDNI) in which the + commercial Content Delivery Network (CDN) is the upstream CDN (uCDN) + and the ISP caching layer serves as the downstream CDN (dCDN). This + document defines extensions to the Content Delivery Network + Interconnection (CDNI) Control Interface/Triggers. These extensions + are derived from requirements raised by Open Caching architecture but + are also applicable to CDNI use cases in general. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Status of This Memo This Internet-Draft is submitted in full conformance with the @@ -35,21 +37,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 https://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 March 22, 2021. + This Internet-Draft will expire on March 28, 2021. Copyright Notice Copyright (c) 2020 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 (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -57,100 +59,115 @@ to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of 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 1.2. Structure of this document . . . . . . . . . . . . . . . 4 - 2. Interfaces Extensions Overview . . . . . . . . . . . . . . . 4 + 2. Interfaces Extensions Overview . . . . . . . . . . . . . . . 5 2.1. CDNI Control Interface / Triggers Extensions . . . . . . 5 2.1.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . 5 2.1.2. Trigger Specification . . . . . . . . . . . . . . . . 5 2.1.3. Content Selection . . . . . . . . . . . . . . . . . . 5 - 2.1.4. Trigger Extensibility . . . . . . . . . . . . . . . . 5 + 2.1.4. Trigger Extensibility . . . . . . . . . . . . . . . . 6 2.1.5. Error Handling . . . . . . . . . . . . . . . . . . . 6 - 2.2. CDNI Footprint and Capabilities Interface Extensions . . 6 + 2.2. CDNI Footprint and Capabilities Interface Extensions . . 7 3. CI/T Version 2 . . . . . . . . . . . . . . . . . . . . . . . 7 3.1. CI/T Objects V2 . . . . . . . . . . . . . . . . . . . . . 7 - 3.2. Error Handling V2 . . . . . . . . . . . . . . . . . . . . 9 - 3.3. Properties of CI/T Version 2 objects . . . . . . . . . . 10 - 3.3.1. Trigger Specification Version 2 . . . . . . . . . . . 10 - 3.3.2. RegexMatch . . . . . . . . . . . . . . . . . . . . . 11 - 3.3.3. Playlist . . . . . . . . . . . . . . . . . . . . . . 13 - 3.3.4. MediaProtocol . . . . . . . . . . . . . . . . . . . . 13 - 3.3.5. CI/T Trigger Extensions . . . . . . . . . . . . . . . 14 - 3.3.5.1. Enforcement Options . . . . . . . . . . . . . . . 14 - 3.3.5.2. GenericExtensionObject . . . . . . . . . . . . . 17 - 3.3.6. Error Description Version 2 . . . . . . . . . . . . . 19 - 3.3.7. Error codes . . . . . . . . . . . . . . . . . . . . . 21 - 3.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 21 - 3.4.1. Invalidation with Regex . . . . . . . . . . . . . . . 21 - 3.4.2. Preposition with Playlists . . . . . . . . . . . . . 23 - 3.4.3. Extensions with Error Propagation . . . . . . . . . . 24 - 4. Trigger Extension Objects . . . . . . . . . . . . . . . . . . 26 - 4.1. LocationPolicy extension . . . . . . . . . . . . . . . . 26 - 4.2. TimePolicy Extension . . . . . . . . . . . . . . . . . . 28 - 4.2.1. UTCWindow . . . . . . . . . . . . . . . . . . . . . . 30 - 4.2.2. LocalTimeWindow . . . . . . . . . . . . . . . . . . . 31 - 4.2.3. DateLocalTime . . . . . . . . . . . . . . . . . . . . 32 - 4.2.3.1. Date and Local Time Format . . . . . . . . . . . 32 - 4.2.3.2. Restrictions . . . . . . . . . . . . . . . . . . 32 - 5. Footprint and Capabilities . . . . . . . . . . . . . . . . . 33 - 5.1. CI/T Versions Capability Object . . . . . . . . . . . . . 33 - 5.1.1. CI/T Versions Capability Object Serialization . . . . 34 - 5.2. CI/T Playlist Protocol Capability Object . . . . . . . . 34 + 3.2. Error Handling V2 . . . . . . . . . . . . . . . . . . . . 10 + 3.3. Properties of CI/T Version 2 objects . . . . . . . . . . 11 + 3.3.1. Trigger Specification Version 2 . . . . . . . . . . . 11 + 3.3.2. RegexMatch . . . . . . . . . . . . . . . . . . . . . 12 + 3.3.3. Playlist . . . . . . . . . . . . . . . . . . . . . . 14 + 3.3.4. MediaProtocol . . . . . . . . . . . . . . . . . . . . 14 + 3.3.5. CI/T Trigger Extensions . . . . . . . . . . . . . . . 15 + 3.3.5.1. Enforcement Options . . . . . . . . . . . . . . . 15 + 3.3.5.2. GenericExtensionObject . . . . . . . . . . . . . 18 + 3.3.6. Error Description Version 2 . . . . . . . . . . . . . 20 + 3.3.7. Error codes . . . . . . . . . . . . . . . . . . . . . 22 + 3.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 22 + 3.4.1. Invalidation with Regex . . . . . . . . . . . . . . . 22 + 3.4.2. Preposition with Playlists . . . . . . . . . . . . . 24 + 3.4.3. Extensions with Error Propagation . . . . . . . . . . 25 + 4. Trigger Extension Objects . . . . . . . . . . . . . . . . . . 27 + 4.1. LocationPolicy extension . . . . . . . . . . . . . . . . 27 + 4.2. TimePolicy Extension . . . . . . . . . . . . . . . . . . 29 + 4.2.1. UTCWindow . . . . . . . . . . . . . . . . . . . . . . 31 + 4.2.2. LocalTimeWindow . . . . . . . . . . . . . . . . . . . 32 + 4.2.3. DateLocalTime . . . . . . . . . . . . . . . . . . . . 33 + 4.2.3.1. Date and Local Time Format . . . . . . . . . . . 33 + 4.2.3.2. Restrictions . . . . . . . . . . . . . . . . . . 34 + 5. Footprint and Capabilities . . . . . . . . . . . . . . . . . 34 + 5.1. CI/T Versions Capability Object . . . . . . . . . . . . . 34 + 5.1.1. CI/T Versions Capability Object Serialization . . . . 35 + 5.2. CI/T Playlist Protocol Capability Object . . . . . . . . 35 5.2.1. CI/T Playlist Protocol Capability Object - Serialization . . . . . . . . . . . . . . . . . . . . 34 - 5.3. CI/T Trigger Extension Capability Object . . . . . . . . 35 - 5.3.1. CI/T Trigger Extension Capability Object Serialization . . . . . . . . . . . . . . . . . . . . 35 - 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 - 6.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 36 - 6.1.1. CDNI ci-trigger-command.v2 Payload Type . . . . . . . 36 - 6.1.2. CDNI ci-trigger-status.v2 Payload Type . . . . . . . 37 - 6.1.3. CDNI CI/T LocationPolicy Trigger Extension Type . . . 37 - 6.1.4. CDNI CI/T TimePolicy Trigger Extension Type . . . . . 37 - 6.1.5. CDNI FCI CI/T Versions Payload Type . . . . . . . . . 37 - 6.1.6. CDNI FCI CI/T Playlist Protocol Payload Type . . . . 37 - 6.1.7. CDNI FCI CI/T Extension Objects Payload Type . . . . 38 - 6.2. CDNI CI/T Trigger Error Codes types . . . . . . . . . . . 38 - 6.3. CDNI Media protocol types . . . . . . . . . . . . . . . . 38 - 7. Security Considerations . . . . . . . . . . . . . . . . . . . 39 - 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 39 - 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 39 - 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 - 10.1. Normative References . . . . . . . . . . . . . . . . . . 40 - 10.2. Informative References . . . . . . . . . . . . . . . . . 41 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 + 5.3. CI/T Trigger Extension Capability Object . . . . . . . . 36 + 5.3.1. CI/T Trigger Extension Capability Object + Serialization . . . . . . . . . . . . . . . . . . . . 36 + 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 + 6.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 37 + 6.1.1. CDNI ci-trigger-command.v2 Payload Type . . . . . . . 37 + 6.1.2. CDNI ci-trigger-status.v2 Payload Type . . . . . . . 38 + 6.1.3. CDNI CI/T LocationPolicy Trigger Extension Type . . . 38 + 6.1.4. CDNI CI/T TimePolicy Trigger Extension Type . . . . . 38 + 6.1.5. CDNI FCI CI/T Versions Payload Type . . . . . . . . . 38 + 6.1.6. CDNI FCI CI/T Playlist Protocol Payload Type . . . . 38 + 6.1.7. CDNI FCI CI/T Extension Objects Payload Type . . . . 39 + 6.2. CDNI CI/T Trigger Error Codes types . . . . . . . . . . . 39 + 6.3. CDNI Media protocol types . . . . . . . . . . . . . . . . 39 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 40 + 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 40 + 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 + 10.1. Normative References . . . . . . . . . . . . . . . . . . 41 + 10.2. Informative References . . . . . . . . . . . . . . . . . 42 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 1. Introduction + The Streaming Video Alliance [SVA] is a global association that works + to solve streaming video challenges in an effort to improve end-user + experience and adoption. The Open Caching Working Group [OCWG] of + the Streaming Video Alliance [SVA] is focused on the delegation of + video delivery requests from commerical CDNs to a caching layer at + the ISP's network. Open Caching architecture is a specific use case + of CDNI where the commercial CDN is the upstream CDN (uCDN) and the + ISP caching layer is the downstream CDN (dCDN). The Open Caching + Content Management Operations Specification [OC-CM] defines objects + and extensions required by Open Caching architecture for granular + content management operations such as new content selection options. This document defines the objects and extensions required for granular content management operations. For that purpose it extends CDNI Control Interface / Triggers [RFC8007] by adding new content selection options to the trigger specification and specifying a generic extension mechanism that enables adding future functions for controlling the trigger execution. This document also defines and initial set of extension objects. This document gives examples for the extensions specified herein, for complete examples of the trigger interface usage see Section 6 of [RFC8007]. The CDNI Metadata Interface is described in [RFC8006]. The CDNI Footprint and Capability Interface is described in [RFC8008]. The CDNI Control Interface / Triggers is described in [RFC8007]. + For consistency with other CDNI documents, this document follows the + CDNI convention of uCDN (upstream CDN) and dCDN downstream CDN) to + represent the commercial CDN and ISP caching layer, respectively. + 1.1. Terminology This document reuses the terminology defined in [RFC6707], [RFC8006], [RFC8007], and [RFC8008]. Additionally, the following terms are used throughout this document and are defined as follows: o HLS - HTTP Live Streaming @@ -413,32 +430,35 @@ take actions to fix them. This document adds a mechanism to report extension errors. o Error propagation - enable the uCDN to traceback an error to the dCDN in which it occurred. CDNI triggers may be propagated over a chain of downstream CDNs. Let us take for example an upstream (uCDN-A) CDN A that is delegating to a downstream CDN B (dCDN-B) and dCDN-B is delegating to a downstream CDN C (dCDN-C). Triggers sent from uCDN-A to dCDN-B may be redistributed from dCDN-B to dCDN-C and errors can happen anywhere along the path. Therefore, - it is essential for uCDN-A that sets the trigger, to be able to - trace back an error to the downstream CDN where it occurred. This - document adds a mechanism to propagate the ID of the faulty dCDN - back to the uCDN by adding the CDN ID to the error description. - When a downstream dCDN-B propagates a trigger to another - downstream dCDN-C, it MUST also propagate back the errors received - in the trigger status resource from dCDN-C by adding them to the - errors array in its own status resource to be sent back to the - originating uCDN-A. This makes sure that the trigger originating - upstream CDN will receive an array of errors that occurred in all - the CDNs along the execution path, each error carrying its own CDN - identifier. + it might be essential for uCDN-A that sets the trigger, to be able + to trace back an error to the downstream CDN where it occurred. + This document adds a mechanism to propagate the ID of the faulty + dCDN back to the uCDN by adding the CDN ID to the error + description. When a downstream dCDN-B propagates a trigger to + another downstream dCDN-C, it MUST also propagate back the errors + received in the trigger status resource from dCDN-C by adding them + to the errors array in its own status resource to be sent back to + the originating uCDN-A. While propagating back the errors, and + depending on the implementation, downstream dCDN-B MAY also + specify the dCDN-C CDN identifier, indicating that the error + relates spefically to this CDN. The trigger originating upstream + CDN will receive an array of errors that occurred in all the CDNs + along the execution path, where each error MAY carrying its own + CDN identifier. 3.3. Properties of CI/T Version 2 objects This section defines the values that can appear in the top-level objects described in Section 3.1, and their encodings. 3.3.1. Trigger Specification Version 2 Version 2 of the Trigger Specification adds the following properties on top of the existing properties of the trigger specification @@ -464,21 +484,21 @@ Mandatory: No, but at least one of "metadata.*" or "content.*" MUST be present and non-empty. Property: extensions Description: Array of trigger extension data. Type: Array of GenericTriggerExtension objects (see Section 3.3.5.2). - Mandatory-to-Specify: No. The default is no extensions. + Mandatory: No. The default is no extensions. Example of an invalidation trigger.v2 with a list of regex objects, a list of playlist objects, and extensions: { "trigger.v2": { "type": "invalidate", "content.regexs": [ ], "content.playlists": [ ], "extensions": [ , "generic-trigger-extension-value": { @@ -848,21 +870,22 @@ Property: cdn Description: The CDN PID of the CDN where the error occurred. The "cdn" property is used by the originating uCDN or by propagating dCDN in order to distinguish in which CDN the error occured. Type: A non-empty JSON string, where the string is a CDN PID as defined in Section 4.6 of [RFC8007]. - Mandatory: Yes. + Mandatory: Yes. In the case the dCDN does not like to expose + this information, it should provide its own CDN PID. Example of an Error Description object reporting a malformed Playlist: { "content.playlists": [ { "playlist": "https://www.example.com/hls/title/index.m3u8", "media-protocol": "hls" } @@ -894,25 +917,26 @@ }, ] } 3.3.7. Error codes This document adds the error code "eextension" to the error codes table defined in Section 5.2.6 of [RFC8007]. This error code designates that an error occurred while parsing a generic trigger extension, or that the specific extension is not supported by the - CDN. A CDN that fails to parse or execute a generic extension object - MUST report it using the "errors.v2" array within the trigger status - resource, while setting the error code to "eextension" and providing - an appropriate description. The "eextension" error code is a - registered type of "CDNI CI/T Trigger Error Codes" (see Section 6.2). + CDN. A CDN that fails to execute a trigger due a generic extension + object which is "mandatory-to-enforce" MUST report it using the + "errors.v2" array within the trigger status resource, while setting + the error code to "eextension" and providing an appropriate + description. The "eextension" error code is a registered type of + "CDNI CI/T Trigger Error Codes" (see Section 6.2). 3.4. Examples The following subsections provides usage examples of the specified interface extensions being used by the trigger command and status resource. 3.4.1. Invalidation with Regex In the following example a CI/T "invalidate" command uses the Regex @@ -1060,37 +1084,36 @@ "type": "preposition", "content.playlists": [ { "playlist": "https://www.example.com/hls/title/index.m3u8", "media-protocol": "hls" }, ], "extensions": [ { "generic-trigger-extension-type": - , "generic-trigger-extension-value": { }, - "mandatory-to-enforce": false, + "mandatory-to-enforce": true, "safe-to-redistribute": true, }, { "generic-trigger-extension-type": , "generic-trigger-extension-value": { }, - "mandatory-to-enforce": false, + "mandatory-to-enforce": true, "safe-to-redistribute": true, }, ], }, "cdn-path": [ "AS64496:0" ] } RESPONSE: HTTP/1.1 201 Created @@ -1104,24 +1127,25 @@ "errors.v2": [ { "extensions": [ { "generic-trigger-extension-type": , "generic-trigger-extension-value": { }, - "mandatory-to-enforce": false, + "mandatory-to-enforce": true, "safe-to-redistribute": true, }, ], + "description": "unrecognized extension ", "error": "eextension", "cdn": "AS64500:0" }, { "extensions": [ { "generic-trigger-extension-type": , "generic-trigger-extension-value": @@ -1121,21 +1145,21 @@ }, { "extensions": [ { "generic-trigger-extension-type": , "generic-trigger-extension-value": { }, - "mandatory-to-enforce": false, + "mandatory-to-enforce": true, "safe-to-redistribute": true, }, ], "description": "unrecognized extension ", "error": "eextension", "cdn": "AS64501:0" }, ], "ctime": 1462351690, "etime": 1462351698, @@ -1181,21 +1205,21 @@ Object specification Property: locations Description: An Access List that allows or denies (blocks) the trigger execution per cache location. Type: Array of LocationRule objects (see Section 4.2.2.1 of [RFC8006]) - Mandatory-to-Specify: Yes. + Mandatory: Yes. If a location policy object is not listed within the trigger command, the default behavior is to execute the trigger in all available caches and locations of the dCDN. The trigger command is allowed, or denied, for a specific cache location according to the action of the first location whose footprint matches against that cache's location. If two or more footprints overlap, the first footprint that matches against the cache's location determines the action a CDN MUST take. If the @@ -1272,43 +1296,43 @@ Object specification Property: unix-time-window Description: A UNIX epoch time window in which the trigger SHOULD be executed. Type: TimeWindow object using UNIX epoch timestamps (see Section 4.2.3.2 of [RFC8006]) - Mandatory-to-Specify: No, but exactly one of "unix-time- - window", "utc-window" or "local-time-window" MUST be present. + Mandatory: No, but exactly one of "unixEpochWindow", + "utcWindow" or "localTimeWindow" MUST be present. Property: utc-window Description: A UTC time window in which the trigger SHOULD be executed. Type: UTCWindow object as defined in Section 4.2.1. - Mandatory-to-Specify: No, but exactly one of "unix-time- - window", "utc-window" or "local-time-window" MUST be present. + Mandatory: No, but exactly one of "unixEpochWindow", + "utcWindow" or "localTimeWindow" MUST be present. Property: local-time-window Description: A local time window. The dCDN SHOULD execute the trigger at the defined time frame, interpreted as the the local time per location. Type: LocalTimeWindow object as defined in Section 4.2.2. - Mandatory-to-Specify: No, but exactly one of "unix-time- - window", "utc-window" or "local-time-window" MUST be present. + Mandatory: No, but exactly one of "unixEpochWindow", + "utcWindow" or "localTimeWindow" MUST be present. If a time policy object is not listed within the trigger command, the default behavior is to execute the trigger in a time frame most suitable to the dCDN taking under consideration other constrains and / or obligations. Example of a generic trigger extension object containing a time policy object that schedules the trigger execution to a window between 09:00 01/01/2000 UTC and 17:00 01/01/2000 UTC, using the "unix-time-window" property: @@ -1331,29 +1355,31 @@ A UTCWindow object describes a time range in UTC or UTC and a zone offset that can be applied by a TimePolicy. Property: start Description: The start time of the window. Type: Internet date and time as defined in [RFC3339]. - Mandatory-to-Specify: Yes. + Mandatory: No, but at least one of "start" or "end" MUST be + present and non-empty. Property: end Description: The end time of the window. Type: Internet date and time as defined in [RFC3339]. - Mandatory-to-Specify: Yes. + Mandatory: No, but at least one of "start" or "end" MUST be + present and non-empty. Example UTCWindow object that describes a time window from 02:30 01/01/2000 UTC to 04:30 01/01/2000 UTC: { "start": 2000-01-01T02:30:00.00Z, "end": 2000-01-01T04:30:00.00Z, } Example UTCWindow object that describes a time window in New York @@ -1373,30 +1399,32 @@ and New York (UTC-05:00) will execute the trigger at 2AM-4AM UTC in London and at 2AM-4AM UTC-05:00 in New York. Property: start Description: The start time of the window. Type: JSON string formatted as DateLocalTime as defined in Section 4.2.3. - Mandatory-to-Specify: Yes. + Mandatory: No, but at least one of "start" or "end" MUST be + present and non-empty. Property: end Description: The end time of the window. Type: JSON string formatted as DateLocalTime as defined in Section 4.2.3. - Mandatory-to-Specify: Yes. + Mandatory: No, but at least one of "start" or "end" MUST be + present and non-empty. Example LocalTimeWindow object that describes a local time window from 02:30 01/01/2000 to 04:30 01/01/2000. { "start": 2000-01-01T02:30:00.00, "end": 2000-01-01T04:30:00.00, } 4.2.3. DateLocalTime @@ -1482,23 +1510,23 @@ one or more CI/T objects versions. Note that the default version as originally defined in [RFC8007] MUST be implicitly supported regardless of the versions listed in this capability object. Property: versions Description: A list of version numbers. Type: An array of JSON strings - Mandatory-to-Specify: No. The default is version 1. A missing - or an empty versions list means that only version 1 of the - interface and objects is supported. + Mandatory: No. The default is version 1. A missing or an + empty versions list means that only version 1 of the interface + and objects is supported. 5.1.1. CI/T Versions Capability Object Serialization The following shows an example of CI/T Versions Capability object serialization for a dCDN that supports versions 2 and 2.1 of the CI/T interface. { "capabilities": [ { @@ -1519,22 +1547,22 @@ support for one or more MediaProtocol types listed in Section 6.3 by the playlists property of the "trigger.v2" object. Property: media-protocols Description: A list of media protocols. Type: A list of MediaProtocol (from the CDNI Triggers media protocol types Section 6.3) - Mandatory-to-Specify: No. The default, in case of a missing or - an empty list, is none supported. + Mandatory: No. The default, in case of a missing or an empty + list, is none supported. 5.2.1. CI/T Playlist Protocol Capability Object Serialization The following shows an example of CI/T Playlist Protocol Capability object serialization for a dCDN that supports "hls" and "dash". { "capabilities": [ { "capability-type": "FCI.TriggerPlaylistProtocol", @@ -1556,25 +1584,25 @@ Property: trigger-extension Description: A list of supported CDNI CI/T GenericExtensionObject types. Type: List of strings corresponding to entries from the "CDNI Payload Types" registry [RFC7736] that are under the CIT namespace, and that correspond to CDNI CI/T GenericExtensionObject objects. - Mandatory-to-Specify: No. The default, in case of a missing or - an empty list, MUST be interpreted as "no - GenericExtensionObject types are supported". A non-empty list - MUST be interpreted as containing "the only - GenericExtensionObject types that are supported". + Mandatory: No. The default, in case of a missing or an empty + list, MUST be interpreted as "no GenericExtensionObject types + are supported". A non-empty list MUST be interpreted as + containing "the only GenericExtensionObject types that are + supported". 5.3.1. CI/T Trigger Extension Capability Object Serialization The following shows an example of CI/T Trigger Extension Capability object serialization for a dCDN that supports the "CIT.LocationPolicy" and the "CIT.TimePolicy" objects. { "capabilities": [ { @@ -1676,27 +1704,28 @@ Encoding: see Section 5.3.1 6.2. CDNI CI/T Trigger Error Codes types The IANA is requested to update the "CDNI CI/T Error Codes" subregistry (defined in Section 7.3 of [RFC8007] and located at ) with the following registration: - +------------+-----------------------------------+------------------+ + +------------+--------------------------------------+---------------+ | Error Code | Description | Specification | - +------------+-----------------------------------+------------------+ - | eextension | The dCDN failed to parse a | Section | - | | generic extension object, or does | Section 3.3.7 of | - | | not support this extension. | this document. | - +------------+-----------------------------------+------------------+ + +------------+--------------------------------------+---------------+ + | eextension | The dCDN failed to parse a generic | Section | + | | "mandatory-to-enforce" extension | Section 3.3.7 | + | | object, or does not support this | of this | + | | extension. | document. | + +------------+--------------------------------------+---------------+ 6.3. CDNI Media protocol types The IANA is requested to create a new "CDNI MediaProtocol Types" subregistry in the "Content Delivery Networks Interconnection (CDNI) Parameters" registry. The "CDNI MediaProtocol Types" namespace defines the valid MediaProtocol object values in Section Section 3.3.4, used by the Playlist object. Additions to the MediaProtocol namespace conform to the "Specification Required" policy as defined in Section 4.6 of [RFC8126], where the @@ -1811,43 +1840,64 @@ [MPEG-DASH] ISO, "Information technology -- Dynamic adaptive streaming over HTTP (DASH) -- Part 1: Media presentation description and segment format", ISO/IEC 23009-1:2014, Edition 2, 05 2014, . [MSS] Microsoft, "[MS-SSTR]: Smooth Streaming Protocol", Protocol Revision 8.0, September 2017, . + [OC-CM] Finkelman, O., Ed., Devabhaktuni, J., and M. Stock, "Open + Caching Content Management Operations Specification", + November 2017, + . + + [OCWG] Streaming Video Alliance, "Open Caching", + . + [PCRE841] Hazel, P., "Perl Compatible Regular Expressions", Version 8.41, July 2017, . [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content Distribution Network Interconnection (CDNI) Problem Statement", RFC 6707, DOI 10.17487/RFC6707, September 2012, . [RFC7736] Ma, K., "Content Delivery Network Interconnection (CDNI) Media Type Registration", RFC 7736, DOI 10.17487/RFC7736, December 2015, . [RFC8216] Pantos, R., Ed. and W. May, "HTTP Live Streaming", RFC 8216, DOI 10.17487/RFC8216, August 2017, . + [SVA] "Streaming Video Alliance", + . + Authors' Addresses Ori Finkelman Qwilt 6, Ha'harash Hod HaSharon 4524079 Israel - Phone: +972-72-2221647 Email: ori.finkelman.ietf@gmail.com + Sanjay Mishra Verizon 13100 Columbia Pike Silver Spring, MD 20904 USA Email: sanjay.mishra@verizon.com + + Nir B. Sopher + Qwilt + 6, Ha'harash + Hod HaSharon 4524079 + Israel + + Email: nir@apache.org