RMT Working Group                                                M. Luby
INTERNET DRAFT                                                J. Gemmell
Expires 8 September 2000                                     L. Vicisano
                                                                L. Rizzo
                                                            J. Crowcroft
                                                          B. Lueckenhoff
                                                            8 March 2000


                      Asynchronous Layered Coding
                 A scalable reliable multicast protocol
                     <draft-ietf-rmt-pi-alc-00.txt>


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026. Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups. Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet- Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   Copyright Notice

      Copyright (C) The Internet Society (2000).  All Rights Reserved.


Abstract

   This document describes Asynchronous Layered Coding, a scalable reli-
   able multicast protocol, hereafter referred to as ALC.   ALC can be
   used to reliably transmit objects to multiple receivers.  An object
   can be any well-defined piece of data.  Examples include any type of
   file such as a group of pictures in an MPEG stream, a MP3 music file,
   a JPEG image, and a collection of files that are zipped into one
   file.  In addition, the ALC delivery model is fairly flexible, e.g.,
   on demand or a push delivery.  When using ALC, the payload of the



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 1]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   packets that flow from senders to receivers in no way depend on net-
   work conditions or the reaction of receivers to these conditions,
   although the rate of flow of the packets in various parts of the net-
   work does depend on network conditions. Receivers may join or leave
   an existing packet stream in an asynchronous manner independent of
   other receivers. Congestion control is achieved by sending several
   packet streams ordered in a layered fashion and delivering only a
   subset of these to individual receivers. The number of streams
   received is dictated by the local bandwidth availability and network
   conditions. A possible way to achieve this is by using a distinct
   multicast address for each stream.   Receivers join the lowest layer
   stream they are not currently joined to at coordinated points in time
   when there is more available bandwidth between those receivers and
   the sender.  Similarly, receivers leave one or more highest layer
   streams they are currently joined to as soon as they feel congestion
   (typically as evidenced by packet loss).  Another possibility to
   achieve this form of congestion control is through router-assisted
   schemes. Reliability is achieved via FEC coding only, i.e. there is
   no request for feedback for retransmission from receivers that miss
   packets for whatever reason.

1. Introduction

   This document describes a scalable reliable protocol using IP multi-
   cast. IP multicast, while powerful and efficient, is a "best effort"
   service [DEE88]. It does not guarantee packet reception, or reception
   order. Many reliable multicast protocols have been built on top of
   multicast. However, scalability is not a design goal for many reli-
   able multicast protocols. Even among those that targeted improved
   scalability, many still fall far short of the scalability of IP mul-
   ticast itself. Others, while as scalable as IP multicast, require
   changes to routers or other infrastructure, making their deployment
   unlikely in the near term.

   The key difficulty in scaling reliable multicast is dealing with the
   amount of data that flows from receivers back to the sender. Proto-
   cols that avoid any such feedback can be massively scalable. The data
   carousel [AFZ95] approach is a simple protocol that avoids any feed-
   back from the receivers. The sender simply loops repeatedly through
   the symbols of the object, places the symbols into packets, and
   transmits the packets (a symbol is a small fixed size portion of
   data). If the receiver misses any symbol, it simply waits for the
   symbol to be sent again in the next loop. However, a receiver has to
   wait for the full loop to repeat to receive a symbol that is missed
   if the packet carrying it is lost. Forward error correction (FEC)
   coding can be used to improve the data carousel approach [RIZ97a,
   GEM99, VIC98A, BYE98]. Using a FEC codec, i.e., a FEC encoder at the
   sender to generate packets from an object and the corresponding FEC



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 2]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   decoder at the receivers to process packets in order to recover the
   object, can dramatically reduce the amount of packets a given
   receiver needs to receive in order to recover the object.  ALC relies
   exclusively on a FEC codec to achieve reliability, thereby avoiding
   non-scalable reliability mechanisms that rely on receiver feedback to
   the sender to trigger retransmission of missing packets. A survey of
   FEC codes and considerations for their use in reliable IP multicast
   can be found in [FECBB].  This document utilizes the terminology and
   concepts introduced in that survey.

   An attractive feature of a scalable reliable protocol is the ability
   for different receivers to join and leave the packet stream asynchro-
   nously without adversely affecting the reception experience of other
   receivers and without affecting the scalability of the protocol.
   This is one of the features provided by ALC.

   ALC congestion control is achieved by using several packet streams
   and delivering only a subset of these to individual receivers. The
   streams are ordered in layers from lowest to highest.  The number of
   streams delivered to each receiver is dictated by the local bandwidth
   availability and network conditions. A possible way to achieve this
   is by using a distinct multicast address for each stream. Receivers
   that can receive packets at a rate higher than their current rate are
   allowed to do this by joining the lowest layer stream(s) they are not
   currently joined to. Receivers that are receiving packets at a higher
   rate than they have the capacity for (as evidenced by packet loss)
   MUST leave one or more of the highest layer streams they are
   currently joined to immediately. Another possibility to implement
   this form of congestion control is through a router-assisted scheme
   where the selection of which streams to forward is performed by
   routers. In this case all the streams could be transmitted in a sin-
   gle multicast group.  Having routers select which streams to forward
   allows a smaller granularity in the rate-set and a faster response
   time.  A limitation of this approach is that it potentially requires
   changes to the hardware router infrastructure.

   One of the attractions of ALC is that it is multicast routing
   independent.  In particular, ALC works well with the original multi-
   cast model introduced in [DEE88] as well as with the emerging PIM
   single source model that is based on [HOL99].  PIM single source is
   an attractive match for ALC for a few reasons.  First, because of the
   different layers that ALC uses, and because ALC can use different
   multicast addresses for the transmission of different objects, the
   fact that address allocation with PIM single source is simple is an
   advantage.  Second, because ALC supports a dynamically changing set
   of receivers who are dynamically changing the set of multicast
   streams to which they are joined, the light weight mechanisms used in
   PIM single source to quickly react to changes in the multicast tree



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 3]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   topology is an advantage.  Third, because ALC is scalable to a very
   large number of receivers joined to a single multicast group that may
   span the global Internet, the light weight mechanisms that PIM single
   source uses to cross ISP boundaries is an advantage.  Finally,
   because PIM single source explicitly references the source of the
   multicast transmission, it has security advantages for denial of ser-
   vice attacks.

   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 [R2119].

