One document matched: draft-ietf-fecframe-ldpc-01.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
]>
<rfc category="std" ipr="trust200902">
<?xml-stylesheet type='text/xsl'
href='http://xml.resource.org/authoring/rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="no"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>
<front>
<title abbrev='Simple LDPC-Staircase FEC Scheme'>
Simple LDPC-Staircase Forward Error Correction (FEC) Scheme for FECFRAME
</title>
<author initials='V' surname="Roca" fullname='Vincent Roca'>
<organization>INRIA</organization>
<address>
<postal>
<street>655, av. de l'Europe</street>
<street>Inovallee; Montbonnot</street>
<city>ST ISMIER cedex</city>
<code>38334</code>
<country>France</country>
</postal>
<email>vincent.roca@inria.fr</email>
<uri>http://planete.inrialpes.fr/people/roca/</uri>
</address>
</author>
<author initials='M' surname="Cunche" fullname='Mathieu Cunche'>
<organization>NICTA</organization>
<address>
<postal>
<street></street>
<city></city>
<code></code>
<country>Australia</country>
</postal>
<email>mathieu.cunche@nicta.com.au</email>
<uri>http://mathieu.cunche.free.fr/</uri>
</address>
</author>
<author initials="J" surname="Lacan" fullname="Jerome Lacan">
<organization>ISAE/LAAS-CNRS</organization>
<address>
<postal>
<street>1, place Emile Blouin</street>
<city>Toulouse</city>
<code>31056</code>
<country>France</country>
</postal>
<email>jerome.lacan@isae.fr</email>
<uri>http://dmi.ensica.fr/auteur.php3?id_auteur=5</uri>
</address>
</author>
<date day="29" month="November" year="2011"/>
<area>Transport</area>
<workgroup>FecFrame</workgroup>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>Forward Error Correction</keyword>
<keyword>LDPC-Staircase</keyword>
<abstract>
<t>
This document describes a fully-specified simple FEC scheme for LDPC-Staircase codes
that can be used to protect media streams along the lines defined by the FECFRAME framework.
<!-- These codes belong to the well-known class of "Low Density Parity Check" codes. -->
These codes have many interesting properties:
they are systematic codes, they perform close to ideal codes in many use-cases and they also
feature very high encoding and decoding throughputs.
LDPC-Staircase codes are therefore a good solution to protect a single high bitrate source
flow, or to protect globally several mid-rate flows within a single FECFRAME instance.
They are also a good solution whenever the processing load of a software encoder or
decoder must be kept to a minimum.
</t>
</abstract>
</front>
<middle>
<section anchor="Introduction" title="Introduction">
<!-- =========================================== -->
<t>The use of Forward Error Correction (FEC) codes is a classic solution to improve the reliability
of unicast, multicast and broadcast Content Delivery Protocols (CDP) and applications
<xref target="RFC3453"/>.
The <xref target="RFC6363"/> document describes a generic framework to use FEC schemes
with media delivery applications, and for instance with real-time streaming media applications based
on the RTP real-time protocol.
Similarly the <xref target="RFC5052"/> document describes a generic framework to use FEC schemes
with with objects (e.g., files) delivery applications based on the ALC <xref target="RFC5775"/>
and NORM <xref target="RFC5740"/> reliable multicast transport protocols.
</t>
<t>More specifically, the <xref target="RFC5053"/> (Raptor) and <xref target="RFC5170"/> (LDPC-Staircase
and LDPC-Triangle) FEC schemes introduce erasure codes based on sparse parity check matrices for object
delivery protocols like ALC and NORM.
Similarly, the <xref target="RFC5510"/> document introduces Reed-Solomon codes based on Vandermonde
matrices for the same object delivery protocols.
All these codes are systematic codes, meaning that the k source symbols are part of the n encoding symbols.
Additionally, the Reed-Solomon FEC codes belong to the class of Maximum Distance Separable (MDS) codes that
are optimal in terms of erasure recovery capabilities.
It means that a receiver can recover the k source symbols from any set of exactly k encoding symbols out of n.
This is not the case with either Raptor or LDPC-Staircase codes, and these codes require a certain
number of encoding symbols in excess to k.
However, this number is small in practice when an appropriate decoding scheme is used at the
receiver <xref target="Cunche08"/>.
Another key difference is the high encoding/decoding complexity of Reed-Solomon codecs compared to
Raptor or LDPC-Staircase codes.
A difference of one or more orders of magnitude or more in terms of encoding/decoding speed exists between
the Reed-Solomon and LDPC-Staircase software codecs <xref target="Cunche08"/><xref target="CunchePHD10"/>.
Finally, Raptor and LDPC-Staircase codes are large block FEC codes, in the sense of <xref target="RFC3453"/>,
since they can efficiently deal with a large number of source symbols.
</t>
<t>
The present document focuses on LDPC-Staircase codes, that belong to the well-known class of
"Low Density Parity Check" codes.
Because of their key features, these codes are a good solution in many situations, as detailed
in <xref target="OperationsManagement"/>.
<!--
to protect a single high bitrate source
flow as in <xref target="Matsuzono10"/>, or to protect globally several mid-rate source flows within a single
FECFRAME instance.
They are also a good solution whenever processing requirements at a software encoder or decoder must be
kept to a minimum, independently of the ADU flow(s) bitrate.
-->
</t>
<t>
This documents inherits from <xref target="RFC5170"/> the specifications of the core LDPC-Staircase codes.
Therefore this document specifies only the information specific to the FECFRAME context and
refers to <xref target="RFC5170"/> for the core specifications of the codes.
To that purpose, the present document introduces:
<list style="symbols">
<t> the Fully-Specified FEC Scheme with FEC Encoding ID XXX that specifies a simple way
of using LDPC-Staircase codes in order to protect arbitrary ADU flows. </t>
</list>
</t>
<t>
Finally, publicly available reference implementations of these codes are available <xref target="LDPC-codec"/>
<xref target="LDPC-codec-OpenFEC"/>.
</t>
</section>
<section anchor="Terminology" title="Terminology">
<!-- =========================================== -->
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.</t>
</section>
<section anchor="DefinitionsNotationsandAbbreviations" title="Definitions Notations and Abbreviations">
<!-- =========================================== -->
<section anchor="Definitions" title="Definitions">
<!-- =========================================== -->
<t>This document uses the following terms and definitions.
Some of them are FEC scheme specific and are in line with <xref target="RFC5052"/>:
<list style="hanging">
<t hangText="Source symbol:"> unit of data used during the encoding process.
In this specification, there is always one source symbol per ADU.</t>
<t hangText="Encoding symbol:"> unit of data generated by the encoding process.
With systematic codes, source symbols are part
of the encoding symbols.</t>
<t hangText="Repair symbol:"> encoding symbol that is not a source symbol.</t>
<t hangText="Code rate:"> the k/n ratio, i.e., the ratio between the number
of source symbols and the number of encoding symbols.
By definition, 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 produced during the encoding process.</t>
<t hangText="Systematic code:"> FEC code in which the source symbols are part
of the encoding symbols. The LDPC-Staircase codes
introduced in this document are systematic.</t>
<t hangText="Source block:"> a block of k source symbols that are considered
together for the encoding.</t>
<t hangText="Packet Erasure Channel:">
a communication path where packets are either
dropped (e.g., by a congested router, or because the
number of transmission errors exceeds the correction
capabilities of the physical layer codes) or
received. When a packet is received, it is assumed
that this packet is not corrupted.</t>
</list>
</t>
<t>
Some of them are FECFRAME framework specific and are in line with
<xref target="RFC6363"/>:
<list style="hanging">
<t hangText="Application Data Unit (ADU):">
The unit of source data provided as payload to the transport layer.
Depending on the use-case, an ADU may use an RTP encapsulation.</t>
<t hangText="(Source) ADU Flow:">
A sequence of ADUs associated with a transport-layer flow
identifier (such as the standard 5-tuple {Source IP address, source
port, destination IP address, destination port, transport protocol}).
Depending on the use-case, several ADU flows may be protected
together by the FECFRAME framework.</t>
<t hangText="ADU Block:"> a set of ADUs that are considered together by the FECFRAME
instance for the purpose of the FEC scheme.
Along with the F[], L[], and Pad[] fields, they form the set
of source symbols over which FEC encoding will be performed.</t>
<t hangText="ADU Information (ADUI):">
a unit of data constituted by the ADU and the associated
Flow ID, Length and Padding fields (<xref target="CommonProc_src_block_creation"/>).
This is the unit of data that is used as source symbol.</t>
<t hangText="FEC Framework Configuration Information:">
Information which controls the operation of the FEC Framework.
The FFCI enables the synchronization of the FECFRAME sender
and receiver instances.</t>
<t hangText="FEC Source Packet:">
At a sender (respectively, at a receiver) a
payload submitted to (respectively, received from) the transport
protocol containing an ADU along with an optional Explicit Source FEC
Payload ID.</t>
<t hangText="FEC Repair Packet:">
At a sender (respectively, at a receiver) a
payload submitted to (respectively, received from) the transport
protocol containing one repair symbol along with a Repair FEC
Payload ID and possibly an RTP header.</t>
</list>
</t>
<t>
The above terminology is illustrated in <xref target="fig_terminology"/>
(sender's point of view):
</t>
<figure anchor="fig_terminology" title="Terminology used in this document (sender).">
<artwork><![CDATA[
+----------------------+
| Application |
+----------------------+
|
| (1) Application Data Units (ADUs)
|
v
+----------------------+ +----------------+
| FEC Framework | | |
| |-------------------------->| FEC Scheme |
|(2) Construct source |(3) Source Block | |
| blocks | |(4) FEC Encoding|
|(6) Construct FEC |<--------------------------| |
| source and repair | | |
| packets |(5) Explicit Source FEC | |
+----------------------+ Payload IDs +----------------+
| Repair FEC Payload IDs
| Repair symbols
|
|(7) FEC source and repair packets
v
+----------------------+
| Transport Layer |
| (e.g., UDP) |
+----------------------+
]]></artwork>
</figure>
</section>
<section anchor="Notations" title="Notations">
<!-- =========================================== -->
<t>This document uses the following notations:
Some of them are FEC scheme specific:
<list style="hanging" hangIndent="7">
<t hangText="k"> denotes the number of source symbols in a source block.</t>
<t hangText="max_k"> denotes the maximum number of source symbols for any source block.</t>
<!-- <t hangText="n_r"> denotes the number of repair symbols generated for a source block.</t> -->
<t hangText="n"> denotes the number of encoding symbols generated for a source block.</t>
<!-- Therefore: n = k + n_r.</t> -->
<!--
<t hangText="max_n"> denotes the maximum number of encoding symbols generated for any source block.</t> -->
<t hangText="E"> denotes the encoding symbol length in bytes.</t>
<t hangText="CR"> denotes the "code rate", i.e., the k/n ratio.</t>
<t hangText="N1"> denotes the target number of "1s" per column in the left side of
the parity check matrix.</t>
<t hangText="N1m3"> denotes the value N1 - 3.</t>
<!-- <t hangText="G"> denotes the number of Repair Symbols in a given FEC Repair Packet.
This value may differ between different FEC Repair Packets.</t> -->
<t hangText="a^^b"> denotes a raised to the power b.</t>
</list>
</t>
<t>
Some of them are FECFRAME framework specific:
<list style="hanging" hangIndent="7">
<t hangText="B"> denotes the number of ADUs per ADU block.</t>
<t hangText="max_B"> denotes the maximum number of ADUs for any ADU block.</t>
</list>
</t>
</section>
<section anchor="Abbreviations" title="Abbreviations">
<!-- =========================================== -->
<t>This document uses the following abbreviations:
<list style="hanging" hangIndent="7">
<t hangText="ADU"> stands for Application Data Unit.</t>
<t hangText="ESI"> stands for Encoding Symbol ID.</t>
<t hangText="FEC"> stands for Forward Error (or Erasure) Correction code.</t>
<t hangText="FFCI"> stands for FEC Framework Configuration Information.</t>
<t hangText="FSSI"> stands for FEC Scheme Specific Information.</t>
<t hangText="LDPC"> stands for Low Density Parity Check.</t>
<t hangText="MDS"> stands for Maximum Distance Separable code.</t>
</list>
</t>
</section>
</section>
<section anchor="CommonProcedures" title="Common Procedures Related to the ADU Block and
Source Block Creation">
<!-- ================ -->
<t>
This section introduces the procedures that are used during the ADU block and the related
source block creation, for the FEC scheme considered.
</t>
<section anchor="Requirements" title="Restrictions">
<!-- ==================================== -->
<t>
This specification has the following restrictions:
<list style="symbols">
<t> there MUST be exactly one source symbol per ADUI, and therefore per ADU;</t>
<t> there MUST be exactly one repair symbol per FEC Repair Packet;</t>
<t> there MUST be exactly one source block per ADU block;</t>
<t> 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 <xref target="RFC5170"/>;</t>
</list>
</t>
</section>
<section anchor="CommonProc_problem" title="ADU Block Creation">
<!-- ==================================== -->
<t>
Two kinds of limitations MUST be considered, that impact the ADU block creation:
<list style="symbols">
<t> at the FEC Scheme level: the FEC Scheme and the FEC codec have limitations that
define a maximum source block size;</t>
<t> at the FECFRAME instance level: the target use-case MAY have real-time constraints
that MAY define a maximum ADU block size;</t>
</list>
Note that terminology "maximum source block size" and "maximum ADU block size"
depends on the point of view that is adopted (FEC Scheme versus FECFRAME instance).
However, in this document, both refer to the same value since <xref target="Requirements"/>
requires there is exactly one source symbol per ADU.
We now detail each of these aspects.
</t>
<t>
The maximum source block size in symbols, max_k, depends on several parameters:
the code rate (CR), the Encoding Symbol ID (ESI) field length in the Explicit
Source/Repair FEC Payload ID (16 bits), as well as possible internal codec limitations.
More specifically, max_k cannot be larger than the following values, derived
from the ESI field size limitation, for a given code rate:
<list style="empty">
<t>max1_k = 2^^(16 - ceil(Log2(1/CR)))</t>
</list>
Some common max1_k values are:
<list style="symbols">
<t>CR == 1 (no repair symbol): max1_k = 2^^16 = 65536 symbols</t>
<t>1/2 ≤ CR < 1: max1_k = 2^^15 = 32,768 symbols</t>
<t>1/4 ≤ CR < 1/2: max1_k = 2^^14 = 16,384 symbols</t>
</list>
</t>
<t>Additionally, a codec MAY impose other limitations on the maximum source
block size, for instance, because of a limited working memory size.
This decision MUST be clarified at implementation time, when the target
use-case is known. This results in a max2_k limitation.</t>
<t>
Then, max_k is given by:
<list style="empty">
<t>max_k = min(max1_k, max2_k)</t>
</list>
Note that this calculation is only required at the encoder (sender), since the
actual k parameter (k ≤ max_k) is communicated to the decoder (receiver) through
the Explicit Source/Repair FEC Payload ID.
</t>
<t>
The source ADU flows MAY have real-time constraints.
In that case the maximum number of ADUs of an ADU block must not exceed a certain
threshold since it directly impacts the decoding delay.
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 decoding to succeed, and therefore
the larger the decoding delay.
When the target use-case is known, these real-time constraints result in an upper bound to
the ADU block size, max_rt.
</t>
<t>
For instance, if the use-case specifies a maximum decoding latency, l, and if each
source ADU covers a duration d of a continuous media (we assume here the simple case
of a constant bit rate ADU flow), then the ADU block size must not exceed:
<list style="empty">
<t>max_rt = floor(l / d)</t>
</list>
After encoding, this block will produce a set of at most n = max_rt / CR encoding symbols.
These n encoding symbols will have to be sent at a rate of n / l packets per second.
For instance, with d = 10 ms, l = 1 s, max_rt = 100 ADUs.
</t>
<t>
If we take into account all these constraints, we find:
<list style="empty">
<t>max_B = min(max_k, max_rt)</t>
</list>
This max_B parameter is an upper bound to the number of ADUs that can constitute an ADU block.
</t>
</section>
<section anchor="CommonProc_src_block_creation"
title="Source Block Creation">
<!-- ==================================== -->
<t>
In its most general form the FECFRAME framework and the LDPC-Staircase FEC scheme
are meant to protect a set of independent flows.
Since the flows have no relationship to one another, the ADU size of each
flow can potentially vary significantly.
Even in the special case of a single flow, the ADU sizes can largely
vary (e.g., the various frames of a "Group of Pictures (GOP) of an H.264 flow).
This diversity must be addressed since the LDPC-Staircase FEC scheme requires a constant
encoding symbol size (E parameter) per source block.
Since this specification requires that there is only one source symbol per ADU,
E must be large enough to contain all the ADUs of an ADU block along
with their prepended 3 bytes (see below).
</t>
<t>
In situations where E is determined per source block
(default, specified by the FFCI/FSSI with S = 0, <xref target="RSover2mArbitraryFlows_fssi"/>),
E is equal 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 first FEC Repair Packet for this source block,
since this packet MUST contain a single repair symbol (<xref target="RSover2mArbitraryFlows_repair_fpi"/>),
a receiver determines the E parameter used for this source block.
</t>
<t>
In situations where E is fixed
(specified by the FFCI/FSSI with S = 1, <xref target="RSover2mArbitraryFlows_fssi"/>),
then E must be greater or equal to the size of 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.
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 message, using an appropriate
mechanism) and is not considered by this specification.
</t>
<t>
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 ≤ i ≤ B-1, 3 bytes are prepended
(<xref target="fig_src_block_creation_global_enc"/>):
<list style="symbols">
<t>The first byte, FID[i] (Flow ID), contains the integer identifier
associated to the source ADU flow to which this ADU
belongs to.
It is assumed that a single byte is sufficient, or said
differently, that no more than 256 flows will be protected by
a single instance of the FECFRAME framework.
</t>
<t>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 the ADU itself and does not include the
FID[i], L[i], or Pad[i] fields.
</t>
</list>
</t>
<t>
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 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 one source symbol to the source block.
</t>
<figure anchor="fig_src_block_creation_global_enc" title="Source block creation,
for code rate 1/2 (equal number of source and repair symbols, 4 in this example), and S = 0.">
<artwork>
Encoding Symbol Length (E)
< -------------------------------------------------------------- >
+----+----+-----------------------+------------------------------+
|F[0]|L[0]| ADU[0] | Pad[0] |
+----+----+----------+------------+------------------------------+
|F[1]|L[1]| ADU[1] | Pad[1] |
+----+----+----------+-------------------------------------------+
|F[2]|L[2]| ADU[2] |
+----+----+------+-----------------------------------------------+
|F[3]|L[3]|ADU[3]| Pad[3] |
+----+----+------+-----------------------------------------------+
\_______________________________ _______________________________/
\/
simple FEC encoding
+----------------------------------------------------------------+
| Repair 4 |
+----------------------------------------------------------------+
. .
. .
+----------------------------------------------------------------+
| Repair 7 |
+----------------------------------------------------------------+
</artwork>
</figure>
<t>
Note that neither the initial 3 bytes nor the optional padding
are sent over the network.
However, they are considered during FEC encoding.
It means that a receiver who lost a certain FEC source packet (e.g., the
UDP datagram containing this FEC source packet) 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 any)
and identify the corresponding ADU flow.
</t>
</section>
</section>
<section anchor="RSover2mArbitraryFlows" title="LDPC-Staircase FEC Scheme for Arbitrary ADU Flows">
<!-- ==================================== -->
<section anchor="RSover2mArbitraryFlows_formatsAndCodes" title="Formats and Codes">
<!-- ==================================== -->
<section title="FEC Framework Configuration Information">
<!-- ================ -->
<t>
The FEC Framework Configuration Information (or FFCI) includes information
that MUST be communicated between the sender and receiver(s).
More specifically, it enables the synchronization of the FECFRAME sender
and receiver instances.
It includes both mandatory elements and scheme-specific elements,
as detailed below.
</t>
<section title="Mandatory Information">
<!-- ================ -->
<t>
<list style="hanging">
<t hangText="FEC Encoding ID:">
the value assigned to this fully-specified FEC scheme MUST be XXX,
as assigned by IANA (<xref target="iana-cons"/>).</t>
</list>
When SDP is used to communicate the FFCI, this FEC Encoding ID is carried in
the 'encoding-id' parameter.
</t>
</section>
<section title="FEC Scheme-Specific Information"
anchor="RSover2mArbitraryFlows_fssi">
<!-- ================ -->
<t>
The FEC Scheme Specific Information (FSSI) includes elements that are specific
to the present FEC scheme. More precisely:
<list style="hanging">
<t hangText="PRNG seed (seed):">
a non-negative 32 bit integer used as the seed of the Pseudo Random Number
Generator, as defined in <xref target="RFC5170"/>.</t>
<t hangText="Encoding symbol length (E):">
a non-negative integer that indicates
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 = 0).</t>
<t hangText="Strict (S) flag:">
when set to 1 this flag indicates that the E parameter is the actual encoding symbol
length value for each block of the session
(unless otherwise notified by an updated FFCI 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 encoding symbol
length value for each block of the session
(unless otherwise notified by an updated FFCI if this possibility is considered by the use-case or CDP).
</t>
<t hangText="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 matrix, N1, is then
equal to N1m3 + 3, as specified in <xref target="RFC5170"/>.</t>
</list>
These elements are required both by the sender (LDPC-Staircase encoder) and the receiver(s) (LDPC-Staircase decoder).
</t>
<t>
When SDP is used to communicate the FFCI, this FEC scheme-specific information is carried in
the 'fssi' parameter in textual representation as specified in <xref target="RFC6364"/>.
For instance:
</t>
<t>
fssi=seed:1234,E:1400,S:0,n1m3:0
</t>
<t>
If another mechanism requires the FSSI to be carried as an opaque octet string
(for instance after a Base64 encoding), the encoding format consists of the following 7 octets:
<list style="symbols">
<t> PRNG seed (seed): 32 bit field.</t>
<t> Encoding symbol length (E): 16 bit field.</t>
<t> Strict (S) flag: 1 bit field.</t>
<t> Reserved: a 4 bit field that MUST be set to zero.</t>
<t> N1m3 parameter (n1m3): 3 bit field.</t>
</list>
</t>
<figure anchor="fig_RSover2mArbitraryFlows_fssi_binary" title="FSSI encoding format.">
<artwork>
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PRNG seed (seed) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encoding Symbol Length (E) |S| resvd | n1m3|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</section>
</section>
<section title="Explicit Source FEC Payload ID"
anchor="RSover2mArbitraryFlows_src_fpi">
<!-- ================ -->
<t>
A FEC source packet MUST contain an Explicit Source FEC Payload ID that is appended to the
end of the packet as illustrated in <xref target="fig_src_pkt_format"/>.
</t>
<figure anchor="fig_src_pkt_format" title="Structure of a FEC Source Packet with the
Explicit Source FEC Payload ID.">
<artwork>
+--------------------------------+
| IP Header |
+--------------------------------+
| Transport Header |
+--------------------------------+
| ADU |
+--------------------------------+
| Explicit Source FEC Payload ID |
+--------------------------------+
</artwork>
</figure>
<t>
More precisely, the Explicit Source FEC Payload ID is composed of the following fields
(<xref target="fig_src_fpi"/>):
<list style="hanging">
<t hangText="Source Block Number (SBN) (16 bit field):">
this field identifies the source block to which this FEC source packet belongs.</t>
<t hangText="Encoding Symbol ID (ESI) (16 bit field):">
this field identifies the source symbol contained in this FEC source packet.
This value is such that 0 ≤ ESI ≤ k - 1 for source symbols.</t>
<t hangText="Source Block Length (k) (16 bit field):">
this field provides the number of source symbols for this source block, i.e., the k parameter.</t>
</list>
</t>
<figure anchor="fig_src_fpi" title="Source FEC Payload ID encoding format.">
<artwork>
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Number (SBN) | Encoding Symbol ID (ESI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Length (k) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</section>
<section title="Repair FEC Payload ID" anchor="RSover2mArbitraryFlows_repair_fpi">
<!-- ================ -->
<t>
A FEC repair packet MUST contain a Repair FEC Payload ID that is prepended to the
repair symbol(s) as illustrated in <xref target="fig_repair_pkt_format"/>.
There MUST be a single repair symbol per FEC repair packet.
</t>
<figure anchor="fig_repair_pkt_format" title="Structure of a FEC Repair Packet with the
Repair FEC Payload ID.">
<artwork>
+--------------------------------+
| IP Header |
+--------------------------------+
| Transport Header |
+--------------------------------+
| Repair FEC Payload ID |
+--------------------------------+
| Repair Symbol |
+--------------------------------+
</artwork>
</figure>
<t>
More precisely, the Repair FEC Payload ID is composed of the following fields:
(<xref target="fig_repair_fpi"/>):
<list style="hanging">
<t hangText="Source Block Number (SBN) (16 bit field):">
this field identifies the source block to which the FEC repair packet belongs.</t>
<t hangText="Encoding Symbol ID (ESI) (16 bit field)">
this field identifies the repair symbol contained in this FEC repair packet.
This value is such that k ≤ ESI ≤ n - 1 for repair symbols.</t>
<t hangText="Source Block Length (k) (16 bit field):">
this field provides the number of source symbols for this source block,
i.e., the k parameter.</t>
<t hangText="Number of Encoding Symbols (n) (16 bit field):">
this field provides the number of encoding symbols for this source block,
i.e., the n parameter.</t>
</list>
</t>
<figure anchor="fig_repair_fpi" title="Repair FEC Payload ID encoding format.">
<artwork>
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Number (SBN) | Encoding Symbol ID (ESI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Length (k) | Number Encoding Symbols (n) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
</section>
</section> <!-- RSover2mArbitraryFlows_formatsAndCodes -->
<section anchor="RSover2mArbitraryFlows_Procedures" title="Procedures">
<!-- ================ -->
<t>
The following procedures apply:
<list style="symbols">
<t>
The source block creation procedures are specified in
<xref target="CommonProc_src_block_creation"/>.
</t>
<t>
The SBN value is incremented for each new source block, starting at
0 for the first block of the ADU flow.
Wrapping to zero will happen for long sessions, after value 2^^16 - 1.
</t>
<t>
The ESI of encoding symbols is managed sequentially, starting at
0 for the first symbol.
The first k values (0 ≤ ESI ≤ k - 1) identify source symbols, whereas
the last n-k values (k ≤ ESI ≤ n - 1) identify repair symbols.
</t>
<t>
The FEC repair packet creation procedures are specified in
<xref target="RSover2mArbitraryFlows_repair_fpi"/>.
</t>
</list>
</t>
</section>
<section anchor="RSover2mArbitraryFlows_FECCodeSpecification" title="FEC Code Specification">
<!-- ================ -->
<t>
The present document inherits from <xref target="RFC5170"/> the specification of the
core LDPC-Staircase codes for a packet erasure transmission channel.
</t>
<t>
Because of the requirement to have exactly one encoding symbol per group,
i.e., because G MUST be equal to 1 (<xref target="Requirements"/>),
several parts of <xref target="RFC5170"/> are useless.
In particular, this is the case of Section 5.6. "Identifying the G Symbols of an Encoding Symbol Group".
</t>
</section>
</section> <!-- RSover2mArbitraryFlows -->
<!-- =========================================================================================== -->
<section anchor="SecurityConsiderations" title="Security Considerations">
<!-- ==================================== -->
<t>
The FEC Framework document <xref target="RFC6363"/> provides a comprehensive
analysis of security considerations applicable to FEC schemes.
Therefore the present section follows the security considerations section of
<xref target="RFC6363"/> and only discusses topics that are specific
to the use of LDPC-Staircase codes.
</t>
<section title="Attacks Against the Data Flow">
<!-- ================ -->
<section title="Access to Confidential Content">
<!-- ================ -->
<t>The LDPC-Staircase FEC Scheme specified in this document does not change the
recommendations of <xref target="RFC6363"/>.
To summarize, if confidentiality is a concern, it is RECOMMENDED that one of the
solutions mentioned in <xref target="RFC6363"/> is used, with special
considerations to the way this solution is applied (e.g., before versus after
FEC protection, and within the end-system versus in a middlebox), to the operational
constraints (e.g., performing FEC decoding in a protected environment may be
complicated or even impossible) and to the threat model.
</t>
</section>
<section title="Content Corruption" anchor="sec_content_corruption">
<!-- ================ -->
<t>The LDPC-Staircase FEC Scheme specified in this document does not change the
recommendations of <xref target="RFC6363"/>.
To summarize, it is RECOMMENDED that one of the solutions mentioned in
<xref target="RFC6363"/> is used on both the FEC Source and Repair Packets.
</t>
</section>
</section>
<section title="Attacks Against the FEC Parameters">
<!-- ================ -->
<t>
The FEC Scheme specified in this document defines parameters that
can be the basis of several attacks.
More specifically, the following parameters of the FFCI may be modified
by an attacker (<xref target="RSover2mArbitraryFlows_fssi"/>):
<list style="symbols">
<t>FEC Encoding ID:
changing this parameter leads the receiver to consider a different
FEC Scheme, which enables an attacker to create a Denial of Service (DoS).
</t>
<t>Encoding symbol length (E):
setting this E parameter to a value smaller than the valid one enables
an attacker to create a DoS since the repair symbols and certain source
symbols will be larger than E, which is an incoherency for the receiver.
Setting this E parameter to a value larger than the valid one has
similar impacts when S=1 since the received repair symbol size will be
smaller than expected. On the opposite it will not lead to any incoherency
when S=0 since the actual symbol length value for the block is determined
by the size of any received repair symbol, as long as this value is smaller
than E.
However setting this E parameter to a larger value may have impacts on
receivers that pre-allocate memory space in advance to store incoming
symbols.
</t>
<t>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 receiver if the
actual symbol size varies over different source blocks.
Flipping this S flag from 1 to 0 has no major consequences unless the
receiver requires to have a fixed E value (e.g., because the receiver
pre-allocates memory space).
</t>
<t>
N1 minus 3 (n1m3):
changing this parameter leads the receiver to consider a different
code, which enables an attacker to create a DoS.
</t>
</list>
</t>
<t>
It is therefore RECOMMENDED that security measures are taken to
guarantee the FFCI integrity, as specified in <xref target="RFC6363"/>.
How to achieve this depends on the way the FFCI is communicated from the sender
to the receiver, which is not specified in this document.
</t>
<t>
Similarly, attacks are possible against the Explicit Source FEC Payload ID
and Repair FEC Payload ID: by modifying 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 easily corrupt the block identified by the SBN.
Other consequences, that are use-case and/or CDP dependant, may also happen.
It is therefore RECOMMENDED that security measures are taken to guarantee the
FEC Source and Repair Packets as stated in <xref target="RFC6363"/>.
</t>
</section>
<section title="When Several Source Flows are to be Protected Together">
<!-- ================ -->
<t>The LDPC-Staircase FEC Scheme specified in this document does not change the
recommendations of <xref target="RFC6363"/>.</t>
</section>
<section title="Baseline Secure FEC Framework Operation">
<!-- ================ -->
<t>The LDPC-Staircase FEC Scheme specified in this document does not change the
recommendations of <xref target="RFC6363"/> concerning the use of
the IPsec/ESP security protocol as a mandatory to implement (but not mandatory
to use) security scheme.
This is well suited to situations where the only insecure domain is the one
over which the FEC Framework operates.
</t>
</section>
</section>
<!-- =========================================================================================== -->
<section anchor="OperationsManagement" title="Operations and Management Considerations">
<!-- ==================================== -->
<t>
The FEC Framework document <xref target="RFC6363"/> provides a comprehensive
analysis of operations and management considerations applicable to FEC schemes.
Therefore the present section only discusses topics that are specific to the use of
LDPC-Staircase codes as specified in this document.
</t>
<section title="Operational Recommendations">
<!-- ================ -->
<t>
LDPC-Staircase codes have excellent erasure recovery capabilities with
large source blocks, close to ideal MDS codes.
For instance, independently of FECFRAME, with source block size k=1024, CR=2/3, N1=5, G=1, with a hybrid
ITerative/Maximum Likelihood (IT/ML) decoding approach (see below) and when all symbols
are sent in a random order (see below), the average overhead
amounts to 0.64% (corresponding to 6.5 symbols in addition to k) and receiving
1046 symbols (corresponding to a 2.1% overhead) is sufficient to reduce the decoding
failure probability to 5.9*10^^-5.
This is why these codes are a good solution to protect a
single high bitrate source flow as in <xref target="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
hundreds (or more) source symbols.
</t>
<t>
LDPC-Staircase codes are also a good solution whenever processing
requirements at a software encoder or decoder must be kept to a minimum.
This is true when the decoder uses an IT decoding algorithm,
or an ML algorithm (we use a Gaussian Elimination as the ML algorithm) when
this latter is carefully implemented and the source block size kept reasonable,
or a mixture of both techniques which is the recommended solution
<xref target="Cunche08"/><xref target="CunchePHD10"/>.
For instance an average decoding speed between 1.3 Gbps (corresponding to a very
bad channel, close to the theoretical decoding limit and requiring an ML decoding)
and 4.3 Gbps (corresponding to a medium quality channel where IT decoding is sufficient)
are easily achieved with a source block size composed of k=1024 source symbols,
a code rate CR=2/3 (i.e., 512 repair symbols), 1024 byte long symbols, G=1, and N1=5,
on an Intel Xeon 5120/1.86GHz workstation running Linux/64 bits.
Additionally, with a hybrid IT/ML approach, a receiver can decide if and when
ML decoding is used, depending on local criteria (e.g., battery or CPU
capabilities), independently from other receivers.
</t>
<t>
As the source block size decreases, the erasure recovery capabilities
of LDPC codes in general also decrease.
In the case of LDPC-Staircase codes, in order to compensate this phenomenon,
it is recommended to increase the N1 parameter (e.g., experiments carried
out in <xref target="Matsuzono10"/> use N1=7 if k=170 symbols, and N1=5 otherwise)
and to use a hybrid IT/ML decoding approach.
For instance, independently of FECFRAME, with a small source block size k=256 symbols, CR=2/3, N1=7, and G=1,
8he average overhead amounts to 0.71% (corresponding to 1.8 symbols in addition to k),
and receiving 271 symbols (corresponding to a 5.9% overhead)
is sufficient to reduce the decoding failure probability to 5.9*10^^-5.
Using N1=9 or 10 further improves these results if need be, which also enables
to use LDPC-Staircase codes with k=100 symbols for instance.
</t>
<t>
With very small source blocks (e.g., a few tens symbols), using for instance
Reed-Solomon codes <xref target="SIMPLE_RS"/> or 2D parity check codes
MAY be more appropriate.
</t>
<t>
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, consists
in sending FEC Repair Packets in random order (rather than in sequence) while
FEC Source Packets are sent first and in sequence.
Sending all packets in a random order is another possibility, but it requires
that all repair symbols for a source block be produced first, which adds some
extra delay at a sender.
</t>
</section>
</section>
<!-- =========================================================================================== -->
<section anchor="iana-cons" title="IANA Considerations">
<!-- =============================================== -->
<t>
Values of FEC Encoding IDs are subject to IANA registration.
<xref target="RFC6363"/> defines general guidelines on IANA
considerations.
In particular it defines a registry called FEC Framework (FECFRAME) FEC Encoding IDs
whose values are granted on an IETF Consensus basis.
</t>
<t>
This document registers one value in the FEC Framework (FECFRAME)
FEC Encoding IDs registry as follows:
<list style="symbols">
<t>XXX refers to the Simple LDPC-Staircase <xref target="RFC5170"/> FEC Scheme for Arbitrary Packet Flows.
</t>
</list>
</t>
</section>
<section anchor="Acknowledgments" title="Acknowledgments">
<!-- =============================================== -->
<t>
The authors want to thank K. Matsuzono, J. Detchart and H. Asaeda for their
contributions in evaluating the use of LDPC-Staircase codes in the context
of FECFRAME <xref target="Matsuzono10"/>.
</t>
</section>
</middle>
<back>
<references title="Normative References">
<!-- ==================================== -->
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization/>
</author>
<date year=""/>
</front>
<seriesInfo name="RFC" value="2119"/>
</reference>
<reference anchor="RFC5170">
<front>
<title>Low Density Parity Check (LDPC) Forward Error Correction</title>
<author initials="V." surname="Roca"> <organization/> </author>
<author initials="C." surname="Neumann"> <organization /> </author>
<author initials="D." surname="Furodet"> <organization /> </author>
<date month="June" year="2008"/>
</front>
<seriesInfo name="RFC" value="5170"/>
</reference>
<reference anchor="RFC6363">
<front>
<title>Forward Error Correction (FEC) Framework</title>
<author initials="M." surname="Watson" fullname="Mark Watson"> <organization/> </author>
<author initials="A." surname="Begen" fullname="Ali Begen"> <organization></organization> </author>
<author initials="V." surname="Roca" fullname="Vincent Roca"> <organization></organization> </author>
<date month="September" year="2011" />
</front>
<seriesInfo name="RFC" value="6363" />
</reference>
<reference anchor="RFC6364">
<front>
<title>Session Description Protocol Elements for the Forward Error Correction (FEC) Framework</title>
<author initials="A." surname="Begen" fullname="Ali Begen"> <organization/> </author>
<date month="October" year="2011" />
</front>
<seriesInfo name="RFC" value="6364" />
</reference>
</references>
<references title="Informative References">
<!-- ==================================== -->
<reference anchor="RFC3453">
<front>
<title>The Use of Forward Error Correction (FEC) in Reliable Multicast</title>
<author initials="M." surname="Luby" fullname="M. Luby"> <organization/> </author>
<author initials="L." surname="Vicisano" fullname="L. Vicisano"> <organization/> </author>
<author initials="J." surname="Gemmell" fullname="J. Gemmell"> <organization/> </author>
<author initials="L." surname="Rizzo" fullname="L. Rizzo"> <organization/> </author>
<author initials="M." surname="Handley" fullname="M. Handley"> <organization/> </author>
<author initials="J." surname="Crowcroft" fullname="J. Crowcroft"> <organization/> </author>
<date month="December" year="2002"/>
</front>
<seriesInfo name="RFC" value="3453"/>
</reference>
<reference anchor="RFC5052">
<front>
<title>Forward Error Correction (FEC) Building Block</title>
<author initials="M." surname="Watson"> <organization/> </author>
<author initials='M.' surname='Luby'> <organization /> </author>
<author initials='L.' surname='Vicisano'> <organization /> </author>
<date month="August" year="2007"/>
</front>
<seriesInfo name="RFC" value="5052"/>
</reference>
<reference anchor="RFC5510">
<front>
<title>Reed-Solomon Forward Error Correction (FEC) Schemes</title>
<author initials="J." surname="Lacan" fullname="Jerome Lacan">
<organization></organization> </author>
<author initials="V." surname="Roca" fullname="Vincent Roca">
<organization></organization> </author>
<author initials="J." surname="Peltotalo" fullname="Jani Peltotalo">
<organization></organization> </author>
<author initials="S." surname="Peltotalo" fullname="Sami Peltotalo">
<organization></organization> </author>
<date month="April" year="2009" />
</front>
<seriesInfo name="RFC" value="5510" />
</reference>
<reference anchor="SIMPLE_RS">
<front>
<title>Simple Reed-Solomon Forward Error Correction (FEC) Scheme for FECFRAME</title>
<author initials="V." surname="Roca" fullname="Vincent Roca"> <organization></organization> </author>
<author initials="M." surname="Cunche" fullname="Mathieu Cunche"> <organization/> </author>
<author initials="J." surname="Lacan" fullname="Jerome Lacan"> <organization></organization> </author>
<author initials="A." surname="Bouabdallah" fullname="Amine Bouabdallah"> <organization/> </author>
<author initials="K." surname="Matsuzono" fullname="Kazuhisa Matsuzono"> <organization/> </author>
<date month="September" year="2011" />
</front>
<seriesInfo name="draft-ietf-fecframe-simple-rs-01" value="(Work in Progress)" />
</reference>
<reference anchor="RFC5053">
<front>
<title>Raptor Forward Error Correction Scheme</title>
<author initials="M." surname="Luby" fullname="M. Luby"> <organization/> </author>
<author initials="A" surname="Shokrollahi" fullname="A. Shokrollahi"> <organization/> </author>
<author initials="M" surname="Watson" fullname="M. Watson"> <organization/> </author>
<author initials="T" surname="Stockhammer" fullname="T. Stockhammer"> <organization/> </author>
<date month="June" year="2007"/>
</front>
<seriesInfo name="RFC" value="5053"/>
</reference>
<?rfc include='reference.RFC.5740'?> <!-- NORM -->
<?rfc include='reference.RFC.5775'?> <!-- ALC -->
<reference anchor="Cunche08">
<front>
<title>Optimizing the Error Recovery Capabilities of LDPC-Staircase Codes
Featuring a Gaussian Elimination Decoding Scheme</title>
<author initials="M." surname="Cunche"><organization /></author>
<author initials="V." surname="Roca"><organization /></author>
<date month="October" year="2008" />
</front>
<seriesInfo name="" value="10th IEEE International Workshop on Signal Processing for Space Communications (SPSC’08)"/>
</reference>
<reference anchor="CunchePHD10">
<front>
<title>High performances AL-FEC codes for the erasure channel : variation around LDPC codes</title>
<author initials="M." surname="Cunche"><organization /></author>
<date month="June" year="2010" />
</front>
<seriesInfo name="PhD dissertation (in French)" value="(http://tel.archives-ouvertes.fr/tel-00451336/en/)"/>
</reference>
<reference anchor="Matsuzono10">
<front>
<title>Performance Analysis of a High-Performance Real-Time Application with Several AL-FEC Schemes</title>
<author initials="K" surname="Matsuzono" fullname="Kazuhisa Matsuzono"> <organization/> </author>
<author initials="J." surname="Detchart" fullname="Jonathan Detchart"> <organization/> </author>
<author initials="M." surname="Cunche" fullname="Mathieu Cunche"> <organization/> </author>
<author initials="V." surname="Roca" fullname="Vincent Roca"> <organization/> </author>
<author initials="H." surname="Asaeda" fullname="Hitoshi Asaeda"> <organization/> </author>
<date month="October" year="2010" />
</front>
<seriesInfo name="35th Annual IEEE Conference on Local Computer Networks" value="(LCN 2010)" />
</reference>
<reference anchor="LDPC-codec" target="http://planete-bcast.inrialpes.fr/">
<front>
<title>LDPC-Staircase/LDPC-Triangle Codec Reference Implementation</title>
<author initials="M." surname="Cunche"> <organization /></author>
<author initials="V." surname="Roca"> <organization /></author>
<author initials="C." surname="Neumann"> <organization /></author>
<author initials="J." surname="Laboure"> <organization /></author>
<date month="" year="" />
</front>
<seriesInfo name="INRIA" value="Rhone-Alpes and STMicroelectronics" />
</reference>
<reference anchor="LDPC-codec-OpenFEC" target="http://openfec.org/">
<front>
<title>The OpenFEC project</title>
<author> <organization /></author>
</front>
</reference>
<!-- =================================================== -->
<!--
<reference anchor="RFC3447">
<front>
<title>Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1</title>
<author initials="J." surname="Jonsson" fullname="J. Jonsson"> <organization/> </author>
<author initials="B." surname="Kaliski" fullname="B. Kaliski"> <organization/> </author>
<date year="2003" month="February"/>
</front>
<seriesInfo name="RFC" value="3447"/>
<format type="TXT" octets="143173" target="ftp://ftp.isi.edu/in-notes/rfc3447.txt"/>
</reference>
-->
<!--
<reference anchor="RFC4303">
<front>
<title>IP Encapsulating Security Payload (ESP)</title>
<author initials="S." surname="Kent" fullname="S. Kent"> <organization/> </author>
<date year="2005" month="December"/>
</front>
<seriesInfo name="RFC" value="4303"/>
<format type="TXT" octets="114315" target="ftp://ftp.isi.edu/in-notes/rfc4303.txt"/>
</reference>
-->
<!--
<reference anchor="RFC2104">
<front>
<title>HMAC: Keyed-Hashing for Message Authentication</title>
<author fullname="H. Krawczyk"> <organization/> </author>
<author fullname="M. Bellare"> <organization/> </author>
<author fullname="R. Canetti"> <organization/> </author>
<date month="February" year="1997"/>
</front>
<seriesInfo name="RFC" value="2104"/>
</reference>
-->
<!--
<reference anchor='RFC3711'>
<front>
<title>The Secure Real-time Transport Protocol (SRTP)</title>
<author initials='M.' surname='Baugher' fullname='M. Baugher'><organization /></author>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<author initials='M.' surname='Naslund' fullname='M. Naslund'><organization /></author>
<author initials='E.' surname='Carrara' fullname='E. Carrara'><organization /></author>
<author initials='K.' surname='Norrman' fullname='K. Norrman'><organization /></author>
<date year='2004' month='March' />
</front>
<seriesInfo name='RFC' value='3711' />
<format type='TXT' octets='134270' target='ftp://ftp.isi.edu/in-notes/rfc3711.txt' />
</reference>
-->
<!--
<reference anchor="RFC4082">
<front>
<title>Timed Efficient Stream Loss-Tolerant Authentication (TESLA):
Multicast Source Authentication Transform Introduction</title>
<author fullname="A. Perrig"> <organization/> </author>
<author fullname="D. Song"> <organization/> </author>
<author fullname="R. Canetti"> <organization/> </author>
<author fullname="J.D. Tygar"> <organization/> </author>
<author fullname="B. Briscoe"> <organization/> </author>
<date month="June" year="2005"/>
</front>
<seriesInfo name="RFC" value="4082"/>
</reference>
-->
<!--
<reference anchor="RFC4383">
<front>
<title>
The Use of Timed Efficient Stream Loss-Tolerant Authentication (TESLA) in the Secure Real-time Transport Protocol (SRTP)
</title>
<author initials="M." surname="Baugher" fullname="M. Baugher"><organization/></author>
<author initials="E." surname="Carrara" fullname="E. Carrara"><organization/></author>
<date year="2006" month="February"/>
</front>
<seriesInfo name="RFC" value="4383"/>
<format type="TXT" octets="41766" target="ftp://ftp.isi.edu/in-notes/rfc4383.txt"/>
</reference>
-->
<!--
<reference anchor="RFC3275">
<front>
<title>(Extensible Markup Language) XML-Signature Syntax and Processing</title>
<author initials="D." surname="Eastlake" fullname="D. Eastlake"> <organization/>
</author>
<author initials="J." surname="Reagle" fullname="J. Reagle"> <organization/>
</author>
<author initials="D." surname="Solo" fullname="D. Solo"> <organization/>
</author>
<date year="2002" month="March"/>
</front>
<seriesInfo name="RFC" value="3275"/>
<format type="TXT" octets="164198" target="ftp://ftp.isi.edu/in-notes/rfc3275.txt"/>
</reference>
-->
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 02:56:00 |