Internet Engineering Task Force                  Network Working Group
INTERNET-DRAFT                                      J. Crowcroft (UCL)
Expires 15 Sept, 1998                                L. Vicisano (UCL)
March, 1998                                        Z. Wang (Bell Labs)
                                                        A. Ghosh (UTS)
                                               M. Fuchs (U. Karlsruhe)
                                                       C. Diot (INRIA)
                                                   T. Turletti (INRIA)




              RMFP: A Reliable Multicast Framing Protocol
                    <draft-crowcroft-rmfp-02.txt>



Status of this Memo

This document is an Internet-Draft.  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."

To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).

Distribution of this document is unlimited. Please send comments to
the authors.

1.  Introduction

There has been considerable interest in reliable multicast, and a
number of reliable multicast transport applications and systems have
















INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


been built in the past years, e.g. [PGM], [RMDP], [RMTP], [SRM].  A
survey of most of current reliable multicast protocols is available in
[Diot97].

Reliable multicast transport is considerably more complex than
reliable unicast. It is generally difficult to build a generic
reliable transport protocol for multicast, much as TCP is a generic
transport protocol for unicast, since different applications often
have very different reliability requirements and modes of operation.

In this document we propose a framing protocol for reliable multicast
transport - Reliable Multicast Framing Protocol (RMFP). RMFP runs over
multicast UDP and itself does not provide any reliability (or
functionality in a larger extend). Reliability and other protocol
functionalities will be defined in specific profiles.  The purpose of
RMFP is to provide a common framework upon which a set of reliable
multicast systems can be built and share similar functionalities where
exist.

The philosophy of RMFP is in many respects similar to the one of RTP.
However, we believe that using RTP for reliable multicast is not a
right approach and will not lead to a clean application design.

This draft is intended to stimulate more discussion on the one issue
of a generic framing protocol for reliable multicast.

2.  Design Philosophy

This section presents the key mechanisms that have been the foundation
for the specification of RMFP.

2.1.  Error Control

Since RMFP is a framework for reliable multicast, the error control is
the most important issue. RMFP itself provides no error control
functionality, this is the task of the protocol profiles. However,
since RMFP follows the ALF principle [Clark90], some of the error
control functionalities have to be provided by the application.

  o RMFP specifies the format of the ADUs. The sequence number field
    and the FEC and retransmissions flags of the ADU header are
    primarily provided for the protocol profiles to be used for error
    control.







Crowcroft and al.                                        [Page 2]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


  o Any protocol profile has to be able to detect the loss of ADUs and
    to initiate the retransmissions. This includes the transmission of
    control information from a receiver that suffered a loss to some
    group member that can perform the retransmission.

The ALF principle introduces ADUs as common unit of transmission for
all layers from the transport protocol up to the application. To
enable the unordered delivery of ADUs each ADU has an ADU name
assigned that identifies the ADU data in the application context
independent of the history of received ADUs. This ADU name is of no
meaning to the transport protocol. However, the transport protocol
uses its own naming concept to perform loss detection and recovery --
the sequence numbers.

The remainder of this section assumes, that only one sender is active
in the regarded session. This assumption simplifies the problem in a
way, but without limiting generality. If there are several senders in
a session, each sender will mark its ADUs with his source ID. Each
member of the session has its unique source ID, and all packets can be
assigned to their sender. Although the following analysis treats only
the case of sessions with a single sender, multiple senders in a
session can be regarded as independent from each other, and the
discussion corresponds to each sender respectively.

2.1.1.  The Automatic Repeat Request (ARQ) mechanism

The ARQ mechanism is one of the two basic approaches to ensure
reliable data transmission, and is the most reliable. The other
mechanism, Forward Error Correction (FEC), can only reduce the loss-
rate. ARQ consists of two components: the loss detection and the loss
recovery.

Loss detection:

Even if the application does not need any ordering of the data, the
protocol will use some kind of sequence numbers to assign an order to
its ADU stream.  Normally, this order corresponds to the sending
order. Losses are detected by means of gaps in the sequence number
space. The actual algorithm can reside at the receiver (receiver-based
loss detection) or at the sender (sender-based loss detection). The
loss detection algorithm uses some state information, the history of
ADUs already received successfully, and computes the necessary
information to do the loss recovery, i.e. the sequence numbers
corresponding to the lost ADUs.