2. General Architecture

   An object transmission session comprises all packet streams emanating
   from all senders that pertain to the transmission of a particular
   object that could potentially be received by a receiver to recover
   the object.  For example, packets pertaining to a particular object
   could be transmitted from three different senders, each sending four
   streams of packets at different rates.  A receiver may join and
   receive packets from all 12 streams concurrently until it has enough
   packets in total to recover the object.

   The receivers need to obtain an object transmission session descrip-
   tion before starting the down-load of an object.  The session
   description must include the relevant session parameters needed by a
   receiver to enact a down-load of an object from the senders partici-
   pating in the session.  The object transmission session description
   is determined and agreed upon by the senders and communicated to the
   receivers out of band, or, in some cases, included or partially
   included in the header of each packet. The session description could
   include the object name, the object length, the packet format and
   length, the FEC codec type, the description of which congestion con-
   trol algorithms to use, the multicast address(es) of the layered
   streams, their port number(s), and their transmission bandwidths.
   The session description could be in a form such as SDP [HAN98]. We
   assume that there exists an out of band mechanism for receivers to
   obtain the session description. The session description might be car-
   ried in a session announcement protocol such as SAP [HAN96], located
   on a Web page with scheduling information, or conveyed via E-mail or
   other out of band methods. Discussion of session description format,
   and distribution of session descriptions is beyond the scope of this
   document.

   An FEC encoder is used to generate encoding symbols that are placed
   in the payload of ALC packets.  A survey of FEC codecs can be found
   in [FECBB], and the current document relies upon and uses the termi-
   nology of this survey. The FEC coding information is information that



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 4]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   needs to be passed to a receiver in order to decode objects FEC cod-
   ing information include the FEC codec type, the source block length,
   the symbol length, the object length, the encoding block number, the
   encoding symbol ID, and an encoding flag indicating whether the
   encoding symbol is a source symbol or a redundant symbol for block
   codes.  The FEC protocol ID specifies the FEC codec type and the way
   it is to be used for the transmission (see delivery modes below).
   The object length, source block length and the symbol length are part
   of FEC object transmission information.  The encoding block number
   (if used) and the encoding symbol ID that identify the encoding sym-
   bol in the payload of an ALC packet constitute the FEC payload ID.

   All ALC packets pertaining to a particular object transmission ses-
   sion MUST have the same format.  An ALC packet consists of an ALC
   header and a payload.  Together with other information, the ALC
   header MUST contain congestion control information, an FEC protocol
   ID, and an FEC payload ID.  Receivers use congestion control informa-
   tion to coordinate the rate at which they receive packets and to
   measure congestion as indicated by packet loss in order to determine
   this rate.

   Other OPTIONAL information that an ALC header may contain is an
   object transmission label, FEC session information, FEC object
   transmission information, and authentication information.    The
   object transmission label can be used by receivers to verify that
   received packets are associated with a particular object transmission
   session.  Therefore, object transmission labels for sessions pertain-
   ing to different objects should be different.  As an example, the
   object transmission label may be the MD5 hash of the object name,
   object length and FEC object transmission information described
   below.

   ALC packets are sent over the network encapsulated within UDP packets
   sent with an IP multicast address.

3. Minimizing reception overhead

   The primary purpose of using FEC codes is to ensure that minimal
   number of packets need be received in order for a receiver to recon-
   struct an object.   Reception overhead is used to measure this.
   Reception overhead is the aggregate length of packets needed to
   recover the object beyond the object length, measured as a percentage
   of the object length.  For example, if it takes 15 MB of packets in
   order to recover a 10 MB object, then the reception overhead is (15-
   10)/10 times 100, or 50%.  The minimal reception overhead possible is
   0%.

   Under ideal conditions, reception overhead is 0% using even the



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 5]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   simplest of FEC codes.  For example, a simple carousel achieves 0%
   reception overhead when transmission is over a network with no packet
   loss using a single multicast stream with receivers that join and
   stay attached to the stream until they have enough encoding symbols
   to recover the object.  However, under more realistic conditions when
   transmission uses multiple multicast streams, when there is packet
   loss, and when receivers join and leave streams during the down-load
   process, more sophisticated FEC codes are clearly useful to minimize
   reception overhead.

   There are three primary contributors to reception overhead, and these
   guide the design of how to use FEC codes for ALC.  These contributors
   are: (1) duplicate encoding symbol reception due to division into
   blocks of the object; (2) duplicate encoding symbol reception due to
   fixed length FEC codes; (3) inherent reception overhead of the FEC
   code.  ALC based on small block codes is prone to (1) and (2), ALC
   based on large block codes is most prone to (2) and (3), and ALC
   based on large on demand codes is most prone to (3).

