draft-ietf-rmt-bb-fec-04.txt   draft-ietf-rmt-bb-fec-05.txt 
Internet Engineering Task Force RMT WG Internet Engineering Task Force RMT WG
INTERNET-DRAFT M.Luby/Digital Fountain INTERNET-DRAFT M.Luby/Digital Fountain
draft-ietf-rmt-bb-fec-04.txt L.Vicisano/Cisco draft-ietf-rmt-bb-fec-05.txt L.Vicisano/Cisco
J.Gemmell/Microsoft J.Gemmell/Microsoft
L.Rizzo/ACIRI and Univ. Pisa L.Rizzo/ACIRI and Univ. Pisa
M.Handley/ACIRI M.Handley/ACIRI
J. Crowcroft/UCL J. Crowcroft/UCL
18 October 2001 21 November 2001
Expires: April 2002 Expires: May 2002
RMT BB Forward Error Correction Codes RMT BB Forward Error Correction Codes
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC2026. provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Task Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups. Note that other groups Force (IETF), its areas, and its working groups. Note that other groups
may also distribute working documents as Internet-Drafts. may also distribute working documents as Internet-Drafts.
skipping to change at page 2, line 4 skipping to change at page 2, line 4
Abstract Abstract
This memo describes the abstract packet formats and IANA This memo describes the abstract packet formats and IANA
registration procedures for use of Forward Error Correction registration procedures for use of Forward Error Correction
(FEC) codes within the context of reliable IP multicast (FEC) codes within the context of reliable IP multicast
transport. This memo should be read in conjunction with and transport. This memo should be read in conjunction with and
uses the terminology of the companion memo [1], which uses the terminology of the companion memo [1], which
describes the use of Forward Error Correction (FEC) codes describes the use of Forward Error Correction (FEC) codes
within the context of reliable IP multicast transport and within the context of reliable IP multicast transport and
^L
provides an introduction to some commonly used FEC codes. provides an introduction to some commonly used FEC codes.
1. FEC Abstract Packet Fields and Out-of-Band Information 1. FEC Abstract Packet Fields and Out-of-Band Information
This section describes FEC information that is either to be sent out-of- This section describes FEC information that is either to be sent out-of-
band or in packets. The FEC information is associated with transmission band or in packets. The FEC information is associated with transmission
of data about a particular object. There are three classes of packets of data about a particular object. There are three classes of packets
that may contain FEC information: data packets, session-control packets that may contain FEC information: data packets, session-control packets
and feedback packets. They generally contain different kinds of FEC and feedback packets. They generally contain different kinds of FEC
information. Note that some protocols may not use session-control or information. Note that some protocols may not use session-control or
skipping to change at page 3, line 4 skipping to change at page 3, line 4
data about different objects, even if transmitted to the same set data about different objects, even if transmitted to the same set
of multicast channels and/or using a single upper-layer session. of multicast channels and/or using a single upper-layer session.
The FEC encoding ID is subject to IANA registration. The FEC encoding ID is subject to IANA registration.
2) FEC Encoding Name 2) FEC Encoding Name
Provides a more specific identification of the FEC encoder being Provides a more specific identification of the FEC encoder being
used for an Under-Specified FEC scheme. This value is not used used for an Under-Specified FEC scheme. This value is not used
for Fully-Specified FEC schemes. (See Section 1.1 for the for Fully-Specified FEC schemes. (See Section 1.1 for the
definition of Under-Specified and Fully-Specified FEC schemes.) definition of Under-Specified and Fully-Specified FEC schemes.)
^L
The FEC encoding name is scoped by the FEC encoding ID, and is The FEC encoding name is scoped by the FEC encoding ID, and is
subject to IANA registration. subject to IANA registration.
3) FEC payload ID 3) FEC payload ID
Identifies the encoding symbol(s) in the payload of the packet. Identifies the encoding symbol(s) in the payload of the packet.
The fields in the FEC Payload ID depend on the encoder being used The fields in the FEC Payload ID depend on the encoder being used
(e.g. in Block and Expandable FEC codes this may be the (e.g. in Block and Expandable FEC codes this may be the
combination of block number and encoding symbol ID). combination of block number and encoding symbol ID).
skipping to change at page 4, line 5 skipping to change at page 4, line 5
This document does not provide any detail about feedback schemes used in This document does not provide any detail about feedback schemes used in
combination with FEC nor the format of FEC information in feedback combination with FEC nor the format of FEC information in feedback
packets. If feedback packets are used in a complete protocol packets. If feedback packets are used in a complete protocol
instantiation, these details must be provided in the protocol instantiation, these details must be provided in the protocol
instantiation specification. instantiation specification.
1.1. FEC Encoding ID and FEC Encoding Name 1.1. FEC Encoding ID and FEC Encoding Name
The FEC Encoding ID is a numeric index that identifies a specific FEC The FEC Encoding ID is a numeric index that identifies a specific FEC
^L
scheme OR a class of encoding schemes that share the same FEC Payload ID scheme OR a class of encoding schemes that share the same FEC Payload ID
format. format.
An FEC scheme is a Fully-Specified FEC scheme if the encoding scheme is An FEC scheme is a Fully-Specified FEC scheme if the encoding scheme is
formally and fully specified, in a way that independent implementors can formally and fully specified, in a way that independent implementors can
implement both encoder and decoder from a specification that is an IETF implement both encoder and decoder from a specification that is an IETF
RFC. The FEC Encoding ID uniquely identifies a Fully-Specified FEC RFC. The FEC Encoding ID uniquely identifies a Fully-Specified FEC
scheme. Companion documents of this specification may specify Fully- scheme. Companion documents of this specification may specify Fully-
Specified FEC schemes and associate them with FEC Encoding ID values. Specified FEC schemes and associate them with FEC Encoding ID values.
These documents MUST also specify a format for the FEC Payload ID and These documents MUST also specify a format for the FEC Payload ID and
skipping to change at page 5, line 5 skipping to change at page 5, line 5
available reference-implementation or the name and contacts of a company available reference-implementation or the name and contacts of a company
that sells it, either separately or embedded in another product. that sells it, either separately or embedded in another product.
Different Under-Specified FEC schemes that share the same FEC Encoding Different Under-Specified FEC schemes that share the same FEC Encoding
ID -- but have different FEC Encoding Names -- also share the same ID -- but have different FEC Encoding Names -- also share the same
format of FEC Payload ID and specify the same information in the FEC format of FEC Payload ID and specify the same information in the FEC
Object Transmission Information. Object Transmission Information.
This specification reserves the range 0-127 for the values of FEC This specification reserves the range 0-127 for the values of FEC
^L
Encoding IDs for Fully-Specified FEC schemes and the range 128-255 for Encoding IDs for Fully-Specified FEC schemes and the range 128-255 for
the values of Under-Specified FEC schemes. the values of Under-Specified FEC schemes.
1.2. FEC Payload ID and FEC Object Transmission Information 1.2. FEC Payload ID and FEC Object Transmission Information
A document that specifies an FEC scheme and reserves a value of FEC A document that specifies an FEC scheme and reserves a value of FEC
Encoding ID MUST define a packet format for the FEC Payload ID and Encoding ID MUST define a packet format for the FEC Payload ID and
specify the information in the FEC Object Transmission Information specify the information in the FEC Object Transmission Information
according to the needs of the encoding scheme. This applies to documents according to the needs of the encoding scheme. This applies to documents
that reserve values of FEC Encoding IDs for both Fully-Specified and that reserve values of FEC Encoding IDs for both Fully-Specified and
skipping to change at page 6, line 5 skipping to change at page 6, line 5
2.1. Small Block, Large Block and Expandable FEC Codes 2.1. Small Block, Large Block and Expandable FEC Codes
This subsection reserves the FEC Encoding ID value 128 for the Under- This subsection reserves the FEC Encoding ID value 128 for the Under-
Specified FEC schemes described in [1] that are called Small Block FEC Specified FEC schemes described in [1] that are called Small Block FEC
codes, Large Block FEC codes and Expandable FEC codes. codes, Large Block FEC codes and Expandable FEC codes.
The FEC Payload ID is composed of a Source Block Number and an Encoding The FEC Payload ID is composed of a Source Block Number and an Encoding
Symbol ID structured as follows: Symbol ID structured as follows:
^L
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 | | Source Block Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encoding Symbol ID | | Encoding Symbol ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Source Block Number idenfities from which source block of the object The Source Block Number idenfities from which source block of the object
the encoding symbol(s) in the payload are generated. These blocks are the encoding symbol(s) in the payload are generated. These blocks are
skipping to change at page 6, line 33 skipping to change at page 6, line 34
FEC Encoding Name, and these details may be proprietary. FEC Encoding Name, and these details may be proprietary.
The FEC Object Transmission Information has the following specific The FEC Object Transmission Information has the following specific
information: information:
o The total length of the object in bytes. o The total length of the object in bytes.
o The number of source blocks that the object is partitioned into, and o The number of source blocks that the object is partitioned into, and
the length of each source block in bytes. the length of each source block in bytes.
How this out of band information is communicated is outside the scope of
this document. As an example the source block lengths may be derived by
a fixed algorithm from the object length. As another example, it may be
that all source blocks are the same length and this is what is passed
out of band to the receiver. As a third example, it could be that the
full sized source block length is provided and this is the length used
for all but the last source block, which is calculated based on the full
source block length and the object length.
2.2. Small Block Systematic FEC Codes 2.2. Small Block Systematic FEC Codes
This subsection reserves the FEC Encoding ID value 129 for the Under- This subsection reserves the FEC Encoding ID value 129 for the Under-
Specified FEC schemes described in [1] that are called Small Block Specified FEC schemes described in [1] that are called Small Block
Systematic FEC codes. For Small Block Systematic FEC codes, each source Systematic FEC codes. For Small Block Systematic FEC codes, each source
block is of length at most 65536 bytes. block is of length at most 65536 source symbols.
^L
Although these codes can generally be accommodated by the FEC Encoding Although these codes can generally be accommodated by the FEC Encoding
ID described in Section 2.1, a specific FEC Encoding ID is defined for ID described in Section 2.1, a specific FEC Encoding ID is defined for
Small Block Systematic FEC codes to allow more flexibility and to retain Small Block Systematic FEC codes to allow more flexibility and to retain
header compactness. The small source block length and small exapansion header compactness. The small source block length and small expansion
factor that often characterize systematic codes may require that the factor that often characterize systematic codes may require that the
data source changes frequently the source block length. To allow the data source changes frequently the source block length. To allow the
dynamic variation of the source block length and to communicate it to dynamic variation of the source block length and to communicate it to
the receivers with low overhead, the block length is included in the FEC the receivers with low overhead, the block length is included in the FEC
Payload ID. Payload ID.
The FEC Payload ID is composed of the Source Block Number, Source Block The FEC Payload ID is composed of the Source Block Number, Source Block
Length and the Encoding Symbol ID: Length and the Encoding Symbol ID:
0 1 2 3 0 1 2 3
skipping to change at page 7, line 25 skipping to change at page 7, line 37
The Source Block Number idenfities from which source block of the object The Source Block Number idenfities from which source block of the object
the encoding symbol(s) in the payload are generated. These blocks are the encoding symbol(s) in the payload are generated. These blocks are
numbered consecutively from 0 to N-1, where N is the number of source numbered consecutively from 0 to N-1, where N is the number of source
blocks in the object. blocks in the object.
The Source Block Length is the length in units of source symbols of the The Source Block Length is the length in units of source symbols of the
source block identified by the Source Block Number. source block identified by the Source Block Number.
The Encoding Symbol ID identifies which specific encoding symbol(s) The Encoding Symbol ID identifies which specific encoding symbol(s)
generated from the source block are carried in the packet payload. The generated from the source block are carried in the packet payload. Each
exact details of the correspondence between Encoding Symbol IDs and the encoding symbol is either an original source symbol or a redundant
encoding symbol(s) in the packet payload are dependent on the particular symbol generated by the encoder. The exact details of the
encoding algorithm used as identified by the Fec Encoding ID and by the correspondence between Encoding Symbol IDs and the encoding symbol(s) in
FEC Encoding Name, and these details may be proprietary. the packet payload are dependent on the particular encoding algorithm
used as identified by the Fec Encoding ID and by the FEC Encoding Name,
and these details may be proprietary.
The FEC Object Transmission Information has the following specific The FEC Object Transmission Information has the following specific
information: information:
o The total length of the object in bytes. o The total length of the object in bytes.
o The maximum length in bytes of the encoding symbols that can be o The maximum number of encoding symbols that can be generated for any
generated for any source block. This field is provided to allow source block. This field is provided for example to allow receivers
receivers to preallocate buffer space that is suitable for decoding
to recover any source block.
o The length in bytes of a source symbol. ^L
to preallocate buffer space that is suitable for decoding to recover
any source block.
o For each source block, the length in bytes of encoding symbols for
the source block.
How this out of band information is communicated is outside the scope of
this document. As an example the length in bytes of encoding symbols
for each source block may be the same for all source blocks. As another
example, the encoding symbol length may be the same for all source
blocks of a given object and this length is communicated for each
object. As a third example, it may be that there is a threshold value
I, and for all source blocks consisting of less than I source symbols,
the encoding symbol length is one fixed number of bytes, but for all
source blocks consisting of I or more source symbols, the encoding
symbol length is a different fixed number of bytes.
Note that each encoding symbol, i.e., each source symbol and redundant
symbol, must be the same length for a given source block, and this
implies that each source block length is a multiple of its encoding
symbol length. If the original source block length is not a multiple of
the encodin symbol length, it is up to the sending application to
appropriately pad the original source block to form the source block to
be encoded, and to communicate this padding to the receiving
application. The form of this padding, if used, and how it is
communicated to the receiving application, is out of the scope of this
document, and must be handled at the application level.
3. IANA Considerations 3. IANA Considerations
Values of FEC Encoding IDs and FEC Encoding Names are subject to IANA Values of FEC Encoding IDs and FEC Encoding Names are subject to IANA
registration. FEC Encoding IDs and FEC Encoding Names are hierarchical: registration. FEC Encoding IDs and FEC Encoding Names are hierarchical:
FEC Encoding IDs scope ranges of FEC Encoding Names. Only FEC Encoding FEC Encoding IDs scope ranges of FEC Encoding Names. Only FEC Encoding
IDs that correspond to Under-Specified FEC schemes scope a corresponding IDs that correspond to Under-Specified FEC schemes scope a corresponding
set of FEC Encoding Names. set of FEC Encoding Names.
The FEC Encoding ID is a numeric non-negative index. In this document, The FEC Encoding ID is a numeric non-negative index. In this document,
the range of values for FEC Encoding IDs is 0 and 255. Values from 0 to the range of values for FEC Encoding IDs is 0 and 255. Values from 0 to
127 are reserved for Fully-Specified FEC schemes, as described in more 127 are reserved for Fully-Specified FEC schemes, as described in more
detail in Section 1.1. The assignment of a FEC Encoding ID in this range detail in Section 1.1. The assignment of a FEC Encoding ID in this range
can only be granted if the requestor can provide such a specification can only be granted if the requestor can provide such a specification
published as an IETF RFC, as described in more detail in Section 1.1. published as an IETF RFC, as described in more detail in Section 1.1.
Values from 128 to 255 are reserved for Under-Specified FEC schemes, as Values from 128 to 255 are reserved for Under-Specified FEC schemes, as
skipping to change at page 8, line 18 skipping to change at page 9, line 5
The FEC Encoding ID is a numeric non-negative index. In this document, The FEC Encoding ID is a numeric non-negative index. In this document,
the range of values for FEC Encoding IDs is 0 and 255. Values from 0 to the range of values for FEC Encoding IDs is 0 and 255. Values from 0 to
127 are reserved for Fully-Specified FEC schemes, as described in more 127 are reserved for Fully-Specified FEC schemes, as described in more
detail in Section 1.1. The assignment of a FEC Encoding ID in this range detail in Section 1.1. The assignment of a FEC Encoding ID in this range
can only be granted if the requestor can provide such a specification can only be granted if the requestor can provide such a specification
published as an IETF RFC, as described in more detail in Section 1.1. published as an IETF RFC, as described in more detail in Section 1.1.
Values from 128 to 255 are reserved for Under-Specified FEC schemes, as Values from 128 to 255 are reserved for Under-Specified FEC schemes, as
described in more detail in Section 1.1. This specification already described in more detail in Section 1.1. This specification already
assigns the values 128 and 129, as described in Section 2. assigns the values 128 and 129, as described in Section 2.
^L
Values of FEC Encoding IDs can only be assigned if the required format Values of FEC Encoding IDs can only be assigned if the required format
for the FEC Payload ID and the specific information in the FEC Object for the FEC Payload ID and the specific information in the FEC Object
Transmission Information are specified in an IETF RFC. Transmission Information are specified in an IETF RFC.
Each FEC Encoding ID assigned to an Under-Specified FEC scheme scopes an Each FEC Encoding ID assigned to an Under-Specified FEC scheme scopes an
independent range of FEC Encoding Names (i.e. the same value of FEC independent range of FEC Encoding Names (i.e. the same value of FEC
Encoding Name can be reused for different FEC Encoding IDs). An FEC Encoding Name can be reused for different FEC Encoding IDs). An FEC
Encoding Name is a numeric non-negative index. Encoding Name is a numeric non-negative index.
Under the scope of a FEC Encoding ID, FEC Encoding Names are assigned on Under the scope of a FEC Encoding ID, FEC Encoding Names are assigned on
skipping to change at page 8, line 39 skipping to change at page 9, line 28
point of contact information and a pointer to publicly accessible point of contact information and a pointer to publicly accessible
documentation describing the Under-Specified FEC scheme and ways to documentation describing the Under-Specified FEC scheme and ways to
obtain it (e.g. a pointer to a publicly available reference- obtain it (e.g. a pointer to a publicly available reference-
implementation or the name and contacts of a company that sells it, implementation or the name and contacts of a company that sells it,
either separately or embedded in another product). The requestor is either separately or embedded in another product). The requestor is
responsible for keeping this information up to date. responsible for keeping this information up to date.
4. Acknowledgments 4. Acknowledgments
Brian Adamson contributed to this document by shaping Section 2.2 and Brian Adamson contributed to this document by shaping Section 2.2 and
providing general feedback. We also wish to thank Vincent Roca and providing general feedback. We also wish to thank Vincent Roca for his
Justin Chapweske for their comments. extensive comments and Justin Chapweske for his comments.
5. References 5. References
[1] Luby, M., Vicisano, Gemmell, J., L., Rizzo, L., Handley, M., [1] Luby, M., Vicisano, Gemmell, J., L., Rizzo, L., Handley, M.,
Crowcroft, J., "The use of Forward Error Correction in Reliable Crowcroft, J., "The use of Forward Error Correction in Reliable
Multicast", Internet draft draft-ietf-rmt-info-fec-01.txt, October 2001. Multicast", Internet draft draft-ietf-rmt-info-fec-01.txt, October 2001.
6. Authors' Addresses 6. Authors' Addresses
Michael Luby Michael Luby
skipping to change at page 9, line 20 skipping to change at page 10, line 5
39141 Civic Center Drive 39141 Civic Center Drive
Suite 300 Suite 300
Fremont, CA 94538 Fremont, CA 94538
Lorenzo Vicisano Lorenzo Vicisano
lorenzo@cisco.com lorenzo@cisco.com
cisco Systems, Inc. cisco Systems, Inc.
170 West Tasman Dr., 170 West Tasman Dr.,
San Jose, CA, USA, 95134 San Jose, CA, USA, 95134
^L
Jim Gemmell Jim Gemmell
jgemmell@microsoft.com jgemmell@microsoft.com
Microsoft Research Microsoft Research
301 Howard St., #830 301 Howard St., #830
San Francisco, CA, USA, 94105 San Francisco, CA, USA, 94105
Luigi Rizzo Luigi Rizzo
luigi@iet.unipi.it luigi@iet.unipi.it
ACIRI, 1947 Center St., Berkeley CA 94704 ACIRI, 1947 Center St., Berkeley CA 94704
and and
skipping to change at page 10, line 5 skipping to change at page 11, line 5
1947 Center St. 1947 Center St.
Berkeley CA, USA, 94704 Berkeley CA, USA, 94704
Jon Crowcroft Jon Crowcroft
J.Crowcroft@cs.ucl.ac.uk J.Crowcroft@cs.ucl.ac.uk
Department of Computer Science Department of Computer Science
University College London University College London
Gower Street, Gower Street,
London WC1E 6BT, UK London WC1E 6BT, UK
^L
7. Full Copyright Statement 7. Full Copyright Statement
Copyright (C) The Internet Society (2001). All Rights Reserved. Copyright (C) The Internet Society (2001). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and assist in its implementation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind, distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are included provided that the above copyright notice and this paragraph are included
on all such copies and derivative works. However, this document itself on all such copies and derivative works. However, this document itself
skipping to change at line 421 skipping to change at page 12, line 4
The limited permissions granted above are perpetual and will not be The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns. revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS This document and the information contained herein is provided on an "AS
IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
FITNESS FOR A PARTICULAR PURPOSE." FITNESS FOR A PARTICULAR PURPOSE."
^L
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/