Network Working Group H. Ruellan Internet-Draft March 23, 2015 Intended status: Informational Expires: September 24, 2015 DASH and HTTP2 draft-ruellan-httpbis-dash-http2-00 Abstract This document describes possibilities for DASH to take advantage of HTTP/2 features, in particular of server push. 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 http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on September 24, 2015. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents 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 Ruellan Expires September 24, 2015 [Page 1] Internet-Draft DASH and HTTP2 March 2015 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Using Push with DASH . . . . . . . . . . . . . . . . . . . . 2 2.1. Live Video Latency . . . . . . . . . . . . . . . . . . . 2 2.2. FDH Proposal . . . . . . . . . . . . . . . . . . . . . . 3 2.3. Other Proposals . . . . . . . . . . . . . . . . . . . . . 3 3. Informative References . . . . . . . . . . . . . . . . . . . 5 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction MPEG Dynamic Adaptive Streaming over HTTP (DASH [DASH]) is an adaptive bit-rate HTTP-based streaming solution standardized under MPEG. In DASH, a media is split into segments. Each segment of the media is encoded with different bit-rates to provide adaptation possibilities. The client controls the streaming and the adaptation. To play the media, the client requests the segments one after the other, when needing them. For each segment, it can select the most appropriate bit-rate. DASH defines a format for describing a media, the Media Presentation Description (MPD). The MPD contains information about the media, in particular the list of segments making up the media, and the different available bit-rates. DASH also defines formats for the media segments themselves. The Full-Duplex HTTP based Protocols (FDH) is a Core Experiment inside MPEG for studying bi-directional communication protocols, such as HTTP/2 [I-D.ietf-httpbis-http2] and WebSocket [RFC6455], in the context of DASH. Inside this Core Experiments, the usage of the new features of HTTP/2 for DASH is investigated. Among these features, server push is attracting much interest. 2. Using Push with DASH 2.1. Live Video Latency When using DASH for streaming a live video, there are some trade-off to make for choosing the duration of a segment. Shorter segments enable a lower latency, which is of importance for live video. However shorter segments also induce a larger number of requests, which can negatively impact the network performances. In [LowLatencyStreaming], a solution to this problem is proposed: the live video is split into short segments. However, for each segment requested by the client, the server not only sends the corresponding segment, but also pushes some of the following segments. This Ruellan Expires September 24, 2015 [Page 2] Internet-Draft DASH and HTTP2 March 2015 enables to use a low latency while still keeping a low number of requests, therefore not incurring any negative impact on the network. To let the client keep the control of the streaming, the client selects the number _k_ of segments the server should push and transmit it to the server in its request. This strategy of segment transmission is therefore called _k-push_. 2.2. FDH Proposal The FDH Core Experiment has built upon this _k-push_ strategy for taking advantage of the push feature of HTTP/2, while letting the client control the streaming. This Core Experiment is defining a new HTTP header field, named "DASH-PUSH", that enables the client to indicate what it would like the server to push. The "DASH-PUSH" header field contains parameters defining the strategy proposed by the client for indicating which segments it would like the server to push. Currently two strategies are defined. o Pushing next _K_ segments: The _K_ segments following the requested segment are pushed by the server. For example, for having the server push the next 5 segments, the following header field is used: "DASH-PUSH: type=push-next; K=5" o Pushing for _T_ seconds: The segments corresponding to the given duration following the requested segment are pushed by the server. For example for having the server push the segments corresponding to the next 10 seconds of the media, the following header field is used: "DASH-PUSH: type=type=push-time; T=10" 2.3. Other Proposals The "DASH-PUSH" header field can be extended for increasing its expressiveness. o Using a list of URIs: Ruellan Expires September 24, 2015 [Page 3] Internet-Draft DASH and HTTP2 March 2015 All the resources listed are pushed by the server. For example, for having the server push the media segments "seg-1.mp4", "seg-2.mp4", and "seg-3.mp4", the following header field is used: "DASH-PUSH: type=uri-list; seg-1.mp4; seg-2.mp4; seg-3.mp4" o Using a URI template: Instead of listing all the URIs of the resources to push, a URI Template [RFC6570] can be used. The URI Template can use numbered variables whose values are defined as parameters of the "DASH- PUSH" header. These variable can have a single value, a list of values, or a range of values. For a variable with several values, the URI Template is expanded for each value of the variable. For example, for having the server push the same media segments as in the previous example, using a URI Template with a variable defined as a list of values, the following header field is used: "DASH-PUSH: type=uri-template; seg-{1}.mp4; 1 : 2 : 3" Note that the values in the list are separated with colons. The same example can also use a range of values instead of a list, with the following header field: "DASH-PUSH: type=uri-template; seg-{1}.mp4; { 1 - 3 }" Several variables can also be used inside the URI Template, in this case, the URI Template is expanded for each combination of values for the defined variables. For example, to have the server push several media segments, numbered 1 to 3, each with two different representation levels, R1 and R2, the following header field is used: "DASH-PUSH: type=uri-template; seg-rep-{1}-{2}.mp4; R1 : R2; { 1 - 3 }" o Using a URI wildcard: Instead of specifying a list of URIs, a wildcard can be used, allowing to have the server push all the resources corresponding to a given media type. For example, for having the server push all the "text/css" resources linked to the requested resource, the following header field is used: "DASH-PUSH: type=uri-wildcard; text/css" Ruellan Expires September 24, 2015 [Page 4] Internet-Draft DASH and HTTP2 March 2015 o Header field value: The "DASH-PUSH" header field is not restricted to target only URIs, but can also be used to target other header fields, in defining the resources the client would like the server to push. For example, for having the server push different ranges of the requested resource, the following header field is used: "DASH-PUSH: type=header; Range; 501-1000; 1001-1500" This usage is similar to the list of URIs, but targeting specific header fields. It could be extended to support templates. 3. Informative References [DASH] , "Dynamic adaptive streaming over HTTP (DASH)", ISO/IEC 23009-1:2014, 2014. [I-D.ietf-httpbis-http2] Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer Protocol version 2", draft-ietf-httpbis-http2-17 (work in progress), February 2015. [LowLatencyStreaming] Wei, S. and V. Swaminathan, "Low Latency Live Video Streaming over HTTP 2.0", NOSSDAV 2014, 2014. [RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", RFC 6455, December 2011. [RFC6570] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., and D. Orchard, "URI Template", RFC 6570, March 2012. Author's Address Herve Ruellan Email: herve.ruellan@crf.canon.fr Ruellan Expires September 24, 2015 [Page 5]