Crowcroft and al.                                        [Page 3]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


  o The receiver-based algorithm detects the lost ADUs at the
    receiving protocol instance, that will encode and transmit the
    sequence numbers of the lost ADUs in control packets. The encoding
    is mostly done in form of spans to reduce the necessary bandwidth.
    The addressee of the control packets (in a unicast transmission
    this is the sender) can then compute the sequence numbers of the
    lost packets without other information.

  o The sender-based algorithm requires that the sender is in charge
    for the reliability of all the receivers. Consequently, the sender
    has to keep status information on all of the receivers, see
    [Levine98].

In the remainder of the report only the receiver-based approach will
be considered, since at least for multicast, the sender-based approach
has several disadvantages (a comparison of the receiver- and sender-
based approach can be found in [Pingali94]):

  o To detect the gaps, the history of lost and received ADUs has to
    be available. If the sender has to do this, the number of
    receivers would be limited by the senders capacity in keeping this
    state information.

  o Since the sender has to track the history of all ADUs at all
    receivers, it has to process the control packets from all
    receivers. With many receivers, the sender will suffer the so-
    called ack-implosion. This is an overload of the sender by
    processing the control packets. Some receiver-based protocols use
    the so-called NACK suppression mechanism to prevent the overload
    of control packets. A receiver that suffered a loss, does not need
    to send a control packet with lost ADU information, if another
    receiver has done so before for the same ADU. If the
    retransmission for the first request is transmitted, both
    receivers will receive it.

The following two protocols have been investigated more thoroughly for
integration into RMFP as profiles:

The SRM [SRM] protocol  uses a receiver-based mechanism with NACK
suppression to free the senders completely from management tasks for
special error control state information and to avoid the ack-
implosion.

The LGC protocol [Hofmann97] uses a combined approach. To prevent the
nack-implosion at the sender, LGC builds a tree structure with the





Crowcroft and al.                                        [Page 4]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


sender as source. The control packets are not sent directly to the
sender, but are gathered at the inner nodes (group controllers) of the
tree. Thus, the sender and each of the group controllers has only to
process the control packets of its children.

Loss Recovery:

For unicast transmission, the sender of the retransmissions is always
the original sender. For multicast transmission, receivers that have
successfully received a given PDU can also retransmit that PDU to the
receivers that have lost the PDU. An example protocol is SRM, where
every group member is involved in loss recovery.

2.1.2.  Forward Error Control

FEC reduces the loss-rate in sending redundancy information
additionally to the useful data. The encoding takes a block of n ADUs
and computes a given number k of redundancy packets. The n+k packets
form a transmission group. If the packets of a transmission group are
sent, it is sufficient to receive any subset of size n of the
transmission group to reconstruct the original n ADUs. However, if
more then k packets of the transmission group get lost, the losses
cannot be repaired. Thus, FEC can only reduce the packet loss-rate. An
introduction to FEC can be found in [Rizzo97].

FEC can be combined with ARQ to the so-called hybrid ARQ. This
mechanism is especially useful for reliable multicast, since it can
effectively reduce the overall loss-rate and thus retransmissions,
too. An investigation of hybrid ARQ is presented in [Nonnenmacher97].

There are several possibilities to use FEC in RMFP:

  o The usage of FEC within RMFP transparent for the protocol profile,
    i.e. as some layer under the profile could improve the behavior of
    all profiles. The effects of such a transparent FEC mechanism have
    been investigated in [Huitema96] and [Nonnenmacher97].

  o FEC can be implemented as a mechanism of a protocol profile.

  o The application can implement the FEC mechanism or use some
    standard module provided by a RMFP implementation, see [Fuchs98].

Sequence numbers are generally ignored when the FEC bit is set.
However, specific profiles can use the sequence number field to encode
specific protocol information relative to the FEC packet. The




Crowcroft and al.                                        [Page 5]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


transmission of an FEC packet does not increment the sequence number
counter at the source. This insulates the mechanism for detecting
normal packet loss from the FEC recovery scheme.

2.1.3.  ALF and loss recovery

According to the ALF principle, the application has to handle the data
retransmission. In RMFP the protocol profiles have the task to detect
the losses and inform the application about the need of
retransmissions. The application then provides the retransmission
data. However, the protocol profiles use the sequence numbers to
identify ADUs, whereas the application requires the ADU name to
identify the ADUs.  This leads to the need for a mapping between the
protocols sequence numbers and the ADU names.

The retransmissions of ADUs can only be performed by group members
that have the ADU either sent themselves or received already
successfully. Since the complete ADU contains both the sequence number
and the ADU name, the mapping information required to provide the
retransmission data is already available at the retransmitting group
member. The member can map the sequence number to the ADU name and
then the ADU name to the retransmission data. Depending on the
management of the retransmission data, the mapping may also be
performed directly from sequence number to retransmission data.