3.1. Division into blocks

   One concern is the order of encoding symbol transmission from dif-
   ferent blocks when the object is partitioned into blocks.  Suppose
   the object is partitioned into m blocks of k source symbols each, and
   any k encoding symbols from a block is sufficient to recover the k
   source symbols from that block.  Ideally, reception of any km encod-
   ing symbols is sufficient to recover the entire object.  Actually,
   reception of k encoding symbols for each of the m blocks is necessary
   to recover the entire object.  Thus, it is important to schedule the
   transmission of symbols so that in the face of most patterns of
   packet loss receivers can recover the object from reception of as
   close to km encoding symbols as possible. A RECOMMENDED ordering is
   to interleave encoding symbols from different blocks.  This inter-
   leaving can be described in terms of rounds, where in a round m
   encoding symbols are transmitted, one from each block. A particular
   sending order in each round is not specified by ALC. However, it is
   RECOMMENDED that some randomization be performed to eliminate corre-
   lation with periodic losses. For example, sending could be performed
   as follows:  In round i, randomly choose a permutation p(i) of the m
   blocks, and then send the i-th encoding symbol from each of the m
   blocks in the order determined by p(i).  In the following example,
   the object is split into 3 blocks of 4 source symbols each:

   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   + s00 + s01 + s02 + s03 + s10 + s11 + s12 + s13 + s20 + s21 + s22 + s23 +
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

         Source block 0    |     Source block 1     |    Source block 2



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 6]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   Then the first 4 permutations chosen are p(0) = (1,0,2), p(1) =
   (0,2,1), p(2) = (2,0,1), p(3) = (0,1,2), and the send order for the
   first 4 rounds is:

   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   + e10 + e00 + e20 + e01 + e21 + e11 + e22 + e02 + e12 + e03 + e13 + e23 +
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

         Encoding symbol send order

   Object division into blocks, and thus application of this scheme, is
   applicable to all the codes, as the value of k is ultimately limited
   for all the codes.  For example, small block codes use small values
   of k because of computational limits, and large block codes and large
   on demand codes use much larger yet still limited values of k because
   of memory and packet length limitations. This interleaving scheme
   minimizes the induced reception overhead due to division into blocks
   for any predefined loss pattern for a given value of k.  However, it
   is likely that the induced reception overhead will be larger and more
   variable when k is small and when losses are moderate or more.  For
   example, when k = 20 and m = 50, the induced reception overhead with
   respect to a 10% random packet loss is on average 18%, and will reach
   over 40% for some receiver among 1,000 receivers.  See [BYE98] for a
   more detailed analysis of this.  Thus, the reception overhead will
   tend to be smaller and less variable when using either large block
   codes or large on demand codes than when using small block codes. For
   small block codes and large block codes the limit on the number of
   encoding symbols n for the codes will limit the number of distinct
   rounds to n.  For large on demand codes, since there is no limit to
   the number of encoding symbols there can be an unlimited number of
   rounds.

   A simple way to choose the permutation in each round is the follow-
   ing, and this is RECOMMENDED when protecting against arbitrary packet
   loss patterns.  At each round, the permutation p(i) is determined by
   selecting a first block randomly, and the rest of the ordering is the
   consecutive blocks following this first block, modulo the number of
   blocks.

   For example, if there are m blocks, and block j is selected as the
   first, the permutation p(i) consists of block j through block m-1,
   followed by block 0 through block j-1. For more detailed discussion,
   see [VIC98B,GEM99].

3.2. Block FEC codes

   For some FEC codes for a given object consisting of s source symbols
   there is a limited supply t of encoding symbols that are produced.



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 7]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   If the number of encoding symbols to be sent exceeds t then some
   encoding symbols need to be sent more than once.  Thus, it is impor-
   tant to schedule the order of sending encoding symbols in such a way
   as to avoid as much as possible reception of the same encoding symbol
   more than once by the same receiver. This applies to ALC based on
   block codes as these codes produce a limited number of encoding sym-
   bols.  However, this does not apply to ALC based on large on demand
   codes, as these codes can produce an essentially unlimited supply of
   encoding symbols.

3.2.1. A single stream

   In some simple scenarios, receivers will join a single ongoing multi-
   cast stream, collect enough encoding symbols to decode the object,
   and then leave the object transmission session.  In this situation,
   in order to avoid as much as possible duplicate reception of packets
   by such receivers, it is important to send the encoding symbols the
   second and subsequent times in the same order that they were sent the
   first time.  Thus, for example, a receiver that joins the session
   towards the end of the transmission of the encoding symbols for the
   first time can continue receiving packets from the transmission of
   the encoding symbols for the second time and be sure to receive dis-
   tinct encoding symbols.  However, it is inevitable that the reception
   overhead due to reception of duplicate encoding symbols can be large
   for receivers that join and leave the transmission over intervals of
   time that span the transmission of more than the total supply of
   encoding symbols.  For example, a receiver may join the session at
   the beginning of the first transmission of encoding symbols and
   receive e0, e1, ... , e98, e99, leave the session and then rejoin the
   session again at the beginning of the second transmission of encoding
   symbols and receive again e0, e1, ... , e98, e99, thus receiving 100
   duplicate encoding symbols that provide no benefit to recovering the
   object.

   +-----+-----+     +-----+-----+     +-----+-----+     +-----+-----+
   + e0  + e1  + ... + e98 + e99 + ... + e0  + e1  + ... + e98 + e99 +
   +-----+-----+     +-----+-----+     +-----+-----+     +-----+-----+
             first transmission        |       second transmission

3.2.2. General streams

   In more general scenarios, in order to recover an object, receivers
   will join multiple ongoing multicast streams dynamically.  These
   streams may emanate from more than one server and may be running at
   different rates.  Furthermore, receivers may join a given stream and
   rejoin the same stream an arbitrary amount of time later (for exam-
   ple, the next day) to complete the recovery.  Finally, for congestion
   control purposes, receivers dynamically change the set of multicast



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 8]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   streams they are receiving from based on dynamically changing loss
   conditions.

   How to schedule the encoding symbols from a block code among the
   various multicast streams in order to minimize reception overhead
   under all of these different conditions is a challenge.  Let r = t/s
   be the ratio of the number of encoding symbols to the number of
   source symbols.  The larger the value of r the easier it is to avoid
   receiver reception of duplicate encoding symbols, and in particular
   as r goes to infinity then reception overhead due to this problem can
   go to zero.  There are ordering schemes that keep reception overhead
   minimal for small value of r under certain restrictions. For example,
   in the previous subsection a scheme is described that minimizes
   reception overhead under the restriction that there is only one
   stream and the receiver is able to complete recovery within a time
   period that encompasses the transmission of t encoding symbols.

   However, under general conditions the best and simplest scheme for
   minimizing reception overhead for objects that aren't blocked is the
   following. For each stream, group the sending of encoding symbols
   into rounds.  In each round, choose independently a random permuta-
   tion of all t encoding symbols and send the encoding symbols in this
   order.  Using this ordering, it is not hard to show that no matter in
   which order and at what time a receiver may join and leave streams
   the induced reception overhead due to reception of duplicate encoding
   symbols of a receiver is at most on average r*ln(r/r-1)-1.  Further-
   more, there are examples of receiver behavior that achieves these
   maximum averages.  As examples, when r is two then the induced recep-
   tion overhead is at most 38.6%, when r is five then the reception
   overhead is at most 11.5%, and when r is ten then the reception over-
   head is at most 5.4%.  Thus, to achieve a reasonable overhead the
   total length of the encoding must be substantially longer than the
   length of the object.

