draft-ietf-fecframe-ldpc-03.txt   draft-ietf-fecframe-ldpc-04.txt 
FecFrame V. Roca FecFrame V. Roca
Internet-Draft INRIA Internet-Draft INRIA
Intended status: Standards Track M. Cunche Intended status: Standards Track M. Cunche
Expires: April 7, 2013 INSA-Lyon/INRIA Expires: April 12, 2013 INSA-Lyon/INRIA
J. Lacan J. Lacan
ISAE, Univ. of Toulouse ISAE, Univ. of Toulouse
October 4, 2012 October 9, 2012
Simple LDPC-Staircase Forward Error Correction (FEC) Scheme for FECFRAME Simple LDPC-Staircase Forward Error Correction (FEC) Scheme for FECFRAME
draft-ietf-fecframe-ldpc-03 draft-ietf-fecframe-ldpc-04
Abstract Abstract
This document describes a fully-specified simple FEC scheme for LDPC- This document describes a fully-specified simple FEC scheme for LDPC-
Staircase codes that can be used to protect media streams along the Staircase codes that can be used to protect media streams along the
lines defined by the FECFRAME framework. These codes have many lines defined by the FECFRAME framework. These codes have many
interesting properties: they are systematic codes, they perform close interesting properties: they are systematic codes, they perform close
to ideal codes in many use-cases and they also feature very high to ideal codes in many use-cases and they also feature very high
encoding and decoding throughputs. LDPC-Staircase codes are encoding and decoding throughputs. LDPC-Staircase codes are
therefore a good solution to protect a single high bitrate source therefore a good solution to protect a single high bitrate source
flow, or to protect globally several mid-rate flows within a single flow, or to protect globally several mid-rate flows within a single
FECFRAME instance. They are also a good solution whenever the FECFRAME instance. They are also a good solution whenever the
processing load of a software encoder or decoder must be kept to a processing load of a software encoder or decoder must be kept to a
minimum. minimum.
Status of this Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 April 7, 2013. This Internet-Draft will expire on April 12, 2013.
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
skipping to change at page 2, line 26 skipping to change at page 2, line 26
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Definitions Notations and Abbreviations . . . . . . . . . . . 4 3. Definitions Notations and Abbreviations . . . . . . . . . . . 4
3.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Notations . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Notations . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 7 3.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 7
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 . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Restrictions . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. Restrictions . . . . . . . . . . . . . . . . . . . . . . . 7
4.2. ADU Block Creation . . . . . . . . . . . . . . . . . . . . 7 4.2. ADU Block Creation . . . . . . . . . . . . . . . . . . . . 8
4.3. Source Block Creation . . . . . . . . . . . . . . . . . . 9 4.3. Source Block Creation . . . . . . . . . . . . . . . . . . 9
5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows . . . . . . 10 5. LDPC-Staircase FEC Scheme for Arbitrary ADU Flows . . . . . . 11
5.1. Formats and Codes . . . . . . . . . . . . . . . . . . . . 10 5.1. Formats and Codes . . . . . . . . . . . . . . . . . . . . 11
5.1.1. FEC Framework Configuration Information . . . . . . . 10 5.1.1. FEC Framework Configuration Information . . . . . . . 11
5.1.2. Explicit Source FEC Payload ID . . . . . . . . . . . . 12 5.1.2. Explicit Source FEC Payload ID . . . . . . . . . . . . 13
5.1.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 13 5.1.3. Repair FEC Payload ID . . . . . . . . . . . . . . . . 14
5.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . . 15
5.3. FEC Code Specification . . . . . . . . . . . . . . . . . . 14 5.3. FEC Code Specification . . . . . . . . . . . . . . . . . . 15
6. Security Considerations . . . . . . . . . . . . . . . . . . . 14 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16
6.1. Attacks Against the Data Flow . . . . . . . . . . . . . . 15 6.1. Attacks Against the Data Flow . . . . . . . . . . . . . . 16
6.1.1. Access to Confidential Content . . . . . . . . . . . . 15 6.1.1. Access to Confidential Content . . . . . . . . . . . . 16
6.1.2. Content Corruption . . . . . . . . . . . . . . . . . . 15 6.1.2. Content Corruption . . . . . . . . . . . . . . . . . . 16
6.2. Attacks Against the FEC Parameters . . . . . . . . . . . . 15 6.2. Attacks Against the FEC Parameters . . . . . . . . . . . . 16
6.3. When Several Source Flows are to be Protected Together . . 16 6.3. When Several Source Flows are to be Protected Together . . 17
6.4. Baseline Secure FEC Framework Operation . . . . . . . . . 16 6.4. Baseline Secure FEC Framework Operation . . . . . . . . . 17
7. Operations and Management Considerations . . . . . . . . . . . 16 7. Operations and Management Considerations . . . . . . . . . . . 17
7.1. Operational Recommendations . . . . . . . . . . . . . . . 16 7.1. Operational Recommendations . . . . . . . . . . . . . . . 18
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.1. Normative References . . . . . . . . . . . . . . . . . . . 18 10.1. Normative References . . . . . . . . . . . . . . . . . . . 19
10.2. Informative References . . . . . . . . . . . . . . . . . . 18 10.2. Informative References . . . . . . . . . . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20
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 (CDP) and applications [RFC3453]. The
[RFC6363] document describes a generic framework to use FEC schemes [RFC6363] document describes a generic framework to use FEC schemes
with media delivery applications, and for instance with real-time with media delivery applications, and for instance with real-time
streaming media applications based on the RTP real-time protocol. streaming media applications based on the RTP real-time protocol.
Similarly the [RFC5052] document describes a generic framework to use Similarly the [RFC5052] document 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 ALC [RFC5775] and NORM [RFC5740] reliable multicast transport the Asynchronous Layered Coding (ALC) [RFC5775] and NACK-Oriented
Reliable Multicast (NORM) [RFC5740] reliable multicast transport
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, the [RFC5510] document introduces
Reed-Solomon codes based on Vandermonde matrices for the same object Reed-Solomon codes based on Vandermonde matrices for the same object
delivery protocols. All these codes are systematic codes, meaning delivery protocols. All these codes are systematic codes, meaning
that the k source symbols are part of the n encoding symbols. that the k source symbols are part of the n encoding symbols.
Additionally, the Reed-Solomon FEC codes belong to the class of Additionally, the Reed-Solomon FEC codes belong to the class of
skipping to change at page 4, line 7 skipping to change at page 4, line 7
situations, as detailed in Section 7. situations, as detailed in Section 7.
This documents inherits from [RFC5170] the specifications of the core This documents inherits from [RFC5170] the specifications of the core
LDPC-Staircase codes. Therefore this document specifies only the LDPC-Staircase codes. Therefore this document specifies only the
information specific to the FECFRAME context and refers to [RFC5170] information specific to the FECFRAME context and refers to [RFC5170]
for the core specifications of the codes. To that purpose, the for the core specifications of the codes. To that purpose, the
present document introduces: 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 XXX 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 ADU flows. protect arbitrary Application Data Unit (ADU) flows.
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].
skipping to change at page 4, line 24 skipping to change at page 4, line 24
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. Some of them
are FEC scheme specific and are in line with [RFC5052]: 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.
Code rate: the k/n ratio, i.e., the ratio between the number of Code rate: the k/n ratio, i.e., the ratio between the number of
source symbols and the number of encoding symbols. By definition, source symbols and the number of encoding symbols. By definition,
the code rate is such that: 0 < code rate <= 1. A code rate close the code rate is such that: 0 < code rate <= 1. A code rate close
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 Some of them are FECFRAME framework 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 the FECFRAME framework.
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 F[], L[], and Pad[] fields, they form the set of source the flow ID (F[]), length (L[]), and padding (Pad[]) fields, they
symbols over which FEC encoding will be performed. form the set of source symbols over which FEC encoding will be
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: Information which controls
the operation of the FEC Framework. The FFCI enables the FEC Framework Configuration Information (FFCI): information which
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
protocol containing one repair symbol along with a Repair FEC protocol containing one repair symbol along with a Repair FEC
Payload ID and possibly an RTP header. Payload ID and possibly an RTP header.
The above terminology is illustrated in Figure 1 (sender's point of The above terminology is illustrated in Figure 1 (sender's point of
view): view):
+----------------------+ +----------------------+
| Application | | Application |
+----------------------+ +----------------------+
skipping to change at page 6, line 37 skipping to change at page 6, line 37
| 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: Some of them are FEC
scheme specific: 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.
CR denotes the "code rate", i.e., the k/n ratio. CR denotes the "code rate", i.e., the k/n ratio.
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
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: Some of them are FECFRAME framework 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 stands for Application Data Unit.
ESI stands for Encoding Symbol ID. ESI stands for Encoding Symbol ID.
FEC stands for Forward Error (or Erasure) Correction code. FEC stands for Forward Error (or Erasure) Correction code.
FFCI stands for FEC Framework Configuration Information. FFCI stands for FEC Framework Configuration Information.
FSSI stands for FEC Scheme Specific Information. FSSI stands for FEC Scheme Specific Information.
LDPC stands for Low Density Parity Check. LDPC stands for Low Density Parity Check.
MDS stands for Maximum Distance Separable code. MDS stands for Maximum Distance Separable code.
SDP stands for Session Description Protocol. SDP stands for 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 the related source block creation, for the FEC scheme
considered. considered.
4.1. Restrictions 4.1. Restrictions
skipping to change at page 9, line 39 skipping to change at page 10, line 27
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, FID[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 to.
It is assumed that a single byte is sufficient, or said It is assumed that a single byte is sufficient, or said
differently, that no more than 256 flows will be protected by a differently, that no more than 256 flows will be protected by a
single instance of the FECFRAME framework. single instance of the FECFRAME framework.
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 FID[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 to 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] |
+----+----+----------+-------------------------------------------+ +----+----+----------+-------------------------------------------+
|F[2]|L[2]| ADU[2] | |F[2]|L[2]| ADU[2] |
+----+----+------+-----------------------------------------------+ +----+----+------+-----------------------------------------------+
skipping to change at page 11, line 8 skipping to change at page 12, line 7
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
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 XXX, 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:
PRNG seed (seed): a non-negative 32 bit integer used as the seed of
the Pseudo Random Number Generator, as defined in [RFC5170]. o PRNG seed (seed): a non-negative 32 bit integer used as the seed
Encoding symbol length (E): a non-negative integer that indicates of the Pseudo Random Number Generator, as defined in [RFC5170].
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).
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).
N1 minus 3 (n1m3): an integer between 0 (default) and 7, inclusive.
The number of "1s" per column in the left side of the parity check o N1 minus 3 (n1m3): an integer between 0 (default) and 7,
matrix, N1, is then equal to N1m3 + 3, as specified in [RFC5170]. 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
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
skipping to change at page 12, line 37 skipping to change at page 13, line 45
| 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 Explicit Source
FEC Payload ID. 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):
Source Block Number (SBN) (16 bit field): this field identifies the
source block to which this FEC source packet belongs. o Source Block Number (SBN) (16 bit field): this field identifies
Encoding Symbol ID (ESI) (16 bit field): this field identifies the the source block to which this FEC source packet belongs.
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.
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 13, line 35 skipping to change at page 14, line 39
+--------------------------------+ +--------------------------------+
| Repair FEC Payload ID | | Repair FEC Payload ID |
+--------------------------------+ +--------------------------------+
| Repair Symbol | | Repair Symbol |
+--------------------------------+ +--------------------------------+
Figure 6: Structure of a FEC Repair Packet with the Repair FEC Figure 6: Structure of a FEC Repair Packet with the Repair FEC
Payload ID. 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):
Source Block Number (SBN) (16 bit field): this field identifies the
source block to which the FEC repair packet belongs. o Source Block Number (SBN) (16 bit field): this field identifies
Encoding Symbol ID (ESI) (16 bit field) this field identifies the the source block to which the FEC repair packet belongs.
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.
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.
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 15, line 13 skipping to change at page 16, line 21
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] is used, with special considerations
to the way this solution is applied (e.g., before versus after FEC to the way this solution is applied (e.g., is encryption applied
protection, and within the end-system versus in a middlebox), to the before or after FEC protection, within the end-system or in a
operational constraints (e.g., performing FEC decoding in a protected middlebox), to the operational constraints (e.g., performing FEC
environment may be complicated or even impossible) and to the threat decoding in a protected environment may be complicated or even
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] is 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
skipping to change at page 18, line 29 skipping to change at page 19, line 40
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 for
their contributions in evaluating the use of LDPC-Staircase codes in their contributions in evaluating the use of LDPC-Staircase codes in
the context of FECFRAME [Matsuzono10]. 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 Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to
Requirement Levels", RFC 2119. Indicate Requirement Levels", RFC 2119.
[RFC5170] Roca, V., Neumann, C., and D. Furodet, "Low Density Parity [RFC5170] Roca, V., Neumann, C., and D. Furodet, "Low
Check (LDPC) Forward Error Correction", RFC 5170, Density Parity Check (LDPC) Forward Error
June 2008. Correction", RFC 5170, June 2008.
[RFC6363] Watson, M., Begen, A., and V. Roca, "Forward Error [RFC6363] Watson, M., Begen, A., and V. Roca, "Forward
Correction (FEC) Framework", RFC 6363, September 2011. Error Correction (FEC) Framework", RFC 6363,
September 2011.
[RFC6364] Begen, A., "Session Description Protocol Elements for the [RFC6364] Begen, A., "Session Description Protocol
Forward Error Correction (FEC) Framework", RFC 6364, Elements for the Forward Error Correction (FEC)
October 2011. Framework", RFC 6364, October 2011.
10.2. Informative References 10.2. Informative References
[RFC3453] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L., Handley, [RFC3453] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L.,
M., and J. Crowcroft, "The Use of Forward Error Correction Handley, M., and J. Crowcroft, "The Use of
(FEC) in Reliable Multicast", RFC 3453, December 2002. Forward Error Correction (FEC) in Reliable
Multicast", RFC 3453, December 2002.
[RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error [RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward
Correction (FEC) Building Block", RFC 5052, August 2007. Error Correction (FEC) Building Block",
RFC 5052, August 2007.
[RFC5510] Lacan, J., Roca, V., Peltotalo, J., and S. Peltotalo, [RFC5510] Lacan, J., Roca, V., Peltotalo, J., and S.
"Reed-Solomon Forward Error Correction (FEC) Schemes", Peltotalo, "Reed-Solomon Forward Error
RFC 5510, April 2009. Correction (FEC) Schemes", RFC 5510,
April 2009.
[SIMPLE_RS] [SIMPLE_RS] Roca, V., Cunche, M., Lacan, J., Bouabdallah,
Roca, V., Cunche, M., Lacan, J., Bouabdallah, A., and K. A., and K. Matsuzono, "Simple Reed-Solomon
Matsuzono, "Simple Reed-Solomon Forward Error Correction Forward Error Correction (FEC) Scheme for
(FEC) Scheme for FECFRAME", FECFRAME",
draft-ietf-fecframe-simple-rs-02 (Work in Progress), draft-ietf-fecframe-simple-rs-04 (Work in
March 2012. Progress), October 2012.
[RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T. Stockhammer, [RFC5053] Luby, M., Shokrollahi, A., Watson, M., and T.
"Raptor Forward Error Correction Scheme", RFC 5053, Stockhammer, "Raptor Forward Error Correction
June 2007. Scheme for Object Delivery", RFC 5053,
June 2007.
[RFC5740] Adamson, B., Bormann, C., Handley, M., and J. Macker, [RFC5740] Adamson, B., Bormann, C., Handley, M., and J.
"NACK-Oriented Reliable Multicast (NORM) Transport Macker, "NACK-Oriented Reliable Multicast
Protocol", RFC 5740, November 2009. (NORM) Transport Protocol", RFC 5740,
November 2009.
[RFC5775] Luby, M., Watson, M., and L. Vicisano, "Asynchronous [RFC5775] Luby, M., Watson, M., and L. Vicisano,
Layered Coding (ALC) Protocol Instantiation", RFC 5775, "Asynchronous Layered Coding (ALC) Protocol
April 2010. Instantiation", RFC 5775, April 2010.
[Cunche08] [Cunche08] Cunche, M. and V. Roca, "Optimizing the Error
Cunche, M. and V. Roca, "Optimizing the Error Recovery Recovery Capabilities of LDPC-Staircase Codes
Capabilities of LDPC-Staircase Codes Featuring a Gaussian Featuring a Gaussian Elimination Decoding
Elimination Decoding Scheme", 10th IEEE International Scheme", 10th IEEE International Workshop on
Workshop on Signal Processing for Space Communications Signal Processing for Space Communications
(SPSC'08), October 2008. (SPSC'08), October 2008.
[CunchePHD10] [CunchePHD10] Cunche, M., "High performances AL-FEC codes for
Cunche, M., "High performances AL-FEC codes for the the erasure channel : variation around LDPC
erasure channel : variation around LDPC codes", PhD codes", PhD dissertation (in French) (http://
dissertation (in tel.archives-ouvertes.fr/tel-00451336/en/),
French) (http://tel.archives-ouvertes.fr/tel- June 2010.
00451336/en/), June 2010.
[Matsuzono10] [Matsuzono10] Matsuzono, K., Detchart, J., Cunche, M., Roca,
Matsuzono, K., Detchart, J., Cunche, M., Roca, V., and H. V., and H. Asaeda, "Performance Analysis of a
Asaeda, "Performance Analysis of a High-Performance Real- High-Performance Real-Time Application with
Time Application with Several AL-FEC Schemes", 35th Annual Several AL-FEC Schemes", 35th Annual IEEE
IEEE Conference on Local Computer Networks (LCN 2010), Conference on Local Computer Networks (LCN
October 2010. 2010), October 2010.
[LDPC-codec] [LDPC-codec] Cunche, M., Roca, V., Neumann, C., and J.
Cunche, M., Roca, V., Neumann, C., and J. Laboure, "LDPC- Laboure, "LDPC-Staircase/LDPC-Triangle Codec
Staircase/LDPC-Triangle Codec Reference Implementation", Reference Implementation", INRIA Rhone-Alpes
INRIA Rhone-Alpes and STMicroelectronics, and STMicroelectronics,
<http://planete-bcast.inrialpes.fr/>. <http://planete-bcast.inrialpes.fr/>.
[LDPC-codec-OpenFEC] [LDPC-codec-OpenFEC] "The OpenFEC project", <http://openfec.org/>.
"The OpenFEC project", <http://openfec.org/>.
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
Email: vincent.roca@inria.fr EMail: vincent.roca@inria.fr
URI: http://planete.inrialpes.fr/people/roca/ URI: http://planete.inrialpes.fr/people/roca/
Mathieu Cunche Mathieu Cunche
INSA-Lyon/INRIA INSA-Lyon/INRIA
Laboratoire CITI Laboratoire CITI
6 av. des Arts 6 av. des Arts
Villeurbanne cedex 69621 Villeurbanne cedex 69621
France France
Email: mathieu.cunche@inria.fr EMail: mathieu.cunche@inria.fr
URI: http://mathieu.cunche.free.fr/ URI: http://mathieu.cunche.free.fr/
Jerome Lacan Jerome Lacan
ISAE, Univ. of Toulouse ISAE, Univ. of Toulouse
10 av. Edouard Belin; BP 54032 10 av. Edouard Belin; BP 54032
Toulouse cedex 4 31055 Toulouse cedex 4 31055
France France
Email: jerome.lacan@isae.fr EMail: jerome.lacan@isae.fr
URI: http://personnel.isae.fr/jerome-lacan/ URI: http://personnel.isae.fr/jerome-lacan/
 End of changes. 75 change blocks. 
126 lines changed or deleted 179 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/