The RMFP specification doesn't specify, if the mapping from sequence
number to ADU name should be performed already at the protocol profile
or at the application; this decision is implementation dependent.

2.2.  Hierarchical Naming with Objects

Additionally to the sequence number field and the ADU name there is
another field in the ADU header to support the mechanisms to identify
the data carried in the ADUs: The object ID field. It can be used to
optimize the transmission overhead caused by the ADU name.

For example, a file transfer application can put the name of the file
into the ADU name field of each ADU. If the file name includes some
path name, the file name can become considerably big. This file name,
however, doesn't change for all the ADUs belonging to the file; only
the byte-offset field varies from ADU to ADU.

The object ID field can reduce the bandwidth required by the ADU name.
Each file name used during the transmission is mapped onto a unique
object ID. The file name can then be omitted in the ADU name. The



Crowcroft and al.                                        [Page 6]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


problem with this approach is the transmission of the mapping
information of object ID to ADU name that is required at the receivers
to process the ADUs. It can be transmitted in one of the ADUs of the
file in the ADU name field or separately as session information. In
the example, the first approach has the disadvantage, that all ADUs of
the file can only be processed, when the ADU with the file name in the
ADU name field has been received successfully. The other approach has
the disadvantage, that the session packet has to be transmitted
reliably, since the ADUs of a file are only useful, if the file name
is known.

How the object ID field is used is up to the application. It has to
find the optimal way to suit its requirements and to optimize the used
bandwidth.

Another issue is the relationship between objects and sequence
numbers. Three possibilities are suggested:

1/   The object ID is independent to the sequence number field and is
     only used by the application. The ADUs are sequenced relative to
     the start of the session and are not influenced by the object ID.
     This is suitable for applications that require all ADUs to be
     received reliably. This is the mechanism defined at the
     specification the SRM profile.

2/   The sequence numbers are computed relative to the objects and the
     object IDs are sequenced. If the objects are transmitted one
     after the other, i.e. the ADUs of several objects are not
     interleaved, every two ADUs can be compared in respect to their
     sending order.

     To reorder the ADUs and to detect ADU losses at the receiver, the
     object IDs and sequence numbers are compared hierarchically:
     Since the objects are transmitted sequentially, the sending order
     of two ADUs can be computed out of the object ID, if the object
     IDs of the ADUs differ. If both ADUs belong to the same object,
     the sequence number decides about the order. The loss detection
     is more difficult than with the first sequencing approach:

     - Lost ADUs within an object are detected by gaps in the objects
       sequence number name-space.

     - Objects lost in total are detected by gaps in the object ID
       name-space.




Crowcroft and al.                                        [Page 7]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


     - If the first or last ADUs of an object are lost, the start-of-
       object/end-of-object flags are used to detect the losses.

     These mechanisms are sufficient to be able to detect all possible
     ADU losses, although, in the third case, it is not always
     possible to determine the number of all lost ADUs and their
     sequence numbers. The coding of negative acknowledgments for
     retransmission requests must be performed as spans.

     The problematic loss of ADUs around object boundaries (i.e. the
     loss of ADUs carrying start-of-object/end-of-object flags)
     imposes the constraint on the transmission order of objects: The
     transmission of an object must be completed (by an ADU carrying
     the end-of-object flag) before the first ADU of the next object
     (i.e. an object with an object ID incremented by one) can be
     sent. This limits the usability of this approach for applications
     that want to transmit several objects simultaneously, e.g. a
     white-board application. Such applications require the next
     model.

3/   The sequence numbers are computed relative to the objects, i.e.
     every object has its own sequence number space, but there is no
     ordering relation between the ADUs of different objects. This
     requires, however, that all control information has to refer to
     each object independently, too. In [Fuchs98] a concept is
     presented that is based on this model of sequencing. It allows
     the receiver application to decide, which objects have to be
     received reliably (semantic reliability). Another very general
     approach of how this can be done is described in [Raman97].

2.3.  Late-joining Receivers

An important problem for reliable multicast is the synchronization of
late-joining receivers. In general, applications may require to allow
receivers to join an ongoing session. Such receivers have to figure
out, at which point of the ADU stream they start with the receipt of
data.

The following discussion assumes, that the ADUs are sequenced relative
to the session and not relative to the objects (see [Fuchs98]), since
this is the method used in the current specification of RMFP.

In the rest of the section the term initial sequence number refers to
the sequence number of the packet with the lowest sequence number that
a receiver processes. A receiver keeps information about the initial



Crowcroft and al.                                        [Page 8]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


