Internet DRAFT - draft-watson-tsvwg-fec-sf
draft-watson-tsvwg-fec-sf
Transport Area Working Group M. Watson
Internet-Draft M. Luby
Expires: January 8, 2006 Digital Fountain
M. Westerlund
Ericsson
S. Wenger
Nokia
July 7, 2005
Forward Error Correction (FEC) Streaming Framework
draft-watson-tsvwg-fec-sf-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
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."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on January 8, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document defines a framework for applying Forward Error
Correction to UDP flows, primarily intended for streaming media.
This framework can be used to define Content Delivery Protocols, in
the context of the RMT FEC Building Block, that provide Forward Error
Watson, et al. Expires January 8, 2006 [Page 1]
Internet-Draft FEC Streaming Framework July 2005
Correction for streaming media delivery. Content Delivery Protocols
defined using this framework can support FEC Schemes (and associated
FEC codes) compliant with the FEC Building Block. Thus, Content
Delivery Protocols can be defined which are not specific to a
particular FEC Scheme.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Definitions/Abbreviations . . . . . . . . . . . . . . . . . . 5
3. Requirements notation . . . . . . . . . . . . . . . . . . . . 6
4. Architecture Overview . . . . . . . . . . . . . . . . . . . . 7
5. Procedural overview . . . . . . . . . . . . . . . . . . . . . 9
5.1 General . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.2 Sender Operation . . . . . . . . . . . . . . . . . . . . . 11
5.3 Receiver Operation . . . . . . . . . . . . . . . . . . . . 12
6. Protocol Specification . . . . . . . . . . . . . . . . . . . . 13
6.1 General . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2 Structure of the source block . . . . . . . . . . . . . . 13
6.3 Packet format for FEC Source packets . . . . . . . . . . . 14
6.4 Packet Format for FEC Repair packets . . . . . . . . . . . 15
6.5 FEC Streaming Configuration Information . . . . . . . . . 16
6.6 FEC Scheme requirements . . . . . . . . . . . . . . . . . 17
7. Session Description Protocol elements . . . . . . . . . . . . 19
7.1 udp/fec/<proto> transport protocol identifier . . . . . . 19
7.2 udp/fec transport protocol identifier . . . . . . . . . . 20
7.3 fec-declaration attribute . . . . . . . . . . . . . . . . 20
7.4 fec-oti-extension attribute . . . . . . . . . . . . . . . 20
7.5 fec attribute . . . . . . . . . . . . . . . . . . . . . . 20
7.6 FEC media grouping semantics . . . . . . . . . . . . . . . 20
7.7 SDP example . . . . . . . . . . . . . . . . . . . . . . . 20
8. Congestion Control . . . . . . . . . . . . . . . . . . . . . . 21
8.1 Normative requirements . . . . . . . . . . . . . . . . . . 22
9. Security Considerations . . . . . . . . . . . . . . . . . . . 24
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 25
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 26
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 26
Intellectual Property and Copyright Statements . . . . . . . . 28
Watson, et al. Expires January 8, 2006 [Page 2]
Internet-Draft FEC Streaming Framework July 2005
1. Introduction
Many applications have a requirement to transport a continuous stream
of packetised data from a source (sender) to one or more destinations
(receivers) over networks which do not provide guaranteed packet
delivery. Primary examples are media streaming applications such as
broadcast, multicast or on-demand audio, video or multi-media.
Forward Error Correction is a well-known technique for improving
reliability of packet transmission over networks which do not provide
guaranteed packet delivery, especially in multicast and broadcast
applications. The FEC Building Block defined in [4] provides a
framework for definition of Content Delivery Protocols (CDPs) which
make use of separately defined FEC Schemes. Any CDP defined
according to the requirements of this building block can then easily
be used with any FEC Scheme which is also defined according to the
requirements of the FEC building block (Note that it is also possible
that CDPs define additional requirements on the FEC Scheme. Such
CDPs can clearly only be used with FEC Schemes compliant with those
requirements.)
This document defines a framework for the definition of CDPs, in the
sense of the FEC Building Block, which provide for FEC protection of
streamed data flows over UDP. This document does not define a
complete Content Delivery Protocol, but rather defines only those
aspects that are expected to be common to all Content Delivery
Protocols that support streaming data over UDP.
The framework defined in this document is not specific to a single
streaming application protocol. The framework provides FEC
protection for application protocol flows over UDP and for combined
protection of multiple such flows. For example, multiple RTP flows
may be protected together with the associated RTCP flows and
potentially also other related flows such as MIKEY packets. For many
FEC Schemes in many loss conditions, the improvement in reliability
achievable through the use of FEC with a given FEC overhead increases
as the amount of data protected as a single block increases. Thus
there is considerable advantage in the ability to protect multiple
streams together, particularly in cases where the receiver requires
all the streams in order to offer a useful service to the user.
This framework does not define how the flows to be protected are
determined, nor how the details of the protected flows and the FEC
streams which protect them are communicated from sender to receiver.
It is expected that any complete Content Delivery Protocol
specification which makes use of this framework will address these
signalling requirements. However, this document does specify the
information which is required by the FEC Streaming Framework at
Watson, et al. Expires January 8, 2006 [Page 3]
Internet-Draft FEC Streaming Framework July 2005
sender and receiver - for example details of the flows to be FEC
protected and the flow(s) that will carry the FEC protection data.
We also specify SDP [5] attributes which a Content Delivery Protocol
MAY use to communicate this information.
Watson, et al. Expires January 8, 2006 [Page 4]
Internet-Draft FEC Streaming Framework July 2005
2. Definitions/Abbreviations
Source Block: A logical block of data constructed from some subset of
the source packets of the application protocol flows to which the
FEC protection is to be applied.
FEC: Forward Error Correction. See [4].
Symbol: A unit of data processed by the Forward Error Correction
code. A symbol is always considered as a unit i.e. it is either
completely received or completely lost.
Source symbol: A symbol of a source block.
Repair symbol: A symbol containing information generated by the FEC
code from a source block which can be used to recover lost source
symbols from that source block.
Encoding symbol: A source symbol or a repair symbol.
Source Packet Information (SPI): Information related to or from a
source packet which is included in the source block.
FEC Streaming Configuration Information: Information which controls
the operation of the FEC Streaming Framework.
FEC Payload ID: See [4].
Source FEC Payload ID: An FEC Payload ID specifically for use with
source packets.
Repair FEC Payload ID: An FEC Payload ID specifically for use with
repair packets.
FEC Object Transmission Information: See [4].
FEC Encoding ID: See [4].
Content Delivery Protocol (CDP): See [4].
Watson, et al. Expires January 8, 2006 [Page 5]
Internet-Draft FEC Streaming Framework July 2005
3. Requirements notation
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 [1].
Watson, et al. Expires January 8, 2006 [Page 6]
Internet-Draft FEC Streaming Framework July 2005
4. Architecture Overview
The FEC Streaming Framework (FEC-SF) is defined as an additional
protocol layer between UDP and Application and Transport Protocols
running over UDP. Examples of such protocols are RTP, RTCP, etc. As
such, the data path interface between the FEC-SF and both underlying
and overlying layers can be thought of as being the same as the
standard interface to UDP - i.e. the data exchanged consists of UDP
datagram payloads each associated with a single UDP flow identified
by the standard 5-tuple { Source IP Address, Source UDP Port,
Destination IP Address, Destination UDP Port, Protocol }, where the
Protocol field value in this case is UDP.
The FEC-SF makes use of an FEC Scheme, in the sense of [4] and uses
the terminology of that document. The FEC Scheme provides FEC
encoding and decoding and describes the protocol fields used to
identify packet payload data in the context of the FEC Scheme; i.e.
it is the FEC Scheme specification, which MUST be defined according
to [4], which defines the format and interpretation of the FEC
Payload ID fields which are included in packets to identify the FEC
source or repair symbol data which are carried by those packets.
Alternatively, an FEC Scheme may define some other mechanism to
identify the symbol data contained in a packet, in which case the FEC
Payload ID fields described in the FEC Building Block and this
specification may have zero length.
The FEC Streaming Framework does not define how the FEC Object
Transmission Information for the stream is communicated from sender
to receiver. This must be defined by any Content Delivery Protocol
specification according to the requirements of the FEC Building
Block. However, this specification does define new Session
Description Protocol (SDP) [5] elements which MAY be used by Content
Delivery Protocols for this purpose.
This document defines certain FEC Streaming Configuration Information
which MUST be available to both sender and receiver(s). For example,
this information includes the specification of the UDP flows which
are to be FEC protected, specification of the UDP flow(s) which will
carry the FEC protection (repair) data and the relationship(s)
between these 'source' and 'repair' flows. The FEC Streaming
Framework assumes that the Content Delivery Protocol includes
appropriate signalling to communicate this FEC Streaming
Configuration Information from sender to receiver(s). In many cases,
Content Delivery Protocols may use SDP to communicate information
about the UDP streams. This document defines suitable extensions to
SDP which MAY be used to communicate the FEC Streaming Configuration
Information from sender to receiver(s).
Watson, et al. Expires January 8, 2006 [Page 7]
Internet-Draft FEC Streaming Framework July 2005
The architecture outlined above is illustrated in the Figure 1.
+ - - - - - - -- - - - - - - - - - - - - - - - - +
| |
+--------------------------------------------+
| | | |
| Application |
| | | |
+--------------------------------------------+
| +---------------------------------+ | |
| Application/ | |
| | Transport Protocol (e.g. RTP) | | |
| | |-Configuration/Coordination
| +---------------------------------+ | |
^ |
| | UDP flows | |
v v
| +--------------------------------------------+ | +----------------+
| | | |
| | FEC Streaming Framework (this document) |------| FEC Scheme |
| | | |
| +--------------------------------------------+ | +----------------+
^
| | UDP flows |
v
| +--------------------------------------------+ |
| |
| | UDP | |
| |
+--------------------------------------------+
| +--------------------------------------------+ |
| |
| | IP | |
| |
| +--------------------------------------------+ |
Content Delivery Protocol
+ - - - - - - - - - - - - - - - - - - - - - - - +
Figure 1: FEC Streaming Framework Architecture
Watson, et al. Expires January 8, 2006 [Page 8]
Internet-Draft FEC Streaming Framework July 2005
5. Procedural overview
5.1 General
The mechanism defined in this document consists of three components:
(i) construction of a 'source block' from source media packets
belonging to one or several UDP packet flows. The UDP flows MAY
include, for example, RTP, RTCP and SRTP packets and also other
protocols related to the stream such as MIKEY packets.
(ii) extension of source packets to indicate the source block and
the position within the source block occupied by the data from an
related to the source packet.
(iii) definition of repair packets, sent over UDP, which can be
used by the FEC decoder to reconstruct missing portions of the
source block.
The mechanism does not place any restrictions on the source data
which can be protected together, except that the source data is
carried over UDP. The data may be from several different UDP flows
that are protected jointly. In general, multiple source blocks will
be constructed for a stream each constructed from different sets of
source packets. For example, each source block may be constructed
from those source packets related to a particular segment of the
stream in time.
A receiver supporting this streaming framework MUST support the
packet format for FEC Source packets and MAY also support the packet
format for FEC Repair packets.
This document does not define how the sender determines which source
packets are included in which source blocks. A specific Content
Delivery Protocol MAY define this mapping or it MAY be left as
implementation dependent at the sender. However, a CDP specification
MUST define how a receiver determines the length of time it should
wait to receive FEC repair packets for any given source block.
At the sender, the mechanism processes original UDP packets to
create:
(i) a stored copy of the original packets in the form of one or
more 'source block(s)'. The source block is a logical block of
data to which the the FEC code will subsequently be applied. It
is constructed by concatenating 'Source Packet Information' (SPI)
for each source packet. The SPI for a packet contains a short
identifier for the flow the packet belongs to, the length of the
Watson, et al. Expires January 8, 2006 [Page 9]
Internet-Draft FEC Streaming Framework July 2005
packet, the UDP payload and possible padding bytes.
(ii) FEC Source packets for transmission to the receiver.
The FEC Streaming Framework uses the FEC encoder specified by the FEC
Scheme in use to generate the desired quantity of repair symbols from
a source block. These repair symbols are then sent using the FEC
repair packet format to the receiver. The FEC Repair packets are
sent to a UDP destination port different from any of the original UDP
packets' destination port(s) as indicated by the FEC Streaming
Configuation Information.
The receiver recovers original source packets directly from any FEC
Source packets received. The receiver also uses the received FEC
Source Packets to construct a stored copy of the original packets in
the same source block format as constructed at the sender.
If any FEC Source packets related to a given source block have been
lost, then this copy of the source block at the receiver will be
incomplete. If sufficient FEC source and FEC Repair packets related
to that source block have been received, the FEC Framework may use
the FEC decoding algorithm defined by the FEC Scheme to recover a
(hopefully, but not necessarily, complete) copy of the source block.
The SPI for the missing source packets can then be extracted from the
completed parts of the source block and used to reconstruct the
source packets to be passed to the application.
Note that the receiver may need to buffer received source packets to
allow time for the FEC Repair packets to arrive and FEC decoding to
be performed before some or all of the received or recovered packets
are passed to the application. If such a buffer is not provided,
then the application must be able to deal with the severe re-ordering
of packets that will be required. However, such buffering is Content
Delivery Protocol and/or implementation-specific and is not specified
here.
The FEC Source packets MUST contain information which identifies the
source block and the position within the source block occupied by the
SPI derived from the packet. The identity of the source block and
the position within the source block occupied by the SPI for a source
packet are together known as the 'Source FEC Payload ID'. This
information MAY be encoded into a specific field within the FEC
Source packet format defined in this specification, called the Source
FEC Payload ID field. The exact contents and format of the Source
FEC Payload ID field are defined by the FEC Scheme. Alternatively,
the FEC Scheme or CDP MAY define how the Source FEC Payload ID is
derived from other fields within the source packets. This document
defines the way that the Source FEC Payload ID field is appended to
Watson, et al. Expires January 8, 2006 [Page 10]
Internet-Draft FEC Streaming Framework July 2005
source packets to form FEC Source packets.
The FEC Repair packets MUST contain information which identifies the
source block and the relationship between the contained repair data
and the original source block. This is known as the 'Repair FEC
Payload ID'. This information MUST be encoded into a specific field,
the Repair FEC Payload ID field, the contents and format of which are
defined by the FEC Scheme.
Any FEC Schemes to be used in conjunction with this specification
MUST be a systematic FEC Scheme and MUST be based on source blocks.
The FEC Scheme MAY use different FEC Payload ID field formats for FEC
Source packets and FEC Repair packets.
5.2 Sender Operation
It is assumed that the sender has constructed or received original
data packets for the session. These may be RTP, RTCP, MIKEY or other
UDP packets. The following operations describe a possible way to
generate compliant FEC Source packet and FEC repair packet streams:
1. A source block is constructed as specified in Section 6.2, by
concatenating the SPI for each original source packet. In doing
so, the Source FEC Payload ID information of the FEC Source packet
can be determined and included in the Source FEC Payload ID field,
if defined. In the SPI the identity of the packet's UDP flow is
marked using a short 'UDP flow ID', defined in this specification.
The association of UDP flow specifications to UDP flow IDs is
defined by the FEC Streaming Configuation Information.
2. The FEC Source packet is constructed according to Section 6.3.
The identity of the original flow is maintained by the source
packet through the use of the same UDP ports and IP addresses
which have been advertised by the Content Delivery Protocol (for
example using SDP), as carrying FEC Source packets generated from
an original stream of a particular protocol (e.g. RTP, RTCP,
SRTP, MIKEY etc.). The FEC Source packet generated is sent
according to normal UDP procedures.
3. The FEC encoder generates repair symbols from a source block
and the FEC Streaming Framework places these symbols into FEC
Repair packets, to be conveyed to the receiver(s). These repair
packets are sent using normal UDP procedures to a unique
destination port to separate them from any of the source packet
flows. The ports to be used for FEC Repair packets are defined in
the FEC Streaming Configuration Information.
Watson, et al. Expires January 8, 2006 [Page 11]
Internet-Draft FEC Streaming Framework July 2005
5.3 Receiver Operation
The following describes a possible receiver algorithm, when receiving
an FEC source or repair packet:
1. If an FEC Source packet is received (as indicated by the UDP
flow on which was received):
a. The original source packet is reconstructed by removing the
Source FEC Payload ID. The resulting packet MAY be buffered to
allow time for the FEC repair.
b. The SPI for the resulting packet is placed into the source
block according to the Source FEC Payload ID and the source
block format described in Section 6.2. The IP addresses and
UDP ports the packet was received on/sent from are used to
determine the UDP flow ID within the SPI.
2. If an FEC repair packet is received (as indicated by the UDP
flow on which it was received), the contained repair symbols are
associated with a source block according to the Repair FEC Payload
ID.
3. If at least one source packet is missing and at least one
repair packet has been received for a source block then FEC
decoding may be desirable. The FEC decoder determines if the
source block constructed in step 1 plus the associated repair
symbols received in step 2 contain enough symbols for decoding of
any or all of the missing source symbols in the source block and,
if so, performs a decoding operation.
4. Any SPI that was reconstructed during the decoding operation
is then used to reconstruct the missing source packets and these
are buffered as normal received source packets (see step 1a
above).
Note that the above procedure may result in a situation in which not
all original source packets are recovered.
Source packets which are correctly received and those which are
reconstructed MAY be delivered to the application out of order and in
a different order from the order of arrival at the receiver.
Alternatively, buffering and packet re-ordering MAY be required to
re-order received and reconstructed source packets into the order
they were placed into the source block, if that is necessary
according to the application.
Watson, et al. Expires January 8, 2006 [Page 12]
Internet-Draft FEC Streaming Framework July 2005
6. Protocol Specification
6.1 General
This section specifies the protocol elements for the FEC Streaming
Framework. The protocol consists of three components which are
described in the following sections:
1. Construction of a source block from source packets. The FEC
code will be applied to this source block to produce the repair
data.
2. A format for packets containing source data.
3. A format for packets containing repair data.
The operation of the FEC Streaming Framework is governed by certain
FEC Streaming Configuation Information. This configuration
information is also defined in this section. A complete protocol
specification that uses this framework MUST specify the means to
determine and communicate this information between sender and
receiver. Suitable Session Description Protocol elements for this
purpose are defined in Section 7.
6.2 Structure of the source block
This clause defines the layout of the source block. The source block
consists of concatenation of SPI for at least one original source UDP
packet.
Let
n be the number of UDP packets in the source block. n MAY be
determined dynamically during the source block construction
process.
T be the source symbol size in bytes. Note: this information is
provided by the FEC Scheme as defined in Section 6.6.
R[i] denote the octets of the UDP payload of the i-th UDP packet
to be added to the source block, 0 <= i < n.
l[i] be the length of R[i] in octets
L[i] denote two octets representing the value of l[i] in network
byte order (high order octet first)
Watson, et al. Expires January 8, 2006 [Page 13]
Internet-Draft FEC Streaming Framework July 2005
f[i] denote an integer 'UDP flow ID' identifying the UDP flow from
which the i-th packet was taken
F[i] denote a single octet representing the value of f[i]
s[i] be the smallest integer such that s[i]*T >= (l[i]+3). Note
s[i] is the length of SPI[i] in units of symbols.
P[i] denote s[i]*T-(l[i]+3) zero octets. Note: P[i] are padding
octets to align the start of each UDP packet with the start of a
symbol.
SPI[i] be the concatenation of F[i] ,L[i], R[i] and P[i].
Then, the source block is constructed by concatenating SPI[i] for i =
0, 2, ... n-1. The source block size, S, is then given by sum
{s[i]*T, i=0, ..., n-1}.
Source blocks are identified by integer Source Block Numbers and
symbols within a source block by integer Encoding Symbol IDs. This
specification does not specify how Source Block Numbers are allocated
to source blocks. Symbols are numbered consecutively starting from
zero within the source block. Each source packet is associated with
the Encoding Symbol ID of the first symbol containing SPI for that
packet. Thus, the Encoding Symbol ID value associated with the j-th
source packet, ESI[j], is given by
ESI[j] = 0, for j=0
ESI[j] = sum{s[i], i=0,...,(j-1)}, for 0 < j < n
A UDP flow is uniquely defined by an IP source and destination
address and UDP source and destination port values. The assignment
of UDP flow ID values to UDP flows is part of the FEC Streaming
Configuration Information.
6.3 Packet format for FEC Source packets
The packet format for FEC Source packets MUST be used to transport
the payload of an original source UDP packet. As depicted in
Figure 2, it consists of the original UDP packet, followed by the
Source FEC Payload ID field.
Watson, et al. Expires January 8, 2006 [Page 14]
Internet-Draft FEC Streaming Framework July 2005
+------------------------------------+
| IP header |
+------------------------------------+
| UDP header |
+------------------------------------+
| Original UDP Payload |
+------------------------------------+
| Source FEC Payload ID |
+------------------------------------+
Figure 2: Structure of the FEC packet format for FEC Source packets
The IP and UDP header fields MUST be identical to those of the
original source packet. The Original UDP Payload field MUST be
identical to the UDP payload of the original source packet. The UDP
payload of the FEC Source packet MUST consist of the Original UDP
Payload followed by the Source FEC Payload ID field.
The Source FEC Payload ID field contains information required for the
operation of the FEC algorithm and defined by the FEC Scheme. The
format of the Source FEC Payload ID field is defined by the FEC
Scheme. Note that in the case that the FEC Scheme or CDP defines a
means to derive the Source FEC Payload ID from other information in
the packet (for example the RTP Sequence number), then the Source FEC
Payload ID field described here may have zero length.
Note: The Source FEC Payload ID is placed at the end of the packet so
that in the case that Robust Header Compression [3] or other header
compression mechanisms are used and in the case that a ROHC profile
is defined for the protocol carried within the UDP payload (for
example RTP), then ROHC will still be applied for the FEC Source
packets.
6.4 Packet Format for FEC Repair packets
The packet format for FEC Repair packets is shown in Figure 3. The
UDP payload consists of a Repair FEC Payload ID field and one or more
repair symbols generated by the FEC encoding process.
Watson, et al. Expires January 8, 2006 [Page 15]
Internet-Draft FEC Streaming Framework July 2005
+------------------------------------+
| IP header |
+------------------------------------+
| UDP header |
+------------------------------------+
| Repair FEC Payload ID |
+------------------------------------+
| Repair Symbols |
+------------------------------------+
Figure 3: Packet format for repair packets
The Repair FEC Payload ID field contains information required for the
operation of the FEC algorithm. This information is defined by the
FEC Scheme. The format of the Repair FEC Payload ID field is defined
by the FEC Scheme.
Any number of whole repair symbols may be contained within an FEC
Repair packet, subject to packet size restrictions or other
restrictions defined by the FEC Scheme. The number of repair symbols
within a packet can be determined from the symbol length and the
packet length. Partial repair symbols MUST NOT be included in FEC
repair packets.
6.5 FEC Streaming Configuration Information
The FEC Streaming Configuration Information is information that the
FEC Streaming Framework needs in order to apply FEC protection to the
UDP flows. A complete Content Delivery Protocol specification for
streaming that uses the framework specified here MUST include details
of how this information is derived and communicated between sender
and receiver.
The FEC Streaming Configuration Information includes identification
of a number of UDP packet flows. Each UDP packet flow is uniquely
identified by a tuple { Source IP Address, Destination IP Address,
Source UDP port, Destination UDP port }.
A single instance of the FEC-SF provides FEC protection for all
packets of a specified set of source UDP packet flows, by means of
one or more UDP packet flows containing repair packets. The FEC
Streaming Configuation Information includes, for each instance of the
FEC-SF:
1. Identification of the UDP packet flow(s) carrying FEC Repair
packets, known as the FEC repair flow(s).
Watson, et al. Expires January 8, 2006 [Page 16]
Internet-Draft FEC Streaming Framework July 2005
2. For each source UDP packet flow protected by the FEC repair
flow(s):
a. Identification of the UDP packet flow carrying source
packets.
b. An integer identifier, between 0 and 255, for this flow.
This identifier MUST be unique amongst all source UDP packet
flows which are protected by the same FEC repair flow.
3. The FEC Encoding ID, FEC Instance ID (if applicable) and,
optionally, the symbol size.
Item (3) above is included in the FEC Object Transmission
Information.
Multiple instances of the FEC-SF, with separate and independent FEC
Streaming Configuration Information, may be present at a sender or
receiver. A single instance of the FEC-SF protects all packets of
all the source UDP packet flows identified in (2) above i.e. all
packets on those flows MUST be FEC Source packets as defined in
Section 6.3. A single source UDP packet flow MUST NOT be protected
by more than one FEC-SF instance.
A single FEC repair flow provides repair packets for a single
instance of the FEC-SF. Other packets MUST NOT be sent within this
flow i.e. all packets in the FEC repair flow MUST be FEC repair
packets as defined in Section 6.4 and MUST relate to the same FEC-SF
instance.
The FEC-SF requires to be informed of the symbol size to be used for
each source block. This information MAY be included in the FEC
Streaming Configuration Information or it MAY be communicated by
other means, for example within the FEC Repair Payload ID field. A
complete Content Delivery Protocol specification MUST specify how
this information is communicated between sender and receiver.
6.6 FEC Scheme requirements
In order to be used with this framework, an FEC Scheme MUST:
- adhere to the requirements of [4]
- be systematic
- be based on discrete source blocks
Watson, et al. Expires January 8, 2006 [Page 17]
Internet-Draft FEC Streaming Framework July 2005
- specify how the Source Block Number and Encoding Symbol ID
associated with a source packet are derived or communicated from
sender to receiver (for example, within the Source FEC Payload ID
field)
- specify how the symbol length is derived or communicated from
sender to receiver (for example, as part of the FEC Object
Transmission Information).
Watson, et al. Expires January 8, 2006 [Page 18]
Internet-Draft FEC Streaming Framework July 2005
7. Session Description Protocol elements
This section defines Session Descrption Protocol elements which MAY
be used by Content Delivery Protocols that make use of this framework
to communicate the FEC Streaming Configuration Information.
NOTE: It is for further discussion whether these SDP elements
should be defined here or in the context of a specific and
complete Content Delivery Protocol specification for streaming.
This specification defines a class of new Transport Protocol
identifiers for use in SDP media descriptions. For all existing
identifiers <proto> this specification defines the identifier 'udp/
fec/<proto>'. This identifier may be used as the Transport Protocol
identifier for a media description for source data to indicate that
the FEC Source packet format defined in Section 6.3 is used, with the
original UDP payload field formated according to <proto>.
Note that in the case of an FEC Scheme in which the Source FEC
Payload ID has zero length, then the original Transport Protocol
identifier MAY be used to support interoperability with devices which
do not support the FEC Source packet format at all, whilst also
providing FEC protection for those devices which support it.
A further Transport Protocol identifier, 'udp/fec', is defined to
indicate the the FEC Repair Packet format defined in Section 6.4.
This specification describes the use of SDP attributes defined in [6]
and the FEC grouping semantics defined in [7] to provide the FEC
Streaming Configuration Information. The 'fec-declaration' attribute
may be used at either the session or media layer to declare a local
identifier for a set of FEC parameters. This local identifier can
then be referenced in the other attributes. This avoids duplication
of parameter declarations within the SDP. The 'fec' parameter is
used on the media level to associate a media description with a
previous FEC parameter declaration. Finally, the 'FEC' grouping
attribute semantics is used to associate together source and repair
flows and assign UDP flow identifiers to be used in the source block
construction.
Mechanisms for communicating the corresponance between source flows
and the UDP Flow Identifiers that are included within the source
block require further discussion.
7.1 udp/fec/<proto> transport protocol identifier
tbc
Watson, et al. Expires January 8, 2006 [Page 19]
Internet-Draft FEC Streaming Framework July 2005
7.2 udp/fec transport protocol identifier
tbc
7.3 fec-declaration attribute
See [6].
7.4 fec-oti-extension attribute
See [6].
7.5 fec attribute
See [6].
7.6 FEC media grouping semantics
This attribute is used to group source flows and the single repair
flow that protects them as described in [7] with the following
additional requirements:
The media components grouped by an instance of the FEC grouping
attribute MUST include exactly one component with the udp/fec
protocol identifier.
The media components grouped by an instance of the FEC grouping
attribute MUST include at least one and MAY include more than one
source media stream with protocol identifier udp/fec/<proto>,
where <proto> is a valid protocol identifier registered with IANA.
In the case of an FEC Scheme which defines an FEC Payload ID field
of zero length, then the media components grouped by an instance
of the FEC grouping attribite MAY include source media streams
with protocol identified udp/<proto>, where <proto> is a valid
protocol identifier registered with IANA.
7.7 SDP example
tbc
Watson, et al. Expires January 8, 2006 [Page 20]
Internet-Draft FEC Streaming Framework July 2005
8. Congestion Control
This section starts with a informative section on the motivation of
the normative requirements for congestion control, which are spelled
out in Section 8.1.
Informative Note: The enforcement of Congestion Control (CC)
principles has gained a lot of momentum in the IETF over the
recent years. While the need of CC over the open Internet is
unquestioned, and the goal of TCP friendliness is generally agreed
for most (but not all) applications, the subject of congestion
detection and measurement in heterogenous networks can hardly be
considered as solved. Most congestion control algorithms detect
and measure congestion by taking (primarily or exclusively) the
packet loss rate into account. This appears to be inappropriate
in environments where a large percentage of the packet losses are
the result link-layer errors and independent of the network load.
Note that such environments exist in the "open Internet", as well
as in "closed" IP based networks. An example for the former would
be the use of IP/UDP/RTP based streaming from an Internet-
connected streaming server to a device attached to the Internet
using cellular technology.
The authors of this draft are primarily interested in applications
where the application reliability requirements and end-to-end
reliability of the network differ, such that it warrants higher
layer protection of the packet stream - for example due to the
presence of unreliable links in the end-to-end path - and where
real-time or other constraints prohibit the use of higher layer
(transport or application) feedback. A typical example for such
applications is multicast and broadcast streaming to wireless
devices or multimedia transmission over heterogenous, but partly
wireless networks. In other cases, application reliability
requirements may be so high that the required end-to-end
reliability is difficult to achieve even over wired networks.
Furthermore the end-to-end network reliability may not be known in
advance.
This FEC framework is not proposed, nor intended, as a QoS
enhancement tool to combat losses resulting from highly congested
networks. It should not be used for such purposes.
In order to prevent such mis-use, standardization could be left to
bodies most concerned with the problem described above. However,
the IETF defines base standards used by several bodies, including
DVB-H, 3GPP, 3GPP2, all of which appear to share the environment
and the problem described.
Watson, et al. Expires January 8, 2006 [Page 21]
Internet-Draft FEC Streaming Framework July 2005
Alternatively, a clear applicability statement could be used - for
example restricting use of the framework to networks with wireless
links. However, there may be applications where the use of FEC
may be justified to combat congestion-induced packet losses -
particularly in lightly loaded networks, where congestion is the
result of relatively rare random peaks in instantaneous traffic
load - thereby intentionally violating congestion control
principles. One possible example for such an application could be
a no-matter-what, brute-force FEC protection of traffic generated
as an emergency signal.
We propose a third approach, which is to require at a minimum that
the use of this framework with any given application, in any given
environment, does not cause congestion issues which the
application alone would not itself cause i.e. the use of this
framework must not make things worse.
Taking above considerations into account, the normative text of
this section implements a small set of constraints for the FEC,
which are mandatory for all senders compliant with this FEC
framework. Further restrictions may be imposed for certain
Content Delivery Protocols. In this it follows the spirit of the
congestion control section of RTP and its Audio-Visual Profile
(RFC3550/STD64 and RFC3551/STD65).
One of the constraints effectively limits the bandwidth for the
FEC protected packet stream to be no more than roughly twice as
high as the original, non-FEC protected packet stream. This
disallows the (static or dynamic) use of excessively strong FEC to
combat high packet loss rates, which may otherwise be chosen by
naively implemented dynamic FEC-strength selection mechanisms. We
acknowledge that there may be a few exotic applications, e.g. IP
traffic from space-based senders, or senders in certain hardened
military devices, which would warrant a higher FEC strength.
However, in this specification we give preference to the overall
stability and network friendliness of the average application, and
for those a factor of 2 appears to be appropriate.
A second constraint requires that the FEC protected packet stream
be in compliance with the congestion control in use for the
application and network in question.
8.1 Normative requirements
The bandwidth of FEC Repair packet flows MUST NOT exceed the
bandwidth of the source packet flows being protected. In addition,
whenever the source packet flow bandwidth is adapted due to the
Watson, et al. Expires January 8, 2006 [Page 22]
Internet-Draft FEC Streaming Framework July 2005
operation of congestion control mechanisms, the FEC repair packet
flow bandwidth MUST be similarly adapted.
Watson, et al. Expires January 8, 2006 [Page 23]
Internet-Draft FEC Streaming Framework July 2005
9. Security Considerations
The application of FEC protection to a stream does not provide any
kind of security protection.
If security services are required for the stream, then they MUST
either be applied to the original source data before FEC protection
is applied, or to both the source and repair data, after FEC
protection has been applied.
If integrity protection is applied to source packets before FEC
protection is applied, and no further integrity protection is applied
to repair packets, then a denial of service attack is possible if an
attacker is in a position to inject fake repair packets. If received
by a receiver, such fake repair packets could cause incorrect FEC
decoding resulting in incorrect source packets being passed up to the
application protocol. Such incorrect packets would then be detected
by the source integrity protection and discarded, resulting in
partial or complete denial of service. Therefore, in such
environments, integrity protection MUST also be applied to the FEC
Repair packets, for example using IPsec. Receivers MUST also verify
the integrity of source packets before including the source data into
the source block for FEC purposes.
It is possible that multiple streams with different confidentiality
requirements (for example, the streams may be visible to different
sets of users) can be FEC protected by a single repair stream. This
scenario is not recommended, since resources will be used to
distribute and decode data which cannot then be decrypted by at least
some receivers. However, in this scenario, confidentiality
protection MUST be applied before FEC encoding of the streams,
otherwise repair data may be used by a receiver to decode unencrypted
versions of source streams which they do not have permissionions to
view.
Watson, et al. Expires January 8, 2006 [Page 24]
Internet-Draft FEC Streaming Framework July 2005
10. IANA Considerations
tbc
Watson, et al. Expires January 8, 2006 [Page 25]
Internet-Draft FEC Streaming Framework July 2005
11. Acknowledgments
This framework is based in large part on the FEC streaming protocol
defined by 3GPP in [8] and thus thanks are due to the participants in
3GPP TSG SA working group 4.
12. References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[2] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[3] Bormann, C., Burmeister, C., Degermark, M., Fukushima, H.,
Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., Le, K., Liu,
Z., Martensson, A., Miyazaki, A., Svanbro, K., Wiebke, T.,
Yoshimura, T., and H. Zheng, "RObust Header Compression (ROHC):
Framework and four profiles: RTP, UDP, ESP, and uncompressed",
RFC 3095, July 2001.
[4] Watson, M., "Forward Error Correction (FEC) Building Block",
draft-ietf-rmt-fec-bb-revised-00 (work in progress), May 2005.
[5] Handley, M., "SDP: Session Description Protocol",
draft-ietf-mmusic-sdp-new-24 (work in progress), February 2005.
[6] Mehta, H., "SDP Descriptors for FLUTE",
draft-mehta-rmt-flute-sdp-03 (work in progress), July 2005.
[7] Li, A., "FEC Grouping Semantics in SDP",
draft-li-mmusic-fec-grouping-00 (work in progress), June 2005.
[8] 3GPP, "Multimedia Broadcast/Multicast Service (MBMS); Protocols
and codecs", 3GPP TS 26.346 6.1.0, April 2005.
Authors' Addresses
Mark Watson
Digital Fountain
39141 Civic Center Drive
Suite 300
Fremont, CA 94538
U.S.A.
Email: mark@digitalfountain.com
Watson, et al. Expires January 8, 2006 [Page 26]
Internet-Draft FEC Streaming Framework July 2005
Michael Luby
Digital Fountain
39141 Civic Center Drive
Suite 300
Fremont, CA 94538
U.S.A.
Email: luby@digitalfountain.com
Magnus Westerlund
Ericsson
Ericsson Research
SE-164 80 Stockholm
SWEDEN
Email: magnus.westerlund@ericsson.com
Stephan Wenger
Nokia
Email: Stephan.Wenger@nokia.com
Watson, et al. Expires January 8, 2006 [Page 27]
Internet-Draft FEC Streaming Framework July 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Watson, et al. Expires January 8, 2006 [Page 28]