draft-ietf-cdni-triggers-extensions-05.txt   draft-ietf-cdni-triggers-extensions-06.txt 
Network Working Group O. Finkelman Network Working Group O. Finkelman
Internet-Draft Qwilt Internet-Draft Qwilt
Updates: 8007 (if approved) S. Mishra Updates: 8007 (if approved) S. Mishra
Intended status: Standards Track Verizon 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 CDNI Control Triggers Interface Extensions
draft-ietf-cdni-triggers-extensions-05 draft-ietf-cdni-triggers-extensions-06
Abstract Abstract
This document updates RFC 8007 to include generic extensions and more This document updates RFC 8007 to include generic extensions and more
granular content matching options, required by the Open Caching granular content matching options, required by the Open Caching
architecture. The Open Caching working group of the Streaming Video architecture. The Open Caching architeccture is a use case of
Alliance is focused on the delegation of video delivery request from Content Delivery Network Interconnection (CDNI) in which the
commercial CDNs to a caching layer at the ISP. In that aspect, Open commercial Content Delivery Network (CDN) is the upstream CDN (uCDN)
Caching is a specific use case of CDNI, where the commercial CDN is and the ISP caching layer serves as the downstream CDN (dCDN). This
the upstream CDN (uCDN) and the ISP caching layer is the downstream document defines extensions to the Content Delivery Network
CDN (dCDN). The extensions specified in this document to the CDNI Interconnection (CDNI) Control Interface/Triggers. These extensions
Control Interface / Triggers are derived from requirements of Open are derived from requirements raised by Open Caching architecture but
Caching but are applicable to CDNI use cases in general. are also applicable to CDNI use cases in general.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 46 skipping to change at page 1, line 48
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 March 22, 2021. This Internet-Draft will expire on March 28, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 25 skipping to change at page 2, line 25
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
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
1.2. Structure of this document . . . . . . . . . . . . . . . 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. CDNI Control Interface / Triggers Extensions . . . . . . 5
2.1.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . 5 2.1.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . 5
2.1.2. Trigger Specification . . . . . . . . . . . . . . . . 5 2.1.2. Trigger Specification . . . . . . . . . . . . . . . . 5
2.1.3. Content Selection . . . . . . . . . . . . . . . . . . 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.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. CI/T Version 2 . . . . . . . . . . . . . . . . . . . . . . . 7
3.1. CI/T Objects V2 . . . . . . . . . . . . . . . . . . . . . 7 3.1. CI/T Objects V2 . . . . . . . . . . . . . . . . . . . . . 7
3.2. Error Handling V2 . . . . . . . . . . . . . . . . . . . . 9 3.2. Error Handling V2 . . . . . . . . . . . . . . . . . . . . 10
3.3. Properties of CI/T Version 2 objects . . . . . . . . . . 10 3.3. Properties of CI/T Version 2 objects . . . . . . . . . . 11
3.3.1. Trigger Specification Version 2 . . . . . . . . . . . 10 3.3.1. Trigger Specification Version 2 . . . . . . . . . . . 11
3.3.2. RegexMatch . . . . . . . . . . . . . . . . . . . . . 11 3.3.2. RegexMatch . . . . . . . . . . . . . . . . . . . . . 12
3.3.3. Playlist . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3. Playlist . . . . . . . . . . . . . . . . . . . . . . 14
3.3.4. MediaProtocol . . . . . . . . . . . . . . . . . . . . 13 3.3.4. MediaProtocol . . . . . . . . . . . . . . . . . . . . 14
3.3.5. CI/T Trigger Extensions . . . . . . . . . . . . . . . 14 3.3.5. CI/T Trigger Extensions . . . . . . . . . . . . . . . 15
3.3.5.1. Enforcement Options . . . . . . . . . . . . . . . 14 3.3.5.1. Enforcement Options . . . . . . . . . . . . . . . 15
3.3.5.2. GenericExtensionObject . . . . . . . . . . . . . 17 3.3.5.2. GenericExtensionObject . . . . . . . . . . . . . 18
3.3.6. Error Description Version 2 . . . . . . . . . . . . . 19 3.3.6. Error Description Version 2 . . . . . . . . . . . . . 20
3.3.7. Error codes . . . . . . . . . . . . . . . . . . . . . 21 3.3.7. Error codes . . . . . . . . . . . . . . . . . . . . . 22
3.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.1. Invalidation with Regex . . . . . . . . . . . . . . . 21 3.4.1. Invalidation with Regex . . . . . . . . . . . . . . . 22
3.4.2. Preposition with Playlists . . . . . . . . . . . . . 23 3.4.2. Preposition with Playlists . . . . . . . . . . . . . 24
3.4.3. Extensions with Error Propagation . . . . . . . . . . 24 3.4.3. Extensions with Error Propagation . . . . . . . . . . 25
4. Trigger Extension Objects . . . . . . . . . . . . . . . . . . 26 4. Trigger Extension Objects . . . . . . . . . . . . . . . . . . 27
4.1. LocationPolicy extension . . . . . . . . . . . . . . . . 26 4.1. LocationPolicy extension . . . . . . . . . . . . . . . . 27
4.2. TimePolicy Extension . . . . . . . . . . . . . . . . . . 28 4.2. TimePolicy Extension . . . . . . . . . . . . . . . . . . 29
4.2.1. UTCWindow . . . . . . . . . . . . . . . . . . . . . . 30 4.2.1. UTCWindow . . . . . . . . . . . . . . . . . . . . . . 31
4.2.2. LocalTimeWindow . . . . . . . . . . . . . . . . . . . 31 4.2.2. LocalTimeWindow . . . . . . . . . . . . . . . . . . . 32
4.2.3. DateLocalTime . . . . . . . . . . . . . . . . . . . . 32 4.2.3. DateLocalTime . . . . . . . . . . . . . . . . . . . . 33
4.2.3.1. Date and Local Time Format . . . . . . . . . . . 32 4.2.3.1. Date and Local Time Format . . . . . . . . . . . 33
4.2.3.2. Restrictions . . . . . . . . . . . . . . . . . . 32 4.2.3.2. Restrictions . . . . . . . . . . . . . . . . . . 34
5. Footprint and Capabilities . . . . . . . . . . . . . . . . . 33 5. Footprint and Capabilities . . . . . . . . . . . . . . . . . 34
5.1. CI/T Versions Capability Object . . . . . . . . . . . . . 33 5.1. CI/T Versions Capability Object . . . . . . . . . . . . . 34
5.1.1. CI/T Versions Capability Object Serialization . . . . 34 5.1.1. CI/T Versions Capability Object Serialization . . . . 35
5.2. CI/T Playlist Protocol Capability Object . . . . . . . . 34 5.2. CI/T Playlist Protocol Capability Object . . . . . . . . 35
5.2.1. CI/T Playlist Protocol Capability Object 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 Serialization . . . . . . . . . . . . . . . . . . . . 35
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 5.3. CI/T Trigger Extension Capability Object . . . . . . . . 36
6.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 36 5.3.1. CI/T Trigger Extension Capability Object
6.1.1. CDNI ci-trigger-command.v2 Payload Type . . . . . . . 36 Serialization . . . . . . . . . . . . . . . . . . . . 36
6.1.2. CDNI ci-trigger-status.v2 Payload Type . . . . . . . 37 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37
6.1.3. CDNI CI/T LocationPolicy Trigger Extension Type . . . 37 6.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 37
6.1.4. CDNI CI/T TimePolicy Trigger Extension Type . . . . . 37 6.1.1. CDNI ci-trigger-command.v2 Payload Type . . . . . . . 37
6.1.5. CDNI FCI CI/T Versions Payload Type . . . . . . . . . 37 6.1.2. CDNI ci-trigger-status.v2 Payload Type . . . . . . . 38
6.1.6. CDNI FCI CI/T Playlist Protocol Payload Type . . . . 37 6.1.3. CDNI CI/T LocationPolicy Trigger Extension Type . . . 38
6.1.7. CDNI FCI CI/T Extension Objects Payload Type . . . . 38 6.1.4. CDNI CI/T TimePolicy Trigger Extension Type . . . . . 38
6.2. CDNI CI/T Trigger Error Codes types . . . . . . . . . . . 38 6.1.5. CDNI FCI CI/T Versions Payload Type . . . . . . . . . 38
6.3. CDNI Media protocol types . . . . . . . . . . . . . . . . 38 6.1.6. CDNI FCI CI/T Playlist Protocol Payload Type . . . . 38
7. Security Considerations . . . . . . . . . . . . . . . . . . . 39 6.1.7. CDNI FCI CI/T Extension Objects Payload Type . . . . 39
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 39 6.2. CDNI CI/T Trigger Error Codes types . . . . . . . . . . . 39
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 39 6.3. CDNI Media protocol types . . . . . . . . . . . . . . . . 39
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 7. Security Considerations . . . . . . . . . . . . . . . . . . . 40
10.1. Normative References . . . . . . . . . . . . . . . . . . 40 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 40
10.2. Informative References . . . . . . . . . . . . . . . . . 41 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.1. Normative References . . . . . . . . . . . . . . . . . . 41
10.2. Informative References . . . . . . . . . . . . . . . . . 42
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43
1. Introduction 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 This document defines the objects and extensions required for
granular content management operations. For that purpose it extends granular content management operations. For that purpose it extends
CDNI Control Interface / Triggers [RFC8007] by adding new content CDNI Control Interface / Triggers [RFC8007] by adding new content
selection options to the trigger specification and specifying a selection options to the trigger specification and specifying a
generic extension mechanism that enables adding future functions for generic extension mechanism that enables adding future functions for
controlling the trigger execution. This document also defines and controlling the trigger execution. This document also defines and
initial set of extension objects. This document gives examples for initial set of extension objects. This document gives examples for
the extensions specified herein, for complete examples of the trigger the extensions specified herein, for complete examples of the trigger
interface usage see Section 6 of [RFC8007]. interface usage see Section 6 of [RFC8007].
The CDNI Metadata Interface is described in [RFC8006]. The CDNI Metadata Interface is described in [RFC8006].
The CDNI Footprint and Capability Interface is described in The CDNI Footprint and Capability Interface is described in
[RFC8008]. [RFC8008].
The CDNI Control Interface / Triggers is described in [RFC8007]. 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 1.1. Terminology
This document reuses the terminology defined in [RFC6707], [RFC8006], This document reuses the terminology defined in [RFC6707], [RFC8006],
[RFC8007], and [RFC8008]. [RFC8007], and [RFC8008].
Additionally, the following terms are used throughout this document Additionally, the following terms are used throughout this document
and are defined as follows: and are defined as follows:
o HLS - HTTP Live Streaming o HLS - HTTP Live Streaming
skipping to change at page 10, line 12 skipping to change at page 11, line 12
take actions to fix them. This document adds a mechanism to take actions to fix them. This document adds a mechanism to
report extension errors. report extension errors.
o Error propagation - enable the uCDN to traceback an error to the o Error propagation - enable the uCDN to traceback an error to the
dCDN in which it occurred. CDNI triggers may be propagated over a dCDN in which it occurred. CDNI triggers may be propagated over a
chain of downstream CDNs. Let us take for example an upstream 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) (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 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 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, 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 it might be essential for uCDN-A that sets the trigger, to be able
trace back an error to the downstream CDN where it occurred. This to trace back an error to the downstream CDN where it occurred.
document adds a mechanism to propagate the ID of the faulty dCDN This document adds a mechanism to propagate the ID of the faulty
back to the uCDN by adding the CDN ID to the error description. dCDN back to the uCDN by adding the CDN ID to the error
When a downstream dCDN-B propagates a trigger to another description. When a downstream dCDN-B propagates a trigger to
downstream dCDN-C, it MUST also propagate back the errors received another downstream dCDN-C, it MUST also propagate back the errors
in the trigger status resource from dCDN-C by adding them to the received in the trigger status resource from dCDN-C by adding them
errors array in its own status resource to be sent back to the to the errors array in its own status resource to be sent back to
originating uCDN-A. This makes sure that the trigger originating the originating uCDN-A. While propagating back the errors, and
upstream CDN will receive an array of errors that occurred in all depending on the implementation, downstream dCDN-B MAY also
the CDNs along the execution path, each error carrying its own CDN specify the dCDN-C CDN identifier, indicating that the error
identifier. 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 3.3. Properties of CI/T Version 2 objects
This section defines the values that can appear in the top-level This section defines the values that can appear in the top-level
objects described in Section 3.1, and their encodings. objects described in Section 3.1, and their encodings.
3.3.1. Trigger Specification Version 2 3.3.1. Trigger Specification Version 2
Version 2 of the Trigger Specification adds the following properties Version 2 of the Trigger Specification adds the following properties
on top of the existing properties of the trigger specification on top of the existing properties of the trigger specification
skipping to change at page 11, line 15 skipping to change at page 12, line 17
Mandatory: No, but at least one of "metadata.*" or "content.*" Mandatory: No, but at least one of "metadata.*" or "content.*"
MUST be present and non-empty. MUST be present and non-empty.
Property: extensions Property: extensions
Description: Array of trigger extension data. Description: Array of trigger extension data.
Type: Array of GenericTriggerExtension objects (see Type: Array of GenericTriggerExtension objects (see
Section 3.3.5.2). 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 Example of an invalidation trigger.v2 with a list of regex objects, a
list of playlist objects, and extensions: list of playlist objects, and extensions:
{ {
"trigger.v2": { "trigger.v2": {
"type": "invalidate", "type": "invalidate",
"content.regexs": [ <list of RegexMatch objects> ], "content.regexs": [ <list of RegexMatch objects> ],
"content.playlists": [ <list of Playlist objects> ], "content.playlists": [ <list of Playlist objects> ],
"extensions": [ <list of GenericTriggerExtension objects ] "extensions": [ <list of GenericTriggerExtension objects ]
skipping to change at page 17, line 44 skipping to change at page 18, line 44
Property: generic-trigger-extension-type Property: generic-trigger-extension-type
Description: Case-insensitive CDNI Trigger extension object Description: Case-insensitive CDNI Trigger extension object
type. type.
Type: String containing the CDNI Payload Type [RFC7736] of the Type: String containing the CDNI Payload Type [RFC7736] of the
object contained in the generic-trigger-extension-value object contained in the generic-trigger-extension-value
property (see table in Section 6.1). property (see table in Section 6.1).
Mandatory-to-Specify: Yes. Mandatory: Yes.
Property: generic-trigger-extension-value Property: generic-trigger-extension-value
Description: CDNI Trigger extension object. Description: CDNI Trigger extension object.
Type: Format/Type is defined by the value of the generic- Type: Format/Type is defined by the value of the generic-
trigger-extension-type property above. trigger-extension-type property above.
Mandatory-to-Specify: Yes. Mandatory: Yes.
Property: mandatory-to-enforce Property: mandatory-to-enforce
Description: Flag identifying whether or not the enforcement of Description: Flag identifying whether or not the enforcement of
this trigger extension is mandatory. this trigger extension is mandatory.
Type: Boolean Type: Boolean
Mandatory-to-Specify: No. Default is to treat the trigger Mandatory: No. Default is to treat the trigger extension as
extension as mandatory-to-enforce (i.e., a value of True). mandatory-to-enforce (i.e., a value of True).
Property: safe-to-redistribute Property: safe-to-redistribute
Description: Flag identifying whether or not this trigger Description: Flag identifying whether or not this trigger
extension can be safely redistributed without modification. extension can be safely redistributed without modification,
even if the CDN fails to understand the extension.
Type: Boolean Type: Boolean
Mandatory-to-Specify: No. Default is to allow transparent Mandatory: No. Default is to allow transparent redistribution
redistribution (i.e., a value of True). (i.e., a value of True).
Property: incomprehensible Property: incomprehensible
Description: Flag identifying whether or not any CDN in the Description: Flag identifying whether or not any CDN in the
chain of delegation has failed to understand and/or failed to chain of delegation has failed to understand and/or failed to
properly transform this trigger extension object. Note: This properly transform this trigger extension object. Note: This
flag only applies to trigger extension objects whose safe-to- flag only applies to trigger extension objects whose safe-to-
redistribute property has a value of False. redistribute property has a value of False.
Type: Boolean Type: Boolean
Mandatory-to-Specify: No. Default is comprehensible (i.e., a Mandatory: No. Default is comprehensible (i.e., a value of
value of False). False).
Example of a GenericTriggerExtension containing a specific trigger Example of a GenericTriggerExtension containing a specific trigger
extension object: extension object:
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of this trigger extension object>, <Type of this trigger extension object>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
{ {
<properties of this trigger extension object> <properties of this trigger extension object>
skipping to change at page 20, line 22 skipping to change at page 21, line 22
Property: cdn Property: cdn
Description: The CDN PID of the CDN where the error occurred. Description: The CDN PID of the CDN where the error occurred.
The "cdn" property is used by the originating uCDN or by The "cdn" property is used by the originating uCDN or by
propagating dCDN in order to distinguish in which CDN the error propagating dCDN in order to distinguish in which CDN the error
occured. occured.
Type: A non-empty JSON string, where the string is a CDN PID as Type: A non-empty JSON string, where the string is a CDN PID as
defined in Section 4.6 of [RFC8007]. 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 Example of an Error Description object reporting a malformed
Playlist: Playlist:
{ {
"content.playlists": [ "content.playlists": [
{ {
"playlist": "https://www.example.com/hls/title/index.m3u8", "playlist": "https://www.example.com/hls/title/index.m3u8",
"media-protocol": "hls" "media-protocol": "hls"
} }
skipping to change at page 21, line 31 skipping to change at page 22, line 31
}, },
] ]
} }
3.3.7. Error codes 3.3.7. Error codes
This document adds the error code "eextension" to the 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 table defined in Section 5.2.6 of [RFC8007]. This error code
designates that an error occurred while parsing a generic trigger designates that an error occurred while parsing a generic trigger
extension, or that the specific extension is not supported by the extension, or that the specific extension is not supported by the
CDN. A CDN that fails to parse or execute a generic extension object CDN. A CDN that fails to execute a trigger due a generic extension
MUST report it using the "errors.v2" array within the trigger status object which is "mandatory-to-enforce" MUST report it using the
resource, while setting the error code to "eextension" and providing "errors.v2" array within the trigger status resource, while setting
an appropriate description. The "eextension" error code is a the error code to "eextension" and providing an appropriate
registered type of "CDNI CI/T Trigger Error Codes" (see Section 6.2). description. The "eextension" error code is a registered type of
"CDNI CI/T Trigger Error Codes" (see Section 6.2).
3.4. Examples 3.4. Examples
The following subsections provides usage examples of the specified The following subsections provides usage examples of the specified
interface extensions being used by the trigger command and status interface extensions being used by the trigger command and status
resource. resource.
3.4.1. Invalidation with Regex 3.4.1. Invalidation with Regex
In the following example a CI/T "invalidate" command uses the Regex In the following example a CI/T "invalidate" command uses the Regex
skipping to change at page 23, line 17 skipping to change at page 24, line 18
"trigger.v2": { <content of trigger object from the command> } "trigger.v2": { <content of trigger object from the command> }
} }
3.4.2. Preposition with Playlists 3.4.2. Preposition with Playlists
In the following example a CI/T "preposition" command uses the In the following example a CI/T "preposition" command uses the
Playlist property to specify the full media library of a specific Playlist property to specify the full media library of a specific
content. The command fails due to playlist parse error and an content. The command fails due to playlist parse error and an
appropriate error is reflected in the status response. appropriate error is reflected in the status response.
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: triggers.dcdn.example.com Host: triggers.dcdn.example.com
Accept: */* Accept: */*
Content-Type: application/cdni; ptype=ci-trigger-command.v2 Content-Type: application/cdni; ptype=ci-trigger-command.v2
{ {
"trigger.v2": { "trigger.v2": {
"type": "preposition", "type": "preposition",
"content.playlists": [ "content.playlists": [
{ {
"playlist": "https://www.example.com/hls/title/index.m3u8", "playlist": "https://www.example.com/hls/title/index.m3u8",
"media-protocol": "hls" "media-protocol": "hls"
}, },
{ <Playlist #2> }, { <Playlist #2> },
... ...
{ <Playlist #N> }, { <Playlist #N> },
], ],
}, },
"cdn-path": [ "AS64496:0" ] "cdn-path": [ "AS64496:0" ]
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:48:10 GMT Date: Wed, 04 May 2016 08:48:10 GMT
Content-Length: 467 Content-Length: 467
Content-Type: application/cdni; ptype=ci-trigger-status.v2 Content-Type: application/cdni; ptype=ci-trigger-status.v2
Location: https://triggers.dcdn.example.com/triggers/0 Location: https://triggers.dcdn.example.com/triggers/0
Server: example-server/0.1 Server: example-server/0.1
{ {
"errors.v2": [ "errors.v2": [
{ {
"content.playlists": [ "content.playlists": [
{ {
"playlist": "https://www.example.com/hls/title/index.m3u8", "playlist": "https://www.example.com/hls/title/index.m3u8",
"media-protocol": "hls" "media-protocol": "hls"
}, },
], ],
"description": "The dCDN was not able to parse the playlist", "description": "The dCDN was not able to parse the playlist",
"error": "econtent", "error": "econtent",
"cdn": "AS64500:0" "cdn": "AS64500:0"
}, },
], ],
"ctime": 1462351690, "ctime": 1462351690,
"etime": 1462351698, "etime": 1462351698,
"mtime": 1462351690, "mtime": 1462351690,
"status": "failed", "status": "failed",
"trigger.v2": { <content of trigger object from the command> } "trigger.v2": { <content of trigger object from the command> }
} }
3.4.3. Extensions with Error Propagation 3.4.3. Extensions with Error Propagation
In the following example a CI/T "preposition" command is using two In the following example a CI/T "preposition" command is using two
extensions to control the way the trigger is executed. In this extensions to control the way the trigger is executed. In this
example the receiving dCDN identified as "AS64500:0" does not support example the receiving dCDN identified as "AS64500:0" does not support
the first extension in the extensions array. dCDN "AS64500:0" further the first extension in the extensions array. dCDN "AS64500:0" further
distributes this trigger to another downstream CDN that is identified distributes this trigger to another downstream CDN that is identified
as "AS64501:0", which does not support the second extension in the as "AS64501:0", which does not support the second extension in the
extensions array. The error is propagate from "AS64501:0" to extensions array. The error is propagate from "AS64501:0" to
skipping to change at page 25, line 4 skipping to change at page 26, line 5
"type": "preposition", "type": "preposition",
"content.playlists": [ "content.playlists": [
{ {
"playlist": "https://www.example.com/hls/title/index.m3u8", "playlist": "https://www.example.com/hls/title/index.m3u8",
"media-protocol": "hls" "media-protocol": "hls"
}, },
], ],
"extensions": [ "extensions": [
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of trigger extension object #1>, <Type of trigger extension object #1>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
{ {
<properties of trigger extension object #1> <properties of trigger extension object #1>
}, },
"mandatory-to-enforce": false, "mandatory-to-enforce": true,
"safe-to-redistribute": true, "safe-to-redistribute": true,
}, },
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of trigger extension object #2>, <Type of trigger extension object #2>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
{ {
<properties of trigger extension object #2> <properties of trigger extension object #2>
}, },
"mandatory-to-enforce": false, "mandatory-to-enforce": true,
"safe-to-redistribute": true, "safe-to-redistribute": true,
}, },
], ],
}, },
"cdn-path": [ "AS64496:0" ] "cdn-path": [ "AS64496:0" ]
} }
RESPONSE: RESPONSE:
HTTP/1.1 201 Created HTTP/1.1 201 Created
skipping to change at page 25, line 48 skipping to change at page 26, line 48
"errors.v2": [ "errors.v2": [
{ {
"extensions": [ "extensions": [
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of trigger extension object #1>, <Type of trigger extension object #1>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
{ {
<properties of trigger extension object #1> <properties of trigger extension object #1>
}, },
"mandatory-to-enforce": false, "mandatory-to-enforce": true,
"safe-to-redistribute": true, "safe-to-redistribute": true,
}, },
], ],
"description": "unrecognized extension <type>", "description": "unrecognized extension <type>",
"error": "eextension", "error": "eextension",
"cdn": "AS64500:0" "cdn": "AS64500:0"
}, },
{ {
"extensions": [ "extensions": [
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of trigger extension object #2>, <Type of trigger extension object #2>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
skipping to change at page 26, line 16 skipping to change at page 27, line 18
}, },
{ {
"extensions": [ "extensions": [
{ {
"generic-trigger-extension-type": "generic-trigger-extension-type":
<Type of trigger extension object #2>, <Type of trigger extension object #2>,
"generic-trigger-extension-value": "generic-trigger-extension-value":
{ {
<properties of trigger extension object #2> <properties of trigger extension object #2>
}, },
"mandatory-to-enforce": false, "mandatory-to-enforce": true,
"safe-to-redistribute": true, "safe-to-redistribute": true,
}, },
], ],
"description": "unrecognized extension <type>", "description": "unrecognized extension <type>",
"error": "eextension", "error": "eextension",
"cdn": "AS64501:0" "cdn": "AS64501:0"
}, },
], ],
"ctime": 1462351690, "ctime": 1462351690,
"etime": 1462351698, "etime": 1462351698,
skipping to change at page 27, line 29 skipping to change at page 28, line 29
Object specification Object specification
Property: locations Property: locations
Description: An Access List that allows or denies (blocks) the Description: An Access List that allows or denies (blocks) the
trigger execution per cache location. trigger execution per cache location.
Type: Array of LocationRule objects (see Section 4.2.2.1 of Type: Array of LocationRule objects (see Section 4.2.2.1 of
[RFC8006]) [RFC8006])
Mandatory-to-Specify: Yes. Mandatory: Yes.
If a location policy object is not listed within the trigger command, If a location policy object is not listed within the trigger command,
the default behavior is to execute the trigger in all available the default behavior is to execute the trigger in all available
caches and locations of the dCDN. caches and locations of the dCDN.
The trigger command is allowed, or denied, for a specific cache The trigger command is allowed, or denied, for a specific cache
location according to the action of the first location whose location according to the action of the first location whose
footprint matches against that cache's location. If two or more footprint matches against that cache's location. If two or more
footprints overlap, the first footprint that matches against the footprints overlap, the first footprint that matches against the
cache's location determines the action a CDN MUST take. If the cache's location determines the action a CDN MUST take. If the
skipping to change at page 29, line 29 skipping to change at page 30, line 29
Object specification Object specification
Property: unix-time-window Property: unix-time-window
Description: A UNIX epoch time window in which the trigger Description: A UNIX epoch time window in which the trigger
SHOULD be executed. SHOULD be executed.
Type: TimeWindow object using UNIX epoch timestamps (see Type: TimeWindow object using UNIX epoch timestamps (see
Section 4.2.3.2 of [RFC8006]) Section 4.2.3.2 of [RFC8006])
Mandatory-to-Specify: No, but exactly one of "unix-time- Mandatory: No, but exactly one of "unixEpochWindow",
window", "utc-window" or "local-time-window" MUST be present. "utcWindow" or "localTimeWindow" MUST be present.
Property: utc-window Property: utc-window
Description: A UTC time window in which the trigger SHOULD be Description: A UTC time window in which the trigger SHOULD be
executed. executed.
Type: UTCWindow object as defined in Section 4.2.1. Type: UTCWindow object as defined in Section 4.2.1.
Mandatory-to-Specify: No, but exactly one of "unix-time- Mandatory: No, but exactly one of "unixEpochWindow",
window", "utc-window" or "local-time-window" MUST be present. "utcWindow" or "localTimeWindow" MUST be present.
Property: local-time-window Property: local-time-window
Description: A local time window. The dCDN SHOULD execute the Description: A local time window. The dCDN SHOULD execute the
trigger at the defined time frame, interpreted as the the local trigger at the defined time frame, interpreted as the the local
time per location. time per location.
Type: LocalTimeWindow object as defined in Section 4.2.2. Type: LocalTimeWindow object as defined in Section 4.2.2.
Mandatory-to-Specify: No, but exactly one of "unix-time- Mandatory: No, but exactly one of "unixEpochWindow",
window", "utc-window" or "local-time-window" MUST be present. "utcWindow" or "localTimeWindow" MUST be present.
If a time policy object is not listed within the trigger command, the 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 default behavior is to execute the trigger in a time frame most
suitable to the dCDN taking under consideration other constrains and suitable to the dCDN taking under consideration other constrains and
/ or obligations. / or obligations.
Example of a generic trigger extension object containing a time Example of a generic trigger extension object containing a time
policy object that schedules the trigger execution to a window 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 between 09:00 01/01/2000 UTC and 17:00 01/01/2000 UTC, using the
"unix-time-window" property: "unix-time-window" property:
skipping to change at page 30, line 40 skipping to change at page 31, line 40
A UTCWindow object describes a time range in UTC or UTC and a zone A UTCWindow object describes a time range in UTC or UTC and a zone
offset that can be applied by a TimePolicy. offset that can be applied by a TimePolicy.
Property: start Property: start
Description: The start time of the window. Description: The start time of the window.
Type: Internet date and time as defined in [RFC3339]. 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 Property: end
Description: The end time of the window. Description: The end time of the window.
Type: Internet date and time as defined in [RFC3339]. 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 Example UTCWindow object that describes a time window from 02:30
01/01/2000 UTC to 04:30 01/01/2000 UTC: 01/01/2000 UTC to 04:30 01/01/2000 UTC:
{ {
"start": 2000-01-01T02:30:00.00Z, "start": 2000-01-01T02:30:00.00Z,
"end": 2000-01-01T04:30:00.00Z, "end": 2000-01-01T04:30:00.00Z,
} }
Example UTCWindow object that describes a time window in New York Example UTCWindow object that describes a time window in New York
skipping to change at page 31, line 34 skipping to change at page 32, line 37
and New York (UTC-05:00) will execute the trigger at 2AM-4AM UTC in 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. London and at 2AM-4AM UTC-05:00 in New York.
Property: start Property: start
Description: The start time of the window. Description: The start time of the window.
Type: JSON string formatted as DateLocalTime as defined in Type: JSON string formatted as DateLocalTime as defined in
Section 4.2.3. 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 Property: end
Description: The end time of the window. Description: The end time of the window.
Type: JSON string formatted as DateLocalTime as defined in Type: JSON string formatted as DateLocalTime as defined in
Section 4.2.3. 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 Example LocalTimeWindow object that describes a local time window
from 02:30 01/01/2000 to 04:30 01/01/2000. from 02:30 01/01/2000 to 04:30 01/01/2000.
{ {
"start": 2000-01-01T02:30:00.00, "start": 2000-01-01T02:30:00.00,
"end": 2000-01-01T04:30:00.00, "end": 2000-01-01T04:30:00.00,
} }
4.2.3. DateLocalTime 4.2.3. DateLocalTime
skipping to change at page 33, line 50 skipping to change at page 35, line 7
one or more CI/T objects versions. Note that the default version as one or more CI/T objects versions. Note that the default version as
originally defined in [RFC8007] MUST be implicitly supported originally defined in [RFC8007] MUST be implicitly supported
regardless of the versions listed in this capability object. regardless of the versions listed in this capability object.
Property: versions Property: versions
Description: A list of version numbers. Description: A list of version numbers.
Type: An array of JSON strings Type: An array of JSON strings
Mandatory-to-Specify: No. The default is version 1. A missing Mandatory: No. The default is version 1. A missing or an
or an empty versions list means that only version 1 of the empty versions list means that only version 1 of the interface
interface and objects is supported. and objects is supported.
5.1.1. CI/T Versions Capability Object Serialization 5.1.1. CI/T Versions Capability Object Serialization
The following shows an example of CI/T Versions Capability object 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 serialization for a dCDN that supports versions 2 and 2.1 of the CI/T
interface. interface.
{ {
"capabilities": [ "capabilities": [
{ {
skipping to change at page 34, line 38 skipping to change at page 35, line 44
support for one or more MediaProtocol types listed in Section 6.3 by support for one or more MediaProtocol types listed in Section 6.3 by
the playlists property of the "trigger.v2" object. the playlists property of the "trigger.v2" object.
Property: media-protocols Property: media-protocols
Description: A list of media protocols. Description: A list of media protocols.
Type: A list of MediaProtocol (from the CDNI Triggers media Type: A list of MediaProtocol (from the CDNI Triggers media
protocol types Section 6.3) protocol types Section 6.3)
Mandatory-to-Specify: No. The default, in case of a missing or Mandatory: No. The default, in case of a missing or an empty
an empty list, is none supported. list, is none supported.
5.2.1. CI/T Playlist Protocol Capability Object Serialization 5.2.1. CI/T Playlist Protocol Capability Object Serialization
The following shows an example of CI/T Playlist Protocol Capability The following shows an example of CI/T Playlist Protocol Capability
object serialization for a dCDN that supports "hls" and "dash". object serialization for a dCDN that supports "hls" and "dash".
{ {
"capabilities": [ "capabilities": [
{ {
"capability-type": "FCI.TriggerPlaylistProtocol", "capability-type": "FCI.TriggerPlaylistProtocol",
skipping to change at page 35, line 34 skipping to change at page 36, line 34
Property: trigger-extension Property: trigger-extension
Description: A list of supported CDNI CI/T Description: A list of supported CDNI CI/T
GenericExtensionObject types. GenericExtensionObject types.
Type: List of strings corresponding to entries from the "CDNI Type: List of strings corresponding to entries from the "CDNI
Payload Types" registry [RFC7736] that are under the CIT Payload Types" registry [RFC7736] that are under the CIT
namespace, and that correspond to CDNI CI/T namespace, and that correspond to CDNI CI/T
GenericExtensionObject objects. GenericExtensionObject objects.
Mandatory-to-Specify: No. The default, in case of a missing or Mandatory: No. The default, in case of a missing or an empty
an empty list, MUST be interpreted as "no list, MUST be interpreted as "no GenericExtensionObject types
GenericExtensionObject types are supported". A non-empty list are supported". A non-empty list MUST be interpreted as
MUST be interpreted as containing "the only containing "the only GenericExtensionObject types that are
GenericExtensionObject types that are supported". supported".
5.3.1. CI/T Trigger Extension Capability Object Serialization 5.3.1. CI/T Trigger Extension Capability Object Serialization
The following shows an example of CI/T Trigger Extension Capability The following shows an example of CI/T Trigger Extension Capability
object serialization for a dCDN that supports the object serialization for a dCDN that supports the
"CIT.LocationPolicy" and the "CIT.TimePolicy" objects. "CIT.LocationPolicy" and the "CIT.TimePolicy" objects.
{ {
"capabilities": [ "capabilities": [
{ {
skipping to change at page 38, line 21 skipping to change at page 39, line 21
Encoding: see Section 5.3.1 Encoding: see Section 5.3.1
6.2. CDNI CI/T Trigger Error Codes types 6.2. CDNI CI/T Trigger Error Codes types
The IANA is requested to update the "CDNI CI/T Error Codes" The IANA is requested to update the "CDNI CI/T Error Codes"
subregistry (defined in Section 7.3 of [RFC8007] and located at subregistry (defined in Section 7.3 of [RFC8007] and located at
<https://www.iana.org/assignments/cdni-parameters>) with the <https://www.iana.org/assignments/cdni-parameters>) with the
following registration: following registration:
+------------+-----------------------------------+------------------+ +------------+--------------------------------------+---------------+
| Error Code | Description | Specification | | Error Code | Description | Specification |
+------------+-----------------------------------+------------------+ +------------+--------------------------------------+---------------+
| eextension | The dCDN failed to parse a | Section | | eextension | The dCDN failed to parse a generic | Section |
| | generic extension object, or does | Section 3.3.7 of | | | "mandatory-to-enforce" extension | Section 3.3.7 |
| | not support this extension. | this document. | | | object, or does not support this | of this |
+------------+-----------------------------------+------------------+ | | extension. | document. |
+------------+--------------------------------------+---------------+
6.3. CDNI Media protocol types 6.3. CDNI Media protocol types
The IANA is requested to create a new "CDNI MediaProtocol Types" The IANA is requested to create a new "CDNI MediaProtocol Types"
subregistry in the "Content Delivery Networks Interconnection (CDNI) subregistry in the "Content Delivery Networks Interconnection (CDNI)
Parameters" registry. The "CDNI MediaProtocol Types" namespace Parameters" registry. The "CDNI MediaProtocol Types" namespace
defines the valid MediaProtocol object values in defines the valid MediaProtocol object values in
Section Section 3.3.4, used by the Playlist object. Additions to the Section Section 3.3.4, used by the Playlist object. Additions to the
MediaProtocol namespace conform to the "Specification Required" MediaProtocol namespace conform to the "Specification Required"
policy as defined in Section 4.6 of [RFC8126], where the policy as defined in Section 4.6 of [RFC8126], where the
skipping to change at page 41, line 22 skipping to change at page 42, line 22
[MPEG-DASH] [MPEG-DASH]
ISO, "Information technology -- Dynamic adaptive streaming ISO, "Information technology -- Dynamic adaptive streaming
over HTTP (DASH) -- Part 1: Media presentation description over HTTP (DASH) -- Part 1: Media presentation description
and segment format", ISO/IEC 23009-1:2014, Edition 2, 05 and segment format", ISO/IEC 23009-1:2014, Edition 2, 05
2014, <https://www.iso.org/standard/65274.html>. 2014, <https://www.iso.org/standard/65274.html>.
[MSS] Microsoft, "[MS-SSTR]: Smooth Streaming Protocol", [MSS] Microsoft, "[MS-SSTR]: Smooth Streaming Protocol",
Protocol Revision 8.0, September 2017, Protocol Revision 8.0, September 2017,
<https://msdn.microsoft.com/en-us/library/ff469518.aspx>. <https://msdn.microsoft.com/en-us/library/ff469518.aspx>.
[OC-CM] Finkelman, O., Ed., Devabhaktuni, J., and M. Stock, "Open
Caching Content Management Operations Specification",
November 2017,
<https://www.streamingvideoalliance.org/document/open-
caching-content-management-operations-specification/>.
[OCWG] Streaming Video Alliance, "Open Caching",
<https://www.streamingvideoalliance.org/technical-groups/
open-caching/>.
[PCRE841] Hazel, P., "Perl Compatible Regular Expressions", [PCRE841] Hazel, P., "Perl Compatible Regular Expressions",
Version 8.41, July 2017, <http://www.pcre.org/>. Version 8.41, July 2017, <http://www.pcre.org/>.
[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, DOI 10.17487/RFC6707, September Statement", RFC 6707, DOI 10.17487/RFC6707, September
2012, <https://www.rfc-editor.org/info/rfc6707>. 2012, <https://www.rfc-editor.org/info/rfc6707>.
[RFC7736] Ma, K., "Content Delivery Network Interconnection (CDNI) [RFC7736] Ma, K., "Content Delivery Network Interconnection (CDNI)
Media Type Registration", RFC 7736, DOI 10.17487/RFC7736, Media Type Registration", RFC 7736, DOI 10.17487/RFC7736,
December 2015, <https://www.rfc-editor.org/info/rfc7736>. December 2015, <https://www.rfc-editor.org/info/rfc7736>.
[RFC8216] Pantos, R., Ed. and W. May, "HTTP Live Streaming", [RFC8216] Pantos, R., Ed. and W. May, "HTTP Live Streaming",
RFC 8216, DOI 10.17487/RFC8216, August 2017, RFC 8216, DOI 10.17487/RFC8216, August 2017,
<https://www.rfc-editor.org/info/rfc8216>. <https://www.rfc-editor.org/info/rfc8216>.
[SVA] "Streaming Video Alliance",
<https://www.streamingvideoalliance.org>.
Authors' Addresses Authors' Addresses
Ori Finkelman Ori Finkelman
Qwilt Qwilt
6, Ha'harash 6, Ha'harash
Hod HaSharon 4524079 Hod HaSharon 4524079
Israel Israel
Phone: +972-72-2221647
Email: ori.finkelman.ietf@gmail.com Email: ori.finkelman.ietf@gmail.com
Sanjay Mishra Sanjay Mishra
Verizon Verizon
13100 Columbia Pike 13100 Columbia Pike
Silver Spring, MD 20904 Silver Spring, MD 20904
USA USA
Email: sanjay.mishra@verizon.com Email: sanjay.mishra@verizon.com
Nir B. Sopher
Qwilt
6, Ha'harash
Hod HaSharon 4524079
Israel
Email: nir@apache.org
 End of changes. 52 change blocks. 
165 lines changed or deleted 206 lines changed or added

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