Internet DRAFT - draft-singer-appsawg-mcast-url
draft-singer-appsawg-mcast-url
Network Working Group D. Singer
Internet-Draft Apple, Inc.
Intended status: Standards Track A. Begen
Expires: April 19, 2015 Cisco
October 16, 2014
URLs and HTTP Response Forms for Multicast
draft-singer-appsawg-mcast-url-00
Abstract
This document motivates the need for defining a URL for multicast
delivery and provides a proposal for this purpose.
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 April 19, 2015.
Copyright Notice
Copyright (c) 2014 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
Singer & Begen Expires April 19, 2015 [Page 1]
Internet-Draft Multicast URLs October 2014
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . 4
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Required Information . . . . . . . . . . . . . . . . . . . . 4
5. Suggested URL Form . . . . . . . . . . . . . . . . . . . . . 5
5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 5
5.2. Information on FLUTE (RFC 6726) . . . . . . . . . . . . . 5
5.3. URL Form Requirements . . . . . . . . . . . . . . . . . . 6
5.4. Base URL Form . . . . . . . . . . . . . . . . . . . . . . 6
6. FCAST Metainformation field . . . . . . . . . . . . . . . . . 8
7. HTTP Status Codes and Their Applicability to FCAST . . . . . 8
7.1. Useful . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.2. Unlikely but Possible . . . . . . . . . . . . . . . . . . 9
7.3. Probably Inapplicable . . . . . . . . . . . . . . . . . . 9
8. Operation of the URL Handler . . . . . . . . . . . . . . . . 10
9. Security Considerations . . . . . . . . . . . . . . . . . . . 10
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
11.1. Normative References . . . . . . . . . . . . . . . . . . 11
11.2. Informative References . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction
Various multicast file-delivery protocols are defined by the IETF and
3GPP (notably File Delivery over Unidirectional Transport (FLUTE) and
FCAST). However, they are hard to adopt into other services, partly
because they do not follow conventions on how these transports are
addressed and what information they deliver. Notably:
1. Much of the Web (Internet) assumes that if a file can be used, it
can be referred to by a URL that contains enough information to
start to try retrieving it. This is not true for files available
over multicast.
2. When a URL form is used, it can be annotated with the information
on what it refers to (e.g., a MIME type, a codecs parameter for
that MIME type, and so on). If we have no URL, we cannot
annotate it.
Singer & Begen Expires April 19, 2015 [Page 2]
Internet-Draft Multicast URLs October 2014
3. HTTP header responses are widely used to signal the
unavailability of an expected resource (404) or that a resource
has moved (re-direct), or that there are other choices to
retrieve the indicated resource, or to deliver portions of a
resource (byte-ranges). Though FCAST uses the metainformation
format of HTTP, it misses the status line, so neither
unavailability nor re-direct can be signaled. You cannot re-
direct from multicast to HTTP, for example.
4. 'Soft' information such as multicast group addresses, transport
session identifiers, and so on, are hard-coded into the
descriptions (e.g., Session Description Protocol (SDP) files
[RFC4566]). In general, the Web/Internet avoids hard-coding such
values, preferring to use lookup (e.g., DNS for addresses);
lookups can be re-factored as boundaries are crossed.
Traditionally multicasts have been addressed by requiring the client
to acquire some pre-knowledge (e.g., an SDP file) by some means out
of band. Thus, we require that every protocol that might use
multicast be adapted. This is error-prone, limiting, and time-
consuming. Instead, if an operating system can have a URL handler
for multicast URLs that deliver file objects, with an interface that
'emulates' the interface to HTTP, many (not all) things would 'just
work'. Perhaps the most notable is that we might re-direct from HTTP
to multicast when the server detects that there is a better way to
get the resource (perhaps, at this time and for this client).
The places where URLs occur, and where it would be advantageous to be
able to state "this file is available on multicast", are legion.
Obvious examples include anything linked into HTML (a Web page or
email), especially media (video, audio, images); in HTTP itself where
re-direction supplies a URL, and HTTP adaptive streaming systems
where many clients could be fetching the same set of content
segments. For many of these, operating system support with the same
API as HTTP would suffice. Even in the HTTP adaptive streaming case,
where it is true that the streaming engine needs to know it is using
multicast (as this would make substantial changes to bandwidth
estimation, etc.), simplifying the markup and the protocol
identification to a URL is a plus. FCAST is closer to HTTP operation
than FLUTE; files 'just arrive' and there is no concept of the 'set'
as represented by the file delivery table in FLUTE. We therefore
focus on FCAST in this document.
Singer & Begen Expires April 19, 2015 [Page 3]
Internet-Draft Multicast URLs October 2014
2. Glossary of Terms
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
[RFC2119].
3. Use Cases
Here are two example use cases.
1. The classic stadium. A sports franchise wants everyone in the
stadium to be able to watch a few selected camera streams. They
multicast the streams over a tuned WiFi system.
2. A network operator (either Internet service or 3G/4G) wants to
enable people to see a video mosaic of the top channels, and
click through to get to a channel fast.
The simple solutions are:
1. Provide a QR code that embeds a multicast URL linking to the
manifest file for the video content at the entrance, in printed
material, on posters, etc. When people tune to that multicast
URL with their phones, they get the manifest, and it refers to
streams that are also multicast. The act of tuning into the
session starts the client caching everything that arrives.
2. The mosaic is a multicast URL, and the segments of each program
are also multicast but with short cache-times, and using the same
URL label as the unicast address (i.e. ,an HTTP URL). When the
user clicks on a program, they fetch the manifest (or perhaps the
manifests are also multicast and pre-filled into the cache) and
they already have the current segment cached, so startup is
effectively instant. As they proceed, there is a good chance the
multicast has delivered every segment they need, just in time.
4. Required Information
Currently, tune-in to a multicast involves getting hold of a 'head'
file that gives a variety of information. The possible information
can be roughly separated into different classes:
1. Information about alternatives that could be supplied as part of
the higher-level protocol (e.g., different representations in
HTTP adaptive streaming and HTML5 source elements)
Singer & Begen Expires April 19, 2015 [Page 4]
Internet-Draft Multicast URLs October 2014
2. Information (IP addresses and the like) that is needed to
'bootstrap' the multicast reception
3. Information about where/how the reception is possible (e.g.,
protocol parameters, time-ranges, and so on)
4. Information that could be acquired later, in-band, such as
feedback addresses, the availability of alternatives and unicast
repair servers, and so on (or indeed, a fuller description of the
multicast itself)
For the sake of simplicity, we propose that we only include (2) and
(3) in the URL form.
Ideally, there is something about the multicast itself that allows
the client system to assess fairly rapidly whether it is working (the
multicast join succeeded, packets are arriving, etc.) and if that
fails, the URL handler can give a suitable error indication (maybe an
existing one, maybe new).
5. Suggested URL Form
5.1. Introduction
Both FLUTE and FCAST rely on Asynchronous Layered Coding (ALC)
[RFC5775] / Layered Coding Transport (LCT) [RFC5651], which in turn
has the concept of channels to handle congestion and rate control.
We presume the existence of a base channel and indicate how to
acquire that.
In an FCAST session, files are identified by URI labels. We suggest
that we identify a reserved URN form to indicate 'this is a complete
SDP file describing all the sessions'. This allows bootstrapping
from the base channel to all of the channels in a session.
FLUTE [RFC6726] is specific about the parameters needed to acquire an
ALC/LCT session, and since FCAST [RFC6968] also relies on ALC/LCT,
the same analysis applies.
5.2. Information on FLUTE (RFC 6726)
To start receiving a file delivery session, the receiver needs to
know transport parameters associated with the session. Interpreting
these parameters and starting the reception therefore represents the
entry point from which thereafter the receiver operation falls into
the scope of this specification. According to [RFC5775], the
transport parameters of an ALC/LCT session that the receiver needs to
know are:
Singer & Begen Expires April 19, 2015 [Page 5]
Internet-Draft Multicast URLs October 2014
o The source IP address.
o The number of channels in the session.
o The destination IP address and port number for each channel in the
session.
o The transport session identifier (TSI) of the session.
o An indication that the session is a FLUTE session. The need to
demultiplex objects upon reception is implicit in any use of
FLUTE, and this fulfills the ALC requirement of an indication of
whether or not a session carries packets for more than one object
(all FLUTE sessions carry packets for more than one object).
5.3. URL Form Requirements
We have at least the following requirements:
o The URLs must be valid according to the RFCs and recent work at
the W3C
o The absolute form must exist (obviously)
o Relative URLs must also work
o We should avoid the fragment (#) and query suffices (?) even
though, in the latter case, there is no server that the URL is
sent to.
o We should permit the URL to self-declare its validity period (and
thus enable rapid time-outs when it is requested outside this
period)
o Ideally, we also allow it to indicate its 'geographic' (operator
network) availability scope
5.4. Base URL Form
This suggests a URL form in three parts:
o A prefix giving the URL scheme and basic parameters
o A mid-part giving the temporal and geographic scope
o A suffix that is the label of the desired file
Where the prefix is roughly like
Singer & Begen Expires April 19, 2015 [Page 6]
Internet-Draft Multicast URLs October 2014
fcast://destination:port/source:TSI
with
destination: An explicit multicast address (x.y.z.w) or (better) a
name that resolves to one (or more) IP multicast address(es) for
the base channel.
port: Port number for the base channel.
source: An explicit IP address (x.y.z.w) or (better) a name that
resolves to the source address.
TSI: The transport session identifier for the session.
The mid-part has optional terms that are each formatted as /
key:value. The keys and their values are:
start: the absolute start-time of availability
end: likewise, the end time
network: an identification of the network(s) on which the
multicast is made available (for the indicated time-span, if any)
The start and end times are each optional and if present are
expressed exactly as in SDP, i.e. as the decimal representation of
Network Time Protocol (NTP) time values in seconds since 1900. If
the URL agent determines it is operating outside this time range, a
suitable error SHOULD be returned immediately. If either the start
or end time are absent, then the multicast starts (or stops) at an
indefinite time.
The network attribute takes a list of domain names, joined by the
plus sign; if the URL handler is confident that the machine is not on
any of the networks, a suitable error SHOULD be returned immediately,
as it knows the multicast reception will not succeed.
The suffix starts with the special key /label: and is followed by the
label of the desired file. (We retain at least the forward slashes
in the path in the clear so that relative URLs work, but perhaps some
characters and maybe some instances of slash should be escaped.)
Example:
fcast://232.0.0.1:5620/broadcast.example.com:527353/start:35776638264
/network:media.example.com/label:http://news.example.com/stuff.mp4
Singer & Begen Expires April 19, 2015 [Page 7]
Internet-Draft Multicast URLs October 2014
given such a URL, the terminal can (try to) tune into the FCAST
session, and retrieve the indicated file.
6. FCAST Metainformation field
In FCAST the metainformation field carries anything that an HTTP
metainformation field can carry, but not the status line. This means
it is not possible to indicate "this file might be expected here, but
it is not here any more" (404) or "this file has moved" (301 or 307)
or even that there are multiple choices on where to get this resource
(300 'choices'). The most useful, perhaps, is the ability to
indicate "you might have expected to get this over this multicast,
but it's not here, but over there (re-direct)" perhaps even re-
directing back to HTTP, or to another multicast session.
We therefore suggest we define a new form of the FCAST
metainformation that also includes a status line formatted exactly as
the HTTP status line, but with the HTTP-version replaced by FCAST-
version:
Status-Line = FCAST-Version SP Status-Code SP Reason-Phrase CRLF
7. HTTP Status Codes and Their Applicability to FCAST
Here are the status codes available in HTTP 1.1, and a brief
statement of whether they could be applicable to FCAST:
7.1. Useful
o 200 OK: Usual status code when the object is supplied, or when
just the metainformation is supplied
o 203 Non-Authoritative Information
o 206 Partial Content: Useful to indicate that byte-ranges of the
resource are supplied separately
o 300 Multiple Choices: Useful to indicate that there are also other
places to get the content
o 301 Moved Permanently: The resource might be expected here, but
has moved (re-direct)
o 302 Found
o 303 See Other
Singer & Begen Expires April 19, 2015 [Page 8]
Internet-Draft Multicast URLs October 2014
o 307 Temporary Redirect: The resource might be expected here, but
has moved (re-direct)
o 404 Not Found: The resource might be expected here, but it is no
longer available
o 410 Gone
7.2. Unlikely but Possible
o 100 Continue: Unlikely to be of use
o 101 Switching Protocols: Maybe useful
o 502 Bad Gateway: The multicast was being fed by a gateway that
failed
o 503 Service Unavailable
7.3. Probably Inapplicable
o 201 Created
o 202 Accepted
o 204 No Content
o 205 Reset Content
o 304 Not Modified
o 305 Use Proxy
o 400 Bad Request
o 401 Unauthorized
o 402 Payment Required
o 403 Forbidden
o 405 Method Not Allowed
o 406 Not Acceptable
o 407 Proxy Authentication Required
o 408 Request Time-out
Singer & Begen Expires April 19, 2015 [Page 9]
Internet-Draft Multicast URLs October 2014
o 409 Conflict
o 411 Length Required
o 412 Precondition Failed
o 413 Request Entity Too Large
o 414 Request-URI Too Large
o 415 Unsupported Media Type
o 416 Requested range not satisfiable
o 417 Expectation Failed
o 500 Internal Server Error
o 501 Not Implemented
o 504 Gateway Time-out
o 505 HTTP Version not supported
8. Operation of the URL Handler
When the client-side URL handler gets the first URL for a given
session, it would 'tune in that session' and (with luck) start
receiving files and metainformation. On the receipt of 'special
files' (e.g., an SDP) it can expand its knowledge of the session.
Other files not corresponding to the immediate request in hand should
be cached, observing the cache control headers. When the indicated
file (or at least the requested byte-range of the indicated file) is
available, it is returned. If a 404, 410, or 3xx response is
received for the indicated file, then an appropriate error is
returned, as indeed it is if the URL specifies that the multicast is
only available over a given time range, and the request is not or
cannot be satisfied in that time range.
9. Security Considerations
TBC.
Singer & Begen Expires April 19, 2015 [Page 10]
Internet-Draft Multicast URLs October 2014
10. IANA Considerations
This section contains the registration information for the "fcast"
URI scheme (in accordance with Section 5.4 of [RFC4395]).
Editor's note: The registration template will be provided in a later
revision.
11. References
11.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC6968] Roca, V. and B. Adamson, "FCAST: Object Delivery for the
Asynchronous Layered Coding (ALC) and NACK-Oriented
Reliable Multicast (NORM) Protocols", RFC 6968, July 2013.
[RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and
Registration Procedures for New URI Schemes", BCP 35, RFC
4395, February 2006.
11.2. Informative References
[RFC5775] Luby, M., Watson, M., and L. Vicisano, "Asynchronous
Layered Coding (ALC) Protocol Instantiation", RFC 5775,
April 2010.
[RFC5651] Luby, M., Watson, M., and L. Vicisano, "Layered Coding
Transport (LCT) Building Block", RFC 5651, October 2009.
[RFC6726] Paila, T., Walsh, R., Luby, M., Roca, V., and R. Lehtonen,
"FLUTE - File Delivery over Unidirectional Transport", RFC
6726, November 2012.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006.
Authors' Addresses
Dave Singer
Apple, Inc.
1 Infinite Loop
Cupertino 95014
USA
EMail: singer@apple.com
Singer & Begen Expires April 19, 2015 [Page 11]
Internet-Draft Multicast URLs October 2014
Ali Begen
Cisco
181 Bay Street
Toronto, ON M5J 2T3
Canada
EMail: abegen@cisco.com
Singer & Begen Expires April 19, 2015 [Page 12]