Internet DRAFT - draft-ruellan-httpbis-dash-http2
draft-ruellan-httpbis-dash-http2
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]