3.3. Inherent overhead

   A (n, k) linear block code has no inherent reception overhead, as any
   k encoding symbols are sufficient to recover all k source symbols.
   On the other hand, both the large block codes and large on demand
   codes described in [FECBB] do have an inherent reception overhead.

4. Delivery modes

   ALC can operate in several different delivery modes:

   On demand mode. Receivers may join the ongoing object transmission
   session at their discretion, obtain the necessary encoding symbols to
   reproduce the object, and then leave the session. In on demand mode,



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff          [Page 9]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   senders typically transmit for some given time period selected to
   long enough to allow all the intended receivers to join the session
   and recover the object. The time period would typically be much
   larger than the down-load time for the object to make it convenient
   to receivers to enact the down-load at their discretion. For example
   a popular software update might be sent using ALC for several days,
   even though any particular receiver can enact the down-load in only
   an hour.

   Streaming mode.  Typically, receivers join and remain joined to a
   particular set of multicast groups to receive multiple related
   objects in consecutive object transmission sessions.  In streaming
   mode, senders typically transmit a fixed number of encoding symbols
   for each object.  This number may depend on network conditions that
   are obtained using out of band methods.  For example, if network con-
   ditions are such that at most 33% of the packets are lost over any 15
   MB of transmitted packets, then 15 MB of encoding symbols may be
   transmitted for a 10 MB object to ensure that receivers are able to
   reassemble the object under the worst loss conditions.  A typical
   application is a streaming real-time MPEG video, where each object
   consists of a group of pictures in the stream.  For each object, the
   receiver obtains enough ALC packets to recover the object and then
   discards all subsequent packets associated with the object until
   packets start arriving for the next object.

   Push mode. Push mode combines a number of on demand mode transmis-
   sions, combined with a streaming mode transmission containing
   schedule information about the on demand transmissions. Typically,
   receivers join a particular set of multicast groups to collect ALC
   packets for multiple unrelated objects they have interest in, and
   receivers are not joined to the groups when ALC packets are being
   transmitted for objects they have no interest in.  Receivers may
   automatically join the groups at appropriate times by listening to a
   multicast group containing schedule information of object transmis-
   sions.  Commonly, the sender controls which receivers are to recover
   which objects using out of band methods.

   There are many other delivery modes that ALC can be used for that are
   not covered above.  The description of the many potential applica-
   tions and the appropriate delivery mode is beyond the scope of this
   document.  With many of these delivery modes, substantial additional
   mechanisms beyond what is described in this document will be needed
   to support the mode, i.e. the out of band mechanism for delivering
   object transmission session information to the receivers.  This docu-
   ment only attempts to describe the minimal common scalable elements
   to these diverse applications using ALC as the delivery mechanism.

5. Congestion Control



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 10]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   ALC congestion control is specified in a companion document [CCMRBB].
   This section only provides a brief description of the possible stra-
   tegies.

   ALC performs congestion control using layered streams. Receivers par-
   ticipating to the session are subject to heterogeneous data rates,
   obtained by selectively delivering to receiver a subset of all the
   streams available at the source. Two different techniques can be used
   to select which streams to forward in a distributed fashion. The
   first is based on sending each stream on a distinct multicast group
   and having receivers joining only a subset of groups. The second is
   based on using a single multicast group and having routers to perform
   the stream selection. This solution requires special router support.
   See [CAI99, LUB99] for further details.

   The solution with multiple multicast groups is based on [VIC98A,
   VIC98B].  A single sender generates and sends ALC packets to several
   multicast addresses concurrently, and packets sent to a particular
   multicast address are considered to be a stream layer. The u layers
   emanating from a single sender are numbered consecutively from 0
   through u-1. Each layer sends ALC packets at a potentially different
   rate than other layers but at the same rate at all points in time.
   Receivers join as many layers as possible without experiencing packet
   loss as described below. To obtain y layers, the receiver MUST sub-
   scribe to layers 0 through y-1.

   When network congestion is detected (via packet loss) along the path
   from a particular sender to the receiver, the receiver MUST immedi-
   ately leave some number of its highest currently joined layers, as
   described in the building block [CCMRBB], to reduce the aggregate
   reception rate.  In the case that the last ("base") layer is left,
   the receiver no longer receives any packets from that sender. When
   there is only one single sender that sends a single layer, ALC is a
   simple rate-limited transmission.   In this case, the receiver should
   still detect congestion and be prepared to leave the object transmis-
   sion session if and when enough loss is detected.

   Congestion is assumed to have occurred when losses exceed a given
   threshold. This threshold depends on losses expected in the network.
   For example, in a wireless network, some loss may be expected even
   with no congestion. The threshold should be configurable by the
   receiving application. The default threshold should be zero, i.e.,
   any packet loss should lead to leaving layers. Details of this will
   be specified in the congestion control multiple rates building block
   [CCMRBB].