sequence number for each sender independently. Similarly, the
highest-sequence-number-sent is the highest sequence number used by
the sender. For a receiver, this is actually the highest sequence
number seen from a given sender so far.

Several solutions are possible:

  o The receiver uses the ADU with the lowest sequence number it
    receives. It won't ask for retransmissions for any ADU with a
    lower sequence number.

  o The senders transmit synchronization points as session
    information. Those synchronization points are sequence numbers
    within their ADU stream, that are determined by the application
    and are useful in the application context. A joining receiver that
    receives such information, can ask for retransmission of all ADUs
    starting at this synchronization point.

It is up to the application to decide, which style of receiver
synchronization to use. Consequently, the RMFP supports both. The
senders transmit the information of the style to use and if necessary
the current synchronization point within the sender report packets.

RMFP defines following behavior at a joining receiver:

1/   The receiver has no information yet. This means that the receiver
     has not yet received any information about the sequence numbers
     sent by the sender.

     - ADU received: The sequence number of this ADU is used as an
       initial sequence number.

     - Highest-sequence-number-sent received: This information is
       carried e.g. by a SRM heartbeat control packet. The next
       sequence number is used as the initial sequence number.

     - Synchronization point received: The receiver takes the
       synchronization point as the first sequence number of the ADU
       stream from the sender. Since the sender report packet carrying
       the synchronization information also carries the highest-
       sequence-number-sent, the receiver can ask for retransmission
       for all ADUs starting with the synchronization point's sequence
       number and up to the highest-sequence-number-sent.






Crowcroft and al.                                        [Page 9]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


2/   The receiver is synchronized without synchronization point
     received.  The receiver is already synchronized due to a received
     ADU or highest-sequence-number-sent information.

     - ADU received: If the ADU's sequence number is lower than the
       present initial sequence number for that sender, the initial
       sequence number is set back to the ADU's sequence number and
       missing packets starting with this sequence number are
       requested for retransmission.

     - Highest-sequence-number-sent received: It should be greater
       than the already known initial sequence number, which has no
       impact on the synchronization. If it is not, which could happen
       in case of out-of-order receipt of control packets, this
       information is discarded.

     - Synchronization point received: If the synchronization point's
       sequence number is greater than or equal to the initial
       sequence number, the information is regarded as obsolete.
       Otherwise, the initial sequence number is set back to the
       received sequence number and the missing packets are requested
       for retransmission.

3/   The receiver has already received a synchronization point. This
     implies, that the synchronization process is already finished.
     Received synchronization information is not considered anymore at
     all, and ADUs with lower sequence numbers than the used
     synchronization point are discarded.

Because of the finite sequence number space, there are problems with
the described synchronization algorithm. To ensure proper operation
the synchronization process has to be stopped after a defined span of
sequence numbers has been seen by a receiver (again independently for
each sender). In the implementation the size of the span is a quarter
of the sequence number space. At this point the receiver assumes that
it is fully synchronized.

2.4.  Automatic Profile Configuration

One of the foundations that provide flexibility in RMFP are the
different protocol profiles. The protocol profiles have different
characteristics and the optimal protocol profile depends on the
scenario, i.e. the number of group members, the number of senders etc.
If it is clear at the development of an application, that one of the
protocol profiles is a good choice for all envisioned scenarios for




Crowcroft and al.                                       [Page 10]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


the application, the application can always use that profile and every
group member always knows this profile, when it joins.

However, for some applications it might prove useful to support
several protocol profiles. The information of the profile has to be
distributed to all members. RMFP provides a mechanism for joining
members to be configured automatically by received sender control
packets. However, this mechanism works correctly only if the senders
of a session agree about the profile. RMFP provides no mechanism to
deal with conflicts, if members of the same group use different
profiles.

2.5.  External Modules

Some of the standard functionality of other transport protocols have
been omitted in RMFP to allow the applications to use the transport
functionality in a more flexible way. However, many applications could
use the standard functionality. To simplify the use of RMFP it is
possible to use some implementations of this functionality as external
modules. Some possible modules are the following:

  o Retransmission buffer: According to the ALF principle the
    application is responsible to manage the retransmission data. This
    brings flexibility, but many application programmers might want to
    use the classical mechanism, a simple buffer indexed by the
    sequence numbers.

  o Reordering module: ALF explicitly introduces the unordered
    delivery of received ADUs. Applications, that do not require the
    flexibility and performance of that mechanism or are not even
    capable to process the ADUs out-of-order could be implemented
    simpler, if they could rely on ordered delivery.

3.  The RMFP Specification

