draft-ietf-fecframe-ldpc-04.txt   rfc6816.txt 
FecFrame V. Roca Internet Engineering Task Force (IETF) V. Roca
Internet-Draft INRIA Request for Comments: 6816 INRIA
Intended status: Standards Track M. Cunche Category: Standards Track M. Cunche
Expires: April 12, 2013 INSA-Lyon/INRIA ISSN: 2070-1721 INSA-Lyon/INRIA
J. Lacan J. Lacan
ISAE, Univ. of Toulouse ISAE, Univ. of Toulouse
October 9, 2012 December 2012
Simple LDPC-Staircase Forward Error Correction (FEC) Scheme for FECFRAME Simple Low-Density Parity Check (LDPC) Staircase
draft-ietf-fecframe-ldpc-04 Forward Error Correction (FEC) Scheme for FECFRAME
Abstract Abstract
This document describes a fully-specified simple FEC scheme for LDPC- This document describes a fully specified simple Forward Error
Staircase codes that can be used to protect media streams along the Correction (FEC) scheme for Low-Density Parity Check (LDPC) Staircase
lines defined by the FECFRAME framework. These codes have many codes that can be used to protect media streams along the lines
interesting properties: they are systematic codes, they perform close defined by FECFRAME. These codes have many interesting properties:
to ideal codes in many use-cases and they also feature very high they are systematic codes, they perform close to ideal codes in many
encoding and decoding throughputs. LDPC-Staircase codes are use-cases, and they also feature very high encoding and decoding
therefore a good solution to protect a single high bitrate source throughputs. LDPC-Staircase codes are therefore a good solution to
flow, or to protect globally several mid-rate flows within a single protect a single high bitrate source flow or to protect globally
FECFRAME instance. They are also a good solution whenever the several mid-rate flows within a single FECFRAME instance. They are
processing load of a software encoder or decoder must be kept to a also a good solution whenever the processing load of a software
minimum. encoder or decoder must be kept to a minimum.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
This Internet-Draft will expire on April 12, 2013. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6816.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 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.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction ....................................................4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology .....................................................5
3. Definitions Notations and Abbreviations . . . . . . . . . . . 4 3. Definitions Notations and Abbreviations .........................5
3.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Definitions ................................................5
3.2. Notations . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Notations ..................................................7
3.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 7 3.3. Abbreviations ..............................................8
4. Common Procedures Related to the ADU Block and Source 4. Common Procedures Related to the ADU Block and Source
Block Creation . . . . . . . . . . . . . . . . . . . . . . . . 7 Block Creation ..................................................8
4.1. Restrictions . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. Restrictions ...............................................9
4.2. ADU Block Creation . . . . . . . . . . . . . . . . . . . . 8 4.2. ADU Block Creation .........................................9
4.3. Source Block Creation . . . . . . . . . . . . . . . . . . 9 4.3. Source Block Creation .....................................11
5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows . . . . . . 11 5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows ..............13
5.1. Formats and Codes . . . . . . . . . . . . . . . . . . . . 11 5.1. Formats and Codes .........................................13
5.1.1. FEC Framework Configuration Information . . . . . . . 11 5.1.1. FEC Framework Configuration Information ............13
5.1.2. Explicit Source FEC Payload ID . . . . . . . . . . . . 13 5.1.2. Explicit Source FEC Payload ID .....................14
5.1.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 14 5.1.3. Repair FEC Payload ID ..............................16
5.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2. Procedures ................................................17
5.3. FEC Code Specification . . . . . . . . . . . . . . . . . . 15 5.3. FEC Code Specification ....................................17
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 6. Security Considerations ........................................17
6.1. Attacks Against the Data Flow . . . . . . . . . . . . . . 16 6.1. Attacks against the Data Flow .............................17
6.1.1. Access to Confidential Content . . . . . . . . . . . . 16 6.1.1. Access to Confidential Content .....................17
6.1.2. Content Corruption . . . . . . . . . . . . . . . . . . 16 6.1.2. Content Corruption .................................18
6.2. Attacks Against the FEC Parameters . . . . . . . . . . . . 16 6.2. Attacks against the FEC Parameters ........................18
6.3. When Several Source Flows are to be Protected Together . . 17 6.3. When Several Source Flows Are to Be Protected Together ....19
6.4. Baseline Secure FEC Framework Operation . . . . . . . . . 17 6.4. Baseline Secure FEC Framework Operation ...................19
7. Operations and Management Considerations . . . . . . . . . . . 17 7. Operations and Management Considerations .......................19
7.1. Operational Recommendations . . . . . . . . . . . . . . . 18 7.1. Operational Recommendations ...............................19
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 8. IANA Considerations ............................................21
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 9. Acknowledgments ................................................21
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 10. References ....................................................21
10.1. Normative References . . . . . . . . . . . . . . . . . . . 19 10.1. Normative References .....................................21
10.2. Informative References . . . . . . . . . . . . . . . . . . 20 10.2. Informative References ...................................22
1. Introduction 1. Introduction
The use of Forward Error Correction (FEC) codes is a classic solution The use of Forward Error Correction (FEC) codes is a classic solution
to improve the reliability of unicast, multicast and broadcast to improve the reliability of unicast, multicast, and broadcast
Content Delivery Protocols (CDP) and applications [RFC3453]. The Content Delivery Protocols (CDPs) and applications [RFC3453].
[RFC6363] document describes a generic framework to use FEC schemes "Forward Error Correction (FEC) Framework" [RFC6363] describes a
with media delivery applications, and for instance with real-time generic framework to use FEC schemes with media delivery applications
streaming media applications based on the RTP real-time protocol. and, for instance, with real-time streaming media applications based
Similarly the [RFC5052] document describes a generic framework to use on the RTP real-time protocol. Similarly, "Forward Error Correction
(FEC) Building Block" [RFC5052] describes a generic framework to use
FEC schemes with objects (e.g., files) delivery applications based on FEC schemes with objects (e.g., files) delivery applications based on
the Asynchronous Layered Coding (ALC) [RFC5775] and NACK-Oriented either the Asynchronous Layered Coding (ALC) [RFC5775] or the NACK-
Reliable Multicast (NORM) [RFC5740] reliable multicast transport Oriented Reliable Multicast (NORM) [RFC5740] protocols.
protocols.
More specifically, the [RFC5053] (Raptor) and [RFC5170] (LDPC- More specifically, the [RFC5053] (Raptor) and [RFC5170] (LDPC-
Staircase and LDPC-Triangle) FEC schemes introduce erasure codes Staircase and LDPC-Triangle) FEC schemes introduce erasure codes
based on sparse parity check matrices for object delivery protocols based on sparse parity check matrices for object delivery protocols
like ALC and NORM. Similarly, the [RFC5510] document introduces like ALC and NORM. Similarly, "Reed-Solomon Forward Error Correction
Reed-Solomon codes based on Vandermonde matrices for the same object (FEC) Schemes" [RFC5510] introduces Reed-Solomon codes based on
delivery protocols. All these codes are systematic codes, meaning Vandermonde matrices for the same object delivery protocols. All
that the k source symbols are part of the n encoding symbols. these codes are systematic codes, meaning that the k source symbols
Additionally, the Reed-Solomon FEC codes belong to the class of are part of the n encoding symbols. Additionally, the Reed-Solomon
Maximum Distance Separable (MDS) codes that are optimal in terms of FEC codes belong to the class of Maximum Distance Separable (MDS)
erasure recovery capabilities. It means that a receiver can recover codes that are optimal in terms of erasure recovery capabilities. It
the k source symbols from any set of exactly k encoding symbols out means that a receiver can recover the k source symbols from any set
of n. This is not the case with either Raptor or LDPC-Staircase of exactly k encoding symbols out of n. This is not the case with
codes, and these codes require a certain number of encoding symbols either Raptor or LDPC-Staircase codes, and these codes require a
in excess to k. However, this number is small in practice when an certain number of encoding symbols in excess to k. However, this
appropriate decoding scheme is used at the receiver [Cunche08]. number is small in practice when an appropriate decoding scheme is
Another key difference is the high encoding/decoding complexity of used at the receiver [Cunche08]. Another key difference is the high
Reed-Solomon codecs compared to Raptor or LDPC-Staircase codes. A encoding/decoding complexity of Reed-Solomon codecs compared to
difference of one or more orders of magnitude or more in terms of Raptor or LDPC-Staircase codes. A difference of one or more orders
encoding/decoding speed exists between the Reed-Solomon and LDPC- of magnitude in terms of encoding/decoding speed exists between the
Staircase software codecs [Cunche08][CunchePHD10]. Finally, Raptor Reed-Solomon and LDPC-Staircase software codecs
and LDPC-Staircase codes are large block FEC codes, in the sense of [Cunche08][CunchePHD10]. Finally, Raptor and LDPC-Staircase codes
[RFC3453], since they can efficiently deal with a large number of are large block FEC codes, in the sense of [RFC3453], since they can
source symbols. efficiently deal with a large number of source symbols.
The present document focuses on LDPC-Staircase codes, that belong to The present document focuses on LDPC-Staircase codes that belong to
the well-known class of "Low Density Parity Check" codes. Because of the well-known class of "Low Density Parity Check" codes. Because of
their key features, these codes are a good solution in many their key features, these codes are a good solution in many
situations, as detailed in Section 7. situations, as detailed in Section 7.
This documents inherits from [RFC5170] the specifications of the core This document inherits from [RFC5170], Section 6 "Full Specification
LDPC-Staircase codes. Therefore this document specifies only the of the LDPC-Staircase Scheme", the specifications of the core LDPC-
information specific to the FECFRAME context and refers to [RFC5170] Staircase codes, and from Section 5.7 "Pseudo-Random Number
for the core specifications of the codes. To that purpose, the Generator", the specifications of the PRNG used by these codes.
present document introduces: Therefore, this document specifies only the information specific to
the FECFRAME context and refers to [RFC5170] for the core
specifications of the codes. To that purpose, the present document
introduces:
o the Fully-Specified FEC Scheme with FEC Encoding ID XXX that o the Fully Specified FEC Scheme with FEC Encoding ID 7 that
specifies a simple way of using LDPC-Staircase codes in order to specifies a simple way of using LDPC-Staircase codes in order to
protect arbitrary Application Data Unit (ADU) flows. protect arbitrary Application Data Unit (ADU) flows.
Therefore Sections 4 and 5 (except Section 5.7, see above) of
[RFC5170], that define [RFC5052] specific Formats and Procedures, are
not considered and are replaced by FECFRAME specific Formats and
Procedures.
Finally, publicly available reference implementations of these codes Finally, publicly available reference implementations of these codes
are available [LDPC-codec] [LDPC-codec-OpenFEC]. are available [LDPC-codec] [LDPC-codec-OpenFEC].
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
3. Definitions Notations and Abbreviations 3. Definitions Notations and Abbreviations
3.1. Definitions 3.1. Definitions
This document uses the following terms and definitions. Some of them This document uses the following terms and definitions. Those in the
are FEC scheme specific and are in line with [RFC5052]: list below are FEC scheme specific and are in line with [RFC5052]:
Source symbol: unit of data used during the encoding process. In Source symbol: unit of data used during the encoding process. In
this specification, there is always one source symbol per ADU. this specification, there is always one source symbol per ADU.
Encoding symbol: unit of data generated by the encoding process. Encoding symbol: unit of data generated by the encoding process.
With systematic codes, source symbols are part of the encoding With systematic codes, source symbols are part of the encoding
symbols. symbols.
Repair symbol: encoding symbol that is not a source symbol. Repair symbol: encoding symbol that is not a source symbol.
skipping to change at page 4, line 47 skipping to change at page 6, line 8
to 1 indicates that a small number of repair symbols have been to 1 indicates that a small number of repair symbols have been
produced during the encoding process. produced during the encoding process.
Systematic code: FEC code in which the source symbols are part of Systematic code: FEC code in which the source symbols are part of
the encoding symbols. The LDPC-Staircase codes introduced in this the encoding symbols. The LDPC-Staircase codes introduced in this
document are systematic. document are systematic.
Source block: a block of k source symbols that are considered Source block: a block of k source symbols that are considered
together for the encoding. together for the encoding.
Packet Erasure Channel: a communication path where packets are Packet erasure channel: a communication path where packets are
either dropped (e.g., by a congested router, or because the number either dropped (e.g., by a congested router, or because the number
of transmission errors exceeds the correction capabilities of the of transmission errors exceeds the correction capabilities of the
physical layer codes) or received. When a packet is received, it physical layer codes) or received. When a packet is received, it
is assumed that this packet is not corrupted. is assumed that this packet is not corrupted.
Some of them are FECFRAME framework specific and are in line with The following are FECFRAME specific and are in line with [RFC6363]:
[RFC6363]:
Application Data Unit (ADU): the unit of source data provided as Application Data Unit (ADU): the unit of source data provided as
payload to the transport layer. Depending on the use-case, an ADU payload to the transport layer. Depending on the use-case, an ADU
may use an RTP encapsulation. may use an RTP encapsulation.
(Source) ADU Flow: a sequence of ADUs associated with a transport- (Source) ADU Flow: a sequence of ADUs associated with a transport-
layer flow identifier (such as the standard 5-tuple {Source IP layer flow identifier (such as the standard 5-tuple {Source IP
address, source port, destination IP address, destination port, address, source port, destination IP address, destination port,
transport protocol}). Depending on the use-case, several ADU transport protocol}). Depending on the use-case, several ADU
flows may be protected together by the FECFRAME framework. flows may be protected together by FECFRAME.
ADU Block: a set of ADUs that are considered together by the ADU Block: a set of ADUs that are considered together by the
FECFRAME instance for the purpose of the FEC scheme. Along with FECFRAME instance for the purpose of the FEC scheme. Along with
the flow ID (F[]), length (L[]), and padding (Pad[]) fields, they the flow ID (F[]), length (L[]), and padding (Pad[]) fields, they
form the set of source symbols over which FEC encoding will be form the set of source symbols over which FEC encoding will be
performed. performed.
ADU Information (ADUI): a unit of data constituted by the ADU and ADU Information (ADUI): a unit of data constituted by the ADU and
the associated Flow ID, Length and Padding fields (Section 4.3). the associated Flow ID, Length, and Padding fields (Section 4.3).
This is the unit of data that is used as source symbol. This is the unit of data that is used as source symbol.
FEC Framework Configuration Information (FFCI): information which FEC Framework Configuration Information (FFCI): information that
controls the operation of the FEC Framework. The FFCI enables the controls the operation of the FEC Framework. The FFCI enables the
synchronization of the FECFRAME sender and receiver instances. synchronization of the FECFRAME sender and receiver instances.
FEC Source Packet: at a sender (respectively, at a receiver) a FEC Source Packet: at a sender (respectively, at a receiver) a
payload submitted to (respectively, received from) the transport payload submitted to (respectively, received from) the transport
protocol containing an ADU along with an optional Explicit Source protocol containing an ADU along with an optional Explicit Source
FEC Payload ID. FEC Payload ID.
FEC Repair Packet: at a sender (respectively, at a receiver) a FEC Repair Packet: at a sender (respectively, at a receiver) a
payload submitted to (respectively, received from) the transport payload submitted to (respectively, received from) the transport
skipping to change at page 6, line 31 skipping to change at page 7, line 31
| Repair FEC Payload IDs | Repair FEC Payload IDs
| Repair symbols | Repair symbols
| |
|(7) FEC source and repair packets |(7) FEC source and repair packets
v v
+----------------------+ +----------------------+
| Transport Layer | | Transport Layer |
| (e.g., UDP) | | (e.g., UDP) |
+----------------------+ +----------------------+
Figure 1: Terminology used in this document (sender). Figure 1: Terminology Used in This Document (Sender)
3.2. Notations 3.2. Notations
This document uses the following notations: Some of them are FEC This document uses the following notations. Those in the list below
scheme specific: are FEC scheme specific:
k denotes the number of source symbols in a source block. k denotes the number of source symbols in a source block.
max_k denotes the maximum number of source symbols for any source max_k denotes the maximum number of source symbols for any source
block. block.
n denotes the number of encoding symbols generated for a source n denotes the number of encoding symbols generated for a source
block. block.
E denotes the encoding symbol length in bytes. E denotes the encoding symbol length in bytes.
skipping to change at page 7, line 15 skipping to change at page 8, line 15
N1 denotes the target number of "1s" per column in the left side N1 denotes the target number of "1s" per column in the left side
of the parity check matrix. of the parity check matrix.
N1m3 denotes the value N1 - 3. N1m3 denotes the value N1 - 3.
G G denotes the number of encoding symbols per group, i.e., the G G denotes the number of encoding symbols per group, i.e., the
number of symbols sent in the same packet. number of symbols sent in the same packet.
a^^b denotes a raised to the power b. a^^b denotes a raised to the power b.
Some of them are FECFRAME framework specific: The following are FECFRAME specific:
B denotes the number of ADUs per ADU block. B denotes the number of ADUs per ADU block.
max_B denotes the maximum number of ADUs for any ADU block. max_B denotes the maximum number of ADUs for any ADU block.
3.3. Abbreviations 3.3. Abbreviations
This document uses the following abbreviations: This document uses the following abbreviations:
ADU stands for Application Data Unit. ADU Application Data Unit
ESI stands for Encoding Symbol ID. ESI Encoding Symbol ID
FEC stands for Forward Error (or Erasure) Correction code. FEC Forward Error (or Erasure) Correction
FFCI stands for FEC Framework Configuration Information. FFCI FEC Framework Configuration Information
FSSI stands for FEC Scheme Specific Information. FSSI FEC Scheme-Specific Information
LDPC stands for Low Density Parity Check. LDPC Low-Density Parity Check
MDS stands for Maximum Distance Separable code. MDS Maximum Distance Separable
SDP stands for Session Description Protocol. PRNG Pseudo-Random Number Generator
SDP Session Description Protocol
4. Common Procedures Related to the ADU Block and Source Block Creation 4. Common Procedures Related to the ADU Block and Source Block Creation
This section introduces the procedures that are used during the ADU This section introduces the procedures that are used during the ADU
block and the related source block creation, for the FEC scheme block and related source block creation, for the FEC scheme
considered. considered.
4.1. Restrictions 4.1. Restrictions
This specification has the following restrictions: This specification has the following restrictions:
o there MUST be exactly one source symbol per ADUI, and therefore o there MUST be exactly one source symbol per ADUI, and therefore
per ADU; per ADU;
o there MUST be exactly one repair symbol per FEC Repair Packet; o there MUST be exactly one repair symbol per FEC repair packet;
o there MUST be exactly one source block per ADU block; o there MUST be exactly one source block per ADU block;
o the use of the LDPC-Staircase scheme is such that there MUST be o the use of the LDPC-Staircase scheme is such that there MUST be
exactly one encoding symbol per group, i.e., G MUST be equal to 1 exactly one encoding symbol per group; i.e., G MUST be equal to 1
[RFC5170]; [RFC5170];
4.2. ADU Block Creation 4.2. ADU Block Creation
Two kinds of limitations exist that impact the ADU block creation: Two kinds of limitations exist that impact the ADU block creation:
o at the FEC Scheme level: the FEC Scheme and the FEC codec have o at the FEC scheme level: the FEC scheme and the FEC codec have
limitations that define a maximum source block size; limitations that define a maximum source block size;
o at the FECFRAME instance level: the target use-case can have real- o at the FECFRAME instance level: the target use-case can have real-
time constraints that can/will define a maximum ADU block size; time constraints that can/will define a maximum ADU block size;
Note that terminology "maximum source block size" and "maximum ADU Note that the use of the terminology "maximum source block size" and
block size" depends on the point of view that is adopted (FEC Scheme "maximum ADU block size" depends on the point of view that is adopted
versus FECFRAME instance). However, in this document, both refer to (FEC scheme versus FECFRAME instance). However, in this document,
the same value since Section 4.1 requires there is exactly one source both refer to the same value since Section 4.1 requires there be
symbol per ADU. We now detail each of these aspects. exactly one source symbol per ADU. We now detail each of these
aspects.
The maximum source block size in symbols, max_k, depends on several The maximum source block size in symbols, max_k, depends on several
parameters: the code rate (CR), the Encoding Symbol ID (ESI) field parameters: the code rate (CR) and the Encoding Symbol ID (ESI) field
length in the Explicit Source/Repair FEC Payload ID (16 bits), as length in the Explicit Source/Repair FEC Payload ID (16 bits), as
well as possible internal codec limitations. More specifically, well as possible internal codec limitations. More specifically,
max_k cannot be larger than the following values, derived from the max_k cannot be larger than the following values, derived from the
ESI field size limitation, for a given code rate: ESI field size limitation, for a given code rate:
max1_k = 2^^(16 - ceil(Log2(1/CR))) max1_k = 2^^(16 - ceil(Log2(1/CR)))
Some common max1_k values are: Some common max1_k values are:
o CR == 1 (no repair symbol): max1_k = 2^^16 = 65536 symbols o CR == 1 (no repair symbol): max1_k = 2^^16 = 65536 symbols
skipping to change at page 9, line 13 skipping to change at page 10, line 19
Then, max_k is given by: Then, max_k is given by:
max_k = min(max1_k, max2_k) max_k = min(max1_k, max2_k)
Note that this calculation is only required at the encoder (sender), Note that this calculation is only required at the encoder (sender),
since the actual k parameter (k <= max_k) is communicated to the since the actual k parameter (k <= max_k) is communicated to the
decoder (receiver) through the Explicit Source/Repair FEC Payload ID. decoder (receiver) through the Explicit Source/Repair FEC Payload ID.
The source ADU flows can have real-time constraints. When there are The source ADU flows can have real-time constraints. When there are
multiple flows, with different real-time constraints, let us consider multiple flows, with different real-time constraints, let us consider
the most stringent constraints (see [RFC6363], section 10.2, item 6 the most stringent constraints (see [RFC6363], Section 10.2, item 6,
for recommendations when several flows are globally protected). In for recommendations when several flows are globally protected). In
that case the maximum number of ADUs of an ADU block must not exceed that case the maximum number of ADUs of an ADU block must not exceed
a certain threshold since it directly impacts the decoding delay. a certain threshold since it directly impacts the decoding delay.
The larger the ADU block size, the longer a decoder may have to wait The larger the ADU block size, the longer a decoder may have to wait
until it has received a sufficient number of encoding symbols for until it has received a sufficient number of encoding symbols for
decoding to succeed, and therefore the larger the decoding delay. decoding to succeed, and therefore the larger the decoding delay.
When the target use-case is known, these real-time constraints result When the target use-case is known, these real-time constraints result
in an upper bound to the ADU block size, max_rt. in an upper bound to the ADU block size, max_rt.
For instance, if the use-case specifies a maximum decoding latency, For instance, if the use-case specifies a maximum decoding latency,
skipping to change at page 9, line 44 skipping to change at page 11, line 7
If we take into account all these constraints, we find: If we take into account all these constraints, we find:
max_B = min(max_k, max_rt) max_B = min(max_k, max_rt)
This max_B parameter is an upper bound to the number of ADUs that can This max_B parameter is an upper bound to the number of ADUs that can
constitute an ADU block. constitute an ADU block.
4.3. Source Block Creation 4.3. Source Block Creation
In its most general form the FECFRAME framework and the LDPC- In its most general form, FECFRAME and the LDPC-Staircase FEC Scheme
Staircase FEC scheme are meant to protect a set of independent flows. are meant to protect a set of independent flows. Since the flows
Since the flows have no relationship to one another, the ADU size of have no relationship to one another, the ADU size of each flow can
each flow can potentially vary significantly. Even in the special potentially vary significantly. Even in the special case of a single
case of a single flow, the ADU sizes can largely vary (e.g., the flow, the ADU sizes can largely vary (e.g., the various frames of a
various frames of a "Group of Pictures (GOP) of an H.264 flow). This Group of Pictures (GOP) of an H.264 flow). This diversity must be
diversity must be addressed since the LDPC-Staircase FEC scheme addressed since the LDPC-Staircase FEC Scheme requires a constant
requires a constant encoding symbol size (E parameter) per source encoding symbol size (E parameter) per source block. Since this
block. Since this specification requires that there is only one specification requires that there be only one source symbol per ADU,
source symbol per ADU, E must be large enough to contain all the ADUs E must be large enough to contain all the ADUs of an ADU block along
of an ADU block along with their prepended 3 bytes (see below). with their prepended 3 bytes (see below).
In situations where E is determined per source block (default, In situations where E is determined per source block (default,
specified by the FFCI/FSSI with S = 0, Section 5.1.1.2), E is equal specified by the FFCI/FSSI with S = 0, Section 5.1.1.2), E is equal
to the size of the largest ADU of this source block plus three (for to the size of the largest ADU of this source block plus three (for
the prepended 3 bytes, see below). In this case, upon receiving the the prepended 3 bytes, see below). In this case, upon receiving the
first FEC Repair Packet for this source block, since this packet MUST first FEC repair packet for this source block, since this packet MUST
contain a single repair symbol (Section 5.1.3), a receiver determines contain a single repair symbol (Section 5.1.3), a receiver determines
the E parameter used for this source block. the E parameter used for this source block.
In situations where E is fixed (specified by the FFCI/FSSI with S = In situations where E is fixed (specified by the FFCI/FSSI with S =
1, Section 5.1.1.2), then E must be greater or equal to the size of 1, Section 5.1.1.2), then E must be greater or equal to the size of
the largest ADU of this source block plus three (for the prepended 3 the largest ADU of this source block plus three (for the prepended 3
bytes, see below). If this is not the case, an error is returned. bytes, see below). If this is not the case, an error is returned.
How to handle this error is use-case specific (e.g., a larger E How to handle this error is use-case specific (e.g., a larger E
parameter may be communicated to the receivers in an updated FFCI parameter may be communicated to the receivers in an updated FFCI
message, using an appropriate mechanism) and is not considered by message, using an appropriate mechanism) and is not considered by
this specification. this specification.
The ADU block is always encoded as a single source block. There are The ADU block is always encoded as a single source block. There are
a total of B <= max_B ADUs in this ADU block. For the ADU i, with 0 a total of B <= max_B ADUs in this ADU block. For the ADU i, with 0
<= i <= B-1, 3 bytes are prepended (Figure 2): <= i <= B-1, 3 bytes are prepended (Figure 2):
o The first byte, F[i] (Flow ID), contains the integer identifier o The first byte, F[i] (Flow ID), contains the integer identifier
associated to the source ADU flow to which this ADU belongs to. associated to the source ADU flow to which this ADU belongs. It
It is assumed that a single byte is sufficient, or said is assumed that a single byte is sufficient, or said differently,
differently, that no more than 256 flows will be protected by a that no more than 256 flows will be protected by a single instance
single instance of the FECFRAME framework. of FECFRAME.
o The following two bytes, L[i] (Length), contain the length of this o The following two bytes, L[i] (Length), contain the length of this
ADU, in network byte order (i.e., big endian). This length is for ADU, in network byte order (i.e., big endian). This length is for
the ADU itself and does not include the F[i], L[i], or Pad[i] the ADU itself and does not include the F[i], L[i], or Pad[i]
fields. fields.
Then zero padding is added to ADU i (if needed) in field Pad[i], for Then, zero padding is added to ADU i (if needed) in field Pad[i], for
alignment purposes up to a size of exactly E bytes. The data unit alignment purposes up to a size of exactly E bytes. The data unit
resulting from the ADU i and the F[i], L[i] and Pad[i] fields, is resulting from the ADU i and the F[i], L[i], and Pad[i] fields is
called ADU Information (or ADUI). Each ADUI contributes to exactly called ADU Information (or ADUI). Each ADUI contributes to exactly
one source symbol of the source block. one source symbol of the source block.
Encoding Symbol Length (E) Encoding Symbol Length (E)
< -------------------------------------------------------------- > < -------------------------------------------------------------- >
+----+----+-----------------------+------------------------------+ +----+----+-----------------------+------------------------------+
|F[0]|L[0]| ADU[0] | Pad[0] | |F[0]|L[0]| ADU[0] | Pad[0] |
+----+----+----------+------------+------------------------------+ +----+----+----------+------------+------------------------------+
|F[1]|L[1]| ADU[1] | Pad[1] | |F[1]|L[1]| ADU[1] | Pad[1] |
+----+----+----------+-------------------------------------------+ +----+----+----------+-------------------------------------------+
skipping to change at page 11, line 29 skipping to change at page 12, line 35
+----------------------------------------------------------------+ +----------------------------------------------------------------+
| Repair 4 | | Repair 4 |
+----------------------------------------------------------------+ +----------------------------------------------------------------+
. . . .
. . . .
+----------------------------------------------------------------+ +----------------------------------------------------------------+
| Repair 7 | | Repair 7 |
+----------------------------------------------------------------+ +----------------------------------------------------------------+
Figure 2: Source block creation, for code rate 1/2 (equal number of Figure 2: Source Block Creation, for Code Rate 1/2 (Equal Number of
source and repair symbols, 4 in this example), and S = 0. Source and Repair Symbols, 4 in This Example), and S = 0
Note that neither the initial 3 bytes nor the optional padding are Note that neither the initial 3 bytes nor the optional padding are
sent over the network. However, they are considered during FEC sent over the network. However, they are considered during FEC
encoding. It means that a receiver who lost a certain FEC source encoding. It means that a receiver who lost a certain FEC source
packet (e.g., the UDP datagram containing this FEC source packet) packet (e.g., the UDP datagram containing this FEC source packet)
will be able to recover the ADUI if FEC decoding succeeds. Thanks to will be able to recover the ADUI if FEC decoding succeeds. Thanks to
the initial 3 bytes, this receiver will get rid of the padding (if the initial 3 bytes, this receiver will get rid of the padding (if
any) and identify the corresponding ADU flow. any) and identify the corresponding ADU flow.
5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows 5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows
skipping to change at page 12, line 7 skipping to change at page 13, line 19
5.1.1. FEC Framework Configuration Information 5.1.1. FEC Framework Configuration Information
The FEC Framework Configuration Information (or FFCI) includes The FEC Framework Configuration Information (or FFCI) includes
information that MUST be communicated between the sender and information that MUST be communicated between the sender and
receiver(s). More specifically, it enables the synchronization of receiver(s). More specifically, it enables the synchronization of
the FECFRAME sender and receiver instances. It includes both the FECFRAME sender and receiver instances. It includes both
mandatory elements and scheme-specific elements, as detailed below. mandatory elements and scheme-specific elements, as detailed below.
5.1.1.1. Mandatory Information 5.1.1.1. Mandatory Information
o FEC Encoding ID: the value assigned to this fully-specified FEC o FEC Encoding ID: the value assigned to this fully specified FEC
scheme MUST be XXX, as assigned by IANA (Section 8). scheme MUST be 7, as assigned by IANA (Section 8).
When SDP is used to communicate the FFCI, this FEC Encoding ID is When SDP is used to communicate the FFCI, this FEC Encoding ID is
carried in the 'encoding-id' parameter. carried in the 'encoding-id' parameter.
5.1.1.2. FEC Scheme-Specific Information 5.1.1.2. FEC Scheme-Specific Information
The FEC Scheme Specific Information (FSSI) includes elements that are The FEC Scheme-Specific Information (FSSI) includes elements that are
specific to the present FEC scheme. More precisely: specific to the present FEC scheme. More precisely:
o PRNG seed (seed): a non-negative 32 bit integer used as the seed o PRNG seed (seed): a non-negative 32-bit integer used as the seed
of the Pseudo Random Number Generator, as defined in [RFC5170]. of the Pseudo-Random Number Generator, as defined in [RFC5170].
o Encoding symbol length (E): a non-negative integer that indicates o Encoding symbol length (E): a non-negative integer that indicates
either the length of each encoding symbol in bytes (strict mode, either the length of each encoding symbol in bytes (strict mode,
i.e., if S = 1), or the maximum length of any encoding symbol i.e., if S = 1) or the maximum length of any encoding symbol
(i.e., if S = 0). (i.e., if S = 0).
o Strict (S) flag: when set to 1 this flag indicates that the E o Strict (S) flag: when set to 1, this flag indicates that the E
parameter is the actual encoding symbol length value for each parameter is the actual encoding symbol length value for each
block of the session (unless otherwise notified by an updated FFCI block of the session (unless otherwise notified by an updated FFCI
if this possibility is considered by the use-case or CDP). When if this possibility is considered by the use-case or CDP). When
set to 0 this flag indicates that the E parameter is the maximum set to 0, this flag indicates that the E parameter is the maximum
encoding symbol length value for each block of the session (unless encoding symbol length value for each block of the session (unless
otherwise notified by an updated FFCI if this possibility is otherwise notified by an updated FFCI if this possibility is
considered by the use-case or CDP). considered by the use-case or CDP).
o N1 minus 3 (n1m3): an integer between 0 (default) and 7, o N1 minus 3 (n1m3): an integer between 0 (default) and 7,
inclusive. The number of "1s" per column in the left side of the inclusive. The number of "1s" per column in the left side of the
parity check matrix, N1, is then equal to N1m3 + 3, as specified parity check matrix, N1, is then equal to N1m3 + 3, as specified
in [RFC5170]. in [RFC5170].
These elements are required both by the sender (LDPC-Staircase These elements are required both by the sender (LDPC-Staircase
encoder) and the receiver(s) (LDPC-Staircase decoder). encoder) and the receiver(s) (LDPC-Staircase decoder).
When SDP is used to communicate the FFCI, this FEC scheme-specific When SDP is used to communicate the FFCI, this FEC scheme-specific
information is carried in the 'fssi' parameter in textual information is carried in the 'fssi' parameter in textual
representation as specified in [RFC6364]. For instance: representation as specified in [RFC6364]. For instance:
fssi=seed:1234,E:1400,S:0,n1m3:0 fssi=seed:1234,E:1400,S:0,n1m3:0
If another mechanism requires the FSSI to be carried as an opaque If another mechanism requires the FSSI to be carried as an opaque
octet string (for instance after a Base64 encoding), the encoding octet string (for instance, after a Base64 encoding), the encoding
format consists of the following 7 octets: format consists of the following 7 octets:
o PRNG seed (seed): 32 bit field. o PRNG seed (seed): 32-bit field.
o Encoding symbol length (E): 16 bit field. o Encoding symbol length (E): 16-bit field.
o Strict (S) flag: 1 bit field. o Strict (S) flag: 1-bit field.
o Reserved: a 4 bit field that MUST be set to zero. o Reserved: a 4-bit field that MUST be set to zero.
o N1m3 parameter (n1m3): 3 bit field. o N1m3 parameter (n1m3): 3-bit field.
0 1 2 0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PRNG seed (seed) | | PRNG seed (seed) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encoding Symbol Length (E) |S| resvd | n1m3| | Encoding Symbol Length (E) |S| resvd | n1m3|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: FSSI encoding format. Figure 3: FSSI Encoding Format
5.1.2. Explicit Source FEC Payload ID 5.1.2. Explicit Source FEC Payload ID
A FEC source packet MUST contain an Explicit Source FEC Payload ID A FEC source packet MUST contain an Explicit Source FEC Payload ID
that is appended to the end of the packet as illustrated in Figure 4. that is appended to the end of the packet as illustrated in Figure 4.
+--------------------------------+ +--------------------------------+
| IP Header | | IP Header |
+--------------------------------+ +--------------------------------+
| Transport Header | | Transport Header |
+--------------------------------+ +--------------------------------+
| ADU | | ADU |
+--------------------------------+ +--------------------------------+
| Explicit Source FEC Payload ID | | Explicit Source FEC Payload ID |
+--------------------------------+ +--------------------------------+
Figure 4: Structure of a FEC Source Packet with the Explicit Source Figure 4: Structure of a FEC Source Packet with the
FEC Payload ID. Explicit Source FEC Payload ID
More precisely, the Explicit Source FEC Payload ID is composed of the More precisely, the Explicit Source FEC Payload ID is composed of the
following fields (Figure 5): following fields (Figure 5):
o Source Block Number (SBN) (16 bit field): this field identifies o Source Block Number (SBN) (16-bit field): this field identifies
the source block to which this FEC source packet belongs. the source block to which this FEC source packet belongs.
o Encoding Symbol ID (ESI) (16 bit field): this field identifies the o Encoding Symbol ID (ESI) (16-bit field): this field identifies the
source symbol contained in this FEC source packet. This value is source symbol contained in this FEC source packet. This value is
such that 0 <= ESI <= k - 1 for source symbols. such that 0 <= ESI <= k - 1 for source symbols.
o Source Block Length (k) (16 bit field): this field provides the o Source Block Length (k) (16-bit field): this field provides the
number of source symbols for this source block, i.e., the k number of source symbols for this source block, i.e., the k
parameter. parameter.
0 1 2 3 0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Number (SBN) | Encoding Symbol ID (ESI) | | Source Block Number (SBN) | Encoding Symbol ID (ESI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Length (k) | | Source Block Length (k) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: Source FEC Payload ID encoding format. Figure 5: Source FEC Payload ID Encoding Format
5.1.3. Repair FEC Payload ID 5.1.3. Repair FEC Payload ID
A FEC repair packet MUST contain a Repair FEC Payload ID that is A FEC repair packet MUST contain a Repair FEC Payload ID that is
prepended to the repair symbol(s) as illustrated in Figure 6. There prepended to the repair symbol(s) as illustrated in Figure 6. There
MUST be a single repair symbol per FEC repair packet. MUST be a single repair symbol per FEC repair packet.
+--------------------------------+
| IP Header |
+--------------------------------+
| Transport Header |
+--------------------------------+
| Repair FEC Payload ID |
+--------------------------------+
| Repair Symbol |
+--------------------------------+
+--------------------------------+ Figure 6: Structure of a FEC Repair Packet with
| IP Header | the Repair Payload ID
+--------------------------------+
| Transport Header |
+--------------------------------+
| Repair FEC Payload ID |
+--------------------------------+
| Repair Symbol |
+--------------------------------+
Figure 6: Structure of a FEC Repair Packet with the Repair FEC
Payload ID.
More precisely, the Repair FEC Payload ID is composed of the More precisely, the Repair FEC Payload ID is composed of the
following fields (Figure 7): following fields (Figure 7):
o Source Block Number (SBN) (16 bit field): this field identifies o Source Block Number (SBN) (16-bit field): this field identifies
the source block to which the FEC repair packet belongs. the source block to which the FEC repair packet belongs.
o Encoding Symbol ID (ESI) (16 bit field): this field identifies the o Encoding Symbol ID (ESI) (16-bit field): this field identifies the
repair symbol contained in this FEC repair packet. This value is repair symbol contained in this FEC repair packet. This value is
such that k <= ESI <= n - 1 for repair symbols. such that k <= ESI <= n - 1 for repair symbols.
o Source Block Length (k) (16 bit field): this field provides the o Source Block Length (k) (16-bit field): this field provides the
number of source symbols for this source block, i.e., the k number of source symbols for this source block, i.e., the k
parameter. parameter.
o Number of Encoding Symbols (n) (16 bit field): this field provides o Number of Encoding Symbols (n) (16-bit field): this field provides
the number of encoding symbols for this source block, i.e., the n the number of encoding symbols for this source block, i.e., the n
parameter. parameter.
0 1 2 3 0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Number (SBN) | Encoding Symbol ID (ESI) | | Source Block Number (SBN) | Encoding Symbol ID (ESI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Length (k) | Number Encoding Symbols (n) | | Source Block Length (k) | Number Encoding Symbols (n) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Repair FEC Payload ID encoding format. Figure 7: Repair FEC Payload ID Encoding Format
5.2. Procedures 5.2. Procedures
The following procedures apply: The following procedures apply:
o The source block creation MUST follow the procedures specified in o The source block creation MUST follow the procedures specified in
Section 4.3. Section 4.3.
o The SBN value MUST start with value 0 for the first block of the o The SBN value MUST start with value 0 for the first block of the
ADU flow and MUST be incremented by 1 for each new source block. ADU flow and MUST be incremented by 1 for each new source block.
skipping to change at page 15, line 42 skipping to change at page 17, line 28
symbol and MUST be managed sequentially. The first k values (0 <= symbol and MUST be managed sequentially. The first k values (0 <=
ESI <= k - 1) identify source symbols whereas the last n-k values ESI <= k - 1) identify source symbols whereas the last n-k values
(k <= ESI <= n - 1) identify repair symbols. (k <= ESI <= n - 1) identify repair symbols.
o The FEC repair packet creation MUST follow the procedures o The FEC repair packet creation MUST follow the procedures
specified in Section 5.1.3. specified in Section 5.1.3.
5.3. FEC Code Specification 5.3. FEC Code Specification
The present document inherits from [RFC5170] the specification of the The present document inherits from [RFC5170] the specification of the
core LDPC-Staircase codes for a packet erasure transmission channel. core LDPC-Staircase codes for a packet erasure transmission channel
(see Section 1).
Because of the requirement to have exactly one encoding symbol per Because of the requirement to have exactly one encoding symbol per
group, i.e., because G MUST be equal to 1 (Section 4.1), several group, i.e., because G MUST be equal to 1 (Section 4.1), several
parts of [RFC5170] are useless. In particular, this is the case of parts of [RFC5170] are not of use. In particular, this is the case
Section 5.6. "Identifying the G Symbols of an Encoding Symbol of Section 5.6, "Identifying the G Symbols of an Encoding Symbol
Group". Group".
6. Security Considerations 6. Security Considerations
The FEC Framework document [RFC6363] provides a comprehensive The FEC Framework document [RFC6363] provides a comprehensive
analysis of security considerations applicable to FEC schemes. analysis of security considerations applicable to FEC schemes.
Therefore the present section follows the security considerations Therefore, the present section follows the security considerations
section of [RFC6363] and only discusses topics that are specific to section of [RFC6363] and only discusses topics that are specific to
the use of LDPC-Staircase codes. the use of LDPC-Staircase codes.
6.1. Attacks Against the Data Flow 6.1. Attacks against the Data Flow
6.1.1. Access to Confidential Content 6.1.1. Access to Confidential Content
The LDPC-Staircase FEC Scheme specified in this document does not The LDPC-Staircase FEC Scheme specified in this document does not
change the recommendations of [RFC6363]. To summarize, if change the recommendations of [RFC6363]. To summarize, if
confidentiality is a concern, it is RECOMMENDED that one of the confidentiality is a concern, it is RECOMMENDED that one of the
solutions mentioned in [RFC6363] is used, with special considerations solutions mentioned in [RFC6363] be used, with special considerations
to the way this solution is applied (e.g., is encryption applied to the way this solution is applied (e.g., Is encryption applied
before or after FEC protection, within the end-system or in a before or after FEC protection? Is it within the end-system or in a
middlebox), to the operational constraints (e.g., performing FEC middlebox?), to the operational constraints (e.g., performing FEC
decoding in a protected environment may be complicated or even decoding in a protected environment may be complicated or even
impossible) and to the threat model. impossible) and to the threat model.
6.1.2. Content Corruption 6.1.2. Content Corruption
The LDPC-Staircase FEC Scheme specified in this document does not The LDPC-Staircase FEC Scheme specified in this document does not
change the recommendations of [RFC6363]. To summarize, it is change the recommendations of [RFC6363]. To summarize, it is
RECOMMENDED that one of the solutions mentioned in [RFC6363] is used RECOMMENDED that one of the solutions mentioned in [RFC6363] be used
on both the FEC Source and Repair Packets. on both the FEC source and repair packets.
6.2. Attacks Against the FEC Parameters 6.2. Attacks against the FEC Parameters
The FEC Scheme specified in this document defines parameters that can The FEC scheme specified in this document defines parameters that can
be the basis of several attacks. More specifically, the following be the basis of several attacks. More specifically, the following
parameters of the FFCI may be modified by an attacker parameters of the FFCI may be modified by an attacker
(Section 5.1.1.2): (Section 5.1.1.2):
o FEC Encoding ID: changing this parameter leads the receiver to o FEC Encoding ID: changing this parameter leads the receiver to
consider a different FEC Scheme, which enables an attacker to consider a different FEC scheme, which enables an attacker to
create a Denial of Service (DoS). create a Denial of Service (DoS).
o Encoding symbol length (E): setting this E parameter to a value o Encoding symbol length (E): setting this E parameter to a value
smaller than the valid one enables an attacker to create a DoS smaller than the valid one enables an attacker to create a DoS
since the repair symbols and certain source symbols will be larger since the repair symbols and certain source symbols will be larger
than E, which is an incoherency for the receiver. Setting this E than E, which is an incoherency for the receiver. Setting this E
parameter to a value larger than the valid one has similar impacts parameter to a value larger than the valid one has similar impacts
when S=1 since the received repair symbol size will be smaller when S=1 since the received repair symbol size will be smaller
than expected. On the opposite it will not lead to any than expected. Contrarily, it will not lead to any incoherency
incoherency when S=0 since the actual symbol length value for the when S=0 since the actual symbol length value for the block is
block is determined by the size of any received repair symbol, as determined by the size of any received repair symbol, as long as
long as this value is smaller than E. However setting this E this value is smaller than E. However, setting this E parameter
parameter to a larger value may have impacts on receivers that to a larger value may have impacts on receivers that pre-allocate
pre-allocate memory space in advance to store incoming symbols. memory space in advance to store incoming symbols.
o Strict (S) flag: flipping this S flag from 0 to 1 (i.e., E is now o Strict (S) flag: flipping this S flag from 0 to 1 (i.e., E is now
considered as a strict value) enables an attacker to mislead the considered as a strict value) enables an attacker to mislead the
receiver if the actual symbol size varies over different source receiver if the actual symbol size varies over different source
blocks. Flipping this S flag from 1 to 0 has no major blocks. Flipping this S flag from 1 to 0 has no major
consequences unless the receiver requires to have a fixed E value consequences unless the receiver requires to have a fixed E value
(e.g., because the receiver pre-allocates memory space). (e.g., because the receiver pre-allocates memory space).
o N1 minus 3 (n1m3): changing this parameter leads the receiver to o N1 minus 3 (n1m3): changing this parameter leads the receiver to
consider a different code, which enables an attacker to create a consider a different code, which enables an attacker to create a
DoS. DoS.
It is therefore RECOMMENDED that security measures are taken to Therefore, it is RECOMMENDED that security measures be taken to
guarantee the FFCI integrity, as specified in [RFC6363]. How to guarantee the FFCI integrity, as specified in [RFC6363]. How to
achieve this depends on the way the FFCI is communicated from the achieve this depends on the way the FFCI is communicated from the
sender to the receiver, which is not specified in this document. sender to the receiver, which is not specified in this document.
Similarly, attacks are possible against the Explicit Source FEC Similarly, attacks are possible against the Explicit Source FEC
Payload ID and Repair FEC Payload ID: by modifying the Source Block Payload ID and Repair FEC Payload ID: by modifying the Source Block
Number (SBN), or the Encoding Symbol ID (ESI), or the Source Block Number (SBN), or the Encoding Symbol ID (ESI), or the Source Block
Length (k), or the Number Encoding Symbols (n), an attacker can Length (k), or the Number Encoding Symbols (n), an attacker can
easily corrupt the block identified by the SBN. Other consequences, easily corrupt the block identified by the SBN. Other consequences,
that are use-case and/or CDP dependant, may also happen. It is that are use-case and/or CDP dependent, may also happen. It is
therefore RECOMMENDED that security measures are taken to guarantee therefore RECOMMENDED that security measures be taken to guarantee
the FEC Source and Repair Packets as stated in [RFC6363]. the FEC source and repair packets as stated in [RFC6363].
6.3. When Several Source Flows are to be Protected Together 6.3. When Several Source Flows Are to Be Protected Together
The LDPC-Staircase FEC Scheme specified in this document does not The LDPC-Staircase FEC Scheme specified in this document does not
change the recommendations of [RFC6363]. change the recommendations of [RFC6363].
6.4. Baseline Secure FEC Framework Operation 6.4. Baseline Secure FEC Framework Operation
The LDPC-Staircase FEC Scheme specified in this document does not The LDPC-Staircase FEC Scheme specified in this document does not
change the recommendations of [RFC6363] concerning the use of the change the recommendations of [RFC6363] concerning the use of the
IPsec/ESP security protocol as a mandatory to implement (but not IPsec/ESP security protocol as a mandatory to implement (but not
mandatory to use) security scheme. This is well suited to situations mandatory to use) security scheme. This is well suited to situations
where the only insecure domain is the one over which the FEC where the only insecure domain is the one over which the FEC
Framework operates. Framework operates.
7. Operations and Management Considerations 7. Operations and Management Considerations
The FEC Framework document [RFC6363] provides a comprehensive The FEC Framework document [RFC6363] provides a comprehensive
analysis of operations and management considerations applicable to analysis of operations and management considerations applicable to
FEC schemes. Therefore the present section only discusses topics FEC schemes. Therefore, the present section only discusses topics
that are specific to the use of LDPC-Staircase codes as specified in that are specific to the use of LDPC-Staircase codes as specified in
this document. this document.
7.1. Operational Recommendations 7.1. Operational Recommendations
LDPC-Staircase codes have excellent erasure recovery capabilities LDPC-Staircase codes have excellent erasure recovery capabilities
with large source blocks, close to ideal MDS codes. For instance, with large source blocks, close to ideal MDS codes. For instance,
independently of FECFRAME, with source block size k=1024 symbols, independently of FECFRAME, let us consider a source block of size
CR=2/3, N1=7, G=1, a hybrid ITerative/Maximum Likelihood (IT/ML) k=1024 symbols, CR=2/3 (i.e., 512 repair symbols are added), N1=7,
decoding approach (see below) and when all symbols are sent in a G=1, a transmission scheme where all the symbols are sent in a random
random order, the average overhead amounts to 0.237% (i.e., receiving order, and a hybrid ITerative/Maximum Likelihood (IT/ML) decoder (see
2.43 symbols in addition to k enables a successful decoding with a below). An ideal MDS code with code rate 2/3 can recover from
probability 0.5) and an overhead of 1.46% (i.e., receiving 15 symbols erasures up to a 33.33% channel loss rate. With LDPC-Staircase
in addition to k) is sufficient to reduce the decoding failure codes, the average overhead amounts to 0.237% (i.e., receiving 2.43
probability to 8.2*10^^-5. This is why these codes are a good symbols in addition to k, which corresponds to a 33.18% channel loss
solution to protect a single high bitrate source flow as in rate, enables a successful decoding with a probability 0.5), and an
[Matsuzono10], or to protect globally several mid-rate source flows overhead of 1.46% (i.e., receiving 15 symbols in addition to k, which
within a single FECFRAME instance: in both cases the source block corresponds to a 32.36% channel loss rate) is sufficient to reduce
size can be assumed to be equal to a few hundreds (or more) source the probability that decoding fails down to 8.2*10^^-5. This is why
symbols. these codes are a good solution to protect a single high bitrate
source flow as in [Matsuzono10] or to protect globally several mid-
rate source flows within a single FECFRAME instance: in both cases,
the source block size can be assumed to be equal to a few hundred (or
more) source symbols.
LDPC-Staircase codes are also a good solution whenever processing LDPC-Staircase codes are also a good solution whenever the processing
requirements at a software encoder or decoder must be kept to a load at a software encoder or decoder must be kept to a minimum.
minimum. This is true when the decoder uses an IT decoding This is true when the decoder uses an IT decoding algorithm, an ML
algorithm, or an ML algorithm (we use a Gaussian Elimination as the algorithm (we use a Gaussian Elimination as the ML algorithm) when
ML algorithm) when this latter is carefully implemented, or a mixture carefully implemented, or a mixture of both techniques, which is the
of both techniques which is the recommended solution recommended solution [Cunche08][CunchePHD10][LDPC-codec-OpenFEC].
[Cunche08][CunchePHD10][LDPC-codec-OpenFEC]. For instance an average Let us consider the same conditions as above (k=1024 source symbols,
decoding speed between 1.78 Gbps (overhead of 2 symbols in addition CR=2/3, N1=7, G=1), with encoding symbols of size 1024 bytes. With
to k, corresponding to a very bad channel, close to the theoretical an Intel Xeon 5120/1.86 GHz workstation running Linux/64 bits, the
decoding limit, where ML decoding is required) and 3.41 Gbps average decoding speed is between 1.78 Gbps (overhead of 2 symbols in
(corresponding to a medium quality channel where IT decoding is addition to k, corresponding to a very bad channel with a 33.20% loss
sufficient) is easily achieved with a source block size composed of rate, close to the theoretical decoding limit, where ML decoding is
k=1024 source symbols, a code rate CR=2/3 (i.e., 512 repair symbols), required) and 3.91 Gbps (corresponding to a good channel with a 5%
1024 byte long symbols, G=1, and N1=7, on an Intel Xeon 5120/1.86GHz loss rate only, where IT decoding is sufficient). Under the same
workstation running Linux/64 bits. Under the same conditions, on a conditions, on a Samsung Galaxy SII smartphone (GT-I9100P model,
Samsung Galaxy SII (GT-I9100P model, featuring an ARM Cortex-A9/1.2 featuring an ARM Cortex-A9/1.2 GHz processor and running Android
GHz processor and running Android 2.3.4), decoding speed is between 2.3.4), the decoding speed is between 397 Mbps (bad channel with a
278 Mbps (overhead of 2 symbols and ML decoding) and 626 Mbps (IT 33.20% loss rate, close to the theoretical decoding limit) and 813
decoding). Mbps (good channel with a 5% loss rate only).
As the source block size decreases, the erasure recovery capabilities As the source block size decreases, the erasure recovery capabilities
of LDPC codes in general also decrease. In the case of LDPC- of LDPC codes in general also decrease. In the case of LDPC-
Staircase codes, in order to limit this phenomenon, it is recommended Staircase codes, in order to limit this phenomenon, it is recommended
to use a value of the N1 parameter at least equal to 7 (e.g., to use a value of the N1 parameter at least equal to 7 (e.g.,
experiments carried out in [Matsuzono10] use N1=7 if k=170 symbols, experiments carried out in [Matsuzono10] use N1=7 if k=170 symbols,
and N1=5 otherwise). For instance, independently of FECFRAME, with and N1=5 otherwise). For instance, independently of FECFRAME, with a
source block size k=256 symbols, CR=2/3, N1=7, and G=1, the average source block of size k=256 symbols, CR=2/3 (i.e., 128 repair symbols
overhead amounts to 0.706% (i.e., receiving 1.8 symbols in addition are added), N1=7, and G=1, the average overhead amounts to 0.706%
to k enables a successful decoding with a probability 0.5), and an (i.e., receiving 1.8 symbols in addition to k enables a successful
overhead of 5.86% (i.e., receiving 15 symbols ina addition to k) is decoding with a probability 0.5), and an overhead of 5.86% (i.e.,
sufficient to reduce the decoding failure probability to 5.9*10^^-5. receiving 15 symbols in addition to k) is sufficient to reduce the
decoding failure probability to 5.9*10^^-5.
The processing load also decreases with the source block size. For
instance, under these conditions (k=256 source symbols, CR=2/3, N1=7,
and G=1), with encoding symbols of size 1024 bytes, on a Samsung
Galaxy SII smartphone, the decoding speed is between 518 Mbps (bad
channel) and 863 Mbps (good channel with a 5% loss rate only).
With very small source blocks (e.g., a few tens of symbols), using With very small source blocks (e.g., a few tens of symbols), using
for instance Reed-Solomon codes [SIMPLE_RS] or 2D parity check codes for instance Reed-Solomon codes [SIMPLE_RS] or 2D parity check codes
may be more appropriate. may be more appropriate.
The way the FEC Repair Packets are transmitted is of high importance. The way the FEC repair packets are transmitted is of high importance.
A good strategy, that works well for any kind of channel loss model, A good strategy, that works well for any kind of channel loss model,
consists in sending FEC Repair Packets in random order (rather than consists in sending FEC repair packets in random order (rather than
in sequence) while FEC Source Packets are sent first and in sequence. in sequence) while FEC source packets are sent first and in sequence.
Sending all packets in a random order is another possibility, but it Sending all packets in a random order is another possibility, but it
requires that all repair symbols for a source block be produced requires that all repair symbols for a source block be produced
first, which adds some extra delay at a sender. first, which adds some extra delay at a sender.
8. IANA Considerations 8. IANA Considerations
This document registers one value in the FEC Framework (FECFRAME) FEC This document registers one value in the "FEC Framework (FECFRAME)
Encoding IDs registry [RFC6363] as follows: FEC Encoding IDs" registry [RFC6363] as follows:
o XXX refers to the Simple LDPC-Staircase FEC Scheme for Arbitrary o 7 refers to the Simple LDPC-Staircase FEC Scheme for Arbitrary
Packet Flows, as defined in Section 5 of this document. Packet Flows, as defined in Section 5 of this document.
9. Acknowledgments 9. Acknowledgments
The authors want to thank K. Matsuzono, J. Detchart and H. Asaeda for The authors want to thank K. Matsuzono, J. Detchart, and H. Asaeda
their contributions in evaluating the use of LDPC-Staircase codes in for their contributions in evaluating the use of LDPC-Staircase codes
the context of FECFRAME [Matsuzono10]. in the context of FECFRAME [Matsuzono10].
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Indicate Requirement Levels", RFC 2119. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5170] Roca, V., Neumann, C., and D. Furodet, "Low [RFC5170] Roca, V., Neumann, C., and D. Furodet, "Low Density
Density Parity Check (LDPC) Forward Error Parity Check (LDPC) Staircase and Triangle Forward Error
Correction", RFC 5170, June 2008. Correction (FEC) Schemes", RFC 5170, June 2008.
[RFC6363] Watson, M., Begen, A., and V. Roca, "Forward [RFC6363] Watson, M., Begen, A., and V. Roca, "Forward Error
Error Correction (FEC) Framework", RFC 6363, Correction (FEC) Framework", RFC 6363, October 2011.
September 2011.
[RFC6364] Begen, A., "Session Description Protocol [RFC6364] Begen, A., "Session Description Protocol Elements for
Elements for the Forward Error Correction (FEC) the Forward Error Correction (FEC) Framework", RFC 6364,
Framework", RFC 6364, October 2011. October 2011.
10.2. Informative References 10.2. Informative References
[RFC3453] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L., [Cunche08] Cunche, M. and V. Roca, "Optimizing the Error Recovery
Handley, M., and J. Crowcroft, "The Use of Capabilities of LDPC-Staircase Codes Featuring a
Forward Error Correction (FEC) in Reliable Gaussian Elimination Decoding Scheme", 10th IEEE
Multicast", RFC 3453, December 2002. International Workshop on Signal Processing for Space
Communications (SPSC'08), October 2008.
[RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward [CunchePHD10]
Error Correction (FEC) Building Block", Cunche, M., "High performances AL-FEC codes for the
RFC 5052, August 2007. erasure channel : variation around LDPC codes", PhD
dissertation (in French) (http://
tel.archives-ouvertes.fr/tel-00451336/en/), June 2010.
[RFC5510] Lacan, J., Roca, V., Peltotalo, J., and S. [LDPC-codec]
Peltotalo, "Reed-Solomon Forward Error Cunche, M., Roca, V., Neumann, C., and J. Laboure,
Correction (FEC) Schemes", RFC 5510, "LDPC-Staircase/LDPC-Triangle Codec Reference
April 2009. Implementation", INRIA Rhone-Alpes and
STMicroelectronics,
<http://planete-bcast.inrialpes.fr/>.
[SIMPLE_RS] Roca, V., Cunche, M., Lacan, J., Bouabdallah, [LDPC-codec-OpenFEC]
A., and K. Matsuzono, "Simple Reed-Solomon "The OpenFEC project", <http://openfec.org/>.
Forward Error Correction (FEC) Scheme for
FECFRAME",
draft-ietf-fecframe-simple-rs-04 (Work in
Progress), October 2012.
[RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T. [Matsuzono10]
Stockhammer, "Raptor Forward Error Correction Matsuzono, K., Detchart, J., Cunche, M., Roca, V., and
Scheme for Object Delivery", RFC 5053, H. Asaeda, "Performance Analysis of a High-Performance
June 2007. Real-Time Application with Several AL-FEC Schemes", 35th
Annual IEEE Conference on Local Computer Networks (LCN
2010), October 2010.
[RFC5740] Adamson, B., Bormann, C., Handley, M., and J. [RFC3453] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L., Handley,
Macker, "NACK-Oriented Reliable Multicast M., and J. Crowcroft, "The Use of Forward Error
(NORM) Transport Protocol", RFC 5740, Correction (FEC) in Reliable Multicast", RFC 3453,
November 2009. December 2002.
[RFC5775] Luby, M., Watson, M., and L. Vicisano, [RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error
"Asynchronous Layered Coding (ALC) Protocol Correction (FEC) Building Block", RFC 5052, August 2007.
Instantiation", RFC 5775, April 2010.
[Cunche08] Cunche, M. and V. Roca, "Optimizing the Error [RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T.
Recovery Capabilities of LDPC-Staircase Codes Stockhammer, "Raptor Forward Error Correction Scheme for
Featuring a Gaussian Elimination Decoding Object Delivery", RFC 5053, October 2007.
Scheme", 10th IEEE International Workshop on
Signal Processing for Space Communications
(SPSC'08), October 2008.
[CunchePHD10] Cunche, M., "High performances AL-FEC codes for [RFC5510] Lacan, J., Roca, V., Peltotalo, J., and S. Peltotalo,
the erasure channel : variation around LDPC "Reed-Solomon Forward Error Correction (FEC) Schemes",
codes", PhD dissertation (in French) (http:// RFC 5510, April 2009.
tel.archives-ouvertes.fr/tel-00451336/en/),
June 2010.
[Matsuzono10] Matsuzono, K., Detchart, J., Cunche, M., Roca, [RFC5740] Adamson, B., Bormann, C., Handley, M., and J. Macker,
V., and H. Asaeda, "Performance Analysis of a "NACK-Oriented Reliable Multicast (NORM) Transport
High-Performance Real-Time Application with Protocol", RFC 5740, November 2009.
Several AL-FEC Schemes", 35th Annual IEEE
Conference on Local Computer Networks (LCN
2010), October 2010.
[LDPC-codec] Cunche, M., Roca, V., Neumann, C., and J. [RFC5775] Luby, M., Watson, M., and L. Vicisano, "Asynchronous
Laboure, "LDPC-Staircase/LDPC-Triangle Codec Layered Coding (ALC) Protocol Instantiation", RFC 5775,
Reference Implementation", INRIA Rhone-Alpes April 2010.
and STMicroelectronics,
<http://planete-bcast.inrialpes.fr/>.
[LDPC-codec-OpenFEC] "The OpenFEC project", <http://openfec.org/>. [SIMPLE_RS] Roca, V., Cunche, M., Lacan, J., Bouabdallah, A., and K.
Matsuzono, "Simple Reed-Solomon Forward Error Correction
(FEC) Scheme for FECFRAME", Work in Progress, October
2012.
Authors' Addresses Authors' Addresses
Vincent Roca Vincent Roca
INRIA INRIA
655, av. de l'Europe 655, av. de l'Europe
Inovallee; Montbonnot Inovallee; Montbonnot
ST ISMIER cedex 38334 ST ISMIER cedex 38334
France France
 End of changes. 109 change blocks. 
331 lines changed or deleted 343 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/