Network Working Group M. Luby
Request for Comments: 3695 Digital Fountain
Category: Experimental L. Vicisano
Cisco
February 2004
Compact Forward Error Correction (FEC) Schemes
Status of this Memo
This memo defines an Experimental Protocol for the Internet
community. It does not specify an Internet standard of any kind.
Discussion and suggestions for improvement are requested.
Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
This document introduces some Forward Error Correction (FEC) schemes
that supplement the FEC schemes described in RFC 3452. The primary
benefits of these additional FEC schemes are that they are designed
for reliable bulk delivery of large objects using a more compact FEC
Payload ID, and they can be used to sequentially deliver blocks of an
object of indeterminate length. Thus, they more flexibly support
different delivery models with less packet header overhead.
This document also describes the Fully-Specified FEC scheme
corresponding to FEC Encoding ID 0. This Fully-Specified FEC scheme
requires no FEC coding and is introduced primarily to allow simple
interoperability testing between different implementations of
protocol instantiations that use the FEC building block.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Packet Header Fields . . . . . . . . . . . . . . . . . . . . . 3
2.1. FEC Payload ID for FEC Encoding IDs 0 and 130. . . . . . 4
2.2. Compact No-Code FEC scheme . . . . . . . . . . . . . . . 5
2.3. Compact FEC scheme . . . . . . . . . . . . . . . . . . . 5
3. Compact No-Code FEC scheme . . . . . . . . . . . . . . . . . . 6
3.1. Source Block Logistics . . . . . . . . . . . . . . . . . 7
3.2. Sending and Receiving a Source Block . . . . . . . . . . 8
4. Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1. Reliable Bulk Data Delivery. . . . . . . . . . . . . . . 9
Luby & Vicisano Experimental [Page 1]
RFC 3695 FEC Schemes February 2004
4.2. Block-Stream Delivery. . . . . . . . . . . . . . . . . . 10
5. Security Considerations. . . . . . . . . . . . . . . . . . . . 10
6. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 10
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.1. Normative References . . . . . . . . . . . . . . . . . . 11
7.2. Informative References . . . . . . . . . . . . . . . . . 12
8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 12
9. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 13
1. Introduction
This document describes two new Forward Error Correction (FEC)
schemes corresponding to FEC Encoding IDs 0 and 130 which supplement
the FEC schemes corresponding to FEC Encoding IDs 128 and 129
described in the FEC Building Block [4].
The new FEC schemes are particularly applicable when an object is
partitioned into equal-length source blocks. In this case, the
source block length common to all source blocks can be communicated
out-of-band, thus saving the additional overhead of carrying the
source block length within the FEC Payload ID of each packet. The
new FEC schemes are similar to the FEC schemes with FEC Encoding ID
128 defined in RFC 3452 [4], except that the FEC Payload ID is half
as long. This is the reason that these new FEC schemes are called
Compact FEC schemes.
The primary focus of FEC Encoding IDs 128 and 129 is to reliably
deliver bulk objects of known length. The FEC schemes described in
this document are designed to be used for both reliable delivery of
bulk objects of known length, and for the delivery of a stream of
source blocks for an object of indeterminate length. Within the
block-stream delivery model, reliability guarantees can range from
acknowledged reliable delivery of each block to unacknowledged
enhanced-reliability delivery of time-sensitive blocks, depending on
the properties of the protocol instantiation in which the FEC scheme
is used. Acknowledged reliable block-stream delivery is similar in
spirit to the byte-stream delivery that TCP offers, except that the
unit of delivery is a block of data instead of a byte of data. In
the spirit of a building block (see RFC 3048 [6]), the FEC schemes