draft-ietf-fecframe-raptor-04.txt   draft-ietf-fecframe-raptor-05.txt 
FEC Framework M. Watson FEC Framework M. Watson
Internet-Draft Netflix Internet-Draft Netflix
Intended status: Standards Track T. Stockhammer Intended status: Standards Track T. Stockhammer
Expires: June 12, 2011 Nomor Research Expires: March 21, 2012 Nomor Research
M. Luby M. Luby
Qualcomm Incorporated Qualcomm Incorporated
December 9, 2010 September 18, 2011
Raptor FEC Schemes for FECFRAME Raptor FEC Schemes for FECFRAME
draft-ietf-fecframe-raptor-04 draft-ietf-fecframe-raptor-05
Abstract Abstract
This document describes Fully-Specified Forward Error Correction This document describes Fully-Specified Forward Error Correction
(FEC) Schemes for the Raptor and RaptorQ codes and their application (FEC) Schemes for the Raptor and RaptorQ codes and their application
to reliable delivery of media streams in the context of FEC to reliable delivery of media streams in the context of FEC
Framework. The Raptor and RaptorQ codes are systematic codes, where Framework. The Raptor and RaptorQ codes are systematic codes, where
a number of repair symbols are generated from a set of source symbols a number of repair symbols are generated from a set of source symbols
and sent in one or more repair flows in addition to the source and sent in one or more repair flows in addition to the source
symbols that are sent to the receiver(s) within a source flow. The symbols that are sent to the receiver(s) within a source flow. The
skipping to change at page 1, line 46 skipping to change at page 1, line 46
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 12, 2011. This Internet-Draft will expire on March 21, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Document Outline . . . . . . . . . . . . . . . . . . . . . . . 5 2. Document Outline . . . . . . . . . . . . . . . . . . . . . . . 6
3. Requirements Notation . . . . . . . . . . . . . . . . . . . . 5 3. Requirements Notation . . . . . . . . . . . . . . . . . . . . 6
4. Definitions and Abbreviations . . . . . . . . . . . . . . . . 5 4. Definitions and Abbreviations . . . . . . . . . . . . . . . . 6
4.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 6 4.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 7
4.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 6 4.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 7
5. General procedures for Raptor FEC Schemes . . . . . . . . . . 6 5. General procedures for Raptor FEC Schemes . . . . . . . . . . 7
6. Raptor FEC Schemes for arbitrary packet flows . . . . . . . . 8 6. Raptor FEC Schemes for arbitrary packet flows . . . . . . . . 9
6.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 8 6.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 9
6.2. Formats and Codes . . . . . . . . . . . . . . . . . . . . 8 6.2. Formats and Codes . . . . . . . . . . . . . . . . . . . . 9
6.2.1. FEC Framework Configuration Information . . . . . . . 8 6.2.1. FEC Framework Configuration Information . . . . . . . 9
6.2.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 9 6.2.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 10
6.2.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 10 6.2.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 11
6.3. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 11 6.3. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 12
6.3.1. Source symbol construction . . . . . . . . . . . . . . 11 6.3.1. Source symbol construction . . . . . . . . . . . . . . 12
6.3.2. Repair packet construction . . . . . . . . . . . . . . 11 6.3.2. Repair packet construction . . . . . . . . . . . . . . 12
6.4. FEC Code Specification . . . . . . . . . . . . . . . . . . 12 6.4. FEC Code Specification . . . . . . . . . . . . . . . . . . 13
7. Optimised Raptor FEC Scheme for arbitrary packet flows . . . . 12 7. Optimised Raptor FEC Scheme for arbitrary packet flows . . . . 13
7.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 12 7.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 13
7.2. Formats and Codes . . . . . . . . . . . . . . . . . . . . 13 7.2. Formats and Codes . . . . . . . . . . . . . . . . . . . . 14
7.2.1. FEC Framework Configuration Information . . . . . . . 13 7.2.1. FEC Framework Configuration Information . . . . . . . 14
7.2.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 13 7.2.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 14
7.2.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 13 7.2.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 14
7.3. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 13 7.3. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 14
7.3.1. Source symbol construction . . . . . . . . . . . . . . 13 7.3.1. Source symbol construction . . . . . . . . . . . . . . 14
7.3.2. Repair packet construction . . . . . . . . . . . . . . 13 7.3.2. Repair packet construction . . . . . . . . . . . . . . 14
7.4. FEC Code Specification . . . . . . . . . . . . . . . . . . 13 7.4. FEC Code Specification . . . . . . . . . . . . . . . . . . 14
8. Raptor FEC Scheme for a single sequenced flow . . . . . . . . 14 8. Raptor FEC Scheme for a single sequenced flow . . . . . . . . 15
8.1. Formats and codes . . . . . . . . . . . . . . . . . . . . 14 8.1. Formats and codes . . . . . . . . . . . . . . . . . . . . 15
8.1.1. FEC Framework Configuration Information . . . . . . . 14 8.1.1. FEC Framework Configuration Information . . . . . . . 15
8.1.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 14 8.1.2. Source FEC Payload ID . . . . . . . . . . . . . . . . 15
8.1.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 15 8.1.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 15
8.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 17
8.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 16 8.2.1. Source symbol construction . . . . . . . . . . . . . . 17
8.2.1. Source symbol construction . . . . . . . . . . . . . . 16
8.2.2. Derivation of Source FEC Packet Identification 8.2.2. Derivation of Source FEC Packet Identification
Information . . . . . . . . . . . . . . . . . . . . . 16 Information . . . . . . . . . . . . . . . . . . . . . 17
8.2.3. Repair packet construction . . . . . . . . . . . . . . 17 8.2.3. Repair packet construction . . . . . . . . . . . . . . 18
8.2.4. Procedures for RTP source flows . . . . . . . . . . . 17 8.2.4. Procedures for RTP source flows . . . . . . . . . . . 18
8.3. FEC Code Specification . . . . . . . . . . . . . . . . . . 18 8.3. FEC Code Specification . . . . . . . . . . . . . . . . . . 18
9. Security Considerations . . . . . . . . . . . . . . . . . . . 18 9. Security Considerations . . . . . . . . . . . . . . . . . . . 19
10. Session Description Protocol (SDP) Signaling . . . . . . . . . 18 10. Session Description Protocol (SDP) Signaling . . . . . . . . . 19
11. Congestion Control Considerations . . . . . . . . . . . . . . 18 11. Congestion Control Considerations . . . . . . . . . . . . . . 19
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
12.1. Registration of FEC Scheme IDs . . . . . . . . . . . . . . 19 12.1. Registration of FEC Scheme IDs . . . . . . . . . . . . . . 19
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
14.1. Normative References . . . . . . . . . . . . . . . . . . . 19 14.1. Normative References . . . . . . . . . . . . . . . . . . . 20
14.2. Informative References . . . . . . . . . . . . . . . . . . 20 14.2. Informative References . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21
1. Introduction 1. Introduction
The FEC Framework [I-D.ietf-fecframe-framework] describes a framework The FEC Framework [I-D.ietf-fecframe-framework] describes a framework
for the application of Forward Error Correction to arbitrary packet for the application of Forward Error Correction to arbitrary packet
flows. Modeled after the FEC Building Block developed by the IETF flows. Modeled after the FEC Building Block developed by the IETF
Reliable Multicast Transport working group [RFC5052], the FEC Reliable Multicast Transport working group [RFC5052], the FEC
Framework defines the concept of FEC Schemes which provide specific Framework defines the concept of FEC Schemes which provide specific
Forward Error Correction schemes. This document describes six FEC Forward Error Correction schemes. This document describes six FEC
Schemes which make use of the Raptor and RaptorQ FEC codes as defined Schemes which make use of the Raptor and RaptorQ FEC codes as defined
in [RFC5053] and [I-D.ietf-rmt-bb-fec-raptorq]. in [RFC5053] and [RFC6330].
The FEC protection mechanism is independent of the type of the source The FEC protection mechanism is independent of the type of the source
data, which can be an arbitrary sequence of packets, including for data, which can be an arbitrary sequence of packets, including for
example audio or video data. In general, the operation of the example audio or video data. In general, the operation of the
protection mechanism is as follows: protection mechanism is as follows:
o The sender determines a set of source packets (a source block) to o The sender determines a set of source packets (a source block) to
be protected together based on the FEC Framework Configuration be protected together based on the FEC Framework Configuration
Information. Information.
skipping to change at page 5, line 10 skipping to change at page 6, line 10
directly or indirectly from the source packets and this sequence directly or indirectly from the source packets and this sequence
number can be used within the FEC Scheme. This case is referred to number can be used within the FEC Scheme. This case is referred to
as a "single sequenced flow". In this case the FEC Source Payload ID as a "single sequenced flow". In this case the FEC Source Payload ID
defined in [I-D.ietf-fecframe-framework] is empty and the source defined in [I-D.ietf-fecframe-framework] is empty and the source
packets are not modified by the application of FEC, with obvious packets are not modified by the application of FEC, with obvious
backwards compatibility advantages. backwards compatibility advantages.
Otherwise, it is necessary to add data to the source packets for FEC Otherwise, it is necessary to add data to the source packets for FEC
purposes in the form of a non-empty FEC Source Payload ID. This case purposes in the form of a non-empty FEC Source Payload ID. This case
if referred to as the "arbitrary packet flow" case. Accordingly, if referred to as the "arbitrary packet flow" case. Accordingly,
this document defines two FEC Schemes, one for the case of a single this document defines six FEC Schemes, two for the case of a single
sequenced flow and another for the case of arbitrary packet flows. sequenced flow and four for the case of arbitrary packet flows.
2. Document Outline 2. Document Outline
This document is organised as follows: This document is organised as follows:
o Section 5 defines general procedures applicable to the use of the o Section 5 defines general procedures applicable to the use of the
Raptor and RaptorQ codes in the context of the FEC Framework. Raptor and RaptorQ codes in the context of the FEC Framework.
o Section 6defines an FEC Scheme for the case of arbitrary source o Section 6defines an FEC Scheme for the case of arbitrary source
flows and follows the format defined for FEC Schemes in flows and follows the format defined for FEC Schemes in
skipping to change at page 6, line 11 skipping to change at page 7, line 11
The definitions, notations and abbreviations commonly used in this The definitions, notations and abbreviations commonly used in this
document are summarized in this section. document are summarized in this section.
4.1. Definitions 4.1. Definitions
This document uses the following definitions. For further This document uses the following definitions. For further
definitions that apply to FEC Framework in general, see definitions that apply to FEC Framework in general, see
[I-D.ietf-fecframe-framework]. [I-D.ietf-fecframe-framework].
Symbol: A unit of data. Its size, in bytes, is referred to as the Symbol: A unit of data. Its size, in octets, is referred to as the
symbol size. symbol size.
FEC Framework Configuration Information: Information that controls FEC Framework Configuration Information: Information that controls
the operation of the FEC Framework. Each FEC Framework instance the operation of the FEC Framework. Each FEC Framework instance
has its own configuration information. has its own configuration information.
4.2. Abbreviations 4.2. Abbreviations
This document uses the following abbreviations. For further This document uses the following abbreviations. For further
abbreviations that apply to FEC Framework in general, see abbreviations that apply to FEC Framework in general, see
[I-D.ietf-fecframe-framework]. [I-D.ietf-fecframe-framework].
FSSI: FEC-Scheme-Specific Information. FSSI: FEC-Scheme-Specific Information.
SS-FSSI: Sender-Side FEC-Scheme-Specific Information. SS-FSSI: Sender-Side FEC-Scheme-Specific Information.
RS-FSSI: Receiver-Side FEC-Scheme-Specific Information. RS-FSSI: Receiver-Side FEC-Scheme-Specific Information.
ADUI Application Data Unit Information ADUI: Application Data Unit Information.
5. General procedures for Raptor FEC Schemes 5. General procedures for Raptor FEC Schemes
This section specifies general procedures which apply to all Raptor This section specifies general procedures which apply to all Raptor
and RaptorQ FEC Schemes, specifically the construction of source and RaptorQ FEC Schemes, specifically the construction of source
symbols from a set of source transport payloads. As described in symbols from a set of source transport payloads. As described in
[I-D.ietf-fecframe-framework] for each Application Data Unit (ADU) in [I-D.ietf-fecframe-framework] for each Application Data Unit (ADU) in
a source block, the FEC Scheme is provided with: a source block, the FEC Scheme is provided with:
o A description of the source data flow with which the ADU is o A description of the source data flow with which the ADU is
skipping to change at page 7, line 6 skipping to change at page 8, line 6
o The ADU itself. o The ADU itself.
o The length of the ADU. o The length of the ADU.
For each ADU, we define the Application Data Unit Information (ADUI) For each ADU, we define the Application Data Unit Information (ADUI)
as follows: as follows:
Let Let
o n be the number of ADUs in the source block. o n be the number of ADUs in the source block.
o T be the source symbol size in bytes. Note: this information is o T be the source symbol size in octets. Note: this information is
provided by the FEC Scheme as defined below. provided by the FEC Scheme as defined below.
o i the index to the (i+1)-th ADU to be added to the source block, 0 o i the index to the (i+1)-th ADU to be added to the source block, 0
<= i < n. <= i < n.
o R[i] denote the number of octets in the (i+1)-th ADU. o R[i] denote the number of octets in the (i+1)-th ADU.
o l[i] be a length indication associated with the i-th ADU - the o l[i] be a length indication associated with the i-th ADU - the
nature of the length indication is defined by the FEC Scheme. nature of the length indication is defined by the FEC Scheme.
o L[i] denote two octets representing the value of l[i] in network o L[i] denote two octets representing the value of l[i] in network
byte order (high order octet first) of the i-th ADU. byte order (high order octet first) of the i-th ADU.
o f[i] denote the integer identifier associated with the source data o f[i] denote the integer identifier associated with the source data
flow from which the i-th ADU was taken. flow from which the i-th ADU was taken.
o F[i] denote a single octet representing the value of f[i]. o F[i] denote a single octet representing the value of f[i].
o s[i] be the smallest integer such that s[i]*T >= (l[i]+3). Note o 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 of size T bytes. s[i] is the length of SPI[i] in units of symbols of size T octets.
o P[i] denote s[i]*T-(l[i]+3) zero octets. Note: P[i] are padding o 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 octets to align the start of each UDP packet with the start of a
symbol. symbol.
o ADUI[i] be the concatenation of F[i] ,L[i], R[i] and P[i]. o ADUI[i] be the concatenation of F[i] ,L[i], R[i] and P[i].
Then, a source data block is constructed by concatenating ADUI[i] for Then, a source data block is constructed by concatenating ADUI[i] for
i = 0, 1, 2, ... n-1. The source data block size, S, is then given i = 0, 1, 2, ... n-1. The source data block size, S, is then given
by sum {s[i]*T, i=0, ..., n-1}. Symbols are allocated integer by sum {s[i]*T, i=0, ..., n-1}. Symbols are allocated integer
skipping to change at page 8, line 24 skipping to change at page 9, line 24
specified in [MBMSTS]. specified in [MBMSTS].
6.2. Formats and Codes 6.2. Formats and Codes
6.2.1. FEC Framework Configuration Information 6.2.1. FEC Framework Configuration Information
6.2.1.1. FEC Scheme ID 6.2.1.1. FEC Scheme ID
The value of the FEC Scheme ID for the fully-specified FEC scheme The value of the FEC Scheme ID for the fully-specified FEC scheme
defined in this section is XXX when [RFC5053] is used and YYY when defined in this section is XXX when [RFC5053] is used and YYY when
[I-D.ietf-rmt-bb-fec-raptorq] is used, as assigned by IANA. [RFC6330] is used, as assigned by IANA.
6.2.1.2. Scheme-Specific Elements 6.2.1.2. Scheme-Specific Elements
The scheme-specific elements of the FEC Framework Configuration The scheme-specific elements of the FEC Framework Configuration
information for this scheme are as follows: information for this scheme are as follows:
Maximum Source Block Length Name: "Kmax", Value range: A decimal Maximum Source Block Length Name: "Kmax", Value range: A decimal
non-negative integer less than 8192 (for Raptor) or 56403 (for non-negative integer less than 8192 (for Raptor) or 56403 (for
RaptorQ), in units of symbols RaptorQ), in units of symbols
Encoding Symbol Size Name: "T", Value range: A decimal non- Encoding Symbol Size Name: "T", Value range: A decimal non-
negative integer less than 65536, in units of bytes negative integer less than 65536, in units of octets
Payload ID Format Name: "P", Value range: "A" or "B" Payload ID Format Name: "P", Value range: "A" or "B"
An encoding format for The Maximum Source Block Length and Encoding An encoding format for The Maximum Source Block Length and Encoding
Symbol Size is defined below. Symbol Size is defined below.
1 2 3 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Symbol Size (T) |Max. Source Block Length (Kmax)| | Symbol Size (T) |Max. Source Block Length (Kmax)|
skipping to change at page 11, line 52 skipping to change at page 12, line 52
Information for each packet shall be the transport payload length. Information for each packet shall be the transport payload length.
o the value of s[i] in the construction of the Source Packet o the value of s[i] in the construction of the Source Packet
Information for each packet shall be the smallest integer such Information for each packet shall be the smallest integer such
that s[i]*T >= (l[i]+3). that s[i]*T >= (l[i]+3).
6.3.2. Repair packet construction 6.3.2. Repair packet construction
The ESI value placed into a repair packet is calculated as specified The ESI value placed into a repair packet is calculated as specified
in Section 5.3.2 of [RFC5053] when Raptor as defined in [RFC5053] is in Section 5.3.2 of [RFC5053] when Raptor as defined in [RFC5053] is
used and as specified in Section 4.4.2 of used and as specified in Section 4.4.2 of [RFC6330] when RaptorQ as
defined in [RFC6330] is used, where K=SBL.
[I-D.ietf-rmt-bb-fec-raptorq] when RaptorQ as defined in
[I-D.ietf-rmt-bb-fec-raptorq] is used, where K=SBL.
6.4. FEC Code Specification 6.4. FEC Code Specification
The Raptor FEC encoder defined in [RFC5053] or The Raptor FEC encoder defined in [RFC5053] or [RFC6330] SHALL be
[I-D.ietf-rmt-bb-fec-raptorq] SHALL be used. The source symbols used. The source symbols passed to the Raptor FEC encoder SHALL
passed to the Raptor FEC encoder SHALL consist of the source symbols consist of the source symbols constructed according to Section 6.3.1.
constructed according to Section 6.3.1. Thus the value of the Thus the value of the parameter K used by the FEC encoder (equal to
parameter K used by the FEC encoder (equal to the Source Block the Source Block Length) may vary amongst the blocks of the stream
Length) may vary amongst the blocks of the stream but SHALL NOT but SHALL NOT exceed the Maximum Source Block Length signaled in the
exceed the Maximum Source Block Length signaled in the FEC Scheme- FEC Scheme-specific information. The symbol size, T, to be used for
specific information. The symbol size, T, to be used for source source block construction and the repair symbol construction is equal
block construction and the repair symbol construction is equal to the to the Encoding Symbol Size signaled in the FEC Scheme Specific
Encoding Symbol Size signaled in the FEC Scheme Specific Information. Information.
7. Optimised Raptor FEC Scheme for arbitrary packet flows 7. Optimised Raptor FEC Scheme for arbitrary packet flows
7.1. Introduction 7.1. Introduction
This section specifies a slightly modified version of the FEC Scheme This section specifies a slightly modified version of the FEC Scheme
specified in Section 6 which is applicable to scenarios in which only specified in Section 6 which is applicable to scenarios in which only
relatively small block sizes will be used. These modifications admit relatively small block sizes will be used. These modifications admit
substantial optimisations to both sender and receiver substantial optimisations to both sender and receiver
implementations. implementations.
skipping to change at page 12, line 42 skipping to change at page 13, line 40
o All source blocks within a stream are encoded using the same o All source blocks within a stream are encoded using the same
source block size. Code shortening is used to encode blocks of source block size. Code shortening is used to encode blocks of
different sizes. This is achieved by padding every block to the different sizes. This is achieved by padding every block to the
required size using zero symbols before encoding. The zero required size using zero symbols before encoding. The zero
symbols are then discarded after decoding. The source block size symbols are then discarded after decoding. The source block size
to be used for a stream is signaled in the Maximum Source Block to be used for a stream is signaled in the Maximum Source Block
Size field of the scheme-specific information. This allows for Size field of the scheme-specific information. This allows for
efficient parallel encoding of multiple streams. Note that the efficient parallel encoding of multiple streams. Note that the
padding operation is equivalent to the padding operation in padding operation is equivalent to the padding operation in
[I-D.ietf-rmt-bb-fec-raptorq] with K' the specified single source [RFC6330] with K' the specified single source block size and K the
block size and K the actual source block size K. actual source block size K.
o The possible choices of the source block size for a stream is o The possible choices of the source block size for a stream is
restricted to a small specified set of sizes. This allows restricted to a small specified set of sizes. This allows
explicit operation sequences for encoding and decoding the explicit operation sequences for encoding and decoding the
restricted set of source block sizes to be pre-calculated and restricted set of source block sizes to be pre-calculated and
embedded in software or hardware. embedded in software or hardware.
When the Raptor FEC encoder as defined in [RFC5053] is used, this When the Raptor FEC encoder as defined in [RFC5053] is used, this
scheme is equivalent to that specified in [dvbts] for arbitrary scheme is equivalent to that specified in [dvbts] for arbitrary
packet flows. packet flows.
7.2. Formats and Codes 7.2. Formats and Codes
7.2.1. FEC Framework Configuration Information 7.2.1. FEC Framework Configuration Information
7.2.1.1. FEC Scheme ID 7.2.1.1. FEC Scheme ID
The value of the FEC Scheme ID for the fully-specified FEC scheme The value of the FEC Scheme ID for the fully-specified FEC scheme
defined in this section is XXX when [RFC5053] is used and YYY when defined in this section is XXX when [RFC5053] is used and YYY when
[I-D.ietf-rmt-bb-fec-raptorq] is used, as assigned by IANA. [RFC6330] is used, as assigned by IANA.
7.2.1.2. FEC Scheme specific information 7.2.1.2. FEC Scheme specific information
See . (Section 6.2.1.2) See . (Section 6.2.1.2)
7.2.2. Source FEC Payload ID 7.2.2. Source FEC Payload ID
See . (Section 6.2.2) See . (Section 6.2.2)
7.2.3. Repair FEC Payload ID 7.2.3. Repair FEC Payload ID
skipping to change at page 13, line 42 skipping to change at page 14, line 41
See Section 6.3.1 See Section 6.3.1
7.3.2. Repair packet construction 7.3.2. Repair packet construction
The number of repair symbols contained within a repair packet is The number of repair symbols contained within a repair packet is
computed from the packet length. The ESI value placed into a repair computed from the packet length. The ESI value placed into a repair
packet is calculated as X + MSBL - SBL, where X would be the ESI packet is calculated as X + MSBL - SBL, where X would be the ESI
value of the repair packet if the ESI were calculated as specified in value of the repair packet if the ESI were calculated as specified in
Section 5.3.2 of [RFC5053] when Raptor as defined in[RFC5053] is used Section 5.3.2 of [RFC5053] when Raptor as defined in[RFC5053] is used
and as specified in Section 4.4.2 of [I-D.ietf-rmt-bb-fec-raptorq] and as specified in Section 4.4.2 of [RFC6330] when RaptorQ as
when RaptorQ as defined in [I-D.ietf-rmt-bb-fec-raptorq] is used, defined in [RFC6330] is used, where K=SBL. The value of SBL SHALL be
where K=SBL. The value of SBL SHALL be at most the value of MSBL. at most the value of MSBL.
7.4. FEC Code Specification 7.4. FEC Code Specification
The Raptor FEC encoder defined in [RFC5053] or The Raptor FEC encoder defined in [RFC5053] or [RFC6330] SHALL be
[I-D.ietf-rmt-bb-fec-raptorq] SHALL be used. The source symbols used. The source symbols passed to the Raptor FEC encoder SHALL
passed to the Raptor FEC encoder SHALL consist of the source symbols consist of the source symbols constructed according to Section 6.3.1
constructed according to Section 6.3.1 extended with zero or more extended with zero or more padding symbols such that the total number
padding symbols such that the total number of symbols in the source of symbols in the source block is equal to the Maximum Source Block
block is equal to the Maximum Source Block Length signaled in the FEC Length signaled in the FEC Scheme Specific Information. Thus the
Scheme Specific Information. Thus the value of the parameter K used value of the parameter K used by the FEC encoded is equal to the
by the FEC encoded is equal to the Maximum Source Block Length for Maximum Source Block Length for all blocks of the stream. Padding
all blocks of the stream. Padding symbols shall consist entirely of symbols shall consist entirely of octets set to the value zero. The
bytes set to the value zero. The symbol size, T, to be used for symbol size, T, to be used for source block construction and the
source block construction and the repair symbol construction is equal repair symbol construction is equal to the Encoding Symbol Size
to the Encoding Symbol Size signaled in the FEC Scheme Specific signaled in the FEC Scheme Specific Information.
Information.
When [RFC5053] is used, the parameter T SHALL be set such that the When [RFC5053] is used, the parameter T SHALL be set such that the
number of source symbols in any source block is at most 8192. The number of source symbols in any source block is at most 8192. The
Maximum Source Block Length parameter - and hence the number of Maximum Source Block Length parameter - and hence the number of
symbols used in the FEC Encoding and Decoding operations - SHALL be symbols used in the FEC Encoding and Decoding operations - SHALL be
set to one of the following values: set to one of the following values:
101, 120, 148, 164, 212, 237, 297, 371, 450, 560, 680, 842, 1031, 101, 120, 148, 164, 212, 237, 297, 371, 450, 560, 680, 842, 1031,
1139, 1281 1139, 1281
When [I-D.ietf-rmt-bb-fec-raptorq] is used, the parameter T SHALL be When [RFC6330] is used, the parameter T SHALL be set such that the
set such that the number of source symbols in any source block is number of source symbols in any source block is less than 56403. The
less than 56403. The Maximum Source Block Length parameter SHALL be Maximum Source Block Length parameter SHALL be set to one of the
set to one of the supported values for K' defined in Section 5.6 of supported values for K' defined in Section 5.6 of [RFC6330].
[I-D.ietf-rmt-bb-fec-raptorq].
8. Raptor FEC Scheme for a single sequenced flow 8. Raptor FEC Scheme for a single sequenced flow
8.1. Formats and codes 8.1. Formats and codes
8.1.1. FEC Framework Configuration Information 8.1.1. FEC Framework Configuration Information
8.1.1.1. FEC Scheme ID 8.1.1.1. FEC Scheme ID
The value of the FEC Scheme ID for the fully-specified FEC scheme The value of the FEC Scheme ID for the fully-specified FEC scheme
defined in this section is XXX when [RFC5053] is used and YYY when defined in this section is XXX when [RFC5053] is used and YYY when
[I-D.ietf-rmt-bb-fec-raptorq] is used, as assigned by IANA. [RFC6330] is used, as assigned by IANA.
8.1.1.2. Scheme-specific elements 8.1.1.2. Scheme-specific elements
See Section 6.2.1.2 See Section 6.2.1.2
8.1.2. Source FEC Payload ID 8.1.2. Source FEC Payload ID
The Source FEC Payload ID field is not used by this FEC Scheme. The Source FEC Payload ID field is not used by this FEC Scheme.
Source packets are not modified by this FEC Scheme. Source packets are not modified by this FEC Scheme.
skipping to change at page 16, line 44 skipping to change at page 17, line 37
8.2.2. Derivation of Source FEC Packet Identification Information 8.2.2. Derivation of Source FEC Packet Identification Information
The Source FEC Packet Identification Information for a source packet The Source FEC Packet Identification Information for a source packet
is derived from the sequence number of the packet and information is derived from the sequence number of the packet and information
received in any repair FEC packet belonging to this Source Block. received in any repair FEC packet belonging to this Source Block.
Source blocks are identified by the sequence number of the first Source blocks are identified by the sequence number of the first
source packet in the block. This information is signaled in all source packet in the block. This information is signaled in all
repair FEC packets associated with the source block in the Initial repair FEC packets associated with the source block in the Initial
Sequence Number field. Sequence Number field.
The length of the Source Packet Information (in bytes) for source The length of the Source Packet Information (in octets) for source
packets within a source block is equal to length of the payload packets within a source block is equal to length of the payload
containing encoding symbols of the repair packets (i.e. not including containing encoding symbols of the repair packets (i.e. not including
the Repair FEC Payload ID) for that block, which MUST be the same for the Repair FEC Payload ID) for that block, which MUST be the same for
all repair packets. The Application Data Unit Information Length all repair packets. The Application Data Unit Information Length
(ADUIL) in symbols is equal to this length divided by the Encoding (ADUIL) in symbols is equal to this length divided by the Encoding
Symbol Size (which is signaled in the FEC Framework Configuration Symbol Size (which is signaled in the FEC Framework Configuration
Information). The set of source packets which are included in the Information). The set of source packets which are included in the
source block is determined from the Initial Sequence Number (ISN) and source block is determined from the Initial Sequence Number (ISN) and
Source Block Length (SBL) as follows: Source Block Length (SBL) as follows:
skipping to change at page 17, line 49 skipping to change at page 18, line 43
See Section 7.3.2 See Section 7.3.2
8.2.4. Procedures for RTP source flows 8.2.4. Procedures for RTP source flows
In the specific case of RTP source packet flows, then the RTP In the specific case of RTP source packet flows, then the RTP
Sequence Number field SHALL be used as the sequence number in the Sequence Number field SHALL be used as the sequence number in the
procedures described above. The length indication included in the procedures described above. The length indication included in the
Application Data Unit Information SHALL be the RTP payload length Application Data Unit Information SHALL be the RTP payload length
plus the length of the CSRCs, if any, the RTP Header Extension, if plus the length of the CSRCs, if any, the RTP Header Extension, if
present, and the RTP padding bytes, if any. Note that this length is present, and the RTP padding octets, if any. Note that this length
always equal to the UDP payload length of the packet minus 12. is always equal to the UDP payload length of the packet minus 12.
8.3. FEC Code Specification 8.3. FEC Code Specification
See Section 7.4 See Section 7.4
9. Security Considerations 9. Security Considerations
For the general security considerations related to the use of FEC, For the general security considerations related to the use of FEC,
refer to [I-D.ietf-fecframe-framework]. No security considerations refer to [I-D.ietf-fecframe-framework]. No security considerations
specific to this document have been identified. specific to this document have been identified.
skipping to change at page 19, line 17 skipping to change at page 20, line 10
general guidelines on IANA considerations as they apply to this general guidelines on IANA considerations as they apply to this
document, refer to [I-D.ietf-fecframe-framework]. document, refer to [I-D.ietf-fecframe-framework].
This document registers three values in the FEC Framework (FECFRAME) This document registers three values in the FEC Framework (FECFRAME)
FEC Encoding IDs registry as follows: FEC Encoding IDs registry as follows:
o 1 for the Raptor FEC Scheme for Arbitrary Packet Flows (Section 6 o 1 for the Raptor FEC Scheme for Arbitrary Packet Flows (Section 6
using Raptor [RFC5053]. using Raptor [RFC5053].
o 2 for the Raptor FEC Scheme for Arbitrary Packet Flows (Section 6 o 2 for the Raptor FEC Scheme for Arbitrary Packet Flows (Section 6
using RaptorQ [I-D.ietf-rmt-bb-fec-raptorq]. using RaptorQ [RFC6330].
o 3 for the Optimised Raptor FEC Scheme for Arbitrary Packet Flows o 3 for the Optimised Raptor FEC Scheme for Arbitrary Packet Flows
(Section 7) using Raptor [RFC5053]. (Section 7) using Raptor [RFC5053].
o 4 for the Optimised Raptor FEC Scheme for Arbitrary Packet Flows o 4 for the Optimised Raptor FEC Scheme for Arbitrary Packet Flows
(Section 7) using RaptorQ [I-D.ietf-rmt-bb-fec-raptorq]. (Section 7) using RaptorQ [RFC6330].
o 5 for the Raptor FEC Scheme for a single sequence flow (Section 8) o 5 for the Raptor FEC Scheme for a single sequence flow (Section 8)
using Raptor [RFC5053]. using Raptor [RFC5053].
o 6 for the Raptor FEC Scheme for a single sequence flow (Section 8) o 6 for the Raptor FEC Scheme for a single sequence flow (Section 8)
using RaptorQ [I-D.ietf-rmt-bb-fec-raptorq]. using RaptorQ [RFC6330].
13. Acknowledgements 13. Acknowledgements
Thanks are due to Ali C. Begen for thorough review of earlier draft Thanks are due to Ali C. Begen for thorough review of earlier draft
versions of this document. versions of this document.
14. References 14. References
14.1. Normative References 14.1. Normative References
[I-D.ietf-fecframe-framework] [I-D.ietf-fecframe-framework]
Watson, M., "Forward Error Correction (FEC) Framework", Watson, M., Begen, A., and V. Roca, "Forward Error
draft-ietf-fecframe-framework-10 (work in progress), Correction (FEC) Framework",
September 2010. draft-ietf-fecframe-framework-15 (work in progress),
June 2011.
[RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T. Stockhammer, [RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T. Stockhammer,
"Raptor Forward Error Correction Scheme for Object "Raptor Forward Error Correction Scheme for Object
Delivery", RFC 5053, October 2007. Delivery", RFC 5053, October 2007.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[I-D.ietf-rmt-bb-fec-raptorq] [RFC6330] Luby, M., Shokrollahi, A., Watson, M., Stockhammer, T.,
Luby, M., Shokrollahi, A., Watson, M., Stockhammer, T.,
and L. Minder, "RaptorQ Forward Error Correction Scheme and L. Minder, "RaptorQ Forward Error Correction Scheme
for Object Delivery", draft-ietf-rmt-bb-fec-raptorq-04 for Object Delivery", RFC 6330, August 2011.
(work in progress), August 2010.
14.2. Informative References 14.2. Informative References
[RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error [RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error
Correction (FEC) Building Block", RFC 5052, August 2007. Correction (FEC) Building Block", RFC 5052, August 2007.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006. Description Protocol", RFC 4566, July 2006.
[I-D.ietf-fecframe-sdp-elements] [I-D.ietf-fecframe-sdp-elements]
 End of changes. 35 change blocks. 
112 lines changed or deleted 118 lines changed or added

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