6. Packet format




Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 11]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   The ALC packet header is laid out as follows (see Figure 1).  The ALC
   payload immediately follows the ALC header. All integer fields are
   carried in "big-endian" or "network order", that is, most significant
   byte (octet) first. Unless otherwise noted, numeric constants are in
   decimal (base 10).  Bits designated as padding have the value zero.
   All ALC packets pertaining to an object transmission session MUST be
   the same size and the same format.


   o 32-bits: Congestion control information

   o 3-bits: ALC version number (called "ver" in Figure 1)

   o 5-bits: Length of the non-fixed portion of the ALC header (called
     "hdr len" in Figure 1)

   o 8-bits: FEC protocol ID

   o 1-bit: FEC encoding flag (called "E" in Figure 1), 1 indicates
     source symbols in payload, 0 indicates redundant symbols in the
     payload (see [FECBB]).  This is part of the FEC payload ID.

   o 1-bit: Additional header fields flag (called "A" in Figure 1), 0
     indicates there are no additional header fields, and 1 indicates
     there are additional header fields.

   o 3-bits: Length of object transmission label (called "LTL" in Figure
     1) in units of 32-bit words. LTL = y indicates the object transmis-
     sion label is y words in length.

   o 2-bits: Length of FEC object transmission information (called "LTI"
     in Figure 1) in units of 32-bit words.  LTI =  y indicates the FEC
     object transmission information is y words in length.

   o 1-bit: Length of FEC payload ID (called "F" in Figure 1). F = 0
     indicates the FEC payload ID is 32-bits long.  F = 1 indicates the
     FEC payload ID is 64-bits in length.

   o 4-bits: reserved

   o 4-bits: Length of source authentication information (called "LSA"
     in Figure 1) in units of 32-bit words.  LSA = y indicates the
     source authentication information is y words in length.

   o 0 -- 7 x 32-bits: Object transmission label.  LTL = y indicates the
     object transmission label is y words in length.

   o 0 -- 3 x 32-bits: FEC object transmission information.  LTI = y



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 12]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


     indicates the FEC object transmission information is y words in
     length.

   o 1 -- 2 x 32-bits: FEC payload ID.  If F = 0 then this is 32-bits
     long.  If F = 1 then this is 64-bits long.

   o 0 -- 15 x 32-bits: Source authentication information.  LSA = y
     indicates the source authentication information is y words in
     length.


      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                Congestion control information                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | ver | hdr len |  FEC proto ID |E|A| LTL |LTI|F|reservd|  LSA  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |         0-7 32-bit words of object transmission label         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    0-3 32-bit words of FEC object transmission information    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | 32-bit FEC payload ID if F = 0, 64-bit FEC payload ID if F = 1|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    0-15 32-bit words of source authentication information     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 1 - ALC packet header layout

     The congestion control information is specified in [CCMRBB].  The
     initial ALC version number is 0.  The length of the non-fixed por-
     tion of the ALC header is in units of words and doesn't count the
     first two words of the ALC header (it doesn't count the congestion
     control information and everything up to and including LSA), but it
     does include the lengths of all additional headers that are indi-
     cated by A = 1.  Thus, the length of the non-fixed portion of the
     ALC header can be used to directly find the beginning of the ALC
     payload.  The FEC protocol ID specifies which FEC protocol to use.
     This includes the specification of the FEC codec and can also
     include identifying the delivery mode. There are several different
     FEC codecs available (see [FECBB]). The default FEC protocol ID is
     0, which uses the FEC codec based on [RIZ97c].  The interpretation
     of the ALC packet header format used for the default protocol and
     for other protocols based on other FEC codecs is described in the
     appendices.  For block codes, the encoding flag is set to 1 if the
     ALC payload contains source symbols, and is set to 0 if the ALC
     payload contains redundant symbols.  For some FEC codecs, the
     encoding flag is not used and MUST be set to 0.  The A flag is used



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 13]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


     to indicate the presence of additional headers beyond those indi-
     cated by the second word of the ALC header.  The length of the
     object transmission label can be anywhere from 0 (indicating field
     not present) to 7 words long. A standard setting for the length of
     the object transmission label is 4 words, i.e., the length of an
     MD5 hash.  The length of the FEC object transmission information
     can be anywhere from 0 (indicating field not present) to 3 words
     long.  The length of the FEC payload ID is either 32-bits or 64-
     bits (this is a REQUIRED field for all FEC protocols).  The length
     of the source authentication information can be anywhere from 0
     (indicating field not present) to 15 words long.

     The object transmission label (if used) verifies that the packet is
     associated with the object transmission session.  Generally, the
     object transmission label is all or part of the MD5 hash of the
     relevant parameters associated with the session.  The exact format
     and use of the object transmission label is FEC protocol dependent.

     The FEC object transmission information (if used) contains informa-
     tion that is used by the FEC codec to decode the object.  This is
     information MUST NOT vary from packet to packet.  For example, this
     could include the length of the object, the source block length,
     and the symbol length.  The exact format and use of the FEC object
     transmission information is FEC protocol dependent.  For some pro-
     tocols, some or all of the FEC object transmission information is
     provided to receivers using out of band methods.

     The FEC payload ID identifies the content of the ALC payload con-
     tain FEC encoding symbols.  The encoding symbol ID must be part of
     the FEC payload ID.  If the object is partitioned into blocks, then
     the encoding block number is also part of the FEC payload ID.  The
     exact format and use of the FEC payload ID is FEC protocol depen-
     dent.

     The source authentication information (if used) contains informa-
     tion that can be used by a receiver to verify the source of the
     packet.  The exact format and use of the source authentication
     information is FEC protocol dependent.

     The minimal required portion of the ALC header can be enough for a
     simple on demand mode service, where most of the information can be
     obtained by out of band methods by receivers.  As shown in Figure
     2, the minimal ALC header is 3 words long, consisting of one word
     of congestion control information, one word of control information
     including types, lengths, and flags, and a one word FEC payload ID.
     In this example, the FEC payload ID consists of a 16-bit encoding
     block number and a 16-bit encoding symbol ID.




Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 14]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              Congestion control information                   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  0  |    1    |  FEC proto ID |E|0|  0  | 0 |0|reservd|   0   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     encoding block number     |      encoding symbol ID       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 2 - An example of a minimal ALC packet header

     For other delivery modes, other information in the ALC header can
     be useful.  For example, consider a push mode service where
     receivers obtain object transmission session information by listen-
     ing to a multicast group containing this information for the multi-
     ple objects.  This object transmission session information could
     include the object transmission label, the length of each object,
     the source block length and the symbol length used by the FEC
     codec, and additional information about when ALC packets will be
     transmitted for the object.  In this mode, it may be appropriate
     for the ALC header to contain an object transmission label and the
     remaining transmission time for a particular object.  The object
     transmission label allows the receiver to associate received pack-
     ets with particular objects.  The remaining transmission time can
     be used to allow receivers to predict whether or not they will be
     able to recover the object from the packets they have already
     received and from the packets they can expect to receive in the
     future.  An example is shown in Figure 3.  In this example, the
     object transmission label is 2 words long, consisting of the first
     64-bits of the MD5 hash of the appropriate object transmission ses-
     sion parameters.  The FEC object transmission information is one
     word, consisting of a 32-bit remaining transmission time in
     seconds.  The FEC payload ID is one word, consisting of a 16-bit
     encoding block number and a 16-bit encoding symbol ID.
















Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 15]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                Congestion control information                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  0  |    4    |  FEC proto ID |E|0|  2  | 1 |0|reservd|   0   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               64-bits of MD5 hash of relevant                 |
     +                                                               +
     |           object transmission session parameters              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           remaining transmission time in seconds              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    encoding block number      |      encoding symbol ID       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 3 - An example of a push-mode ALC packet header


     As another example, consider a streaming mode service where
     receivers remain joined to the multicast group to sequentially
     recover multiple related objects of different length.  In this
     case, all information to recover the objects may be the same from
     one object to the next except for the object length.  For example,
     all objects may be encoded using the same FEC encoder and use the
     same set of streams and rates for the transmission, and use the
     same source block length and symbol length.  Thus, once a receiver
     obtains all of this information, the only additional information
     receivers need to obtain to decode each object is its length.  In
     this case, the ALC header could contain the object transmission
     label, the object length and source authentication information, as
     shown in Figure 4.  In this example, the object transmission label
     consists of the first 64-bits of the MD5 hash of the relevant
     object transmission session parameters, the FEC object transmission
     information consists of the 32-bit object length, the FEC payload
     ID consists of a 32-bit encoding symbol ID, and the source authen-
     tication is 3 words in length.














Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 16]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                Congestion control information                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  0  |    7    |  FEC proto ID |E|0|  2  | 1 |0|reservd|   3   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               64-bits of MD5 hash of relevant                 |
     +                                                               +
     |           object transmission session parameters              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       object length                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                     encoding symbol ID                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +                                                               +
     |        12 bytes of source authentication information          |
     +                                                               +
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 4 - An example ALC packet header for streaming mode

     The predefined fields within the ALC header have been included
     because it is recognized that many applications will find these
     fields useful.  Some limited number of applications may require
     additional header fields.  For example, in a payment for down-load
     application, encryption of packets may be useful.  To allow for
     unanticipated or rarely used additional header fields, the ALC
     header contains an additional header fields flag "A".  If "A" is
     set to 0 then no additional header fields are included within the
     ALC header beyond the predefined fields.  When additional headers
     beyond the predefined fields are used, the value of "A" within the
     ALC header MUST be set to 1.  The format of additional headers is
     an 8-bit Additional Header Type (AHT), an 8-bit header Additional
     Header Length (AHL), followed by the additional header content.
     AHT determines the type of the additional header.  AHL specifies
     the length of the additional header in 4-byte words, and this
     includes the length of AHT and AHL. Note that this implies that the
     length of the additional header content MUST be at least 16 bits
     and MUST be an odd number of 16-bits words.









Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 17]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      AHT      |       AHL     |     current header content  ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     .                                                               .
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 5 - format of additional headers

