1. Introduction
This document defines FLUTE version 1, a protocol for unidirectional
delivery of files over the Internet. The specification builds on
Asynchronous Layered Coding (ALC), version 1 [2], the base protocol
designed for massively scalable multicast distribution. ALC defines
transport of arbitrary binary objects. For file delivery
applications mere transport of objects is not enough, however. The
end systems need to know what the objects actually represent. This
document specifies a technique called FLUTE - a mechanism for
signaling and mapping the properties of files to concepts of ALC in a
way that allows receivers to assign those parameters for received
objects. Consequently, throughout this document the term 'file'
relates to an 'object' as discussed in ALC. Although this
specification frequently makes use of multicast addressing as an
example, the techniques are similarly applicable for use with unicast
addressing.
This document defines a specific transport application of ALC, adding
the following specifications:
- Definition of a file delivery session built on top of ALC,
including transport details and timing constraints.
- In-band signalling of the transport parameters of the ALC session.
- In-band signalling of the properties of delivered files.
- Details associated with the multiplexing of multiple files within
a session.
This specification is structured as follows. Section 3 begins by
defining the concept of the file delivery session. Following that it
introduces the File Delivery Table that forms the core part of this
specification. Further, it discusses multiplexing issues of
transport objects within a file delivery session. Section 4
describes the use of congestion control and channels with FLUTE.
Section 5 defines how the Forward Error Correction (FEC) Object
Transmission Information is to be delivered within a file delivery
session. Section 6 defines the required parameters for describing
file delivery sessions in a general case. Section 7 outlines
security considerations regarding file delivery with FLUTE. Last,
there are two informative appendices. The first appendix describes
an envisioned receiver operation for the receiver of the file
delivery session. The second appendix gives an example of File
Delivery Table.
Statement of Intent
This memo contains part of the definitions necessary to fully
specify a Reliable Multicast Transport protocol in accordance with
RFC2357. As per RFC2357, the use of any reliable multicast
protocol in the Internet requires an adequate congestion control
scheme.
While waiting for such a scheme to be available, or for an
existing scheme to be proven adequate, the Reliable Multicast
Transport working group (RMT) publishes this Request for Comments
in the "Experimental" category.
It is the intent of RMT to re-submit this specification as an IETF
Proposed Standard as soon as the above condition is met.
1.1.1. The Target Application Space
FLUTE is applicable to the delivery of large and small files to many
hosts, using delivery sessions of several seconds or more. For
instance, FLUTE could be used for the delivery of large software
updates to many hosts simultaneously. It could also be used for
continuous, but segmented, data such as time-lined text for
subtitling - potentially leveraging its layering inheritance from ALC
and LCT to scale the richness of the session to the congestion status
of the network. It is also suitable for the basic transport of
metadata, for example SDP [12] files which enable user applications
to access multimedia sessions.
1.1.2. The Target Scale
Massive scalability is a primary design goal for FLUTE. IP multicast
is inherently massively scalable, but the best effort service that it
provides does not provide session management functionality,
congestion control or reliability. FLUTE provides all of this using
ALC and IP multicast without sacrificing any of the inherent
scalability of IP multicast.
1.1.3. Intended Environments
All of the environmental requirements and considerations that apply
to the ALC building block [2] and to any additional building blocks
that FLUTE uses also apply to FLUTE.
FLUTE can be used with both multicast and unicast delivery, but it's
primary application is for unidirectional multicast file delivery.
FLUTE requires connectivity between a sender and receivers but does
not require connectivity from receivers to a sender. FLUTE
inherently works with all types of networks, including LANs, WANs,
Intranets, the Internet, asymmetric networks, wireless networks, and
satellite networks.
FLUTE is compatible with both IPv4 or IPv6 as no part of the packet
is IP version specific. FLUTE works with both multicast models:
Any-Source Multicast (ASM) [13] and the Source-Specific Multicast
(SSM) [15].
FLUTE is applicable for both Internet use, with a suitable congestion
control building block, and provisioned/controlled systems, such as
delivery over wireless broadcast radio systems.
1.1.4. Weaknesses
Some networks are not amenable to some congestion control protocols
that could be used with FLUTE. In particular, for a satellite or
wireless network, there may be no mechanism for receivers to
effectively reduce their reception rate since there may be a fixed
transmission rate allocated to the session.
FLUTE provides reliability using the FEC building block. This will
reduce the error rate as seen by applications. However, FLUTE does
not provide a method for senders to verify the reception success of
receivers, and the specification of such a method is outside the
scope of this document.