HTTP Live Streaming
draft-pantos-http-live-streaming-10
The information below is for an old version of the document.
Document | Type |
This is an older version of an Internet-Draft that was ultimately published as RFC 8216.
|
|
---|---|---|---|
Author | Roger Pantos | ||
Last updated | 2012-10-15 | ||
RFC stream | (None) | ||
Formats | |||
IETF conflict review | conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming, conflict-review-pantos-http-live-streaming | ||
Additional resources | |||
Stream | Stream state | (No stream defined) | |
Consensus boilerplate | Unknown | ||
RFC Editor Note | (None) | ||
IESG | IESG state | Became RFC 8216 (Informational) | |
Telechat date | (None) | ||
Responsible AD | (None) | ||
Send notices to | (None) |
draft-pantos-http-live-streaming-10
IS-IS Working Group S. Litkowski Internet-Draft Orange Intended status: Standards Track D. Yeung Expires: July 25, 2019 Arrcus, Inc A. Lindem Cisco Systems J. Zhang Juniper Networks L. Lhotka CZ.NIC January 21, 2019 YANG Data Model for IS-IS Protocol draft-ietf-isis-yang-isis-cfg-31 Abstract This document defines a YANG data model that can be used to configure and manage IS-IS protocol on network elements. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. 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 July 25, 2019. Litkowski, et al. Expires July 25, 2019 [Page 1] Internet-Draft isis-cfg January 2019 Copyright Noticeapplied across media segments. The IV used for encryption MUST be either the sequence number of the media segment or the value of the IV attribute of the EXT-X-KEY tag, as described in Section 5.2. If the encryption METHOD is AES-128 and the Playlist contains an EXT- X-I-FRAMES-ONLY tag, AES-128 CBC encryption with PKCS7 padding [RFC5652] MUST be applied to the entire resource. The entire resource MUST be encrypted. Encryption MAY be restarted on 16-byte block boundaries, unless the first block contains an I-frame. The IV used for encryption MUST be either the sequence number of the media segment or the value of the IV attribute of the EXT-X-KEY tag, as described in Section 5.2. If the encryption METHOD is SAMPLE-AES, certain elementary streams MAY be encrypted prior to encapsulation in a media segment. The encryption format for H.264, AAC and AC-3 elementary streams is described by [SampleEnc]. The server MUST NOT remove an EXT-X-KEY tag from the Playlist file if it applies to any media segment in the Playlist file. 6.2.4. Providing variant streams A server MAY offer multiple Playlist files to provide different encodings of the same presentation. If it does so it SHOULD provide a variant Playlist file that lists each variant stream to allow clients to switch between encodings dynamically. Variant Playlists MUST contain an EXT-X-STREAM-INF tag or EXT-X-I- FRAME-STREAM-INF tag for each variant stream. Each tag identifying an encoding of the same presentation MUST have the same PROGRAM-ID attribute value. The PROGRAM-ID value for each presentation MUST be unique within the variant Playlist. If an EXT-X-STREAM-INF tag or EXT-X-I-FRAME-STREAM-INF tag contains the CODECS attribute, the attribute value MUST include every format defined by [RFC6381] that is present in any media segment that appears or will appear in the Playlist file. The server MUST meet the following constraints when producing variant streams: Each variant stream MUST present the same content, including stream discontinuities. Each variant Playlist file MUST have the same target duration. The only exception is that SUBTITLES renditions with a EXT-X- PLAYLIST-TYPE of VOD MAY have longer target durations. Pantos & May Expires April 18, 2013 [Page 24] Internet-Draft HTTP Live Streaming October 2012 Content that appears in one variant Playlist file but not in another MUST appear either at the beginning or at the end of the Playlist file and MUST NOT be longer than the target duration. Matching content in variant streams MUST have matching timestamps. This allows clients to synchronize the streams. Each Elementary Audio Stream segment MUST signal the timestamp of its first sample with an ID3 PRIV tag [ID3] at the beginning of the segment. The ID3 PRIV owner identifier MUST be "com.apple.streaming.transportStreamTimestamp". The ID3 payload MUST be a 33-bit MPEG-2 Program Elementary Stream timestamp expressed as a big-endian eight-octet number, with the upper 31 bits set to zero. In addition, all variant streams SHOULD contain the same encoded audio bitstream. This allows clients to switch between streams without audible glitching. The rules for variant streams also apply to alternate renditions - see Section 3.4.10.1. 6.3. Client Process 6.3.1. Introduction How the client obtains the URI to the Playlist file is outside the scope of this document; it is presumed to have done so. The client MUST obtain the Playlist file from the URI. If the Playlist file so obtained is a variant Playlist, the client MUST obtain the Playlist file from the variant Playlist. This document does not specify the treatment of variant streams by clients. 6.3.2. Loading the Playlist file Every time a Playlist file is loaded or reloaded from the Playlist URI: The client MUST ensure that the Playlist file begins with the EXTM3U tag and that the EXT-X-VERSION tag, if present, specifies a protocol version supported by the client; if not, the client MUST NOT attempt to use the Playlist. The client SHOULD ignore any tags and attributes it does not recognize. Pantos & May Expires April 18, 2013 [Page 25] Internet-Draft HTTP Live Streaming October 2012 The client MUST determine the next media segment to load, as described in Section 6.3.5. If the Playlist contains the EXT-X-MEDIA-SEQUENCE tag, the client SHOULD assume that each media segment in it will become unavailable at the time that the Playlist file was loaded plus the duration of the Playlist file. 6.3.3. Playing the Playlist file The client SHALL choose which media segment to play first from the Playlist when playback starts. If the EXT-X-ENDLIST tag is not present and the client intends to play the media regularly (i.e. in playlist order at the nominal playback rate), the client SHOULD NOT choose a segment which starts less than three target durations from the end of the Playlist file. Doing so can trigger playback stalls. To achieve regular playback, media segments MUST be played in the order that they appear in the Playlist file. The client MAY present the available media in any way it wishes, including regular playback, random access, and trick modes. The client MUST be prepared to reset its parser(s) and decoder(s) before playing a media segment that has an EXT-X-DISCONTINUITY tag applied to it. The client SHOULD attempt to load media segments in advance of when they will be required for uninterrupted playback to compensate for temporary variations in latency and throughput. If the Playlist file contains the EXT-X-ALLOW-CACHE tag and its value is NO, the client MUST NOT cache downloaded media segments after they have been played. Otherwise the client MAY cache downloaded media segments indefinitely for later replay. The client MAY use the value of the EXT-X-PROGRAM-DATE-TIME tag to display the program origination time to the user. If the value includes time zone information the client SHALL take it into account, but if it does not the client MUST NOT infer an originating time zone. The client MUST NOT depend upon the correctness or the consistency of the value of the EXT-X-PROGRAM-DATE-TIME tag. 6.3.4. Reloading the Playlist file The client MUST periodically reload the Playlist file unless it contains the EXT-X-ENDLIST tag. Pantos & May Expires April 18, 2013 [Page 26] Internet-Draft HTTP Live Streaming October 2012 However the client MUST NOT attempt to reload the Playlist file more frequently than specified by this section. When a client loads a Playlist file for the first time or reloads a Playlist file and finds that it has changed since the last time it was loaded, the client MUST wait for a period of time before attempting to reload the Playlist file again. This period is called the initial minimum reload delay. It is measured from the time that the client began loading the Playlist file. The initial minimum reload delay is the duration of the last media segment in the Playlist. Media segment duration is specified by the EXTINF tag. If the client reloads a Playlist file and finds that it has not changed then it MUST wait for a period of one-half the target duration before retrying. In order to reduce server load, the client SHOULD NOT reload the Playlist files of variant streams that are not currently being played. If it decides to switch playback to a different variant, it SHOULD stop reloading the Playlist of the old variant and begin loading the Playlist of the new variant. It can use the EXTINF durations and the constraints in Section 6.2.4 to determine the approximate location of corresponding media. Once media from the new variant has been loaded, the timestamps in the media segments can be used to synchronize the old and new timelines precisely. A client MUST NOT assume that segments with the same media sequence number in different variants or renditions contain matching content. 6.3.5. Determining the next segment to load The client MUST examine the Playlist file every time it is loaded or reloaded to determine the next media segment to load. The first segment to load MUST be the segment that the client has chosen to play first, as described in Section 6.3.3. If the first segment to be played has been loaded and the Playlist file does not contain the EXT-X-MEDIA-SEQUENCE tag then the client MUST verify that the current Playlist file contains the URI of the last loaded media segment at the offset it was originally found at, halting playback if it does not. The next media segment to load MUST be the first media segment following the last-loaded segment in the Playlist. If the first segment to be played has been loaded and the Playlist file contains the EXT-X-MEDIA-SEQUENCE tag then the next media Pantos & May Expires April 18, 2013 [Page 27] Internet-Draft HTTP Live Streaming October 2012 segment to load SHALL be the one with the lowest sequence number that is greater than the sequence number of the last media segment loaded. 6.3.6. Decrypting encrypted media segments If a Playlist file contains an EXT-X-KEY tag that specifies a Key file URI, the client MUST obtain that key file and use the key inside it to decrypt all media segments to which that EXT-X-KEY tag applies. A client MUST NOT attempt to use an EXT-X-KEY tag with an unsupported or unrecognized KEYFORMAT attribute. A client SHOULD fail playback if the Playlist contains a media segment to which only EXT-X-KEY tags with unrecognized or unsupported KEYFORMAT attributes are applied. If the encryption METHOD is AES-128, AES-128 CBC decryption SHALL be applied to individual media segments. The entire segment MUST be decrypted. Cipher Block Chaining MUST NOT be applied across media segments. The IV used for decryption MUST be either the sequence number of the media segment or the value of the IV attribute of the EXT-X-KEY tag, as described in Section 5.2. If the encryption METHOD is AES-128 and the media segment is part of an I-frame playlist (Section 3.4.12) special care MUST be taken in loading and decrypting the segment, because the resource identified by the URI is encrypted in 16-byte blocks from the start of the resource (offset 0). The sub-range specified by the EXT-X-BYTERANGE tag MUST be widened to include the 16-byte blocks in which the beginning and end of the sub-range fall. Next, it MUST be widened further to include the previous 16-byte block. That range MUST be loaded and decrypted with AES-128 CBC using an arbitrary IV. The decrypted segment will then be in the original (unwidened) sub-range. If the encryption METHOD is SAMPLE-AES, AES-128 decryption SHALL be applied to encrypted elementary streams within the media segment. The encryption format for H.264, AAC and AC-3 elementary streams is described by [SampleEnc]. An EXT-X-KEY tag with a METHOD of NONE indicates that the media segments it applies to are not encrypted. 7. Protocol version compatibility Clients and servers MUST implement protocol version 2 or higher to use: o The IV attribute of the EXT-X-KEY tag. Pantos & May Expires April 18, 2013 [Page 28] Internet-Draft HTTP Live Streaming October 2012 Clients and servers MUST implement protocol version 3 or higher to use: o Floating-point EXTINF duration values. Clients and servers MUST implement protocol version 4 or higher to use: o The EXT-X-BYTERANGE tag. o The EXT-X-I-FRAME-STREAM-INF tag. o The EXT-X-I-FRAMES-ONLY tag. o The EXT-X-MEDIA tag. o The AUDIO and VIDEO attributes of the EXT-X-STREAM-INF tag. Clients and servers MUST implement protocol version 5 or higher to use: o The KEYFORMAT and KEYFORMATVERSIONS attributes of the EXT-X-KEY tag. o The EXT-X-MAP tag. 8. Examples 8.1. Introduction This section contains several example Playlist files. 8.2. Simple Playlist file #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:5220 #EXTINF:5219.2, http://media.example.com/entire.ts #EXT-X-ENDLIST Pantos & May Expires April 18, 2013 [Page 29] Internet-Draft HTTP Live Streaming October 2012 8.3. Sliding Window Playlist, using HTTPS #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:2680 #EXTINF:7.975, https://priv.example.com/fileSequence2680.ts #EXTINF:7.941, https://priv.example.com/fileSequence2681.ts #EXTINF:7.975, https://priv.example.com/fileSequence2682.ts 8.4. Playlist file with encrypted media segments #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:7794 #EXT-X-TARGETDURATION:15 #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52" #EXTINF:2.833, http://media.example.com/fileSequence52-A.ts #EXTINF:15.0, http://media.example.com/fileSequence52-B.ts #EXTINF:13.333, http://media.example.com/fileSequence52-C.ts #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53" #EXTINF:15.0, http://media.example.com/fileSequence53-A.ts 8.5. Variant Playlist file #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000 http://example.com/low.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000 http://example.com/mid.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000 http://example.com/hi.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5" http://example.com/audio-only.m3u8 Pantos & May Expires April 18, 2013 [Page 30] Internet-Draft HTTP Live Streaming October 2012 8.6. Variant Playlist with I-Frames In this example, the PROGRAM-ID attributes have been left out: #EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000 low/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=86000,URI="low/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=2560000 mid/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=150000,URI="mid/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=7680000 hi/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=550000,URI="hi/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5" audio-only.m3u8 8.7. Variant Playlist with Alternative audio In this example, the PROGRAM-ID attributes have been left out. The CODECS attributes have been condensed for space. A '\' is used to indicate that the tag continues on the following line with whitespace removed: #EXTM3U #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", \ DEFAULT=YES,AUTOSELECT=YES,LANGUAGE=& Copyright (c) 2019 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 carefully, as they describe your rights and restrictions with respect 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 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 2.5. Authentication Parameters . . . . . . . . . . . . . . . 19 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . 20 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 20 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.9. Operational States . . . . . . . . . . . . . . . . . . . 21 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 21 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21 5. Interaction with Other YANG Modules . . . . . . . . . . . . 23 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 7. Security Considerations . . . . . . . . . . . . . . . . . . . 104 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 105 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 105 10. Change log for ietf-isis YANG module . . . . . . . . . . . . 105 10.1. From version -29 to version -30 . . . . . . . . . . . . 105 10.2. From version -28 to version -29 . . . . . . . . . . . . 106 10.3. From version -27 to version -28 . . . . . . . . . . . . 106 10.4. From version -26 to version -27 . . . . . . . . . . . . 106 10.5. From version -25 to version -26 . . . . . . . . . . . . 106 10.6. From version -24 to version -25 . . . . . . . . . . . . 106 10.7. From version -22 to version -24 . . . . . . . . . . . . 107 10.8. From version -21 to version -22 . . . . . . . . . . . . 107 10.9. From version -20 to version -21 . . . . . . . . . . . . 107 10.10. From version -19 to version -20 . . . . . . . . . . . . 108 10.11. From version -18 to version -19 . . . . . . . . . . . . 108 10.12. From version -17 to version -18 . . . . . . . . . . . . 108 Litkowski, et al. Expires July 25, 2019 [Page 2] Internet-Draft isis-cfg January 2019 10.13. From version -16 to version -17 . . . . . . . . . . . . 108 10.14. From version -15 to version -16 . . . . . . . . . . . . 108 10.15. From version -14 to version -15 . . . . . . . . . . . . 108 10.16. From version -13 to version -14 . . . . . . . . . . . . 109 10.17. From version -12 to version -13 . . . . . . . . . . . . 109 10.18. From version -09 to version -12 . . . . . . . . . . . . 109 10.19. From version -08 to version -09 . . . . . . . . . . . . 109 10.20. From version -07 to version -08 . . . . . . . . . . . . 110 10.21. From version -05 to version -07 . . . . . . . . . . . . 110 10.22. From version -03 to version -05 . . . . . . . . . . . . 110 10.23. From version -02 to version -03 . . . . . . . . . . . . 110 10.24. From version -01 to version -02 . . . . . . . . . . . . 111 10.25. From version -00 to version -01 . . . . . . . . . . . . 111 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 112 11.1. Normative References . . . . . . . . . . . . . . . . . . 112 11.2. Informative References . . . . . . . . . . . . . . . . . 115 Appendix A. Example of IS-IS configuration in XML . . . . . . . 116 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 118 1. Introduction This document defines a YANG ([RFC7950]) data model for IS-IS routing protocol. The data model covers configuration of an IS-IS routing protocol instance as well as operational states. A simplified tree representation of the data model is presented in Section 2. Tree diagrams used in this document follow the notation defined in [RFC8340]. The module is designed as per NMDA (Network Management Datastore Architecture) [RFC8342]. 2. Design of the Data Model The IS-IS YANG module augments the "control-plane-protocol" list in ietf-routing module (defined in [RFC8349]) with specific IS-IS parameters. The figure below describes the overall structure of the isis YANG module: module: ietf-isis augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: +--ro metric? uint32 +--ro tag* uint64 Litkowski, et al. Expires July 25, 2019 [Page 3] Internet-Draft isis-cfg January 2019 +--ro route-type? enumeration augment /if:interfaces/if:interface: +--rw clns-mtu? uint16 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: +--rw isis +--rw enable? boolean {admin-control}? +--rw level-type? level +--rw system-id? system-id +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? +--rw area-address* area-address +--rw lsp-mtu? uint16 +--rw lsp-lifetime? uint16 +--rw lsp-refresh? rt-types:timer-value-seconds16 {lsp-refresh}? +--rw poi-tlv? boolean {poi-tlv}? +--rw graceful-restart {graceful-restart}? | +--rw enable? boolean | +--rw restart-interval? rt-types:timer-value-seconds16 | +--rw helper-enable? boolean +--rw nsr {nsr}? | +--rw enable? boolean +--rw node-tags {node-tag}? | +--rw node-tag* [tag] | ... +--rw metric-type | +--rw value? enumeration | +--rw level-1 | | ... | +--rw level-2 | ... +--rw default-metric | +--rw value? wide-metric | +--rw level-1 | | ... | +--rw level-2 | ... +--rw auto-cost {auto-cost}? | +--rw enable? boolean | +--rw reference-bandwidth? uint32 +--rw authentication | +--rw (authentication-type)? | | ... | +--rw level-1 | | ... | +--rw level-2 | ... +--rw address-families {nlpid-control}? Litkowski, et al. Expires July 25, 2019 [Page 4] Internet-Draft isis-cfg January 2019 | +--rw address-family-list* [address-family] | ... +--rw mpls | +--rw te-rid {te-rid}? | | ... | +--rw ldp | ... +--rw spf-control | +--rw paths? uint16 {max-ecmp}? | +--rw ietf-spf-delay {ietf-spf-delay}? | ... +--rw fast-reroute {fast-reroute}? | +--rw lfa {lfa}? +--rw preference | +--rw (granularity)? | ... +--rw overload | +--rw status? boolean +--rw overload-max-metric {overload-max-metric}? | +--rw timeout? rt-types:timer-value-seconds16 +--ro spf-log | +--ro event* [id] | ... +--ro lsp-log | +--ro event* [id] | ... +--ro hostnames | +--ro hostname* [system-id] | ... +--ro database | +--ro levels* [level] | ... +--ro local-rib | +--ro route* [prefix] | ... +--ro system-counters | +--ro level* [level] | ... +--ro protected-routes | +--ro address-family-stats* [address-family prefix alternate] | ... +--ro unprotected-routes | +--ro address-family-stats* [address-family prefix] | ... +--ro protection-statistics* [frr-protection-method] | +--ro frr-protection-method string | +--ro address-family-stats* [address-family] | ... Litkowski, et al. Expires July 25, 2019 [Page 5] Internet-Draft isis-cfg January 2019 +--rw topologies {multi-topology}? | +--rw topology* [name] | ... +--rw interfaces +--rw interface* [name] ... rpcs: +---x clear-adjacency | +---w input | +---w routing-protocol-instance-name -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +---w level? level | +---w interface? if:interface-ref +---x clear-database +---w input +---w routing-protocol-instance-name -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---w level? level notifications: +---n database-overload | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro overload? enumeration +---n lsp-too-large | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-size? uint32 | +--ro lsp-id? lsp-id +---n if-state-change | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro state? if-state-type +---n corrupted-lsp-detected | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id Litkowski, et al. Expires July 25, 2019 [Page 6] Internet-Draft isis-cfg January 2019 +---n attempt-to-exceed-max-sequence | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id +---n id-len-mismatch | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-field-len? uint8 | +--ro raw-pdu? binary +---n max-area-addresses-mismatch | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro max-area-addresses? uint8 | +--ro raw-pdu? binary +---n own-lsp-purge | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n sequence-number-skipped | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n authentication-type-failure | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n authentication-failure Litkowski, et al. Expires July 25, 2019 [Page 7] Internet-Draft isis-cfg January 2019 | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n version-skew | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro protocol-version? uint8 | +--ro raw-pdu? binary +---n area-mismatch | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n rejected-adjacency | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro reason? string +---n protocols-supported-mismatch | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro protocols* uint8 +---n lsp-error-detected | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level Litkowski, et al. Expires July 25, 2019 [Page 8] Internet-Draft isis-cfg January 2019 | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id | +--ro raw-pdu? binary | +--ro error-offset? uint32 | +--ro tlv-type? uint8 +---n adjacency-state-change | +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro neighbor? string | +--ro neighbor-system-id? system-id | +--ro state? adj-state-type | +--ro reason? string +---n lsp-received | +--ro routing-protocol-name? -"en", \ URI="main/english-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsche", \ DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \ URI="main/german-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Commentary", \ DEFAULT=NO,AUTOSELECT=NO,URI="commentary/audio-only.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",AUDIO="aac" low/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",AUDIO="aac" mid/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",AUDIO="aac" hi/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5",AUDIO="aac" main/english-audio.m3u8 8.8. Variant Playlist with Alternative video In this example, the PROGRAM-ID attributes have been left out. The CODECS attributes have been condensed for space. A '\' is used to indicate that the tag continues on the following line with whitespace removed: Pantos & May Expires April 18, 2013 [Page 31] Internet-Draft HTTP Live Streaming October 2012 #EXTM3U #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Main", \ DEFAULT=YES,URI="low/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Centerfield", \ DEFAULT=NO,URI="low/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Dugout", \ DEFAULT=NO,URI="low/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",VIDEO="low" low/main/audio-video.m3u8 #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Main", \ DEFAULT=YES,URI="mid/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Centerfield", \ DEFAULT=NO,URI="mid/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Dugout", \ DEFAULT=NO,URI="mid/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",VIDEO="mid" mid/main/audio-video.m3u8 #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Main", \ DEFAULT=YES,URI="hi/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Centerfield", \ DEFAULT=NO,URI="hi/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Dugout", \ DEFAULT=NO,URI="hi/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",VIDEO="hi" hi/main/audio-video.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5" main/audio-only.m3u8 9. Contributors Significant contributions to the design of this protocol were made by Jim Batson, David Biderman, Bill May, Roger Pantos, and Alan Tseng. 10. IANA Considerations This memo requests that the following MIME type [RFC2046] be registered with the IANA: Type name: "application" Pantos & May Expires April 18, 2013 [Page 32] Internet-Draft HTTP Live Streaming October 2012 Subtype name: "vnd.apple.mpegurl" Required parameters: (none) Optional parameters: (none) Encoding considerations: encoded as text. See Section 3 for more information. Security considerations: See Section 11. Compression: this media type does not employ compression. Interoperability considerations: There are no byte-ordering issues, since files are 7- or 8-bit text. Applications could encounter unrecognized tags, which SHOULD be ignored. Published specification: see Section 3. Applications that use this media type: Multimedia applications such as the iPhone media player in iOS 3.0 and later and QuickTime Player in Mac OS X version 10.6 and later. Additional information: files begin with the magic number #EXTM3U. Filenames normally end with .m3u8 or .m3u (see Section 3). No Macintosh file type codes have been registered. Person & email address to contact for further information: David Singer, singer AT apple.com. Intended usage: LIMITED USE Restrictions on usage: (none) Author: Roger Pantos Change Controller: David Singer 11. Security Considerations Since the protocol generally uses HTTP to transfer data, most of the same security considerations apply. See section 15 of RFC 2616 [RFC2616]. Media file parsers are typically subject to "fuzzing" attacks. Clients SHOULD take care when parsing segments received from a server that non-compliant segments are rejected. Pantos & May Expires April 18, 2013 [Page 33] Internet-Draft HTTP Live Streaming October 2012 Playlist files contain URIs, which clients will use to make network requests of arbitrary entities. Clients SHOULD range-check responses to prevent buffer overflows. See also the Security Considerations section of RFC 3986 [RFC3986]. Clients SHOULD load resources identified by URI lazily to avoid contributing to denial-of-service attacks. HTTP requests often include session state ("cookies> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id | +--ro sequence? uint32 | +--ro received-timestamp? yang:timestamp | +--ro neighbor-system-id? system-id +---n lsp-generation +--ro routing-protocol-name? -> /rt:routing/control-plane-protocols/control-plane-protocol/name +--ro isis-level? level +--ro lsp-id? lsp-id +--ro sequence? uint32 +--ro send-timestamp? yang:timestamp 2.1. IS-IS Configuration The IS-IS configuration is divided in: o Global parameters. o Per interface configuration (see Section 2.4). Additional modules may be created to support any additional parameters. These additional modules MUST augment the ietf-isis module. Litkowski, et al. Expires July 25, 2019 [Page 9] Internet-Draft isis-cfg January 2019 The model implements features, thus some of the configuration statement becomes optional. As an example, the ability to control the administrative state of a particular IS-IS instance is optional. By advertising the feature "admin-control", a device communicates to the client that it supports the ability to shutdown a particular IS- IS instance. The global configuration contains usual IS-IS parameters such as lsp- mtu, lsp-lifetime, lsp-refresh, default-metric... 2.2. Multitopology Parameters The model supports multitopology (MT) IS-IS as defined in [RFC5120]. The "topologies" container is used to enable support of MT extensions. The "name" used in the topology list should refer to an existing RIB of the device. Some specific parameters could be defined on a per topology basis both at global level and at interface level: for example, an interface metric can be defined per topology. Multiple address families (like IPv4 or IPv6) can also be activated within the default topology. This can be achieved using the "afs" container (requiring "nlpid-control" feature to be advertised). 2.3. Per-Level Parameters Some parameters allow a per level configuration. In this case, the parameter is modeled as a container with three configuration locations: o a top level container: corresponds to level-1-2, so the configuration applies to both levels. o a level-1 container: corresponds to level-1 specific parameters. o a level-2 container: corresponds to level-2 specific parameters. +--rw priority | +--rw value? uint8 | +--rw level-1 | | +--rw value? uint8 | +--rw level-2 | +--rw value? uint8 Litkowski, et al. Expires July 25, 2019 [Page 10] Internet-Draft isis-cfg January 2019 Example: <priority> <value>250</value> <level-1> <value>100</value> </level-1> <level-2> <value>200</value> </level-2> </priority> An implementation SHOULD prefer a level specific parameter over a level-all parameter. As example, if the priority is 100 for the level-1, 200 for the level-2 and 250 for the top level configuration, the implementation should use 100 for the level-1 and 200 for the level-2. Some parameters like "overload bit" and "route preference" are not modeled to support a per level configuration. If an implementation supports per level configuration for such parameter, this implementation SHOULD augment the current model by adding both level-1 and level-2 containers and SHOULD reuse existing configuration groupings. Example of augmentation: Litkowski, et al. Expires July 25, 2019 [Page 11] Internet-Draft isis-cfg January 2019 augment "/rt:routing/" + "rt:control-plane-protocols/rt:control-plane-protocol"+ "/isis:isis/isis:overload" { when "rt:type = 'isis:isis'" { description "This augment IS-IS routing protocol when used"; } description "This augments IS-IS overload configuration with per level configuration."; container level-1 { uses isis:overload-global-cfg; description "Level 1 configuration."; } container level-2 { uses isis:overload-global-cfg; description "Level 2 configuration."; } } If an implementation does not support per level configuration for a parameter modeled with per level configuration, the implementation SHOULD advertise a deviation to announce the non support of the level-1 and level-2 containers. Finally, if an implementation supports per level configuration but does not support the level-1-2 configuration, it SHOULD also advertise a deviation. 2.4. Per-Interface Parameters The per-interface section of the IS-IS instance describes the interface specific parameters. The interface is modeled as a reference to an existing interface defined in the "ietf-interfaces" YANG model ([RFC8343]. Each interface has some interface-specific parameters that may have a different per level value as described in previous section. An interface-specific parameter always override an IS-IS global parameter. Some parameters like hello-padding are defined as containers to allow easy extension by vendor specific modules. Litkowski, et al. Expires July 25, 2019 [Page 12] Internet-Draft isis-cfg January 2019 +--rw interfaces +--rw interface* [name] +--rw name if:interface-ref +--rw level-type? level +--rw lsp-pacing-interval? rt-types:timer-value-milliseconds +--rw lsp-retransmit-interval? rt-types:timer-value-seconds16 +--rw passive? boolean +--rw csnp-interval? rt-types:timer-value-seconds16 +--rw hello-padding | +--rw enable? boolean +--rw mesh-group-enable? mesh-group-state +--rw mesh-group? uint8 +--rw interface-type? interface-type +--rw enable? boolean {admin-control}? +--rw tag* uint32 {prefix-tag}? +--rw tag64* uint64 {prefix-tag64}? +--rw node-flag? boolean {node-flag}? +--rw hello-authentication | +--rw (authentication-type)? | | +--:(key-chain) {key-chain}? | | | +--rw key-chain? key-chain:key-chain-ref | | +--:(password) | | +--rw key? string | | +--rw crypto-algorithm? identityref | +--rw level-1 | | +--rw (authentication-type)? | | +--:(key-chain) {key-chain}? | | | +--rw key-chain? key-chain:key-chain-ref | | +--:(password) | | +--rw key? string | | +--rw crypto-algorithm? identityref | +--rw level-2 | +--rw (authentication-type)? | +--:(key-chain) {key-chain}? | | +--rw key-chain? key-chain:key-chain-ref | +--:(password) | +--rw key? string | +--rw crypto-algorithm? identityref +--rw hello-interval | +--rw value? rt-types:timer-value-seconds16 | +--rw level-1 | | +--rw value? rt-types:timer-value-seconds16 | +--rw level-2 Litkowski, et al. Expires July 25, 2019 [Page 13] Internet-Draft isis-cfg January 2019 quot;), which may contain private user data. Implementations MUST follow cookie restriction and expiry rules specified by RFC 6265 [RFC6265]. See also the Security Considerations section of RFC 6265, and RFC 2964 [RFC2964]. Encryption keys are specified by URI. The delivery of these keys SHOULD be secured by a mechanism such as HTTP over TLS [RFC5246] (formerly SSL) in conjunction with a secure realm or a session cookie. 12. References 12.1. Normative References [AC_3] Advanced Television Systems Committee, "ATSC Standard: A/52:2010: Digital Audio Compression (AC-3) (E-AC-3) Standard", November 2010, <http://www.atsc.org/cms/standards/a_52-2010.pdf>. [AES_128] U.S. Department of Commerce/National Institute of Standards and Technology, "Advanced Encryption Standard (AES), FIPS PUB 197", November 2001, <http:// csrc.nist.gov/publications/fips/fips197/fips-197.pdf>. [H_264] International Telecommunications Union, "Advanced video coding for generic audiovisual services", January 2012, <http://www.itu.int/rec/T-REC-H.264>. [ISO_11172] International Organization for Standardization, "ISO/IEC International Standard 11172-1; Coding of moving pictures and associated audio for digital storage media -- Part 1: Systems", 1993, <http://www.iso.org/iso/catalogue_detail?csnumber=19180>. [ISO_13818] International Organization for Standardization, "ISO/IEC International Standard 13818; Generic coding of moving Pantos & May Expires April 18, 2013 [Page 34] Internet-Draft HTTP Live Streaming October 2012 pictures and associated audio information", October 2007, <http://www.iso.org/iso/catalogue_detail?csnumber=44169>. [ISO_14496] International Organization for Standardization, "ISO/IEC 14496-3:2009 Information technology -- Coding of audio- visual objects -- Part 3: Audio", 2009, <http://www.iso.org/iso/catalogue_detail?csnumber=53943>. [ISO_8601] International Organization for Standardization, "ISO/IEC International Standard 8601:2004; Data elements and interchange formats -- Information interchange -- Representation of dates and times", December 2004, <http://www.iso.org/iso/catalogue_detail?csnumber=40874>. [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC2964] Moore, K. and N. Freed, "Use of HTTP State Management", BCP 44, RFC 2964, October 2000. [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008. [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying Languages", BCP 47, RFC 5646, September 2009. [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, September 2009. [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, April 2011. Pantos & May Expires April 18, 2013 [Page 35] Internet-Draft HTTP Live Streaming October 2012 [RFC6381] Gellens, R., Singer, D., and P. Frojdh, "The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types", RFC 6381, August 2011. [US_ASCII] American National Standards Institute, "ANSI X3.4-1986, Information Systems -- Coded Character Sets 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)", December 1986. 12.2. Informative References [ID3] ID3.org, "The ID3 audio file data tagging format", <http://www.id3.org/Developer_Information>. [M3U] Nullsoft, Inc., "The M3U Playlist format, originally invented for the Winamp media player", <http://wikipedia.org/wiki/M3U>. [SampleEnc] Apple Inc., "MPEG-2 Stream Encryption Format for HTTP Live Streaming", <https://developer.apple.com/library/ios/ documentation/AudioVideo/Conceptual/ HLS_Sample_Encryption/>. [UTI] Apple Inc., "Uniform Type Identifier", <http:// developer.apple.com/library/ios/#documentation/general/ conceptual/DevPedia-CocoaCore/UniformTypeIdentifier.html>. [WebVTT] World Wide Web Consortium (W3C), "WebVTT Standard", September 2012, <http://dev.w3.org/html5/webvtt/>. Authors' Addresses Roger Pantos (editor) Apple Inc. Cupertino, California United States Email: http-live-streaming-review@group.apple.com Pantos & May Expires April 18, 2013 [Page 36] Internet-Draft HTTP Live Streaming October 2012 William May, Jr. Apple Inc. Cupertino, California United States Email: http-live-streaming-review@group.apple.com Pantos & May Expires April 18, 2013 [Page 37]