7. Sender Operation

   ALC assumes that one or more senders generate and send encoding sym-
   bols for a single object to one or more multicast addresses.  The
   encoding symbols sent to a particular multicast address define a mul-
   ticast stream, and the transmission rate on different streams may
   differ.  Typically, the sender(s) continue to send encoding symbols
   to all streams until the transmission is complete. The transmission
   may be considered complete when some time has expired, a certain
   number of encoding symbols have been sent, or some out of band signal
   (from a higher level protocol, perhaps) has indicated completion by a
   sufficient number of receivers. The sender(s) may then proceed to
   additional object transfers, or terminate. In on demand mode, senders
   transmit for some given time period selected to allow all the
   intended receivers to tune in and get the object. This would typi-
   cally be much larger than the down-load time for the object to make
   it convenient to receivers to join the object transmission session
   asynchronously. For example a popular software update might be sent
   using ALC for several days, even though the down-load itself only
   takes an hour.

   All encoding symbols in an ALC transfer MUST be the same size. The
   sender(s) may determine the symbol size arbitrarily, but must coordi-
   nate or use a default symbol size to ensure that all encoding symbols
   are of equal length. Larger packet sizes (which implies larger encod-
   ing symbols) are generally desirable so that the fraction of
   bandwidth lost to packet headers is reduced. On the other hand, if
   the packet size is larger than the network's maximum transmission
   unit (MTU), packets would be fragmented, and the loss of any fragment
   would require the entire packet to be lost. Therefore a packet size
   close to, but not exceeding, the MTU is best, with the symbol size
   chosen as the MTU less the size of the IP, UDP and ALC headers. How-
   ever, as some receivers may not be able to contain the object in main
   memory, it is desirable that a multiple of 512 bytes should be chosen
   for the symbol size. This makes writing to disk sectors more con-
   venient (if values below 512 bytes are necessary, they should be
   chosen to evenly divide 512). Ethernet's MTU is 1500 bytes and PPP's



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 18]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   is at least 576 bytes.  For the above reasons we RECOMMEND to use an
   ALC payload size of either 512 or 1024 bytes. The former can be
   advantageous when packet loss occurs on a small-MTU modem link; the
   latter is to be preferred in all other cases, as it reduces packet
   header overhead and packet handling overhead in routers.

8. Receiver Operation

   Once receivers have obtained the object transmission session descrip-
   tion needed to initiate a down-load of an object, the receivers join
   one or more multicast streams associated with the session and start
   receiving ALC packets from these streams.  In order to perform rate
   and congestion control, the streams emanating from a single sender
   are organized into layers.  As described in the congestion control
   section, receivers MUST join and leave these streams to vary their
   down-load speed in the face of varying bandwidth capacity between the
   receivers and the sender.

   The receiver can operate in several possible modes. For example, in
   on demand mode receivers may join one or more multicast streams asso-
   ciated with the object transmission session, obtain the necessary
   encoding symbols to reproduce the object, and then leave all of the
   multicast streams. As another example, in push mode a receiver may be
   tuned in to a continuous session announcement multicast stream to
   determine when objects of interest are scheduled for transmission.
   Then, at the appropriate time the receiver automatically joins the
   object transmission session to down-load objects of interest.  As
   another example, in streaming mode a receiver may be continuously
   joined to a set of multicast groups to down-load all objects.

9. ALC and Generic Router Assist

   Router filtering of ALC packets to assist in congestion control is
   described in [LUB99].  The addresses of the multicast layers can be
   communicated to the routers and they can do filtering of groups based
   on congestion.  This is one of the reasons why it is good to have the
   sequence number information in a fixed place in the ALC packet
   header, so that the routers can probe this field if necessary
   (although it may not be).  There are some good strategies for combin-
   ing router assisted congestion control with receiver congestion con-
   trol in such a way that ALC will perform well when only receivers are
   doing congestion control, and will perform even better with router
   assist.

