The Reliable Multicast Design Space for Bulk Data Transfer
The options for reliable multicast, and how an application's needs narrow them down
Handley, M., Floyd, S., Whetten, B., Kermode, R., Vicisano, L., and M. Luby, "The Reliable Multicast Design Space for Bulk Data Transfer", RFC 2887, DOI 10.17487/RFC2887, August 2000, <https://www.rfc-editor.org/info/rfc2887>.
@misc{rfc2887,
series = {Request for Comments},
number = 2887,
howpublished = {RFC 2887},
publisher = {RFC Editor},
doi = {10.17487/RFC2887},
url = {https://www.rfc-editor.org/info/rfc2887},
author = {M. Handley and S. Floyd and B. Whetten and R. Kermode and L. Vicisano and M. Luby},
title = {{The Reliable Multicast Design Space for Bulk Data Transfer}},
pagetotal = 22,
year = 2000,
month = aug,
} RFC text
Contents
Network Working Group M. Handley
Request for Comments: 2887 S. Floyd
Category: Informational ACIRI
B. Whetten
Talarian
R. Kermode
Motorola
L. Vicisano
Cisco
M. Luby
Digital Fountain, Inc.
August 2000
The Reliable Multicast Design Space for Bulk Data Transfer
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract
The design space for reliable multicast is rich, with many possible
solutions having been devised. However, application requirements
serve to constrain this design space to a relatively small solution
space. This document provides an overview of the design space and
the ways in which application constraints affect possible solutions.
1. Introduction
The term "general purpose reliable multicast protocol" is something
of an oxymoron. Different applications have different requirements
of a reliable multicast protocol, and these requirements constrain
the design space in ways that two applications with differing
requirements often cannot share a single solution. There are however
many successful reliable multicast protocol designs that serve more
special purpose requirements well.
In this document we attempt to review the design space for reliable
multicast protocols intended for bulk data transfer. The term bulk
data transfer should be taken as having broad meaning - the main
limitations are that the data stream is continuous and long lived -
constraints necessary for the forms of congestion control we
currently understand. The purpose of this review is to gather
together an overview of the field and to make explicit the
constraints imposed by particular mechanisms. The aim is to provide
guidance to the standardization process for protocols and protocol
building blocks. In doing this, we cluster potential solutions into
a number of loose categories - real protocols may be composed of
mechanisms from more than one of these clusters.
The main constraint on solutions is imposed by the need to scale to
large receiver sets. For small receiver sets the design space is
much less restricted.
2. Application Constraints
Application requirements for reliable multicast (RM) are as broad and
varied as the applications themselves. However, there are a set of
requirements that significantly affect the design of an RM protocol.
A brief list includes:
o Does the application need to know that everyone received the data?
o Does the application need to constrain differences between
receivers?
o Does the application need to scale to large numbers of receivers?
o Does the application need to be totally reliable?
o Does the application need ordered data?
o Does the application need to provide low-delay delivery?
o Does the application need to provide time-bounded delivery?
o Does the application need many interacting senders?
o Is the application data flow intermittent?
o Does the application need to work in the public Internet?
o Does the application need to work without a return path (e.g.
satellite)?
o Does the application need to provide secure delivery?
In the context of standardizing bulk data transfer protocols, we can
rule out applications with multiple interacting senders and
intermittent data flows. It is not that these applications are
unimportant, but that we do not yet have effective congestion control
for such applications.
2.1. Did everyone receive the data?
In many applications a logically defined unit or units of data is to
be delivered to multiple clients, e.g., a file or a set of files, a
software package, a stock quote or package of stock quotes, an event
notification, a set of slides, a frame or block from a video. An
application data unit (ADU) is defined to be a logically separable
unit of data that is useful to the application. In some cases, an
application data unit may be short enough to fit into a single packet
(e.g., an event notification or a stock quote), whereas in other
cases an application data unit may be much longer than a packet
(e.g., a software package).
A protocol may optionally provide delivery confirmation to ensure
reliable delivery, i.e., a mechanism for receivers to inform the
sender when data has been delivered. There are two types of
confirmation, at the application data unit level and at the packet
level. Application data unit confirmation is useful at the
application level, e.g., to inform the application about receiver
progress and to decide when to stop sending packets about a
particular application data unit. Packet confirmation is useful at
the transport level, e.g., to inform the transport level when it can
release buffer space being used for storing packets for which
delivery has been confirmed.
Some applications have a strong requirement for confirmation that all
the receivers got an ADU, or if not, to be informed of which specific
receivers failed to receive the entire ADU. Examples include
applications where receivers pay for data, and reliable file-system
replication. Other applications do not have such a requirement. An
example is the distribution of free software.
If the application does need to know that every receiver got the ADU,
then a positive acknowledgment must be received from every receiver,
although it may be possible to aggregate these acknowledgments. If
the application needs to know precisely which receivers failed to get
the ADU, additional constraints are placed on acknowledgment
aggregation.
It should be noted that different mechanisms can be used for ADU-
level confirmation and packet-level confirmation in the same
application. For example, an ADU-level confirmation mechanism using
positive acknowledgments may sit on top of a packet-level NACK or
FEC-based transport. Typically this only makes sense when ADUs are
significantly larger than a single packet.
2.2. Constraining differences
Some applications need to constrain differences between receivers so
that the data reception characteristics for all receivers falls
within some range. An example is a stock price feed, where it is
unacceptable for a receiver to suffer delivery that is delayed
significantly more than any other receiver.
This requirement is difficult to satisfy without harming performance.
Typically solutions involve not sending more than a limited amount of
new data until positive acknowledgments have been received from all
the receivers. Such a solution does not cope with network and end-
system failures well.
2.3. Receiver Set Scaling
There are many applications for RM that do not need to scale to large
numbers of receivers. For such applications, a range of solutions
may be available that are not available for applications where
scaling to large receiver sets is a requirement.
A protocol must achieve good throughput of application data units to
receivers. This means that most data that is delivered to receivers
is useful in recovering the application data unit that they are
trying to receive. A protocol must also provide good congestion
control to fairly share the available network resources between all
applications. Receiver set scaling is one of the most important
constraints in meeting these requirements, because it strictly limits
the mechanisms that can be used to achieve these requirements to
those that will efficiently scale to a large receiver population.
Acknowledgement packets have been employed by many systems to achieve
these goals, but it is important to understand the strength and
limitations of different ways of using such packets.
In a very small system, it may be acceptable to have the receivers
acknowledge every packet. This approach provides the sender with the
maximum amount of information about reception conditions at all the
receivers, information that can be used both to achieve good
throughput and to achieve congestion control.
For larger systems, such "flat ACK" schemes cause acknowledge
implosions at the sender. Attempts have been made to reduce this
problem by sending aggregate ACKs infrequently [RMWT98, BC94], but it
is very difficult to incorporate effective congestion control into
such protocols because of the spareceness of feedback.
Using negative acknowledgments (NACKs) instead of ACKs reduces this
problem to one of NACK implosion (only from the receivers missing the
packets), and because the sender really only needs to know that at
least one receiver is missing data in order to achieve good
throughput, various NACK suppression mechanisms can be applied.
An alternative to NACKs is ACK aggregation, which can be done by
arranging the receivers into a logical tree, so that each leaf sends
ACKs to its parent which aggregates them, and passes them on up the
tree. Tree-based protocols scale well, but tree formation can be
problematic.
Other ACK topologies such as rings are also possible, but are often
more difficult to form and maintain than trees are. An alternative
strategy is to add mechanisms to routers so that they can help out in
achieving good throughput or in reducing the cost of achieving good
throughput.
All these solutions improve receiver set scaling, but they all have
limits of one form or another. One class of solutions scales to an
infinite number of receivers by having no feedback channel whatsoever
in order to achieve good throughput. These open-loop solutions take
the initial data and encode it using an FEC-style mechanism. This
encoded data is transmitted in a continuous stream. Receivers then
join the session and receive packets until they have sufficient
packets to decode the original data, at which point they leave the
session.
Thus, it is clear that the intended scale of the session constrains
the possible solutions. All solutions will work for very small
sessions, but as the intended receive set increases, the range of
possible solutions that can be deployed safely decreases.
It should also be noted that hybrids of these mechanisms are
possible, and that using one mechanism at the packet-level and a
different (typically higher overhead) solution at the ADU level may
also scale reasonably if the ADUs are large compared to packets.
2.4. Total vs Semi-reliable
Many applications require delivery of application data units to be
totally reliable; if any of the application data unit is missing,
none of the received portion of the application data unit is useful.
File transfer applications are a good example of applications
requiring total reliability.
However, some applications do not need total reliability. An example
is audio broadcasting, where missing packets reduce the quality of
the received audio but do not render it unusable. Such applications
can sometimes get by without any additional reliability over native
IP reliability, but often having a semi-reliable multicast protocol
is desirable.
2.5. Time-bounded Delivery
Many applications just require data to be delivered to the receivers
as fast as possible. They have no absolute deadline for delivery.
However, some applications have hard delivery constraints - if the
data does not arrive at the receiver by a certain time, there is no
point in delivering it at all. Such time-boundedness may be as a
result of real-time constraints such as with audio or video
streaming, or as the result of new data superseding old data. In
both cases, the requirement is for the application to have a greater
degree of control over precisely what the application sends at which
time than might be required with applications such as file transfer.
Time-bounded delivery usually also implies a semi-reliable protocol,
but the converse does not necessarily hold.
3. Network Constraints
The properties of the network in which the application is being
deployed may themselves constrain the reliable multicast design
space.
3.1. Internet vs Intranet
In principle the Internet and intranets are the same. In practice
however, the fact that an intranet is under one administration might
allow for solutions to be configured that can not easily be done in
the public Internet. Thus, if the data is of very high value, it
might be appropriate to enhance the routers to provide assistance to
a reliable multicast transport protocol. In the public Internet, it
is less likely that the additional expense required to support this
state in the routers would be acceptable.
3.2. Return Path
In principle, when feedback is required from receivers, this feedback
can be multicast or unicast. Multicast feedback has advantages,
especially in NACK-based protocols where it is valuable for NACK
suppression. However, it is not clear at this time whether all ISPs
will allow all members of a session to send to that session. If
multicast feedback is not allowed, then unicast feedback can almost
always be substituted, although often at the expense of additional
messages and mechanisms.
Some networks may not allow any form of feedback however. The
primary example of this occurs with satellite broadcasts where the
back channel may be very narrow or even non-existent. For such
networks the solution space is very constrained - only FEC-based
encodings have any real chance of working. If the receivers are
direct satellite receivers, then no congestion control is needed, but
it is dangerous to make such assumptions because it is possible for a
satellite hop to feed downstream networks. Thus, congestion control
still needs to be considered with solutions that do not have a return
path.
3.3. Network Assistance
A reliable multicast protocol must involve mechanisms running in end
hosts, and must involve routers forwarding multicast packets.
However under some circumstances, it is possible to rely on some
additional degree of assistance from network elements. Broadly
speaking we can cluster RM protocols into four classes depending on
the degree of support received from other network elements.
No Additional Support
The routers merely forward packets, and only the sender and
receivers have any reliable multicast protocol state.
Layered Approaches
Data is split across multiple multicast groups. Receivers join
appropriate groups to receive only the traffic they require. This
may in some cases require fast join or leave functionality from
the routers, and may require more forwarding state in the routers.
Server-based Approaches
Additional nodes are used to assist with data delivery or feedback
aggregation. These additional nodes might not be normal senders
or receivers, and may be present on the distribution or feedback
tree only to provide assistance to the reliable multicast
protocol. They would not otherwise receive the multicast traffic.
Router-based Approaches
With router-based approaches, routers on the normal data
distribution tree from the sender to the receivers assist in the
delivery of data or feedback aggregation or suppression. As
routers can directly influence multicast routing, they have more
control over which traffic goes to which group members than
server-based approaches. However routers do not normally have a
large amount of spare memory or processing power, which restricts
how much functionality can be placed in the routers. In addition,
router code is normally more difficult to upgrade than application
code, so router-based approaches need to be very general as they
are more difficult to deploy and to change.
4. Good Throughput Mechanisms
Two main concerns that a RM protocol must address are congestion
control and good throughput. Packet loss plays a major role with
respect to both concerns. The primary symptom of congestion in many
networks is packet loss. The primary obstacle that must be overcome
to achieve good throughput is packet loss. Thus, measuring and
reacting to packet loss is crucial to address both concerns. RM
solutions that address these concerns can be roughly categorized as
using one or more of the following techniques:
o Data packet acknowledgment.
o Negative acknowledgment of missing data packets.
o Redundancy allowing not all packets to be received.
These techniques themselves can be usefully subdivided, so that we
can examine the parts of the requirement space in which each
mechanism can be deployed. In this section, we focus on using these
mechanisms for achieving good throughput, and in the next section we
focus on using these mechanisms for congestion control.
4.1. ACK-based Mechanisms
The simplest ACK-based mechanism involves every receiver sending an
ACK packet for every data packet it receives and resending packets
that are lost by any receiver. Such mechanisms are limited to very
small receiver groups by the implosion of ACKs received at the
sender, and for this reason they are impractical for most
applications.
Putting multiple ACKs into a single data packet [RMWT98] reduces the
implosion problem by a constant amount, allowing slightly larger
receiver groups. However a limit is soon reached whereby feedback to
the sender is too infrequent for sender-based congestion control
mechanisms to work reliably.
Arranging the receivers into a ring [WKM94] whereby an "ACK-token" is
passed around the ring prevents the implosion problem for data.
However ring creation and maintenance may itself be problematic.
Also if ring creation does not take into account network topology
(something which is difficult to achieve in practice), then the
number of ACK packets crossing the network backbone for each data
packet sent may increase O(n) with the number of receivers.
4.1.1. Tree-based ACK Mechanisms
Arranging the receivers into a tree [MWB+98, KCW98] whereby receivers
generate ACKs to a parent node, which aggregates those ACKs to its
parent in turn, is both more robust and more easily configured than a
ring. The ACK-tree is typically only used for ACK-aggregation - data
packets are multicast from the sender to the receivers as normal.
Trees are easier to construct than rings because more local
information can be used in their construction. Also they can be more
fault tolerant than rings because node failures only affect a subset
of receivers, each of which can easily and locally decide to by-pass
its parent and report directly to the node one level higher in the
tree. With good ACK-tree formation, tree-based ACK mechanisms have
the potential to be one of the most scalable RM solutions.
To be simple to deploy, tree-based protocols must be self-organizing
- the receivers must form the tree themselves using local information
in a scalable manner. Such mechanisms are possible, but are not
trivial. The main scaling limitations of tree-based protocols
therefore come from the tree formation and maintenance mechanisms
rather than from the use of ACKs. Without such a scalable and
automatic tree-formation mechanism, tree-based protocols must rely on
manual configuration, which significantly limits their applicability
(often to intranets) and (due to the complexity of configuration)
their scalability.
Orthogonal to the issue of tree formation is the issue of subtree
retransmission. With appropriate router mechanisms, or the use of
multiple multicast groups, it is possible to allow the intermediate
tree nodes to retransmit missing data to the nodes below them in the
tree rather than relying on the original sender to retransmit the
data. This relies on there being a good correlation at the point of
the intermediate node between the ACK tree and the actual data tree,
as well as there being a mechanism to constrain the retransmission to
the subtree. A good automatic tree formation mechanism combined with
the use of administrative scoped multicast groups might provide such
a solution. Without such tree formation mechanisms, subtree
retransmission is difficult to deploy in large groups in the public
internet. This could also be solved by the use of transport-
level router mechanisms to assist or perform retransmission, although
existing router mechanisms [FLST98] support NACK-based rather than
ACK-based protocols.
Another important issue is the nature of the aggregation performed at
interior nodes on the ACK-tree. Such nodes could:
1. aggregate ACKs by sending a single ACK when all their children
have ACKed,
2. aggregate ACKs by listing all the children that have ACKed,
3. send an aggregated ACK with a NACK-like exception list.
For data packets, 1. is clearly more scalable, and should be
preferred. However if the sender needs to know exactly which
receivers received the data, 2. and 3. provide this information.
Fortunately, there is usually no need to do this on a per-packet
basis, but rather on a per-ADU basis. Doing 1. on a per packet
basis, and 3. on a per ADU basis is the most scalable solution for
applications that need this information, and suffers virtually no
disadvantage compared to the other solutions used on a per-packet
basis.
4.2. NACK-based mechanisms
Instead of sending an ACK for every data packet received, receivers
can send a negative acknowledgment (NACK) for every data packet they
discover they did not receive. This has a number of advantages over
ACK-based mechanisms:
o The sender no longer needs to know exactly how many receivers
there are. This removes the topology-building phase needed for
ring- or tree-style ACK-based algorithms.
o Fault-tolerance is made somewhat simpler by making receivers
responsible for reliability.
o Sender state can be significantly reduced because the sender does
not need to keep track of the receivers state.
o Only a single NACK is needed from any receiver to indicate a
packet that is missing by any number of receivers. Thus NACK
suppression is possible.
The disadvantages are that it is more difficult for the sender to
know that it can free transmission buffers, and that additional
session level mechanisms are needed if the sender really needs to
know if a particular receiver actually received all the data.
However for many applications, neither of these is an issue.
4.2.1. NACK Suppression
The key differences between NACK-based protocols is in how NACK-
suppression is performed. The goal is for only one NACK to reach the
sender (or a node that can resend the missing data) as soon as
possible after the loss is first noticed, and for only one copy of
the missing data to be received by those nodes needing
retransmission.
Different mechanisms come close to satisfying these goals in
different ways.
o SRM [FJM95] uses random timers weighted by the round trip time
between the sender and each node missing the data. This is
effective, but requires computing the RTT to each receiver before
suppression works properly.
o NTE [HC97] uses a sender-triggered mechanism based on random keys
and sliding masks. This does not require random timers, and works
for very large sessions, but makes it difficult to provide the
constant low-level stream of feedback needed to perform congestion
control.
o AAP [Ha99] uses exponentially distributed random timers and is
effective for large sessions without needing to compute the RTT to
each receiver.
o PGM [FLST98] and LMS [PPV98] use additional mechanisms in routers
to suppress duplicate NACKs. In the case of PGM, router
assistance suppliments SRM-stype random timers and localizes the
suppression so that the whole group does not need suppressing.
The most general of these mechanisms is probably exponentially
weighted random timers. Although SRM style timers can reduce
feedback delay, they are harder to use correctly in situations where
all the RTTs are not known, or where the number of respondees is
unknown. In contrast, exponentially weighted random timers work well
across a large range of session sizes with good worst case delay
characteristics.
Either form of random timer based mechanism can be supplemented by
router-support where it is available. Sender triggered NACK
mechanisms (e.g. [HC97]) are more difficult to integrate with
router-based support mechanisms.
4.3. Replication
Some RM protocols can be designed so as to not need explicit
reliability mechanisms except in comparatively rare cases. An
example is in a multicast game, where the position of a moving object
is continuously multicast. This positional stream does not require
additional reliability because a new position superseding the old one
will be sent before any retransmission could take place. However,
when the moving object interacts with other objects or stops moving,
then an explicit reliability mechanism is required to reliably send
the interaction information or last position.
It is not just games that can be built in this manner - the NTE
shared text editor[HC97] uses just such a mechanism with changes to a
line of text. For every change the whole line is sent, and so long
as the user keeps typing no explicit reliability mechanism is needed.
The major advantage of replication is that it is not susceptible to
spatially uncorrelated packet loss. With a traditional ACK or NACK
based protocol, the probability of any particular packet being
received by all the receivers in a large group can be very low. This
leads to high retransmission rates. In contrast, replicated
streams do not suffer as the size of the receiver group increases -
different receivers lose different packets, but this does not
increase network traffic.
4.4. Packet-level Forward Error Correction
Forward Error Correction (FEC) is a well known technique for
protecting data against corruption. For reliable multicast it is
most useful in the form of erasure codes.
The simplest form of packet-level FEC is to take a group of packets
that is to be sent, and to XOR the packets together to form a
newpacket which is also sent. If there were three original packets
plus the XOR packet sent, then if a receiver is missing any one of
the original data packets, but receives the XOR packet, then it can
reproduce the missing original packet.
More general erasure codes exist [BKKKLZ95], [Ri97], [LMSSS97] that
allow the generation of n encoding packets from k original data
packets. In such cases, so long as at least k of the n encoding
packets are received, then the k original data packets can be
reproduced.
To apply FEC the sender groups data packets into rounds, and encoding
packets are produced based on all the data packets in a round. A
round may consist of all data packets in an entire application data
unit in some cases, whereas in other cases it may consist of a group
of data packets that make up only a small portion of an application
data unit.
Using erasure codes to repair packet loss is a significant
improvement over simple retransmission because the dependency on
which packets have been lost is removed. Thus, the amount of repair
traffic required to repair spatially uncorrelated packet loss is
considerably lessened.
We can divide packet-level FEC schemes into two categories: proactive
FEC and reactive FEC. The difference between the two is that for
proactive FEC the sender decides a priori how many encoding packets
to send for each round of data packets, whereas for reactive FEC the
sender initially transmits only the original data packets for each
round. Then, the sender uses feedback from the receivers to compute
how many packets were lost by the receiver that experienced the most
loss in each round, and then only that number of additional encoding
packets are sent for that round. These encoding packets will then
also serve to repair loss at the other receivers that are missing
fewer packets. The receivers report via ACKs or NACKs how many
packets are missing from each round. With NACKs, only the receiver
missing the most packets need send a NACK for this round, so this is
used to weight the random timers in the NACK calculation.
Proactive and reactive FEC can be combined, e.g., a certain amount of
proactive FEC can be sent for each round and if there are receivers
that experience more loss than can be overcome by this for some
rounds then they can request and receive additional encoding packets
for these rounds.
FEC is very effective at reducing the repair traffic for packet loss.
However, it requires that the data to be sent to be grouped into
rounds, which can add to end-to-end latency. For bulk-data
applications this is typically not a problem, but this may be an
issue for interactive applications where replication may be a better
solution.
4.5. Layered FEC
An alternative use of packet level FEC is possible when data is
spread across several multicast groups [RVC98], [BLMR98]. In such
cases, the original k data packets are used to generate n encoding
packets, where n is much larger than k. The n encoded packets are
then striped across multiple multicast groups. When a receiver
wishes to receive the original data it joins one or more of the
multicast groups, and receives the encoding packets. Once it has
received k different encoding packets, the receiver can then leave
all the multicast groups and reconstruct the original data.
The primary importance of such a layering is that it allows different
receivers to be able to receive the traffic at different rates
according to the available capacity. Such schemes do not require any
form of feedback from the receivers to the sender to ensure good
throughput, and therefore the need for good throughput does not
constrain the size of the receiver set. However, to perform adequate
network congestion control using receiver joins and leaves in this
manner may require coordination between members that are behind the
same congested link from the sender. As described in the next
section, [RVC98] suggests such a layered congestion control scheme.
5. Congestion Control Mechanisms
The basic delivery model of the Internet is best-effort service. No
guarantees are given as to throughput, delay or packet loss. End-
systems are expected to be adaptive, and to reduce their transmission
rate to a level appropriate for the congestion state of the network.
Although increasingly the Internet will start to support reserved
bandwidth and differentiated service classes for specialist
applications, unless an end-system knows explicitly that it has
reserved bandwidth, it must still perform congestion control.
Broadly speaking, there are five classes of single-sender multicast
congestion control solution:
o Sender-controlled, one group.
A single multicast group is used for data distribution. Feedback
from the group members is used to control the rate of this group.
The goal is to transmit at a rate dictated by the slowest
receiver.
o Sender-controlled, multiple groups.
One initial multicast group is adaptively subdivided into multiple
subgroups with subdivisions centered on congestion points in the
network. Application-level relays buffer data from a group nearer
the original sender, and retransmit it at a slower rate into a
group further from the original sender. In this way, different
receivers can receiver the data at different rates. Sender-based
congestion control takes place between the members of a subgroup
and their relay.
o Receiver-controlled, one group.
A single multicast group is used for data distribution. The
receivers determine if the sender is transmitting too rapidly for
the current congestion state of the network, and they leave the
group if this is the case.
o Receiver-controlled, layered organization.
A layered approach for how to combine this scheme with a
congestion control protocol that requires no receiver feedback is
described in [RVC98]. The sender stripes data across multiple
multicast groups simultaneously. Receivers join and leave these
layered groups depending on their measurements of the congestion
state of the network, so that the amount of data being received is
always appropriate. However, this scheme relies on receivers to
join and leave the different multicast groups in a coordinated
fashion behind a bottleneck link, and it has not yet been
completely confirmed that this approach will scale in practice to
the Internet. As a result, more work on this congestion control
mechanism would be beneficial.
o Router-based congestion control.
It is possible to add additional mechanisms to multicast routers
to assist in multicast congestion control. Such mechanisms could
include:
o Conditional joins (a multicast join that specifies a loss rate
above which it is acceptable for the router to reject the
join).
o Router filtering of traffic that exceeds a reasonable rate.
This may include mechanisms for filtering traffic at different
points in the network at different rates depending on local
congestion conditions [LVS99].
o Fair queuing schemes combined with end-to-end adaptation.
Router-based schemes generally require more state in network
routers than has traditionally been acceptable for backbone
routers. Thus, in the near-term, such schemes are only likely to
be applicable for intranet solutions.
For reliable multicast protocols, it is important to consider
congestion control at the same time as reliability is being
considered. The same mechanisms that are used to provide reliability
will sometimes be used to provide congestion control.
In the case of receiver-based congestion control, open-loop delivery
using FEC is the likely choice for achieving good throughput for
bulk- data transfer. This is because open-loop delivery requires no
feedback from receivers, and thus it is a perfect match with a
receiver-based congestion-control mechanism that operates without
feedback from receivers.
6. Security Considerations
Generally speaking, security considerations have relatively little
effect on constraining the design space for reliable multicast
protocols. The primary issues constraining the design space are all
related to receiver-set scaling. For authentication of the source
and of data integrity, receiver-set scaling is not a significant
issue. However, for data encryption, key distribution and
particularly re-keying may be significantly affected by receiver-set
scaling. Tree and graph based re-keying solutions[WHA98,WGL97] would
appear to be appropriate solutions to these problems. It is not
clear however that such re-keying solutions need to directly affect
the design of the data distribution part of a reliable multicast
protocol.
The primary question to consider for the security of reliable
multicast protocols is the role of third-parties. If nodes other
than the original source of the data are allowed to send or resend
data packets, then the security model for the protocol must take this
into account. In particular, it must be clear whether such third
parties are trusted or untrusted. A requirement for trusted third
parties can make protocols difficult to deploy on the Internet.
Untrusted third parties (such as receivers that retransmit the data)
may be used so long as the data authentication mechanisms take this
into account. Typically this means that the original sender
digitally signs and timestamps the data, and that the third parties
resend this signed timestamped payload unmodified.
Unlike unicast protocols, denial-of-service attacks on multicast
transport state are easy if the protocol design does not take such
attacks into account. This is because any receiver can join the
session, and can then produce feedback that influences the progress
of a session involving many other receivers. Hence protection
against denial-of-service attacks on reliable multicast protocols
must be carefully considered. A receiver that requests
retransmission of every packet, or that refuses to acknowledge
packets in an ACK-based protocol can potentially bring a reliable
multicast session to a standstill. Senders must have appropriate
policy to deal with such conditions, and if necessary, evict the
receiver from the group. A single receiver masquerading as a large
number of receivers may still be an issue under such circumstances
with protocols that support NACK-like functionality. Providing
unique "keys" to each NACKer when they first NACK using a unicast
response might potentially prevent such attacks.
Denial-of-service attacks caused by traffic flooding are however
somewhat easier to protect against than with unicast. Unwanted
senders can simply be pruned from the distribution tree using the
mechanisms implemented in IGMP v3[CDT99].
7. Conclusions
In this document we present an overview of the design space for
reliable multicast within the context of one-to-many bulk-data
transfer. Other flavors of multicast application are not considered
in this document, and hence the overview given should not be
considered inclusive of the design space for protocols that fall
outside the context of one-to-many bulk-data transfer. During the
course of this overview, we have reaffirmed the notion that the
process of reliable multicast protocol design is affected by a number
of factors that render the generation of a "one size fits all
solution" moot. These factors are then described to show how an
application's needs serve to constrain the set of available
techniques that may be used to create a reliable multicast protocol.
We examined a number of basic techniques and to show how well they
can meet the needs of certain types of applications.
This document is intended to provide guidance to the IETF community
regarding the standardization of reliable multicast protocols for
bulk-data transfer. Given the degree to which application
requirements constrain reliable multicast solutions, and the diverse
set of applications that need to be supported, it should be clear
that any standardization work should take great pains to be future-
proof. This would seem to imply not standardizing complete reliable
multicast transport protocols in one pass, but rather examining the
degree to which such protocols are separable into functional building
blocks, and standardizing these blocks separately to the maximum
degree that makes sense. Such an approach allows for protocol
evolution, and allows applications with new constraints to be
supported with maximal reuse of existing and tested mechanisms.
8. Acknowledgments
This document represents an overview of the reliable multicast design
space. The ideas presented are not those of the authors, but are
collected from the varied presentations and discussions in the IRTF
Reliable Multicast Research Group. Although they are too numerous to
list here, we thank everyone who has participated in these
discussions for their contributions.
9. Authors' Addresses
Mark Handley
ATT Center for Internet Research at ICSI,
International Computer Science Institute,
1947 Center Street, Suite 600,
Berkeley, CA 94704, USA
EMail: mjh@aciri.org
Sally Floyd
ATT Center for Internet Research at ICSI,
International Computer Science Institute,
1947 Center Street, Suite 600,
Berkeley, CA 94704, USA
EMail: floyd@aciri.org
Brian Whetten
Talarian Corporation,
333 Distel Circle,
Los Altos, CA 94022, USA
EMail: whetten@talarian.com
Roger Kermode
Motorola Australian Research Centre
Level 3, 12 Lord St,
Botany NSW 2019,
Australia
EMail: Roger.Kermode@motorola.com
Lorenzo Vicisano
Cisco Systems,
170 West Tasman Dr.
San Jose, CA 95134, USA
EMail: lorenzo@cisco.com
Michael Luby
Digital Fountain, Inc.
600 Alabama Street
San Francisco, CA 94110
EMail: luby@digitalfountain.com
10. References
[BC94] K. Birman, T. Clark. "Performance of the Isis Distributed
Computing Toolkit." Technical Report TR-94-1432, Dept. of
Computer Science, Cornell University.
[BKKKLZ95] J. Bloemer, M. Kalfane, M. Karpinski, R. Karp, M. Luby, D.
Zuckerman, "An XOR-based Erasure Resilient Coding Scheme",
ICSI Technical Report No. TR-95-048, August 1995.
[BLMR98] J. Byers, M. Luby, M. Mitzenmacher, A. Rege, "A Digital
Fountain Approach to Reliable Distribution of Bulk Data",
Proc ACM SIGCOMM 98.
[CDT99] Cain, B., Deering, S., and A. Thyagarajan, "Internet Group
Management Protocol, Version 3", Work in Progress.
[FLST98] Farinacci, D., Lin, S., Speakman, T. and A. Tweedly, "PGM
reliable transport protocol specification", Work in
Progress.
[FJM95] S. Floyd, V. Jacobson, S. McCanne, "A Reliable Multicast
Framework for Light-weight Sessions and Application Level
Framing", Proc ACM SIGCOMM 95, Aug 1995 pp. 342-356.
[Ha99] Handley, M., "Multicast address allocation protocol
(AAP)", Work in Progress.
[HC97] M. Handley and J. Crowcroft, "Network text editor (NTE) a
scalable shared text editor for MBone," ACM Computer
Communication Review, vol. 27, pp. 197-208, Oct. 1997. ACM
SIGCOMM'97, Sept. 1997.
[KCW98] Kadansky, M., Chiu, D. and J. Wesley, "Tree-based reliable
multicast (TRAM)", Work in Progress.
[LMSSS97] M. Luby, M. Mitzenmacher, A. Shokrollahi, D. Spielman, V.
Stemann, "Practical Loss-Resilient Codes", Proc ACM
Symposium on Theory of Computing, 1997.
[MWB+98] Montgomery, T., Whetten, B., Basavaiah, M., Paul, S.,
Rastogi, N., Conlan, J. and T. Yeh, "THE RMTP-II
PROTOCOL", Work in Progress.
[PPV98] C. Papadopoulos, G. Parulkar, and G. Varghese, "An error
control scheme for large-scale multicast applications," in
Proceedings of the Conference on Computer Communications
(IEEE Infocom), (San Francisco, California), p. 1188,
March/April 1998.
[Ri97] L. Rizzo, "Effective erasure codes for reliable computer
communication protocols," ACM Computer Communication
Review, vol. 27, pp. 24-36, Apr. 1997.
[RV97] L. Rizzo, L. Vicisano, "A Reliable Multicast data
Distribution Protocol based on software FEC techniques",
Proc. of The Fourth IEEE Workshop on the Architecture and
Implementation of High Performance Communication Systems
(HPCS'97), Sani Beach, Chalkidiki, Greece June 23-25,
1997.
[RVC98] L. Rizzo, L. Vicisano, J. Crowcroft, "The RLC multicast
congestion control algorithm", submitted to IEEE Network -
special issue multicast.
[RMWT98] Robertson, K., Miller, K., White, M. and A. Tweedly,
"StarBurst multicast file transfer protocol (MFTP)
specification", Work in Progress.
[WHA98] Wallner, D., Hardler, E. and R. Agee, "Key Management for
Multicast: Issues and Architectures", RFC 2627, June 1999.
[WKM94] Brian Whetten, Simon Kaplan, and Todd Montgomery, "A high
performance totally ordered multicast protocol," research
memorandum, Aug. 1994.
[WGL97] C.K. Wong, M. Gouda, S. Lam, "Secure Group Communications
Using Key Graphs," Technical Report TR 97-23, Department
of Computer Sciences, The University of Texas at Austin,
July 1997.
11. Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
ISO Plain Language
On this page
§1No One Reliable Multicast Protocol Fits All
The memo opens by calling the phrase general purpose reliable multicast protocol something of an oxymoron. Different applications have different requirements of a reliable multicast protocol, and those requirements cut the design space down in ways that two applications with different needs often cannot share a single solution. Many successful designs, though, serve more special purpose requirements well.
The review covers reliable multicast protocols intended for bulk data transfer, a term taken to have broad meaning: the main limitations are that the data stream is continuous and long-lived, and that the constraints necessary for the forms of congestion control we understand are present. The purpose is to gather an overview of the field and make explicit the constraints imposed by particular mechanisms, and to give guidance to the standardization process for protocols and protocol building blocks. Potential solutions are clustered into loose categories, and real protocols may be composed of mechanisms from more than one of them.
The main constraint on any solution is the need to scale to large receiver sets; for small receiver sets the design space is much less restricted. The conclusion repeats the point in a form aimed at standardizers: because application requirements constrain the solutions so tightly and the applications are so diverse, any standardization work should take great pains to be future-proof. That seems to imply not standardizing complete reliable multicast transport protocols in one pass, but rather examining the degree to which such protocols can be separated into functional building blocks and standardizing those blocks separately as far as that makes sense. That approach allows protocol evolution and lets applications with new constraints reuse existing, tested mechanisms.
There is no such thing as a reliable multicast protocol that suits everything. A stock price feed needs every receiver to see the same data at the same time; a file download needs every byte; a radio broadcast can lose a packet or two. RFC 2887 sorts the options and explains what each one costs, and asks standardizers to build the pieces rather than a single whole protocol.
§2What the Application Needs
The requirements an application brings are as broad as the applications themselves, but the memo lists a set that significantly affect the design of a protocol: whether the application needs to know that everyone received the data; whether it needs to constrain differences between receivers; whether it needs to scale to large numbers of receivers; whether it needs to be totally reliable; whether it needs ordered data; whether it needs low-delay delivery; whether it needs time-bounded delivery; whether it needs many interacting senders; whether the data flow is intermittent; whether it needs to work in the public Internet; whether it needs to work without a return path, as with satellite; and whether it needs secure delivery. For bulk data transfer standards, two of these are ruled out: applications with multiple interacting senders and intermittent data flows are set aside, not because they are unimportant but because there is not yet effective congestion control for them.
Several definitions follow. An application data unit is a logically separable unit of data that is useful to the application, and it may be short enough to fit in a single packet, such as an event notification or a stock quote, or much longer, such as a software package. A protocol may optionally provide delivery confirmation in two forms. Application data unit confirmation tells the application about receiver progress and when to stop sending packets about a particular unit; packet confirmation tells the transport layer when it can release buffer space. An application that needs to know that every receiver got the unit, or which receivers failed to get all of it, needs a positive acknowledgement from every receiver, although these may be aggregated, and needing to know precisely which receivers failed puts extra constraints on that aggregation. Different mechanisms can serve the two levels in the same application: an ADU-level confirmation using positive acknowledgements may sit on top of a packet-level NACK or FEC-based transport, which typically makes sense only when ADUs are much larger than a packet.
Three further requirements shape the design. Constraining differences between receivers, so that all receivers stay within some range, is hard to satisfy without harming performance; the usual solution is not to send more than a limited amount of new data until positive acknowledgements arrive from everyone, which copes badly with network and end-system failures. Receiver set scaling is the most important constraint, because a protocol must get good throughput of application data units and provide good congestion control, and scaling strictly limits the mechanisms available; the memo walks through flat acknowledgements, aggregate acknowledgements, NACKs, ACK trees and rings, and open-loop FEC encodings that scale to an infinite number of receivers because they use no feedback channel at all. Some applications need total reliability, since a missing part of an application data unit makes the received part useless, as with file transfer; others, such as audio broadcasting, can lose packets and still be usable, so a semi-reliable protocol is often enough. Time-bounded delivery applies where late data is worthless, as with real-time audio or video or where new data supersedes old; it usually implies a semi-reliable protocol, though the converse does not hold.
What the application needs decides everything else. Does it have to know that every receiver got the file? Does it mind if one receiver is a second behind the others? How many receivers are there? Is a lost packet fatal, or does the next one cover for it? Is late data worthless? The memo runs through these questions and shows how each one rules mechanisms in or out.
§3What the Network Allows
The network the application is deployed in constrains the design space too. In principle the Internet and an intranet are the same, but in practice an intranet is under one administration and may allow solutions that cannot easily be done in the public Internet. If the data is of very high value, it might be appropriate to enhance the routers to help a reliable multicast transport protocol; in the public Internet the extra expense of supporting that state in routers is less likely to be acceptable.
Feedback is the other constraint. Feedback from receivers can be multicast or unicast. Multicast feedback has advantages, especially in NACK-based protocols where it is valuable for NACK suppression, but it is not clear that all providers will let every member of a session send to that session; if multicast feedback is not allowed, unicast feedback can almost always be substituted, at the cost of extra messages and mechanisms. Some networks allow no feedback at all, the prime example being satellite broadcast where the back channel may be very narrow or non-existent; for those networks only FEC-based encodings have any real chance of working. If the receivers are direct satellite receivers no congestion control is needed, but it is dangerous to make that assumption, because a satellite hop may feed downstream networks, so congestion control still has to be considered in solutions without a return path.
Finally, the memo clusters protocols into four classes by how much help they get from other network elements. With no additional support the routers merely forward packets, and only the sender and receivers hold protocol state. In layered approaches the data is split across multiple multicast groups and receivers join the groups they need, which may require fast join and leave from the routers and more forwarding state there. In server-based approaches extra nodes help with delivery or aggregate feedback; they need not be senders or receivers and may exist only on the distribution or feedback tree. In router-based approaches the routers on the normal distribution tree help with delivery or with feedback aggregation and suppression; they have more control over which traffic reaches which members, but routers have little spare memory or processing power, and router code is harder to upgrade than application code, so such approaches must be very general.
Where the data travels matters too. Inside a network that one organisation runs, the operators can change the routers to help; on the public Internet that is much less likely. Feedback from receivers can be multicast or sent one to one, and some networks allow no feedback at all, as with satellite, where only the redundancy-coding approach has a chance. The memo sorts protocols by how much help they expect from the network: none, groups, extra servers or the routers themselves.
§4Mechanisms for Repairing Loss
Two concerns drive the design: congestion control and good throughput. Packet loss plays a major role in both, since the primary symptom of congestion in many networks is packet loss and the primary obstacle to good throughput is also packet loss, so measuring and reacting to loss is crucial. The memo groups the mechanisms into three families: data packet acknowledgment, negative acknowledgment of missing data packets, and redundancy that allows not all packets to be received.
The simplest ACK-based scheme has every receiver acknowledge every data packet and the sender resend what any receiver lost, which is limited to very small receiver groups by the implosion of acknowledgements at the sender. Putting several acknowledgements into one packet reduces the implosion by a constant amount and allows slightly larger groups, but soon the feedback becomes too infrequent for sender-based congestion control to work reliably. Arranging receivers in a ring, with an acknowledgement token passed around, prevents the implosion, but ring creation and maintenance may be problematic, and a ring that ignores network topology can make the number of acknowledgement packets crossing the backbone grow in proportion to the number of receivers.
Tree-based acknowledgement is described as more robust and more easily configured than a ring. Receivers send acknowledgements to a parent node, which aggregates them and passes them on up the tree, while data is still multicast from the sender as normal. Trees are easier to construct because more local information can be used, and they can be more fault tolerant because a node failure affects only a subset of receivers, each of which can locally decide to bypass its parent and report to the node one level higher. With good tree formation this is potentially one of the most scalable solutions. To be easy to deploy, tree-based protocols must be self-organising, and the scaling limits then come from tree formation and maintenance rather than from the acknowledgements themselves; without a scalable automatic mechanism, tree-based protocols need manual configuration, which limits them, often to intranets. Subtree retransmission is a separate issue: with the right router mechanisms or several multicast groups, intermediate tree nodes could retransmit missing data to the nodes below them instead of the original sender doing it, but that needs good correlation between the ACK tree and the real data tree and a way to constrain the retransmission to the subtree. Interior nodes can aggregate in three ways: sending one acknowledgement when all their children have acknowledged, listing the children that have acknowledged, or sending an aggregated acknowledgement with a NACK-like exception list. The first is the most scalable for data packets, while the second and third tell the sender exactly who received it; doing the first per packet and the third per application data unit is the most scalable combination for applications that need that detail.
NACK-based mechanisms send a negative acknowledgement only for packets a receiver discovers it did not receive, which has advantages: the sender no longer needs to know how many receivers there are, so no topology-building phase is needed for ring or tree schemes; fault tolerance is simpler because receivers are responsible for reliability; sender state shrinks because the sender does not track receiver state; and a single NACK can stand for a packet missing at any number of receivers, so NACK suppression is possible. The disadvantages are that the sender has a harder time knowing when it can free transmission buffers, and that extra session-level machinery is needed if the sender really must know whether a particular receiver received everything. The difference between NACK-based protocols lies mostly in how suppression is done. SRM uses random timers weighted by the round trip time to each node missing the data, which needs the round trip time computed before suppression works properly. NTE uses a sender-triggered mechanism based on random keys and sliding masks, needs no random timers and works for very large sessions, but makes it hard to provide the constant low-level feedback that congestion control needs. AAP uses exponentially distributed random timers and is effective for large sessions without computing round trip times. PGM and LMS add router mechanisms to suppress duplicate NACKs, with PGM supplementing SRM-style timers and localising the suppression. The memo judges exponentially weighted random timers the most general, because SRM-style timers are harder to use correctly when round trip times or the number of responders are unknown.
Two mechanisms avoid per-packet repair. Replication designs the stream so that no explicit reliability is needed except in rare cases: a multicast game can multicast the position of a moving object continuously, because a new position supersedes the old one before any retransmission could take place, but an explicit mechanism is needed when the object interacts with others or stops moving; the shared text editor works the same way by sending the whole changed line. The advantage is that replication is not susceptible to spatially uncorrelated packet loss, and the traffic does not grow as the receiver group grows. Forward error correction, in the form of erasure codes, is the other. The simplest form XORs a group of packets together to form a new packet that is also sent, so a receiver missing one original packet but holding the XOR packet can reproduce it; more general codes generate n encoding packets from k original data packets, and receiving any k of the n encoding packets reproduces the originals. The sender groups data into rounds, and a round may be an entire application data unit or a small part of one. Erasure codes beat simple retransmission because the dependency on which packets were lost is removed, so repair traffic for spatially uncorrelated loss falls considerably. Schemes divide into proactive, where the sender decides in advance how many encoding packets to send per round, and reactive, where the sender sends only the original data at first and then uses feedback to work out how many packets the worst-hit receiver lost, sending that many extra encoding packets, which then also repair the smaller losses elsewhere. FEC reduces repair traffic well but requires the data to be grouped into rounds, which can add end-to-end latency; for bulk data that is usually not a problem, but for interactive applications replication may be better.
Five ways of coping with a lost packet are compared. Every receiver can confirm every packet, but the replies flood the sender. Receivers can confirm to a parent that passes the confirmations up a tree, which scales but needs the tree built and kept. Receivers can instead report only the packets they missed, which is quieter but needs the repeats suppressed. A stream can repeat itself so that a new value replaces an old one. Or the sender can send extra coded packets from which a missing one can be rebuilt.
| Mechanism | How the loss is repaired | Main limit |
|---|---|---|
| Flat ACK | Every receiver acknowledges every packet and the sender resends what any receiver lost | Acknowledgement implosion at the sender, so only very small receiver groups |
| Tree-based ACK | Receivers acknowledge to a parent node, which aggregates and passes them up | Forming and maintaining the tree |
| NACK | A receiver sends a negative acknowledgement only for the packets it missed | The sender cannot easily tell when to free buffers, and suppression is needed |
| Replication | A newer version of the item supersedes the older one | Still needs explicit reliability when the data stops changing |
| Packet-level FEC | Encoding packets are sent alongside the data so a missing packet can be rebuilt | Data must be grouped into rounds, which adds latency |
- Sender
- Parent node Aggregates the acknowledgements of its children and passes them up.
- Parent node
- Leaf receiver Acknowledges to its parent only.
- Parent node
- Parent node Aggregates the acknowledgements of its children and passes them up.
§5Congestion Control Choices
The basic delivery model of the Internet is best-effort, with no guarantees of throughput, delay or loss, so end systems are expected to be adaptive and to reduce their transmission rate to match the congestion state of the network. Even where the Internet starts to support reserved bandwidth and differentiated service classes, an end system that has not explicitly reserved bandwidth must still perform congestion control.
The memo sets out five classes of single-sender multicast congestion control. In the sender-controlled, one group scheme a single multicast group carries the data and feedback from the group members controls the rate of that group, with the goal of transmitting at a rate dictated by the slowest receiver. Sender-controlled with multiple groups starts from one group that is adaptively subdivided into subgroups centred on congestion points; application-level relays buffer data from a group nearer the sender and retransmit it more slowly into a group further away, so different receivers receive the data at different rates, and the sender-based control happens between the members of a subgroup and their relay. In the receiver-controlled, one group scheme the receivers decide for themselves whether the sender is transmitting too fast for the current congestion state and leave the group if it is. Receiver-controlled with a layered organisation stripes data across several groups and has receivers join and leave those groups according to their own measurements, so that the amount of data received stays right; it relies on receivers behind the same bottleneck joining and leaving in a coordinated fashion, and the memo says it has not been completely confirmed that this will scale in practice. Router-based control adds mechanisms to multicast routers: conditional joins, where a join states a loss rate above which the router may refuse it; filtering of traffic that exceeds a reasonable rate, possibly at different rates in different places; and fair queuing combined with end-to-end adaptation. Router-based schemes need more state in backbone routers than has traditionally been acceptable, so in the near term they are likely to apply only to intranets.
For reliable multicast, congestion control has to be considered at the same time as reliability, and the same mechanisms are sometimes used for both. Where the control is receiver-based, open-loop delivery using FEC is the likely choice for good throughput in bulk transfer, because open-loop delivery needs no feedback and so matches a receiver-based scheme that works without feedback.
The Internet gives no guarantees, so the sender has to slow down when the network is busy. There are five ways to arrange that. The sender can watch the replies and pace itself, either in one group or in several groups split around busy points. The receivers can watch and leave the group when the data arrives too fast. Or the routers can help, by refusing a join that expects too much loss or by dropping traffic that arrives too quickly. Router help needs more memory in backbone routers, so it is mainly an intranet option.
- Sender-controlled, one groupFeedback from the group sets the rate, so the slowest receiver dictates the speed.
- Sender-controlled, multiple groupsThe group is split around congestion points and relays resend more slowly further out.
- Receiver-controlled, one groupReceivers leave the group when the sender is going too fast for the network.
- Receiver-controlled, layeredReceivers join and leave groups to match their own measurement of congestion.
- Router-basedRouters refuse joins with too high a loss rate, filter excess traffic, or queue fairly.
§6Security Considerations
Security has relatively little effect on the design space for reliable multicast protocols. The primary issues constraining the space are all related to receiver-set scaling. For authentication of the source and for data integrity, scaling is not a significant issue, but data encryption, key distribution and especially re-keying may be significantly affected by it; tree and graph based re-keying would appear to be appropriate solutions, though it is not clear that they need to affect the design of the data distribution part of the protocol.
The main question for security is the role of third parties. If nodes other than the original source are allowed to send or resend data packets, the security model has to take that into account, and in particular it must be clear whether such third parties are trusted or untrusted; a requirement for trusted third parties can make protocols hard to deploy on the Internet. Untrusted third parties, such as receivers that retransmit data, may be used so long as the authentication mechanisms account for it, which typically means the original sender digitally signs and timestamps the data and the third parties resend that signed, timestamped payload unmodified.
Denial of service attacks on multicast transport state are easy if the design does not account for them, because any receiver can join the session and then produce feedback that influences the progress of a session involving many other receivers. A receiver that asks for retransmission of every packet, or that refuses to acknowledge packets in an ACK-based protocol, can bring a session to a standstill, so senders need policy for such conditions and may have to evict the receiver from the group. A single receiver masquerading as a large number of receivers may still be an issue with protocols that support NACK-like functionality, and giving each NACKer a unique key when it first sends a NACK, with a unicast response, might prevent that. Flooding attacks are easier to protect against than with unicast, because unwanted senders can be pruned from the distribution tree using the mechanisms in IGMP version 3.
Security barely narrows the choices here; scaling does. Encrypting the data and, above all, changing the keys later are both harder when there are many receivers, so tree-shaped and graph-shaped key management are suggested. The bigger question is whether anyone other than the original sender may resend data, and if so whether they are trusted. And because any receiver can join and then send misleading feedback, a single receiver can stall the whole session unless the sender has a way to eject it.