<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4291 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4291.xml">
<!ENTITY DEENGGIE SYSTEM "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.deen-daigle-ggie.xml">
<!ENTITY HLS SYSTEM "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.draft-pantos-http-live-streaming-19.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- used by XSLT processors -->
<!-- OPTIONS, known as processing instructions (PIs) go here. -->
<!-- For a complete list and description of PIs,
 please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable PIs that most I-Ds might want to use. -->
<?rfc strict="yes" ?> <!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC): -->
<?rfc toc="yes"?> <!-- generate a ToC -->
<?rfc tocdepth="2"?> <!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references: -->
<?rfc symrefs="yes"?> <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?> <!-- sort the reference entries alphabetically -->
<!-- control vertical white space:
 (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?> <!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?> <!-- keep one blank line between list items -->
<!-- end of popular PIs -->
<rfc category="info" docName="draft-deen-naik-ggie-men-mpeg-dash-00" ipr="trust200902">
    <front>
        <title abbrev="GGIE MPEG-DASH MEN">Using Media Encoding Networks to address MPEG-DASH video
        </title>
        <author fullname="Glenn Deen" initials="G.D." surname="Deen">
            <organization>Comcast-NBCUniversal</organization>
            <address>
                <postal><street/><city></city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>rgd.ietf@gmail.com</email>
                <!-- <uri/> -->
            </address>
        </author>
        <author fullname="Gaurav Naik" initials="G.D." surname="Naik">
            <organization>Drexel University</organization>
            <address>
                <postal><street/><city></city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>gn@drexel.edu</email>
                <!-- <uri/> -->
            </address>
        </author>
        
        <author fullname="John Jason Brzozowski" initials="J.J.B." surname="Brzozowski">
            <organization>Comcast</organization>
            <address>
                <postal><street/><city></city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>John_Brzozowski@Cable.Comcast.com</email>
                <!-- <uri/> -->
            </address>
        </author>
        
        <author fullname="Leslie Daigle" initials="L.L.D." surname="Daigle">
            <organization>Thinking Cat Enterprises LLC</organization>
            <address>
                <postal><street/><city></city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>ldaigle@thinkingcat.com</email>
                <!-- <uri/> -->
            </address>
        </author>
        <author fullname="Bill Rose" initials="W.J.R." surname="Rose">
            <organization>WJR Consulting</organization>
            <address>
                <postal><street/><city></city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>brose@wjrconsulting.com</email>
                <!-- <uri/> -->
            </address>
        </author>
        
        <author fullname="Mark Townsley" initials="M." surname="Townsley">
            <organization>Cisco</organization>
            <address>
                <postal><street/><city>Paris</city><region/><code/><country></country></postal>
                <!-- <phone/> -->
                <!-- <facsimile/> -->
                <email>townsley@cisco.com</email>
                <!-- <uri/> -->
            </address>
        </author>
        
        
        <date year="2016" month="July"/>
        <!-- <area/> -->
        <!-- <workgroup/> -->
        <!-- <keyword/> -->
        <!-- <keyword/> -->
        <!-- <keyword/> -->
        <!-- <keyword/> -->
        <abstract>
            <t>
                This document describes an approach to using a Media Encoding Network of IPv6 Prefixes and Addresses as identifiers
                for MPEG-DASH encoded video.  This is part of the GGIE Glass to Glass Internet Ecosystem effort for Internet Video.
            </t>
            <t>
                This document is being discussed on the ggie@ietf.org mailing list.
            </t>
        </abstract>
    </front>
    <middle>
        <section title="Terminology">
            <t>
                The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
                "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
                this document are to be interpreted as described in
                <xref target="RFC2119"/>.
            </t>
        </section>
        
        <section title="Introduction">
            <t>
                GGIE, the Glass to Glass Internet Ecosystem, described in <xref
                target="I-D.deen-daigle-ggie"/>, is an effort to improve video's use of the Internet
                though evolving and applying modern Internet networking technology to Interet video.
            </t>
            <t>This document is a proposed Media Encoding Network organizational definition for MPEG-DASH enoded video.
                In the following sections, we describe a Media Encoding Network structure for MPEG-DASH content
                using IPv6 addresses as the address for MPEG-DASH video chunks, and organizing these
                addresses into a IPv6 subnet under a prefix.
            </t>
            <t> A MPEG-DASH encoded video organizaed following this
                Media Encoding Network scheme is in turn referrable to using the assigned prefix, with each distinct encoding of
                the video being assigned a distinct prefix.  Hence two copies of the same video encode would share the same prefix,
                while a different encode would have a different prefix.
            </t>
            <t>Other Media Encoding Networks organizational definitions are possible for MPEG-DASH video. The simple
                organizational structure defined in this document is designed to work, in a backwards compatible manner,
                with existing MPEG-DASH video players.
            </t>
            
            <section title="Media Encoding Networks">
                <t>
                    One of the concepts being discussed in GGIE is that of a Media Encoding Network.  As introduced
                    in the GGIE Introduction <xref target="I-D.deen-daigle-ggie"/> document, a Media Encoding Network
                    consists of the data elements of a audio-video encoding of a work organized following a distinct
                    logical structure appropriate for efficiently transporting and accessing the data elements for the video asset.
                    Network level identifiers are assigned to each of these elements under a shared prefix and following an
                    address assigment plan appropropriate for the type of encoding used for the AV data.</t>
                
                <t>Media Encoding Networks is a generalized abstraction intented to be used with many different enoding and transport schemes.
                </t>
                <t>GGIE recognizes that there is currently a great diversity of encoding and transports such as MPEG-DASH <xref target="DASH"/> and HTTP Live Streaming (HLS) <xref target="I-D.pantos-http-live-streaming"/> to name but two, with more continuing to be developed and introduced.  Recognizing this diversity and innovative environment, GGIE proposes the
                    Media Encoding Network as a resuable abstraction that can be trailored and defined with different logical
                    organizations to support different environments, applications, and media encodings.
                </t>
                <t>A Media Encoding Network is a logical entity that can be assigned a network level identifier enabling
                    it to be referred to at a network device level and permitting devices and the network to worked cooperatively
                    to optimize data transport and access choices.
                </t>
            </section>
        </section>
        
        <section title="MPEG-DASH Internet Video Concepts">
            <t>
                A common technique used in the delivery of a media or video on the Internet
                via streaming services and CDNs is to break up an encoding of a video into
                chunks or media segments containing a fixed duration of video. MPEG-DASH
                <xref target="DASH"/> is an example of such an
                approach.  The segments typically represent small portions of the video
                with 6-10 seconds of video playback being common. In most implementations,
                the segments of videos are identified by file names and served to clients
                using conventional web servers using HTTP GET requests.
            </t>
            <t>
                Systems such as MPEG-DASH enable client players to switch between encodings of
                different quality levels of the video with higher quality encodings requiring
                large amounts of data, and conversely lower quality encodings requiring smaller
                amounts of data. The system coordinates each encoding to produce points of
                alignment called intra-coded frames or iFrames where a player can switch between
                different encodings without missing frames of the video playback. Thus, a player can
                adapt to changing network conditions without re-buffering or freezing of the playback.
            </t>
            <t>
                When the encodings are broken into segments, the segments are organized
                such that the playback system can switch to a different encoding level from
                the version it has been playing by requesting the next segment of data
                holding the iFrame matching the next iFrame of the current encoding. In
                practice each segment of an encoding is an individual file stored on video
                or CDN server and playback consists of the player repeatedly requesting the
                next file in sequence from the server, with the file names following a
                consistent incremental naming scheme indicating an encoding identifier and
                a segment sequence identifier.
            </t>
            <t>
                Typically, a video file is processed by an encoder to produce two or more
                different quality encodings with each encoded version being passed through
                a process to break into segment files with aligned iFrames and each
                file named with a name identifying the encoding and sequence number. This process
                requires coordination to create iFrame alignments and a consistent naming convention to
                allow players to transition between encodings and to iteratively access the next correct
                segment.
            </t>
            <section title="Internet Video playback as a network">
                <t>
                    Transitioning between segments is an example of a simple directed graph (or
                    digraph). Each segment is a vertex or node and the naming convention
                    defines an ordered directed traversal of the graph, and the iFrame aligned
                    segments forming the edges of the graph. It is also possible to recognize
                    that the directed graph behavior of a player switching between
                    segments can more generally be viewed as a network such as it is used on the Internet.
                </t>
                <t>
                    The network of segments can be identified using the IP addressing scheme from
                    the Internet, in particular IPv6 is well suited for this due to the large
                    number of addresses available in it's 128-bit address space. IPv4 could
                    also be used, but with only 32 bits of address space the available addresses
                    would be quickly exhausted in practical use.
                </t>
                <t>This is really a simple evolution of the way MPEG-DASH chunks are organized today as files with names
                    such as MOVIE-SEGMENT-00, MOVIE-SEGMENT-01,... and so on.  In practical terms, this scheme simply
                    replaces the ASCII filename, with a 128-bit number represented as HEX digits.    In this way, this scheme
                    remains compatible with existing CDN serving of MPEG-DASH video.
                </t>
            </section>
        </section>
        
        <section title="MPEG-DASH Video Chunk Addressing">
            
            
            <t>Staying consistent with Media Encoding Networks being a generic abstraction, the more generic term
            Shard is used in place of the MPEG-DASH specific Chunk for individual units of encoded video data.
            </t>
            

            <t>
                IPv6 addresses <xref target="RFC4291"/> are specified in and are broken into two parts
                that split the available 128 bits of address space as follows:
            </t>
            <t>
                <figure anchor="fig1" title="IPv6 Address">
                    <artwork><![CDATA[
                        n bits           128-n bits
                        +--------------+----------------+
                        |      Prefix  | Interface id   |
                        +--------------+----------------+
                    ]]></artwork>
                </figure>
            </t>
            <t>
                One addressing approach to naming segments can be as follows:
            </t>
            <t>
                <figure anchor="fig2" title="Proposed">
                    <artwork><![CDATA[
                        n bits                m bits            128-n-m bits
                        +--------------------+-----------------+-------------+
                        |   Encoding Prefix  | Sub-Encoding id |  Shard id   |
                        +--------------------+-----------------+-------------+
                    ]]></artwork>
                </figure>
            </t>
              <t>
                Which consists of an Encoding Prefix that is uniquely assigned to a set of
                aligned MPEG-DASH encodings of the video, a sub-encoding id which identifies a particular
                encoding, and the id of the individual shard of encoded video data.
            </t>
             <t>
                The encoding prefix permits a set of encodings to be associated with one
                another. Grouping a set of encodings of a video under a shared Encoding
                Prefix permits referencing all the segments of a group of encodings as a
                single entity under the Encoding Prefix.
            </t>
             <t>
                 The sub-encoding id groups the shards of a single sub-encoding
                 together under an identifier to permit managing the collection of segments
                 as a single entity.
             </t>
            <t>
                Shards that share MPEG iFrame aligment share the same Shard id. This then defines a network layout
                with shards for each different bit-rate organized sequentially and contiguously under a shared sub-encoding subnet
                and shards with aligned iFrames being organized with the same shard id across sub-encoding subnets.
            </t>
        </section>
        
        <section title="Video Playback">
            <t>
                This approach permits the Prefix to identify a particular group of
                encodings of a video. Each encoding has an assigned series of addresses
                consisting of the prefix, followed by the series of address bits that
                uniquely identify the shard. All the playback pathways are
                preserved in this addressing scheme of the edges of the graph.
            </t>
            <t>
                The above approach works well for a video that is encoded by one party that
                can coordinate the encoding process, to produce aligned iFrames, and assign
                the common encoding prefix and segment assignments for the network.
            </t>
            <t>
                A playback device can be provided the Prefix for the network, and can
                iterate through the segments to play the video. It can jump between sub-encode
                subnets to select different quality or vary the bit rate of the playback.
            </t>
        </section>
        
        <section title="Implementation">
            <t>
                For the evaluation of this scheme, a prototype video streaming service
                implementing this approach was developed. In particular, it provides an
                Electronic Program Guide (EPG) and uses an open-source HTML5 video player
                with MPEG-DASH. Instead of providing the player with HTTP URIs for each
                segment of video, our this prototype uses global IPv6 addresses. This
                change is transparent to the host operating system, the HTML5 video player,
                and the network.
                
                The service backend is implemented in Python and utilizes other open source
                components. A demonstration at IETF96 is planned to be shown during Bits-n-Bytes.
            </t>
        </section>
        
        
        <section title="Conclusion and Next Steps">
            <t>
                This draft proposes a Media Encoding Network addressing scheme for MPEG-DASH Internet video using IPv6 addresses. It
                is an example that can built upon to define other more complex Media Encoding Network schemes for MPEG-DASH and other encoding/transports.
            </t>
          </section>
        
        <section anchor="Acknowledgements" title="Acknowledgements">
        </section>
        <section anchor="IANA" title="IANA Considerations">
            <t>
                None (yet).
            </t>
        </section>
        <section anchor="Security" title="Security Considerations">
            <t>
                None (yet).
            </t>
        </section>
    </middle>
    
    <back>
        <references title="Normative References">
            &RFC2119;
            &RFC4291;
            &DEENGGIE;
        </references>
        <references title="Informative References">
            <reference anchor="DASH" target="http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=65274">
                <front>
                    <title>Dynamic adaptive streaming over HTTP (DASH) -- Part 1: Media presentation description and segment formats</title>
                    <author>
                        <organization>ISO</organization>
                    </author>
                    <date/>
                </front>
            </reference>
            &HLS;
        </references>
    </back>
</rfc>