10. Intellectual Property Issues

   There are patents pending for large block codes and for large on
   demand codes.



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 19]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


11. Acknowledgments

   Thanks to Hayder Radha and Vincent Roca for detailed comments on this
   paper.

12. References

   [AFZ95] Acharya, S., Franklin, M., and Zdonik, S.,
   "Dissemination-Based Data Delivery Using Broadcast Disks", IEEE
   Personal Communications, pp.50-60, Dec 1995.

   [BLA94] Blahut, R.E., "Theory and Practice of Error Control Codes",
   Addison Wesley, MA 1984.

   [BYE98] Byers, J.W., Luby, M., Mitzenmacher, M., and Rege, A., "A
   Digital Fountain Approach to Reliable Distribution of Bulk Data",
   Proceedings ACM SIGCOMM '98, Vancouver, Canada, Sept 1998.

   [CAI99] Cain, B., Speakman, T., and Towsley, D., "Generic Router
   Assist (GRA) Building Block, Motivation and Architecture", Internet
   Draft draft-ietf-rmt-gra-arch-00.txt, a work in progress.

   [CCMRBB] "Congestion Control for multi-rate building block", draft
   to be written for submission to the IETF.

   [DEE88] Deering, S., "Host Extensions for IP Multicasting", RFC
   1058, Stanford University, Stanford, CA, 1988.

   [FECBB] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L., Crowcroft, J.,
   Luekenhoff, B., "Reliable Multicast Transport Building Blocks: Forward
   Error Correction", Internet Draft draft-ietf-rmt-bb-fec-00.txt, a work
   in progress.

   [GEM99] Gemmell, J., Schooler, E., and Gray, J., "FCast Scalable
   Multicast File Distribution: Caching and Parameters Optimizations",
   Technical Report MSR-TR-99-14, Microsoft Research, Redmond, WA, April,
   1999.

   [HAN98] Handley, M., and Jacobson, V., "SDP: Session Description
   Protocol", RFC 2327, April 1998.

   [HAN96] Handley, M., "SAP: Session Announcement Protocol", Internet
   Draft, IETF MMUSIC Working Group, Nov 1996.

   [HOL99] Holbrook, H., Cheriton, D., "IP Multicast Channels: Experss
   Support for Large-scale Single-source Applications", ACM SIGCOMM'99

   [LUB99]      Luby, M., Vicisano, L., Speakman, T. "Heterogeneous



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 20]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   multicast congestion control based on router packet filtering",
   presented at RMT meeting in Pisa, March 1999.

   [R2068] Fielding, R., Gettys, J., Mogul, J. Frystyk, H., Berners-Lee,
   T., Hypertext Transfer Protocol - HTTP /1.1 (IETF RFC2068)
   http://www.rfc-editor.org/rfc/rfc2068.txt

   [R2119] Bradner, S., Key words for use in RFCs to Indicate Requirement
   Levels (IETF RFC 2119) http://www.rfc-editor.org/rfc/rfc2119.txt

   [RIZ97a] Rizzo, L, and Vicisano, L., "Reliable Multicast Data
   Distribution protocol based on software FEC techniques", Proceedings
   of the Fourth IEEES Workshop on the Architecture and Implementation of
   High Performance Communication Systems, HPCS'97, Chalkidiki, Greece,
   June 1997.

   [RIZ97b] Rizzo, L., and Vicisano, L., "Effective Erasure Codes
   for Reliable Computer Communication Protocols", ACM SIGCOMM Computer
   Communication Review, Vol.27, No.2, pp.24-36, Apr 1997.

   [RIZ97c] Rizzo, L., "On the Feasibility of Software FEC",
   DEIT Tech Report, http://www.iet.unipi.it/~luigi/softfec.ps, Jan 1997.

   [RUB99] Rubenstein, Dan, Kurose, Jim and Towsley, Don, "The Impact of
   Multicast Layering on Network Fairness", Proceedings of ACM SIGCOMM

   [VIC98A] L.Vicisano, L.Rizzo, J.Crowcroft, "TCP-like
   Congestion Control for Layered Multicast Data Transfer", IEEE Infocom

   [VIC98B] Vicisano, L., "Notes On a Cumulative Layered
   Organization of Data Packets Across Multiple Streams with Different
   Rates", University College London Computer Science Research Note
   RN/98/25, Work in Progress (May 1998).