RMFP specifies three types of packets:

  o Data packets (corresponding to ADUs) sent by senders.

  o Control packets sent by senders and receivers control.

  o Sessions packets that can be defined by the application using the
    generic session packet header.



Crowcroft and al.                                       [Page 11]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


The protocol profiles that provide the reliability can define their
own control packets. Those profile specifications are not part of the
RMFP specification, but are defined separately. Two profile
specifications for SRM and LGC can be found in [Fuchs98].

3.1.  General Aspects

3.1.1.  Network environment

This specification suggests an addressing scheme for the different
packet types: For each of the three packet types -- ADU, control and
session -- RMFP uses the same IP multicast address, but different UDP
ports. Since all packets can be identified due to their type field,
they could be well sent on the same IP multicast address/UDP port.
However, such an approach can lead to inefficiencies at the buffer
management, since the type of a received packet can only be retrieved
after the packet has been copied into the application buffers. That's
why RMFP relies on UDP to multiplex/demultiplex the three flows.

Some protocol profiles may need to use more addresses and/or ports or
cannot even use the global multicast groups in which every group
member takes part. However, the profile developers should seek to be
as compliant as possible to this suggestion to reduce profile specific
differences at the API.

This specification requires the application to provide a single
address/port pair for the session, the session address and the session
port.

  o The data flow (all the ADUs) is assigned to the session
    address/session port.

  o The control flow (sender and receiver report packets as well as
    the profiles' control packets) is assigned to the session
    address/session port + 1.

  o The session flow (all application defined session packets) is
    assigned to the session address/session port + 2.

3.1.2.  System environment

To avoid problems with alignment, all packet fields are naturally
aligned, e.g. all two-octet sized fields are placed on even addresses.
The packets themselves are assumed to be four-octet aligned.



Crowcroft and al.                                       [Page 12]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


3.2.  RMFP ADU Format

The RMFP ADUs have the following header format:

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 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |P|R|F|S|E|X| PAYLOAD TYPE  |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SOURCE ID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       SEQUENCE NUMBER         |          OBJECT ID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|   NAME LENGTH |                   ADU NAME                    :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
:                           ADU NAME                            :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The intention in designing this format was to include enough
information to be sufficient for the different protocol profiles, but
to keep the overhead small.

Version(V):  2 bits
  This field identifies the version of RMFP.

Padding(P):  1 bit
  If the padding bit is set, the packet contains one or more
additional padding bytes at the end, which are not part of the
payload. The last octet of the padding contains a count of how many
bytes should be ignored.  The padding bytes keep all the ADUs four-
byte aligned.

Retransmission (R):  1 bit
  Set to 1 if the ADU is being retransmitted.

Forward Error Correction (F):  1 bit
  Set to 1 if FEC is used.

Start of Object (S):  1 bit
  Set to 1 if the ADU is the first one of an object.

End of Object (E):  1 bit
  Set to 1 if the ADU is the last one of an object.

Exceptional Handling (X):  1 bit
  This bit is free for use by the application. It is not processed at



Crowcroft and al.                                       [Page 13]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


RMFP or any profile and is intended to allow the application to mark
ADUs that should be treated in a unusual way.

Payload Type:  8 bits
  This field is intended to serve the application in a similar way as
the payload type field in RTP [Schulzrinne95] does. The application
can use this field to indicate the type of the payload. Some values of
this field are used to indicate control or session packets used by
RMFP and the profiles and may not be used for application purposes.
Following values are so far defined:

  o 201: Sender report packets.

  o 202: Receiver report packets.

  o 203: Session packets.

  o 205: SRM control packets.

  o 206: LGC control packets.

The application can use the other values freely, however, it is
possible that other values above 200 may be used by other profiles, or
added functionality in future versions of RMFP.

Length:  16 bits
  This field identifies the length of the packet in 32 bits minus one,
including the header and any padding. To count in multiples of four
bytes avoids an alignment check. This algorithm has been introduced by
RTP.

It can be used to combine several ADUs into one UDP packet. In a
compound UDP packet only the length fields allow the detection of the
ADU boundaries.

When several ADUs (original and retransmitted) are concatenated within
one UDP packet, the original ADUs should all be placed at the
beginning of the UDP packet so that receivers that do not encounter
losses can just drop the tail of the retransmitted ADUs without
processing it.

Source ID:  32 bits
  This field identifies the source. The source IDs are generated
randomly similar to the SSRC field in RTP to avoid collisions between
several members.



Crowcroft and al.                                       [Page 14]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


Sequence Number:  16 bits
  The sequence number is an ADU counter. It is incremented by one for
each ADU sent. It can be used to detect ADU losses and calculate loss
rates.  The exact semantics of the sequence number is determined by
the protocol profile. It is possible to count the sequence number
starting with the first ADU sent and incrementing it for each ADU
throughout the session. Another possibility would be to use the
sequence number object-relative, i.e. each object has its own counter
assigned starting at zero for its first ADU.

Object ID:  16 bits
  This field identifies the object carried in the packet.

Name Length:  8 bits
  This field specifies the length in bytes of the following ADU Name.
zero is a valid value, indicating that no explicit ADU name is
available.

ADU Name:  variable length
  The ADU name is used by the application to identify an ADU in the
application context. The contents of this field are completely
transparent to RMFP and the protocol profiles.  The length of the ADU
name can be between 0 and 255 bytes. There can be unused bytes to
ensure proper alignment (32bit) within the ADU header.  This field can
contain the information to identify both the object and the position
within the object of the ADU, e.g. the filename and the byte-offset
for ADUs in a file transfer application. However, the application can
also use the object IDs and sequence numbers to identify objects and
ADUs.

3.3.  RMFP Control Packet Format

RMFP control packets include sender report packets and receiver report
packets. Those packets can be used by the senders and receivers
respectively to transmit session information.

3.3.1.  Sender Report packet

Sender report packets are sent periodically by the sender and contain
information about the current sending state. They can help to
configure new joining receivers and provide information to detect tail
losses. The structure of the header is shown in the following figure:




Crowcroft and al.                                       [Page 15]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


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 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |P|   SR    | PAYLOAD TYPE  |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SOURCE ID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   PROFILE ID  | L |S|V|               RESERVED                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|         BASE OBJECT ID        |     BASE SEQUENCE NUMBER      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|       CURRENT OBJECT ID       |    HIGHEST SEQUENCE NUMBER    |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                  PROFILE-SPECIFIC EXTENSIONS                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Version(V):  2 bits
  This field identifies the version of RMFP.

Padding(P):  1 bit
  If the padding bit is set, the packet contains one or more
additional padding bytes at the end which are not part of the payload.
The last octet of the padding contains a count of how many bytes
should be ignored.  Since the actual header is already aligned, the
padding flag is only necessary, if an application specific extension
is included in the packet.

SR Type:  5 bits
  This field has no interpretation by RMFP and can be used by the
application, e.g. to transmit extra information like an end of
transmission indication. It might also be used to denote the type of
the application specific extension.

Payload Type:  8 bits
  This field is set to 201 for sender report packets

Header Length:  16 bits
  This field specifies the length of the packet in multiples of 32
bits minus one.

Source ID:  32 bits
  This field identifies the sender.

Profile:  8 bits
  This field indicates the type of the protocol profile used. It is
used together with the LSV, first object ID and lowest sequence number


Crowcroft and al.                                       [Page 16]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


fields to configure late joining receivers. A receiver that wants to
join a session and does not know a-priori which protocol profile is
used, can wait for receipt of a sender report packet and configure its
protocol profile according to this field.

Lowest Sequence Valid (LSV):  2 bits
  These bits define the interpretation of lowest sequence number
field:

  o 00: The sequence number of the first ADU sent by the sender in
    this session.

  o 01: The sequence number of some position in the transmission that
    can be used to synchronize.

  o 10: No valid information. The sender provides no special help to
    synchronize. The new receiver should synchronize its join on the
    first ADU it receives.

  o 11: Reserved.

If the lowest sequence number fields is valid, a late-joining receiver
can ask for retransmission back to the indicated sequence number. The
sender can choose the value of this field appropriately to mark some
logical boundary in the ADU stream.

First Object ID:  16 bits
  The object ID for late-joining receivers to synchronize.

Lowest Sequence Number:  16 bits
  This field encodes the sequence number for late-joining receivers to
synchronize.

Current Object ID:  16 bits
  This field and the highest sequence number field are used to
indicate the current state of the sender. The receivers can use this
information to detect tail-losses.

Highest Sequence Number:  16 bits
  This field comes together with the current object ID and is the
sequence number of the last ADU sent. It is used to detect tail-
losses.





Crowcroft and al.                                       [Page 17]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


3.3.2.  Receiver Report packet

Receiver report packets are sent periodically by the receivers to give
feedback on congestion and packet losses. They contain some receive
statistics for each sender. The format of this packet type is shown in
the following figure.

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 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |P|   RC    | PAYLOAD TYPE  |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SOURCE ID                            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                      SENDER'S SOURCE ID 1                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| FRACTION LOST |    RESERVED   |    HIGHEST SEQUENCE NUMBER    |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
:                                                               :
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                      SENDER'S SOURCE ID N                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| FRACTION LOST |    RESERVED   |    HIGHEST SEQUENCE NUMBER    |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                  PROFILE-SPECIFIC EXTENSIONS                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The fields have the following meaning:

Version(V):  2 bits
  This field identifies the version of RMFP.

Padding(P):  1 bit
  The padding bit is used to force alignment of the packet. It is used
in the same way as in the sender report packet.

Report Block Count(RC):  5 bits
  The RC denotes, how many report blocks are contained in this packet.
Each report block consists of a sender's source ID, a fraction lost
field and a highest sequence number field.

Payload Type:  8 bits
  Set to 202 for receiver report packets.

Header Length:  16 bits
  This field specifies the length of the packet in multiples of 32




Crowcroft and al.                                       [Page 18]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


bits minus one.

Source ID:  32 bits
  Identifies the sender of this packet (a receiver).

Senders Source ID X:  32 bits
  This field identifies the sender X corresponding to the following
fraction lost and highest sequence number information.

Fraction Lost:  8 bits
  The fraction of packets lost since last receiver report, expressed
as a fixed point number with the binary point at the left edge of the
field. Fraction lost is the loss rate seen by the receiver in respect
to the sender identified by the previous sender's source ID field. The
information may be used for congestion control or error recovery (FEC)
by the sender.

Highest Sequence Number:  16 bits
  Indicates the highest sequence number received from the
corresponding sender so far.

3.4.  RMFP Session Packet Format

The session packets are used to enable group members to easily
exchange session information. RMFP defines a very light-weight
approach, that merely supports the sending and receiving of unreliable
data, that is marked as session information. Thus the RMFP just
defines the protocol header and provides the transmission and receipt
of such packets. There are no special packets defined for some
specific use, this is up to the application. Session packets can be
used e.g. to support the following functions:

- -    Remote configuration:  A sender can transmit configuration
     parameters to configure other members. This mechanism is only
     used to transmit parameters. The application has the
     responsibility to use the parameters to configure the protocol.

- -    Support at       joining a session:  A member joining a session  has to
     be informed about the current state of the session. For small
     groups, it could use a special session packet to issue some
     status request packet, and the senders can answer to that packet
     with some status reply session packets.

The RMFP session packet has the following format:





Crowcroft and al.                                       [Page 19]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


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 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |P|  FLAGS  | PAYLOAD TYPE  |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SOURCE ID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Version(V):  2 bits
  This field identifies the version of RMFP.

Padding(P):  1 bit
  The padding bit is used to force alignment of the packet. It is used
in the same way as in the sender report packet.

FLAGS:  5 bits
  The usage of this field is defined by the application. It could be
used e.g. to identify different types of session packets.

Payload Type:  8 bits
  This field is set to 203 for RMFP session packets.

Length:  16 bits
  This field specifies the length of the packet in multiples of 32
bits minus one, including the header and any padding.

Source ID:  32 bits
  This field identifies the sender of the session packet. It is
calculated like the length field of the ADU.


















Crowcroft and al.                                       [Page 20]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


Addresses of Authors

J. Crowcroft, L. Vicisano
{j.crowcroft,l.vicisano}@cs.ucl.ac.uk
Department of Computer Science
University College London
Gower Street
London WC1E 6BT
UK

Zheng Wang
zhwang@dnrc.bell-labs.com
Bell Labs Lucent Tech.
101 Crawfords Corner Road
Holmdel NJ
USA

Atanu Ghosh
atanu@socs.uts.EDU.AU
School of Computing Sciences
University of Technology
Sydney
PO Box 123 , Broadway
NSW 2007
Australia

Michael Fuchs
Michael.Fuchs@telematik.informatik.uni-karlsruhe.de
Institute of Telematics
University Karlsruhe
Germany

Christophe Diot, Thierry Turletti
{cdiot,turletti}@sophia.inria.fr
INRIA Sophia Antipolis
2004 route des Lucioles
BP 93, 06902 Sophia Antipolis
France










Crowcroft and al.                                       [Page 21]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


References

[Clark90]
     D. Clark, D. Tennenhouse, Architectural Considerations for a New
     Generation of Protocols, Proceedings of ACM SIGCOMM '90, Sept.
     1990, pp. 201-208.

[Diot97]
     C. Diot, W. Dabbous, and J. Crowcroft, Multipoint Communication:
     A Survey of Protocols, Functions, and Mechanisms, IEEE/JSAC, Vol.
     15, No. 3, pp. 277-290, April 1997.

[SRM]
     S. Floyd, V. Jacobson, S. McCanne, C.G. Liu, and L. Zhang, A
     Reliable Multicast Framework for Light-weight Session and
     Application Level framing, IEEE/ACM Transactions on Networking,
     Dec. 1997, Vol. 5, No 6, pp. 784-803.

[Fuchs98]
     M. Fuchs, C. Diot, T. Turletti, and M. Hofmann, A Framework for
     reliable Multicast in the Internet, INRIA Research report No
     3363, Feb. 1998. See also the RMFP Home page at URL
     ``www.inria.fr/rodeo/rmfp/''.

[Hofmann97]
     M. Hofmann, Enabling group communication in global network,
     Proceedings of Global Networking '97, Calgary, Canada, June 1997.

[Huitema96]
     C. Huitema, The case for packet level FEC, Proceedings of IFIP
     5th International Workshop on Protocols for High Speed Networks
     (PfHSN'96)}. INRIA, Sophia Antipolis, France, Oct.  1996.

[Levine98]
     B.N. Levine, and J.J. Garcia-Luna-Aceves, A Comparison of
     Reliable Multicast Protocols, to appear in ACM Multimedia Systems
     Journal, August 1998.

[Nonnenmacher97]
     J. Nonnenmacher, E. Biersack, and D. Towsley, Parity-Based Loss
     recovery for Reliable Multicast Transmission, Proceedings of ACM
     SIGCOMM '97, Sept. 1997.

[Pingali94]
     S. Pingali, D. Towsley, and J. Kurose.  A Comparison of Sender-




Crowcroft and al.                                       [Page 22]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


     Initiated and Receiver-Initiated Reliable Multicast Protocols,
     Proceedings of SIGMETRICS'94, 1994.

[PGM]
     T. Speakman, S. Farinacci, S. Lin, and A. Tweedly, Pretty Good
     Multicast (PGM) Transport Protocol Specification, Internet Draft,
     draft-speakman-pgm-spec-00.txt, January 1998.

[Raman97]
     S. Raman, and S.R. McCanne, General Data Naming and scalable
     State Announcements for Reliable Multicast, Technical report,
     Computer Science Division (EECS), University of California, June
     1997.

[Rizzo97]
     L. Rizzo, On the feasibility of software FEC, Technical report,
     Universita di Pisa, January 1997.

[RMTP]
     J.C. Lin, and S. Paul, RMTP: A Reliable Multicast Transport
     Protocol, Proceedings of IEEE INFOCOM '96, pp. 1414-1424.

[RMDP]
     L. Rizzo, and L. Vicisano, A Reliable Multicast data Distribution
     Protocol based on software FEC techniques, Proceedings of the 4th
     IEEE Workshop on the Architecture and Implementation of High
     Performance Communication Systems (HPCS'97), Sani Beach,
     Chalkidiki, Greece June 23-25, 1997.

[Schulzrinne95]
     H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, RTP: A
     Transport Protocol for Real-Time Applications, RFC 1889, November
     1995.

[TIBnet]
     TIBCO, TIBNnet White Paper,
     "http://www.tibco.com/products/tibwhite.html"

[Vicisano98]
     L. Vicisano, l. Rizzo, and J. Crowcroft, TCP-like congestion
     control for layered multicast data transfer, to appear in
     Infocom'98.






Crowcroft and al.                                       [Page 23]


INTERNET-DRAFT       draft-crowcroft-rmfp-02.txt    March, 1998


Table of Contents


 Status of this Memo ............................................    1
1 Introduction ..................................................    1
2 Design Philosophy .............................................    2
2.1 Error Control ...............................................    2
2.1.1 The Automatic Repeat Request (ARQ) mechanism ..............    3
2.1.2 Forward Error Control .....................................    5
2.1.3 ALF and loss recovery .....................................    6
2.2 Hierarchical Naming with Objects ............................    6
2.3 Late-joining Receivers ......................................    8
2.4 Automatic Profile Configuration .............................   10
2.5 External Modules ............................................   11
3 The RMFP Specification ........................................   11
3.1 General Aspects .............................................   12
3.1.1 Network environment .......................................   12
3.1.2 System environment ........................................   12
3.2 RMFP ADU Format .............................................   13
3.3 RMFP Control Packet Format ..................................   15
3.3.1 Sender Report packet ......................................   15
3.3.2 Receiver Report packet ....................................   18
3.4 RMFP Session Packet Format ..................................   19
 Addresses of Authors ...........................................   21
 References .....................................................   22
























Crowcroft and al.                                       [Page 24]