draft-ietf-fecframe-framework-06.txt   draft-ietf-fecframe-framework-07.txt 
FEC Framework Working Group M. Watson FEC Framework Working Group M. Watson
Internet-Draft Qualcomm, Inc. Internet-Draft Qualcomm, Inc.
Intended status: Standards Track March 5, 2010 Intended status: Standards Track March 5, 2010
Expires: September 6, 2010 Expires: September 6, 2010
Forward Error Correction (FEC) Framework Forward Error Correction (FEC) Framework
draft-ietf-fecframe-framework-06 draft-ietf-fecframe-framework-07
Abstract Abstract
This document describes a framework for using forward error This document describes a framework for using forward error
correction (FEC) codes with applications in public and private IP correction (FEC) codes with applications in public and private IP
networks to provide protection against packet loss. The framework networks to provide protection against packet loss. The framework
supports applying Forward Error Correction to arbitrary packet flows supports applying Forward Error Correction to arbitrary packet flows
over unreliable transport and is primarily intended for real-time, or over unreliable transport and is primarily intended for real-time, or
streaming, media. This framework can be used to define Content streaming, media. This framework can be used to define Content
Delivery Protocols that provide Forward Error Correction for Delivery Protocols that provide Forward Error Correction for
skipping to change at page 3, line 23 skipping to change at page 3, line 23
5.2. Sender Operation . . . . . . . . . . . . . . . . . . . . . 16 5.2. Sender Operation . . . . . . . . . . . . . . . . . . . . . 16
5.3. Receiver Operation . . . . . . . . . . . . . . . . . . . . 18 5.3. Receiver Operation . . . . . . . . . . . . . . . . . . . . 18
6. Protocol Specification . . . . . . . . . . . . . . . . . . . . 22 6. Protocol Specification . . . . . . . . . . . . . . . . . . . . 22
6.1. General . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1. General . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2. Structure of the source block . . . . . . . . . . . . . . 22 6.2. Structure of the source block . . . . . . . . . . . . . . 22
6.3. Packet format for FEC Source packets . . . . . . . . . . . 22 6.3. Packet format for FEC Source packets . . . . . . . . . . . 22
6.3.1. Generic Explicit Source FEC Payload Id . . . . . . . . 24 6.3.1. Generic Explicit Source FEC Payload Id . . . . . . . . 24
6.4. Packet Format for FEC Repair packets . . . . . . . . . . . 24 6.4. Packet Format for FEC Repair packets . . . . . . . . . . . 24
6.4.1. Packet Format for FEC Repair packets over RTP . . . . 24 6.4.1. Packet Format for FEC Repair packets over RTP . . . . 24
6.5. FEC Framework Configuration Information . . . . . . . . . 25 6.5. FEC Framework Configuration Information . . . . . . . . . 25
6.6. FEC Scheme requirements . . . . . . . . . . . . . . . . . 26 6.6. FEC Scheme requirements . . . . . . . . . . . . . . . . . 27
7. Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7. Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8. Transport Protocols . . . . . . . . . . . . . . . . . . . . . 31 8. Transport Protocols . . . . . . . . . . . . . . . . . . . . . 31
9. Congestion Control . . . . . . . . . . . . . . . . . . . . . . 32 9. Congestion Control . . . . . . . . . . . . . . . . . . . . . . 32
9.1. Normative requirements . . . . . . . . . . . . . . . . . . 33 9.1. Normative requirements . . . . . . . . . . . . . . . . . . 33
10. Security Considerations . . . . . . . . . . . . . . . . . . . 35 10. Security Considerations . . . . . . . . . . . . . . . . . . . 35
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 38 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 38
13.1. Normative references . . . . . . . . . . . . . . . . . . . 38 13.1. Normative references . . . . . . . . . . . . . . . . . . . 38
13.2. Informative references . . . . . . . . . . . . . . . . . . 38 13.2. Informative references . . . . . . . . . . . . . . . . . . 38
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 39 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 40
1. Introduction 1. Introduction
Many applications have a requirement to transport a continuous stream Many applications have a requirement to transport a continuous stream
of packetised data from a source (sender) to one or more destinations of packetised data from a source (sender) to one or more destinations
(receivers) over networks which do not provide guaranteed packet (receivers) over networks which do not provide guaranteed packet
delivery. Primary examples are real-time, or streaming, media delivery. Primary examples are real-time, or streaming, media
applications such as broadcast, multicast or on-demand audio, video applications such as broadcast, multicast or on-demand audio, video
or multimedia. or multimedia.
skipping to change at page 26, line 9 skipping to change at page 26, line 9
(for example, by means of a tuple as describe above for UDP). (for example, by means of a tuple as describe above for UDP).
b. An integer identifier for this flow definition (i.e. b. An integer identifier for this flow definition (i.e.
tuple). This identifier MUST be unique amongst all Source Data tuple). This identifier MUST be unique amongst all Source Data
Flows which are protected by the same FEC repair flow. Flows which are protected by the same FEC repair flow.
3. The FEC Encoding ID, identifying the FEC Scheme 3. The FEC Encoding ID, identifying the FEC Scheme
4. The length of the Explicit Source FEC Payload Id, in bytes 4. The length of the Explicit Source FEC Payload Id, in bytes
5. An opaque container for FEC-Scheme-specific information 5. Zero or more FEC-Scheme-specific information elements, each
consisting of a name and a value where the valid element names and
value ranges are defined by the FEC Scheme
Multiple instances of the FEC Framework, with separate and Multiple instances of the FEC Framework, with separate and
independent FEC Framework Configuration Information, may be present independent FEC Framework Configuration Information, may be present
at a sender or receiver. A single instance of the FEC Framework at a sender or receiver. A single instance of the FEC Framework
protects packets of the Source Data Flows identified in (2) above protects packets of the Source Data Flows identified in (2) above
i.e. all packets sent on those flows MUST be FEC Source packets as i.e. all packets sent on those flows MUST be FEC Source packets as
defined in Section 6.3. A single Source Data Flow may be protected defined in Section 6.3. A single Source Data Flow may be protected
by multiple instances of the FEC Framework. by multiple instances of the FEC Framework.
The integer flow identifier identified in 2(b) is a "shorthand" to The integer flow identifier identified in 2(b) is a "shorthand" to
skipping to change at page 26, line 49 skipping to change at page 26, line 51
A single FEC repair flow provides repair packets for a single A single FEC repair flow provides repair packets for a single
instance of the FEC Framework. Other packets MUST NOT be sent within instance of the FEC Framework. Other packets MUST NOT be sent within
this flow i.e. all packets in the FEC repair flow MUST be FEC repair 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 packets as defined in Section 6.4 and MUST relate to the same FEC
Framework instance. Framework instance.
In the case that RTP is used for repair packets, the identification In the case that RTP is used for repair packets, the identification
of the repair packet flow MAY also include the RTP Payload Type to be of the repair packet flow MAY also include the RTP Payload Type to be
used for repair packets. used for repair packets.
FEC Scheme-specific information elements MAY be encoded into a text
string for transport within Content Delivery Protocols as according
to the following ABNF [RFC5234]:
scheme-specific-info = [ element *( ',' element ) ]
element = name ':' value
name = token
token = 1*<any CHAR except CTLs or separators>
value = *<any CHAR except CTLs or separators>
separators = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
6.6. FEC Scheme requirements 6.6. FEC Scheme requirements
In order to be used with this framework, an FEC Scheme MUST be In order to be used with this framework, an FEC Scheme MUST be
capable of processing data arranged into blocks of Application Data capable of processing data arranged into blocks of Application Data
Units (source blocks). Units (source blocks).
A specification for a new FEC scheme MUST include the following A specification for a new FEC scheme MUST include the following
things: things:
1. The FEC Encoding ID value that uniquely identifies the FEC 1. The FEC Encoding ID value that uniquely identifies the FEC
scheme. This value MUST be registered with IANA as described in scheme. This value MUST be registered with IANA as described in
Section 11. Section 11.
2. The type, semantics and encoding format of the Repair FEC Payload 2. The type, semantics and encoding format of the Repair FEC Payload
ID. ID.
3. The type, semantics and encoding format of the FEC Scheme- 3. The name, type, semantics and text value encoding rules for zero
specific FEC Framework Configuration Information. or more FEC Scheme-specific FEC Framework Configuration
Information elements. Names must conform to the
"name"__production and values encodings to the "value" __
production defined in Section 6.5
4. A full specification of the FEC code. 4. A full specification of the FEC code.
This specification MUST precisely define the valid FEC-Scheme- This specification MUST precisely define the valid FEC-Scheme-
Specific FEC Framework Configuration Information values, the Specific FEC Framework Configuration Information values, the
valid FEC Payload ID values and the valid packet payload sizes valid FEC Payload ID values and the valid packet payload sizes
(where packet payload refers to the space within a packet (where packet payload refers to the space within a packet
dedicated to carrying encoding symbol bytes). dedicated to carrying encoding symbol bytes).
Furthermore, given a source block as defined in Section 6.2, Furthermore, given a source block as defined in Section 6.2,
skipping to change at page 28, line 30 skipping to change at page 29, line 5
2. Formats and Codes 2. Formats and Codes
2.1 Source FEC Payload ID(s) <Either, define the type and format 2.1 Source FEC Payload ID(s) <Either, define the type and format
of the Explicit Source FEC Payload ID, or define how Source FEC of the Explicit Source FEC Payload ID, or define how Source FEC
Payload ID information is derived from source packets> Payload ID information is derived from source packets>
2.2 Repair FEC Payload Id <Define the type and format of the 2.2 Repair FEC Payload Id <Define the type and format of the
Repair FEC Payload ID> Repair FEC Payload ID>
2.3 FEC Framework Configuration Information <Define the type and 2.3 FEC Framework Configuration Information <Define the names,
format of the FEC Scheme-specific FEC Framework configuration types and text value encoding formats of the FEC Scheme-
information> specific FEC Framework configuration information elements>
3. Procedures <describe any procedures which are specific to this 3. Procedures <describe any procedures which are specific to this
FEC scheme, in particular derivation and interpretation of the FEC scheme, in particular derivation and interpretation of the
fields in the FEC Payload ID and FEC Scheme-specific FEC Framework fields in the FEC Payload ID and FEC Scheme-specific FEC Framework
configuration information.> configuration information.>
4. FEC code specification <provide a complete specification of the 4. FEC code specification <provide a complete specification of the
FEC Code> FEC Code>
Specifications MAY include additional sections, for example, Specifications MAY include additional sections, for example,
skipping to change at page 38, line 30 skipping to change at page 38, line 30
Correction (FEC) Building Block", RFC 5052, August 2007. Correction (FEC) Building Block", RFC 5052, August 2007.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, RFC 3550, July 2003. Applications", STD 64, RFC 3550, July 2003.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226, IANA Considerations Section in RFCs", BCP 26, RFC 5226,
May 2008. May 2008.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
13.2. Informative references 13.2. Informative references
[I-D.watson-tsvwg-fec-sf] [I-D.watson-tsvwg-fec-sf]
Watson, M., "Forward Error Correction (FEC) Streaming Watson, M., "Forward Error Correction (FEC) Streaming
Framework", draft-watson-tsvwg-fec-sf-00 (work in Framework", draft-watson-tsvwg-fec-sf-00 (work in
progress), July 2005. progress), July 2005.
[RFC5725] Begen, A., Hsu, D., and M. Lague, "Post-Repair Loss RLE [RFC5725] Begen, A., Hsu, D., and M. Lague, "Post-Repair Loss RLE
Report Block Type for RTP Control Protocol (RTCP) Extended Report Block Type for RTP Control Protocol (RTCP) Extended
Reports (XRs)", RFC 5725, February 2010. Reports (XRs)", RFC 5725, February 2010.
 End of changes. 8 change blocks. 
9 lines changed or deleted 31 lines changed or added

This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/