A.1. Default FEC protocol

   The default FEC protocol is based on the FEC codec described in
   [RIZ97c].  This FEC codec is a small block small block codes that is
   described in more detail in [FECBB].  The FEC protocol ID for the
   default protocol is 0.  The encoding flag E is set to 1 for packets
   that contain source symbols and to 0 for packet that contain redun-
   dant symbols.  The object transmission label may be set arbitrarily.
   For example, an application may need to use well-known numbers.
   Alternatively, the transmission label may be the MD5 hash of the
   relevant object transmission session parameters, and its length in
   words is LTL.

   If LTI = 0 then there is no FEC object transmission information



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 21]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   carried in the ALC packet header, and thus the object length, the
   source block length and the symbol length must be obtained by the
   receiver out of band.  If LTI = 1 then the receiver must obtain the
   source block length and the source symbol length out of band and the
   FEC object transmission information contains a 32-bit object length
   in units of bytes.  If LTI = 2 then the FEC object transmission
   information contains a 40-bit object length in units of bytes, a 12-
   bit source block length in units of source symbols and a 12-bit sym-
   bol length in units of bytes.  If LTI = 3 then the FEC object
   transmission information contains a 56-bit object length in units of
   bytes, a 12-bit source block length in units of source symbols, a
   12-bit symbol length in units of bytes and a 16-bit remaining
   transmission time in seconds for the object.

   If F = 0 then the FEC payload ID consists of a 20-bit encoding block
   number and a 12-bit encoding symbol ID.  If F = 1 then the FEC pay-
   load ID consists of a 48-bit encoding block number and a 16-bit
   encoding symbol ID.

   Figure 6 shows an example of the ALC header for the default protocol.
   In this example, LTL = 4, LTI = 3 and F = 1.  No additional header
   fields or source authentication is used in this example.





























Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 22]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Congestion control information                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  0  |    9    |       0       |E|0|  4  | 3 |1|reservd|   0   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |              128-bits of MD5 hash of relevant                 |
   +                                                               +
   |           object transmission session parameters              |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       object length                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         object length (cont.          |  source block length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |SBL(c) |     symbol length     |  remaining transmission time  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     encoding block number                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | encoding block number (cont.) |       encoding symbol ID      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 6 - Example ALC packet header for default FEC protocol

A.2. DF FEC protocol

   The DF FEC protocol is based on large on demand codes.  large on
   demand codes are described in more detail in [FECBB].  The FEC proto-
   col ID for the DF FEC protocol is 223.  The encoding flag E is not
   used for the DF FEC protocol, and it MUST be set to 0 for all pack-
   ets.  The object transmission label is the MD5 hash of the relevant
   object transmission session parameters, and its length in words is
   LTL.

   With the DF FEC protocol, the receiver calculates the source block
   length based on the symbol length and on the object length.  If LTI =
   0 then there is no FEC object transmission information carried in the
   ALC packet header, and thus the symbol length and the object length
   must be obtained by the receiver out of band.  If LTI = 1 then the
   symbol length must be obtained by the receiver out of band and the
   FEC object transmission information contains a 32-bit object length
   in units of bytes.  If LTI = 2 then the FEC object transmission
   information contains a 40-bit object length in units of bytes, a 12-
   bit symbol length and a 12-bit remaining transmission time in seconds



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 23]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   for the object.  If LTI = 3 then the FEC object transmission informa-
   tion contains a 64-bit object length in units of bytes, a 16 bit sym-
   bol length and a 16-bit remaining transmission time in seconds for
   the object.

   If F = 0 then the FEC payload ID consists of a 32-bit encoding symbol
   ID.  If F = 1 then the FEC payload ID consists of a 32-bit encoding
   block number and a 32-bit encoding symbol ID.

   Figure 7 shows an example of the ALC header for the default protocol.
   In this example, LTL = 4, LTI = 3 and F = 1.  No additional header
   fields or source authentication is used in this example.


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Congestion control information                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  0  |    9    |      123      |0|0|  4  | 3 |1|reservd|   0   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |              128-bits of MD5 hash of relevant                 |
   +                                                               +
   |           object transmission session parameters              |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                     64-bits object length                     +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         symbol length         |  remaining transmission time  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     encoding block number                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      encoding symbol ID                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 7 - Example DF FEC protocol packet header

A.3. File Transfer using ALC - "Fcast"

   While ALC can be used to transfer arbitrary objects, file transfer is
   expected to be a primary application. This appendix describes a stan-
   dard for file transfer, called "Fcast".




Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 24]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


   When the object being transmitted is a file, the receiver usually
   requires "metadata" in addition to the file itself, such as the file
   name, its creation date, etc. Metadata can be sent a number of ways.
   For example, it could be part of the object session description or
   sent as a separate ALC object with a well-known object transmission
   label. The method described here combines the file with its metadata
   in a single ALC object. The metadata is logically appended to the end
   of the file as a trailer and sent as part of the transmission. The
   file with appended trailer is referred to as the extended file. In
   order to find the beginning of the trailer, the last 4 bytes in the
   object indicate the length of the trailer. Including metadata is
   OPTIONAL, so the length may be zero. Figure 8 shows the layout of the
   Fcast file transmission.

   The metadata is appended rather than prepended to the file so that
   the file length may be corrected by simply truncating the extended
   file (rather than requiring re-writing). The nature of ALC does not
   ensure that the start of the file is received before the end, so
   there is no drawback to using a trailer in terms of latency to get
   the information.


           +----------------------------------------------+
           |    Object    | 4-byte checksum | Null padding|
           +----------------------------------------------+
             /            \
             |             ...........
             |                        \
             |                         ..........
            /                                    \
           +--------------------------------------+
           | File data | Trailer | Trailer Length |
           +--------------------------------------+

   Figure 8 - Fcast file transmission: The ALC object is the file  data,
   followed by the meta-data trailer, followed by the trailer length (in
   bytes - 4 byte value)

   The metadata in the file trailer is stored as ASCII text. It carries
   the same information as HTTP object metainformation header fields, as
   defined in RFC 2068 [R2068]. As in the RFC, field names should be
   followed by a colon, followed by the field value, followed by a CR-
   LF.

   The header fields that are RECOMMENDED/OPTIONAL to be supported by
   all receiving clients are listed below and should be interpreted as
   per RFC 2068.




Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 25]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      RECOMMENDED fields:


             Content-Location (indicates the URI for the file - could be
         just the file name)

             Last-modified


      OPTIONAL fields:


             Content-Length (indicates the length of the file)

             Content-Encoding

             Content-Type

             Content-Base

             Content-Language

             Content-Style-Type

             Date

             Expires

             Any other header field defined in RFC 2068 or subsequent
         HTTP standards.


      Example:

             Content-Length : 1024

             Content-Location : http://www.foo.com/myfile.zip

         Authors' Addresses

      Michael Luby
      luby@dfountain.com
      Digital Fountain
      600 Alabama Street
      San Francisco, CA, USA, 94110

      Jim Gemmell
      jgemmell@microsoft.com



Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 26]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000


      Microsoft Research
      301 Howard St., #830
      San Francisco, CA, USA, 94105

      Lorenzo Vicisano
      lorenzo@cisco.com
      cisco Systems, Inc.
      170 West Tasman Dr.,
      San Jose, CA, USA, 95134

      Luigi Rizzo
      luigi@iet.unipi.it
      Dip. di Ing. dell'Informazione
      Universita` di Pisa
      via Diotisalvi 2, 56126 Pisa, Italy

      Jon Crowcroft
      J.Crowcroft@cs.ucl.ac.uk
      Department of Computer Science
      University College London
      Gower Street,
      London WC1E 6BT, UK

      Bruce Lueckenhoff
      brucelu@cadence.com
      Cadence Design Systems, Inc.
      120 Cremona Drive, Suite C
      Santa Barbara, CA 93117























Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 27]


Internet Draft    RMT PI, Asynchronous Layered Coding         March 2000





















































Luby, Gemmell, Vicisano, Rizzo, Crowcroft, Lueckenhoff         [Page 28]