Internet DRAFT - draft-crowcroft-rmfp

draft-crowcroft-rmfp



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]