rfc2102
Network Working Group R. Ramanathan
Request for Comments: 2102 BBN Systems and Technologies
Category: Informational February 1997
Multicast Support for Nimrod : Requirements and Solution Approaches
Status of this Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
Abstract
Nimrod does not specify a particular solution for multicasting.
Rather, Nimrod may use any of a number of emerging multicast
techniques. We identify the requirements that Nimrod has of a
solution for multicast support. We compare existing approaches for
multicasting within an internetwork and discuss their advantages and
disadvantages. Finally, as an example, we outline the mechanisms to
support multicast in Nimrod using the scheme currently being
developed within the IETF - namely, the Protocol Indpendent Multicast
(PIM) protocol.
Table of Contents
1 Introduction................................................. 2
2 Multicast vs Unicast......................................... 3
3 Goals and Requirements....................................... 4
4 Approaches................................................... 6
5 A Multicasting Scheme based on PIM........................... 10
5.1 Overview ................................................ 10
5.2 Joining and Leaving a Tree .............................. 12
5.2.1 An Example ........................................ 15
5.3 Establishing a Shared Tree .............................. 16
5.4 Switching to a Source-Rooted Shortest Path Tree.......... 18
5.5 Miscellaneous Issues..................................... 20
6 Security Considerations...................................... 21
7 Summary...................................................... 21
8 References................................................... 22
9 Acknowledgements............................................. 23
10 Author's Address............................................. 23
Ramanathan Informational [Page 1]
RFC 2102 Nimrod Multicast Support February 1997
1 Introduction
The nature of emerging applications such as videoconferencing, remote
classroom, etc. makes the support for multicasting essential for any
future routing architecture. Multicasting is performed by using a
multicast delivery tree whose leaves are the multicast destinations.
Nimrod does not propose a solution for the multicasting problem.
There are two chief reasons for this. First, multicasting is a non-
trivial problem whose requirements are still not well understood.
Second, a number of groups (for instance the IDMR working group of
the IETF) are studying the problem by itself and it is not our
intention to duplicate those efforts.
This attitude towards multicasting is consistent with Nimrod's
general philosophy of flexibility, adaptability and incremental
change.
While a multicasting solution per se is not part of the "core" Nimrod
architecture, Nimrod does require that the solution have certain
characteristics. It is the purpose of this document to discuss some
of these requirements and evaluate approaches towards meeting them.
This document is organized as follows. In section 2 we discuss why
multicasting is treated a little differently than unicast despite the
fact that the former is essentially a generalization of the latter.
Following that, in section 4 we discuss current approaches toward
multicasting . In section 5, we give an example of how Nimrod
multicasting may be done using PIM [DEF+94a]. For readers who do not
have the time to go through the entire document, a summary is given
at the end.
This document uses many terms and concepts from the Nimrod
Architecture document [CCS96] and some terms and concepts (in section
5) from the Nimrod Functionality document [RS96]. Much of the
discussion assumes that you have read at least the Nimrod
Architecture document [CCS96].
Ramanathan Informational [Page 2]
RFC 2102 Nimrod Multicast Support February 1997
2 Multicast vs Unicast
We begin by looking at the similarities and differences between
unicast routing and multicast routing. Both unicast and multicast
routing require two phases - route generation and packet forwarding.
In the case of unicast routing, Nimrod specifies modes of packet
forwarding; route generation itself is not specified but left to the
particular routing agent. For multicasting, Nimrod leaves both route
generation and packet forwarding mechanisms unspecified. To explain
why, we first point out three aspects that make multicasting quite
different from unicasting :
o Groups and group dynamism. In multicasting, the destinations are part
of a group, whose membership is dynamic. This brings up the following
issues :
- An association between the multicast group and the EIDs and
locators of the members comprising that group. This is especially
relevant in the case of sender initiated multicasting and policy
support.
- A mechanism to accommodate new group members in the delivery in
response to addition of members, and a mechanism to "prune" the
delivery in response to departures.
o State creation. Most solutions to multicasting can essentially be
viewed as creating state in routers for multicast packet forwarding.
Based on who creates the state, multicasting solutions differ. In
multicasting, we have several options for this - e.g., the sender, the
receivers or the intermediate routers.
o Route generation. Even more so than in unicast routing, one can choose
from a rich spectrum of heuristics with different tradeoffs between a
number of parameters (such as cost and delay, algorithmic time
complexity and optimality etc.). For instance, some heuristics produce
a low-cost tree with high end-to-end delay and some produce trees that
give the shortest path to each destination but with a higher cost.
Heuristics for multicasting are a significant research area today, and
we expect advances to result in sophisticated heuristics in the near
future.
Noting that there are various possible combinations of route
generation, group dynamism handling and state creation for a solution
and that each solution conceivably has applications for which it is
the most suitable, we do not specify one particular approach to
multicasting in Nimrod. Every implementation of Nimrod is free to
use its own multicasting technique, as long as it meets the goals and
requirements of Nimrod. However, for interoperability, it is
Ramanathan Informational [Page 3]
RFC 2102 Nimrod Multicast Support February 1997
necessary that certain things are agreed upon - for instance, the
structure of the forwarding information database that they create (we
discuss this in more detail in section 4).
Thus, we do not discuss the details of any multicast solution here,
only its requirements in the context of Nimrod. Specifically, we
structure the discussion in the remainder of this document on the
following two themes :
o What are the goals that we want to meet in providing multicasting in
Nimrod, and what specific requirements do these goals imply for the
multicast solution?
o What are some of the approaches to multicasting being discussed
currently, and how relevant are each of these approaches to Nimrod?
3 Goals and Requirements
The chief goals of Nimrod multicasting and their implications on
solution requirements are as follows:
1. Scalability. Nimrod multicasting must scale in terms of the size of
the internetwork, the number of groups supported and the number of
members per group. It must also support group dynamism efficiently.
This has the following implications for the solution:
o Routers not on the direct path to the multicast destinations should
not be involved in state management. In a network with a large
number of routers, a solution that does involve such routers is
unlikely to scale.
o It is likely that there will be a number of applications that have
a few members per group (e.g., medical imaging) and a number of
applications that have a large number of members per group (e.g.,
news distribution). Nimrod multicasting should scale for both
these situations. If no single mechanism adequately scales for
both sparse and dense group memberships simultaneously, a
combination of mechanisms should be considered.
o In the face of group membership change, there must be a facility
for incremental addition or deletion of "branches" in the
multicast tree. Reconstructing the tree from scratch is not likely
to scale.
Ramanathan Informational [Page 4]
RFC 2102 Nimrod Multicast Support February 1997
o It is likely that we will have some well-known groups (i.e., groups
which are more or less permanent in existence) and some ephemeral
groups. The dynamics of group membership are likely to be
different for each class of groups, and the solution should take
that into account as appropriate.
2. Policy support. This includes both quality of service (QOS) as
well as access restrictions, although currently, demand is probably
higher for QOS. In particular, every path from a source to each
destination in the multicast group should satisfy the requested
quality of service and conform to the access restrictions. The
implications for the multicasting solution are :
o It is likely that many multicasting applications will be cost
conscious in addition to having strict quality of service bounds
(such as delay and jitter). Balancing these will necessitate
dealing with some new parameters - e.g., the tree cost (sum of the
"cost" of each link), the tree delay (maximum, mean and variance
in end-to-end delay) etc.
o In order to support policy-based routing, we need to know where the
destinations are (so that we can decide what route we can take to
them). In such a case, a mechanism that provides an association
between a group id and a set of destination locators is probably
required.
o Some policy constraints are likely to be destination specific. For
instance, a domain might refuse transit service to traffic going to
certain destination domains. This presents certain unique problems
- in particular, for a single group, multiple trees may need to be
built, each tree "servicing" disjoint partitions of the multicast
destinations.
3. Resource sharing. Multicasting typically goes hand in hand with large
traffic volume or applications with a high demand for resources.
These, in turn, imply efficient resource management and sharing if
possible. Therefore, it is important that we place an emphasis on
interaction with resource reservation. For instance, Nimrod must be
able to provide information on which tree resources are shareable and
which are not so that resource reservation may use it while allocating
resources to flows.
4. Interoperability. There are two issues in this context. First, the
solution must be independent of mechanisms that provide the solution
with information it needs. For instance, many multicast solutions
(e.g., PIM) make use of information supplied by unicast routing
protocols. The multicast solution must not be dependent on which
unicast protocol is used.
Ramanathan Informational [Page 5]
RFC 2102 Nimrod Multicast Support February 1997
Second, a multicast solution must interoperate with other multicast
solutions in the construction of a delivery tree. This implies some
kind of "agreement" at some "level". For instance, the agreement
could be that everybody use the same structure for storing forwarding
information in the routers. Since the delivery tree is defined by the
nature of forwarding information in the routers and not by the
particular mechanism used to create that information, multiple
implementations can coexist.
4 Approaches
The approaches to multicasting currently in operation and those being
considered by the IETF include the following :
1. Distance vector multicast routing protocol (DVMRP)[DC90]. This
approach is based upon distance-vector routing information distribution
and hop-by-hop forwarding. It uses Reverse Path Forwarding (RPF)[DM78]
- a distributed algorithm for constructing an internetwork broadcast
tree. DVMRP uses a modified RPF algorithm, essentially a truncated
broadcast tree, to build a reverse shortest path sender-based multicast
delivery tree. A reverse shortest path from s to d is a path that uses
the same intermediate nodes as those in the shortest path from d to
s (If the paths are symmetric (i.e., cost the same) in either
direction, the reverse shortest path is same as the shortest path.)
An implementation of RPF exists in the current Internet in what
is commonly referred to as the MBONE. An improvement to this is in the
process of being deployed. It incorporates "prune" messages to
truncate further the routers not on the path to the destinations and
"graft" messages to undo this truncation, if later necessary.
The main advantage of this scheme is that it is simple. The major
handicap is scalability. Two issues have been raised in this
context[BFC93]. First, if S is the number of active sources and G
the number of groups, then the state overhead is O(GS) and might be
unacceptable when resources are limited. Second, routers not on a
multicast tree are involved (in terms of sending/tracking prune and
graft messages) even though they might not be interested in the
particular source-group pair. The performance of this scheme is
expected to be relatively poor for large networks with sparsely
distributed group membership. Furthermore, no support for policies
or QOS is provided.
2. Core Based Trees (CBT)[BFC93]. This scheme uses a single tree shared
by all sources per group. This tree has a single router as the core
(with additional routers for robustness) from which branches emanate.
The chief distinguishing characteristic of CBT is that it is receiver
initiated, i.e., receivers wishing to join a multicast group find the
tree (or its core) and attach themselves to it, without any
Ramanathan Informational [Page 6]
RFC 2102 Nimrod Multicast Support February 1997
participation from the sources.
The chief motivation behind this scheme is the reduction of the state
overhead, to O(G), in comparison to DVMRP and PIM(described below).
Also, only routers in the path between the core and the potential
members are involved in the process. Core-based tree formation and
packet flow are decoupled from underlying unicast routing.
The main disadvantage is that packets no longer traverse the shortest
path from the source to their destinations. The performance in
general depends on judicious placement of cores and coordination
between them. Traffic concentration on links incident to the core is
another problem. There is also a dependence on network entities (in
other administrative domains, for instance) for resource reservation
and policy routing.
3. Protocol Independent Multicasting (PIM)[DEFJ93]. Yet another approach
based on the receiver initiated philosophy, this is designed to reap
the advantages of DVMRP and CBT. Using a "rendezvous point", a
concept similar to the core discussed above, it allows for the
simultaneous existence of shared and source-specific multicast trees.
In the steady state, data can be delivered over the reverse shortest
path from the sender to the receiver (for better end-to-end delay) or
over the shared tree.
Using two modes of operation, sparse and dense, this provides
improved performance, both when the group membership in an
internetwork is sparse and when it is dense. It is however, a
complex protocol. A limitation of PIM is that the shortest paths are
based on the reverse metrics and therefore truly "shortest" only when
the links are symmetric.
4. Multicast Open Shortest Path First (MOSPF)[Moy92]. Unlike the
abovementioned approaches, this is based on link-state routing
information distribution. The packet forwarding mechanism is
hop-by-hop. Since every router has complete topology information,
every router computes the shortest path multicast tree from any
source to any group using Dijkstra's algorithm. If the router
doing the computation falls within the tree computed, it can
determine which links it must forward copies onto.
Ramanathan Informational [Page 7]
RFC 2102 Nimrod Multicast Support February 1997
MOSPF inherits advantages of OSPF and link-state distribution, namely
localized route computation (and easy verification of loop-freedom),
fast convergence to link-state changes etc. However, group membership
information is sent throughout the network, including links that are
not in the direct path to the multicast destinations. Thus, like
DVMRP, this is most suitable for small internetworks, that is, as an
intra-domain routing mechanism.
5. Inter-Domain Policy Routing (IDPR)[Ste]. This approach uses
link-state routing information distribution like MOSPF, but uses
source-specified packet forwarding. Using the link-state
database, the source generates a policy multicast route to the
destinations. Using this, the IDPR path-setup procedure sets up
state in intermediate entities for packet duplication and
forwarding. The state contains information about the next-hop
entities for the multicast flow. When a data packet arrives,
it is forwarded to each next hop entity obtained from the state.
Among the advantages of this approach are its ability to support
policy based multicast routing with ease and independence
(flexibility) in the choice of multicasting algorithm used at the
source. IDPR also allows resource sharing over multiple multicast
trees. The major disadvantage is that it makes it relatively more
difficult to handle group membership changes (additions and
deletions) since such changes must be first communicated to the
source of the tree which will then add branches appropriately.
We now discuss the applicability of these approaches to Nimrod.
Common to all of the approaches described is the fact that we need to
set up state in the intermediate routers for multicast packet
forwarding. The approaches differ mainly on who initiates the state
creation - the sender (e.g., IDPR, PIM), the receiver (e.g., CBT,
PIM) or the routers themselves create state without intitiation by
the sender or receivers (e.g., DVMRP, MOSPF).
Nimrod should be able to accommodate both sender initiated as well as
receiver initiated state creation for multicasting. In the remainder
of this section, we discuss the pros and cons of these approaches for
Nimrod.
Nimrod uses link-state routing information distribution (topology
maps) and has four modes of packet forwarding - flow mode,
Connectivity Specification Chain (CSC) mode, Connectivity
Specification Sequence (CSS) mode and datagram mode [CCS96].
Ramanathan Informational [Page 8]
RFC 2102 Nimrod Multicast Support February 1997
An approach similar to that used in IDPR is viable for multicasting
using the flow mode. The source can set up state in intermediate
routers which can then appropriately duplicate packets. For the CSC,
BTES and datagram modes, an approach similar to the one used in MOSPF
is applicable. In these situations, the advantages and disadvantages
of these approaches in the context of Nimrod is similar to the
advantages and disadvantages of IDPR and MOSPF respectively.
Sender based trees can be set up using an approach similar to IDPR
and generalizing it to an "n" level hierarchy. A significant
advantage of this approach is policy-based routing. The source knows
about the policies of nodes that care to advertise them and can
choose a route the way it wants (i.e., not depend upon other entities
to choose the route, as in some schemes mentioned above). Another
advantage is that each source can use the multicast route generation
algorithm and packet forwarding scheme that best suits it, instead of
being forced to use whatever is implemented elsewhere in the network.
Further, this approach allows for incrementally deploying new
multicast tree generation algorithms as research in that area
progresses.
CBT-like methods may be used to set up receiver initiated trees.
Nimrod provides link-state maps for generating routes and a CBT-like
method is compatible with this. For instance, a receiver wishing to
join a group may generate a (policy) route to the core for that group
using its link-state map and attach itself to the tree.
A disadvantage of sender based methods in general seems to be the
support of group dynamism. Specifically, if there is a change in the
membership of the group, the particular database which contains the
group-destination mapping must be updated. In comparison, receiver
oriented approaches seem to be able to accommodate group dynamism
more naturally.
Nimrod does not preclude the simultaneous existence of multiple
approaches to multicasting and the possibility of switching from one
to the other depending on the dynamics of group distributions.
Interoperability is an issue - that is, the question of whether or
not different implementations of Nimrod can participate in the same
tree. However, as long as there is agreement in the structure of the
state created (i.e., the states can be interpreted uniformly for
packet forwarding), this should not be a problem. For instance, a
receiver wishing to join a sender created tree might set up state on
a path between itself and a router on the tree with the sender itself
being unaware of it. Packets entering the router would now be
additionally forwarded along this new "branch" to the new receiver.
Ramanathan Informational [Page 9]
RFC 2102 Nimrod Multicast Support February 1997
In conclusion, the architecture of Nimrod can accommodate diverse
approaches to multicasting. Each approach has its disadvantages with
respect to the requirements mentioned in the previous section. The
architecture does not demand that one particular solution be used,
and indeed, we expect that a combination of approaches will be
employed and engineered in a manner most appropriate to the
requirements of the particular application or subscriber.
5 A Multicasting Scheme based on PIM
The Inter-Domain Multicast Routing (IDMR) working group of the IETF
has developed a specification for a new multicast scheme, namely,
Protocol Independent Multicasting (PIM) for use in the Internet
[DEF+94a, DEF+94b]. In this section, we decribe how the schemes
mentioned therein may be implemented using the facilities provided by
Nimrod.
We note that the path setup facility provided in Nimrod makes it very
conducive to PIM-style multicasting; despite the length of the
description given here, we assure the reader that it is quite simple
to implement PIM style multicasting in Nimrod.
Before reading this section, we recommend that the reader acquire
some familiarity with PIM (see [DEF+94a, DEF+94b]).
5.1 Overview
The PIM architecture maintains the traditional IP multicast service
model of receiver-initiated membership and is independent of any
specific unicast routing protocol (hence the name).
A significant aspect of PIM is that it provides mechanisms for
establishing two kinds of trees - a shared tree, which is intended
for low "cost" multicasting and a source-based tree, intended for low
delay multicasting.
A shared tree is rooted at a rendezvous point (RP), which is
typically a prespecified router for the multicast group in question.
In order to establish a shared tree, a designated router (DR) for a
host wishing to join a group G initiates a flow setup from the RP for
G to the DR. A source S wishing to send to a group G initiates a flow
setup between S and the RP for group G. At the conclusion of these
flow setups, packets can be forwarded from S to H through the RP. For
details on the protocol used to implement this flow setup please
refer to [DEF+94b].
Ramanathan Informational [Page 10]
RFC 2102 Nimrod Multicast Support February 1997
After the shared tree has been setup, a recipient for group G has the
option of switching to a source-based shortest path tree. In such a
tree, packets are delivered from the source to each recipient along
the shortest path. To establish a source-based shortest path tree,
the DR for H looks at the source S of the packets it is receiving via
the shared tree and establishes a flow between S and the DR. The flow
is established along the shortest path from the DR to S (Thus,
strictly speaking, it is the reverse shortest path that is being
used.) Subsequently, packets can be forwarded from S to H using this
shortest path and thereby bypassing the RP. For details on the
protocol used to implement source-based trees in PIM please refer to
[DEF+94b].
When a host wishes to leave a multicast group, its designated router
sends a prune message towards the source (for source-based trees) or
towards the RP (for shared trees). For details on this and other
features of PIM please refer to [DEF+94b].
In Nimrod, PIM is implemented as follows (we refer to PIM based
multicast as Nimpim). In order to join a shared tree, an endpoint
(or an agent acting on behalf of the endpoint) wishing to join a
group G queries the association database for the EID and locator of
the RP for G (for well-known groups the association may be
configured). It is required that such an association be maintained
for every multicast group G. The endpoint gets a route for the RP and
initiates a multicast flow setup to the RP (a multicast flow setup is
similar to an unicast flow setup described in [CCS96] except for one
feature - when a multicast flow setup request reaches a node that
already has that flow present, the request is not forwarded further.
The new flow gets "spliced" in as a new branch of the existing
multicast tree). Similarly, the source establishes a flow to the RP.
The RP creates state to associate these two flows and now packets can
be forwarded to the endpoints from the source. Note that each flow
setup may be "hierarchical" and involve many subflows. All this,
however, is transparent to Nimpim. For details on management of
hierarchical flows please refer to [CCS96].
To create the source-based tree, the representative for a recipient
node N obtains the EID or locator of the source from the data packets
and initiates a multicast flow setup to the source. The route agent
for the node N uses its map in order to calculate the shortest path
from the source to N. The flow request is sent along the reverse of
this path. We note that the "shortness" of the path is constrained
by the amount of routing information available locally. However,
since the map is available locally, one can find the actual shortest
path from the source to N and not use the shortest path from N to S.
Thus, with Nimrod one can actually surmount a shortcoming of PIM with
relative ease.
Ramanathan Informational [Page 11]
RFC 2102 Nimrod Multicast Support February 1997
We now discuss some more details of Nimpim. We start with a
description of multicast flow setup. This is the "basic"
functionality required to implement multicasting. Having this
"building-block" spelt out, we use this to specify the establishment
of the shared tree (in section 5.3) and the establishment of a
source-based tree (in section 5.4).
We only discuss sparse-mode multicasting, as described in [DEF+94a]
here. Further, to simplify the discussion, we assume a single
Rendezvous Point per group. Finally, we "address" all entities in
terms of their EIDs alone for reasons of conciseness - the locators
could be used in conjuction to reduce the overhead of database
lookups.
5.2 Joining and Leaving a Tree
Nimpim uses two control packets in order to setup a flow - the Nimrod
Multicast Flow-Request packet (NMFReq) and the Nimrod Multicast
Flow-Reply packet (NMFRep).
The NMFReq packet is a control packet identified by a prespecified
"payload type". The protocol-specific part of this packet includes
the following fields (except for the Code field, these fields are
present in the Unicast Flow-Request packet too) :
1. S-EID : The EID of the initiator of the flow.
2. T-EID : The EID of the target of the flow.
3. Flow-id : A label denoting the flow.
4. Direction : The direction of the flow - whether from the initiator
to the target (FORW) or from the target to the initiator (REVERSE)
or both (BOTH).
5. Code : Denotes whether the packet is for joining a flow
(NMFReq-Join) for leaving a flow (NMFReq-Prune).
6. Source Route : A sequence of node locators through which the packet
must travel.
Ramanathan Informational [Page 12]
RFC 2102 Nimrod Multicast Support February 1997
The processing of the NMFReq by a forwarding agent at node N is
similar to that of the unicast flow request (see [CCS96]), except for
the fact that now we provide the ability for the new flow to "splice"
onto an existing delivery tree or "un-splice" from an existing
delivery tree. Specifically,
o If the Code is NMFReq-Join then the algorithm executed by the
forwarding agent for node N is shown in Figure 1.
o If the Code is NMFReq-Prune then the algorithm is executed by the
forwarding agent at node N is shown in Figure 2.
The NMFRep packet is used to accept or reject an NMFReq-Join or
NMFReq-Prune. The packet format is the same as that for unicast flow
request. However, an NMFRep packet is generated now by the first
node N that grafts the new flow to the existing tree. This may be
different from the target of the NMFReq.
It is required that a leaf router keep track of all hosts currently
joined to the group and send a prune message only if there is no host
in the local network for the group.
The NMFReq - NMFRep exchanges constitute a procedure for joining a
multicast delivery tree (when the Code is Join) and for leaving a
multicast delivery tree (when the Code is Prune). We term these
procedures Tree-Join and Tree-Leave respectively; we shall be using
these procedures as "building-blocks" in the construction of shared
trees (section 5.3) and of source-based trees (section 5.4).
Ramanathan Informational [Page 13]
RFC 2102 Nimrod Multicast Support February 1997
begin
if the flow-id F in NMFReq-Join is in flow-list then
if T-EID in NMFReq-Join = target in flow state for F then
if Direction in NMFReq-Join is REVERSE or BOTH then
Add the node preceding N in source route to child list for F
else
discard packet
else
discard packet
else
begin
install state for F in N, i.e.,
assign parent(F) = node succeeding N in source route
assign child(F) = node preceeding N in source route
assign target(F) = T-EID in NMFReq-Join
forward NMFReq-Join to parent(F)
end
end.
Figure 1: Algorithm executed by a forwarding agent for node N when
when it receives an NMFReq-Join.
begin
if the flow-id F in NMFReq-Prune is in flow-list
then begin
delete previous hop in source route from child list for F, if exists
if child list for F is empty
then begin
delete the flow-id and state associated with it
forward to next hop in source route
end
else discard packet
end
else forward to next hop in source-route
end.
Figure 2: Algorithm executed by a forwarding agent for node N when it
receives an NMFReq-Prune.
Ramanathan Informational [Page 14]
RFC 2102 Nimrod Multicast Support February 1997
5.2.1 An Example
An example of how a tree is joined is given here with the help of
Figure 3. In the figure, bold lines indicate an existing tree.
Representative R on behalf of host H joins the tree by sending an
NMFJoin-Req towards a target T. When used in the shared tree mode,
the target is the RP and when used in the source tree mode, it is the
source (root) of the multicast tree. Suppose that a host H wants to
join the multicast tree. The following steps are executed :
Step 1. A representative R of H queries the route agent for a route
from T to R. It obtains the route T - C- B - A - R. It builds a
NMFJoin-Req packet with source route as R, A, B, C, T and flow
as F forwards it to A.
Step 2. A looks for flow F in its installed flow database and
doesn't find it. It installs state for F (makes R a child and
B a parent in the multicast tree) and sends the NMFJoin-Req packet
to B.
Step 3. B looks for flow F in its installed flow database and finds it.
It adds B to its child list and constructs an NMFJoin-Rep packet and
sends it to A.
Step 4. A forwards the packet to R and the tree joining is complete.
Branch B-A-R is now added to the tree.
Ramanathan Informational [Page 15]
RFC 2102 Nimrod Multicast Support February 1997
5.3 Establishing a Shared Tree
There are two parts to establishing a shared tree - the receiver-to-
RP communication wherein the receiver joins the delivery tree rooted
at RP and the sender-to-RP communication wherein the RP joins the
delivery tree rooted at the sender.
T
+---+
| |\
+---+ \
/ \
/ \
C / \ X
+---+ +---+
| | | |
+---+ +---+
\
\
\
R join-req join-req \ B
+---+ - - - - -> +---+ - - - - -> +---+
| |<------------| |<-----------| |
+---+ join-rep +---+ join-rep +---+
| A \
| \
| \ Y
( ) +---+
H | |
+---+
Figure 3: Illustration for the example describing joining an existing
multicast tree.
Receiver-RP Communications: When an endpoint wishes to join a
multicast group G, the endpoint representative obtains the Rendezvous
Point EID for G. We assume that the association database contains
such a mapping. For details on how the association database query is
implemented, please refer [CCS96].
The representative also obtains the flow-id to be used for the flow.
The flow-id is constructed as the tuple (RP-EID, G) or an equivalent
thereof. Note that the flow-id must be unique to the particular
multicast flow. This is not the only method or perhaps even the best
method for obtaining a flow id. Alternate methods for obtaining the
flow-id are discussed in section 5.5.
Ramanathan Informational [Page 16]
RFC 2102 Nimrod Multicast Support February 1997
The representative then initiates a Tree-Join procedure.
The NMFReq packet fields are as follows:
o S-EID : The EID of the endpoint wishing to join.
o T-EID : The RP EID (obtained from the Association Database).
o Flow-id : The flow-id for this group (obtained as mentioned
above).
o Direction : REVERSE (from the RP to the receiving endpoint).
o Code : Join.
o Source Route : Reverse of the route obtained from the map agent
for a query "from RP-EID to Receiver-EID".
At the first node already containing this Flow-id or the RP, an
NMFRep packet is generated. The S-EID, T-EID, Direction and Flow-id
fields are copied from the NMFReq packet and the Code is set to
Join-Accept or Join-Refuse as the case may be. The source route is
reversed from the NMFReq packet.
Sender-RP Communications: When an endpoint wishes to send to a
multicast group G, the endpoint representative obtains the Rendezvous
Point EID for G. We assume that the association database contains
such a mapping. For details on how the association database query is
implemented, please refer [CCS96].
The representative also obtains the flow-id to be used for the flow.
The flow-id is constructed as the tuple (Sender-EID, G) or an
equivalent thereof. Note that the flow-id must be unique to the
particular multicast flow. This is not the only method or perhaps
even the best method for obtaining a flow id. Alternate methods for
obtaining the flow-id are discussed in section 5.5.
The representative then sends a RP-Register Message to the RP. This
register message is equivalent to the PIM-Register described in
[DEF+94b]. The RP-Register message contains the group G and the
flow-id (obtained as discussed above) and the sender EID.
The RP then initiates a Tree-Join with the Sender EID as the target.
The NMFReq fields are as follows :
o S-EID : RP-EID.
o T-EID : Sender EID (copied from RP-Register Message).
Ramanathan Informational [Page 17]
RFC 2102 Nimrod Multicast Support February 1997
o Flow-id : The flow-id field from RP-Register Message.
o Code : Join.
o Direction : REVERSE.
o Source Route : Reverse of the route obtained from map agent
query "from Sender-EID to RP-EID".
The NMFRep fields are obvious.
Shared Tree Data Forwarding: Packets sent from the source for group G
contain the Flow-id used by the sender(s) and receiver(s) for setting
up the delivery tree. The packets from the sender are sent to the RP
where they are multicast, using the state created for the flow, into
the delivery tree rooted at the RP to all of the receivers that did a
Tree-Join.
5.4 Switching to a Source-Rooted Shortest Path Tree
There are two parts involved in switching to a Source-Rooted Shortest
Path Tree - the receiver-source communications wherein the receiver
joins a multicast delivery tree rooted at the source and the
receiver-RP communications wherein the receiver leaves the shared
tree.
Receiver-Source Communications: An endpoint E that is receiving
packets through the shared tree from source S has the option of
switching to a delivery tree rooted at the source such that packets
from S to E traverse the shortest path (using whatever metric).
The endpoint representative of E obtains the flow-id to be used for
the flow. The flow-id is constructed equivalently to the tuple
(Source-EID, G). Note that the flow-id must be unique to the
particular multicast flow. This is not the only method or perhaps
even the best method for obtaining a flow id. Alternate methods for
obtaining the flow-id are discussed in section 5.5.
The representative for E initiates a Tree-Join toward S with NMFReq
fields as follows:
o S-EID : EID of the Endpoint E.
o T-EID : EID of the source.
o Flow-id : Flow id for the multicast (obtained as mentioned above).
o Code : Join.
Ramanathan Informational [Page 18]
RFC 2102 Nimrod Multicast Support February 1997
o Direction : REVERSE.
o Source Route : To obtain the route, the route agent is queried for
a shortest path route (based on the chosen metric, typically, the
delay) from the source to the endpoint. We note that the quality
of the route is constrained by the amount of routing information
available, directly or indirectly, to the route agent. The Source
Route is the reverse of the route thus obtained.
A comment on the difference between the shortest-path trees obtained
using the RPF tree as in [DEF+94b, DC90] and the trees that are be
obtained here. When using the RPF scheme, the packets from the
source S to the endpoint E follow a path that is the shortest path
from E to S. This is the desired path if and only if the path is
symmetric in either direction. However, in the mechanism described
here for Nimrod, the packets do follow the "actual" shortest path
from S to E whether or not the path is symmetric.
The NMFRep fields are obvious.
Receiver-RP Communications: After the receiver has joined the
source-rooted tree, it can optionally disassociate itself from the
shared tree. This is done by initiating a Tree-Leave procedure.
The representative sends a NMFReq packet toward the RP with the
fields as follows.
o S-EID : The EID of the endpoint wishing to leave the shared tree.
o T-EID : The RP-EID.
o Flow-id : The flow-id it used to join the shared tree.
o Code : Prune.
o Direction : REVERSE.
o Source Route : Obtained as for the Tree-Join.
The prune packet is processed by the intermediate forwarding agents
as mentioned in section 5.2. When the receiver gets back the NMFRep
packet, the receiver has left the shared tree.
Source Tree Data Forwarding: Packets from the source contain the
flow-id that was used to join the source tree for a given multicast
group. Forwarding agents simply use the state created by the Tree-
Join procedure in order to duplicate and forward packets toward the
receivers.
Ramanathan Informational [Page 19]
RFC 2102 Nimrod Multicast Support February 1997
5.5 Miscellaneous Issues
Obtaining the Flow-Id: In the above scheme the flow-id for a
particular multicast group G was obtained by combining the RP-EID and
the group set-id (G-SID) (in case of shared tree) or by combining the
Source-EID and the G-SID (in case of source-based tree). A
disadvantage of this approach is that the bit-length of EID/SID is
potentially high (more than 64 bits) and thus the flow-id could be
very long. While there do exist bit-based data structures and search
algorithms (such as Patricia Trees) that may be used for an efficient
implementation, it is worth considering some other methods in lieu of
using the EID/SID combination. We describe some methods below :
1. For shared trees, the flow-id for a particular group G may be stored
and updated in the association database. Since we have to use the
association database anyway to obtain the RP-EID, these does not cause
much additional burden.
However, this cannot be used efficiently for source-based trees because
we need a flow-id for each combination of Source and Group.
2. The flow-id for shared trees could be done as above. When the sender
does an RP-Register, it could send the RP the flow-id that it wishes to
be used by receivers when they switch to a source-based tree. This
could be included in the RP-Register message. The RP could then
multicast that flow-id to all receivers in a special packet. When the
receivers wish to switch, they use that flow-id.
This needs the definition of the "special" packet.
3. The flow-id is handed out only by the source (for source-based trees)
or the RP (for shared trees). The receivers use a "dummy" flow-id in
the NMFReq when doing a Tree-Join. The correct flow-id to be used is
returned in the NMFRep message generated by the forwarding agent where
the new branch meets the existing tree. Forwarding agents in the path
of the NMFRep packet update the state information by rewriting the
dummy flow-id by the correct flow-id contained in the NMFRep packet.
This requires the re-definition of the NMFRep packet. Note that now
there must be space for two flow-ids in the NMFRep packet - one for the
"dummy" flow-id and the other for the "correct" flow-id that must
replace the dummy flow-id.
We claim that each of the above schemes achieves synchronization in
the flow-id in various parts of the internetwork and that each flow-
id is unique to the multicast delivery tree. A formal proof of these
claims is beyond the scope of this document.
Ramanathan Informational [Page 20]
RFC 2102 Nimrod Multicast Support February 1997
Dense Mode Multicast: The PIM architecture [DEF+94a] includes a
multicast protocol when the group membership is densely distributed
within the internetwork. In this mode, no Rendezvous Points are used
and a source rooted tree is formed based on Reverse Path Forwarding
in a manner similar to that of DVMRP [DC90].
We do not give details of how Nimrod can implement Dense Mode
Multicast here.
Multiple RPs: Our discussion above has been based on the assumption
that there is one RP per group. PIM allows more than one RP per
group. We do not discuss multiple-RP PIM here.
6 Security Considerations
Security issues are not discussed in this memo.
7 Summary
o Nimrod does not specify a particular multicast route generation
algorithm or state creation procedure. Nimrod can accommodate diverse
multicast techniques and leaves the choice of the technique to the
particular instantiation of Nimrod.
o A solution for multicasting within Nimrod should be capable of:
- Scaling to large networks, large numbers of multicast groups and
large multicast groups.
- Supporting policy, including quality of service and access
restrictions.
- Resource sharing.
- Interoperability with other solutions.
o Multicasting typically requires the setting up of state in intermediate
routers for packet forwarding. The state setup may be initiated by the
sender (e.g., IDPR), by the receiver (e.g., CBT), by both (e.g., PIM)
or by neither. The architecture of Nimrod provides sufficient
flexibility to accommodate any of these approaches.
o A receiver-initiated multicast protocol, PIM, is being designed by the
IDMR working group of the IETF. The facilities provided by Nimrod make
the use of PIM as a multicast protocol quite straightforward.
Ramanathan Informational [Page 21]
RFC 2102 Nimrod Multicast Support February 1997
8 References
[BFC93] A. J. Ballardie, P. F. Francis, and J. Crowcroft. Core based
trees. In Proceedings of ACM SIGCOMM, 1993.
[CCS96] Castineyra, I., Chiappa, N., and M. Steenstrup, "The Nimrod
Routing Architecture", RFC 1992, August 1996.
[DC90] S. Deering and D. Cheriton. Multicast routing in datagram
internetworks and extended lans. ACM Transactions on Computer
Systems, pages 85--111, May 1990.
[DEF+94a] Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu,
C., and L. Wei, "Protocol Independent Multicast (PIM) :
Motivation and Architecture, Work in Progress.
[DEF+94b] Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu,
C., and L. Wei, "Protocol Independent Multicast (PIM) :
Sparse Mode Protocol Specification, Work in Progress.
[DEFJ93] Deering, S., Estrin, D., Farinacci, D., and V. Jacobson,
"IGMP router extensions for routing to sparse multicast
groups, Work in Progress.
[DM78] Y. K. Dalal and R. M. Metcalfe. Reverse path forwarding of
broadcast packets. Communications of the ACM, 21(12), pages
1040--1048, 1978.
[Moy92] Moy, J., "Multicast Extensions to OSPF, RFC 1584, March 1994.
[RS96] Ramanathan, S., and M. Steenstrup, "Nimrod functional and
protocol specifications, Work in Progress.
[Ste] Steenstrup, M., "Inter-domain policy routing protocol
specification: Version 2", Work in Progress.
Ramanathan Informational [Page 22]
RFC 2102 Nimrod Multicast Support February 1997
9 Acknowledgements
We thank Isidro Castineyra (BBN), Charles Lynn (BBN), Martha
Steenstrup (BBN) and other members of the Nimrod Working Group for
their comments and suggestions on this memo.
10 Author's Address
Ram Ramanathan
BBN Systems and Technologies
10 Moulton Street
Cambridge, MA 02138
Phone: (617) 873-2736
EMail: ramanath@bbn.com
Ramanathan Informational [Page 23]
ERRATA