IETF MANET Working Group C.W. Wu
INTERNET-DRAFT Y.C. Tay
National University of Singapore
C-K. Toh
Georgia Institute of Technology
24 November 1998
Ad hoc Multicast Routing protocol utilizing Increasing id-numberS (AMRIS)
Functional Specification
<draft-ietf-manet-amris-spec-00.txt>
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress."
To view the entire list of current Internet-Drafts, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern
Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific
Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
Abstract
This document introduces a new multicast routing protocol for use
over ad hoc networks. The protocol is called AMRIS, short for Ad hoc
Multicast Routing protocol utilizing Increasing id-numberS. The
conceptual idea behind AMRIS is to assign every node in a multicast
session with an id-number. A delivery tree rooted at a particular
node called Sid joins up the nodes participating in the multicast
session. The relationship between the id-numbers(and the node that
owns it) and Sid is that the id-numbers increase in numerical value
as they radiate from the root of the delivery tree. The significance
of the Sid is that it has the smallest id-number within that
multicast session. Utilizing the id-numbers, nodes are able to adapt
rapidly to changes in link connectivity. Recovery messages due to
link breakages are confined to the region where it occurred.
Wu, Tay, and Toh Expires 24 May 1999 [Page 1]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
1. Introduction
Conventional multicast routing protocols for the Internet[1,2,3,4,5]
break down in ad hoc networks[6] because of the dynamic nature of the
network topology. The dynamically changing topology, coupled with
relatively low bandwidth wireless links causes long convergence
times(if they ever converge) and possibly formation of loops which
rapidly consume the already limited bandwidth.
AMRIS constructs a shared delivery tree among all participant nodes.
This is done by first building a DAG rooted at a special node called
Sid(Sid has the smallest id within the multicast session and is
generally the source node, i.e. the one that expresses the demand for
a route). A delivery tree is thus formed by using a subset of the
links of the DAG. Multiple senders and receivers are supported on
this tree. (We are currently investigating whether the leftover
links of the DAG(leftover - those not part of the delivery tree) can
be maintained as secondary/backup links. Is the overhead/cost of
maintaining them worthwhile vs the advantages that they can bring.)
Nodes participating in AMRIS does not require any globally consistent
routing state. Permanent loops which may occur due to node movements
etc will not occur. AMRIS allows nodes to recover from broken links
rapidly [within one multicast beacon period]. Repairs to damaged
links are performed locally without need for any central controlling
node thus increasing survivability. We expect that most multicast
applications are long-lived, therefore rapid route reconstruction is
of greater importance compared to rapid route discovery. This may not
necessarily be the case in the context of a unicast routing protocol
where short route discovery times may be favoured over recovery times
when the application lifespan is short.
2. Terminology
Smallest-ID node (read as Sid)
We call the node that starts/initiates a multicast session Sid
because it has the smallest msm-id compared with all other nodes
for that multicast session.
Node
A device in the ad hoc network willing to participate in the
routing protocol.
Potential Parent Node (PPx)
If a node X receive any NEW-SESSION message from PPx and PPx has a
smaller msm-id than node X, then PPx is considered a Potential
Parent Node of X. This information is updated in node X's
Wu, Tay, and Toh Expires 24 May 1999 [Page 2]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
Neighbour-Status table.
Parent Node
A node X is the parent node of a node Y if node Y successfully
joined the multicast session through X. Node X must have a smaller
msm-id than node Y. This information is updated in both X and Y's
Neighbour-Status table.
Child Node
A node Y is the child node of a node X if node Y successfully
joined the multicast session through X. Node Y must have a larger
msm-id than node X. This information is updated in both X and Y's
Neighbour-Status table.
Bigger-id node
If a node X has a bigger multicast id then Y, then X is called
Bigger-id node.
Smaller-id node
If a node X has a smaller multicast id then Y, then X is called
Smaller-id node.
Multicast group
Nodes participating in multicast communication which includes the
senders/sources, receivers and intermediate nodes.
Multicast Session ID (ms-id)
A unique value identifying a particular multicast session.
Multicast Session Member ID (msm-id)
An ID number that all nodes within a multicast session must have.
The ID differs among nodes and generally increases in numerical
value the further a nodes is from Sid.
Neighbour-Status Table
This table is a conceptual data structure that we employ to keep
information regarding the neighbouring nodes and their status. Eg.
Participation in which multicast sessions, etc.
Multicast Beacon
This is a periodic one-hop broadcast sent by all nodes to update
neighbouring nodes about its multicast state information. Multicast
state information would include the node's unique ID, msm-id as
well as it's parent and child msm-ids.
3. Assumptions
Wu, Tay, and Toh Expires 24 May 1999 [Page 3]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
We assume that all nodes within the ad hoc network are willing to
participate fully in the protocol. Every node has a unique ID at
either the network layer (e.g. IP address) or the link layer (e.g.
MAC Address for 802.11). We assume that the underlying unicast layer
provides information about symmetric links to upper layers. We assume
that there is no underlying beaconing mechanism to detect link
breakage. Link breakage detection is performed by making use of the
periodic multicast beacon but we do not exclude using additional
information such as fading link quality, positional information of
nodes, etc to ensure link detection is accurate. If the underlying
layers also utilize some form of beaconing, AMRIS can efficiently
utilize that beaconing instead for the purpose of supporting ad hoc
multicast routing.
4. Protocol Overview
Each multicast session is identified a globally unique identifier(eg
class D IP address). A single node (called Sid) initiates a multicast
session by broadcasting a NEW-SESSION message. Sid has the smallest
msm-id. All nodes that receive the NEW-SESSION message generates
their own msm-id based on the value found in the message. The new
msm-id replaces the old value when the NEW-SESSION message is
rebroadcasted. Nodes that receive multiple NEW-SESSION messages(for
the same multicast session) will choose only one of the messages to
process. The NEW-SESSION message thus travels in an expanding ring
fashion outwards from Sid. In the initial phase, nodes closer to Sid
will generally have smaller msm-ids than those further away.
The links of the multicast delivery tree are formed as follows:
1) If the requesting node X has a neighbouring node which is already
a member of the multicast session, X will join the multicast session
by sending a JOIN-REQ to that neighbour. A JOIN-ACK from that
neighbour confirms that X is a registered child of the neighbour. X
updates its Neighbour-Status table to indicate that that neighbour is
a registered parent of X. That neighbour node also updates its own
Neighbour-Status to indicate that X is a registered child.
2) If the requesting node X only has neighbouring potential
parents(i.e nodes with smaller msm-ids but are not yet members of the
multicast session), X will send a JOIN-REQ to one of the potential
parents. The potential parent is triggered to join the multicast
session when it receives the JOIN-REQ from X. It does so by sending
out its own JOIN-REQ to its potential parent, if any are available.
If the potential parent is Sid, it does not send out any JOIN-REQ
(since it has no parents). If the parent node determines that the
requesting node X is allowed to join successfully, it will send a
Wu, Tay, and Toh Expires 24 May 1999 [Page 4]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
JOIN-ACK back the to requesting node X, otherwise it will send a
JOIN-NACK.
3) If the requesting node X does not have any neighbouring parents or
potential parents, it will send a broadcast JOIN-REQ with a ttl of
one but with range R. (The ttl determines whether the datagram should
be rebroadcast without modification. The range R is another field
that specifies if the node should send its own JOIN-REQ or JOIN-
REQ.passive in response to the one that was received) All nodes
withing range R(number of hops) from X will attempt to join the
multicast tree by sending out their own JOIN-REQ.passive. The range R
is decremented by one each time a node sends out the JOIN-REQ.passive
so that eventually only nodes that are within range R(no. of hops
from X) will have generated JOIN-REQ.passive. Nodes that receive a
JOIN-REQ.passive with range R equal to zero do not generate any more
JOIN-REQ.passve. Note that the contents of the sent JOIN-REQ.passive
is different from the JOIN-REQ.passive in that the node will modify
the contents with its own information before its sends it out.
A JOIN-REQ.passive received by an off-tree node will trigger that
node to send a JOIN-REQ.passive only if the range is greater than
zero. An on-tree node that receives a JOIN-REQ.passive will reply
with a JOIN-ACK.passive. This sets up a set of passive links between
the requesting node to possibly several on-tree nodes. The requesting
node may eventually receive several JOIN-ACK.passive messages from
different potential parents. It chooses one of the potential parents
as its registered parent and sends a JOIN-CONF to that parent. The
JOIN-CONF received by the parent node will trigger that parent node
to send a JOIN-CONF if necessary to its own parent. The passive links
maintained by the other potential parents will eventually time out.
Potential parent nodes with passive links are allowed to respond to
other nodes that might have sent out JOIN-REQ. In doing so, we "re-
use" state information collected and minimize expanding ring type
broadcasts.
Link breakage detection is performed in AMRIS by making use of the
multicast beacon. The multicast beacon contains the msm-id of the
node and the registered parent and child nodes of the node.
5. Protocol Specifics
We will explain the protocol in the following sequence:
1. Types of Membership/Node Classification
2. What is Sid and where does it come from?
3. Tree Initialization
Wu, Tay, and Toh Expires 24 May 1999 [Page 5]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
4. Joining the Multicast Session
5. Reaction to mobility/broken links during JOINING phase
6. Forwarding Policy
7. Reactions to mobility/broken links
7.1 Leaf node moves
7.2. Intermediate moves
7.3. Core node moves
8. Reaction to Network partition
9. Group Membership
10. Terminating the Multicast Session
5.1 Types of Membership/Node Classification
Nodes are classified into the following types:
Interested node (I-node)
A node that is interested in a specific multicast session and
wishes to join, it does not matter if it is interested to join as
either a sender or receiver or both.
Uninterested Node (U-node)
A node that is not interested in a specific multicast session but
is "forced" and became part of the session anyway because it is
required to be a relay/intermediate node on the multicast delivery
path. If a U-node does not have any descendent nodes that are I-
nodes, it will prune itself off the tree. This is one of the main
difference between a U-node and a I-node.
Leaf node
A node at the edge of the multicast tree. A leaf node maybe a
sender or a receiver or both. U-nodes that becomes leaf nodes as a
result of node movements will remain as leaf nodes only temporarily
before they are pruned off.
Intermediate node
A node in the internal branches of the multicast tree. May be
either an I-Node or an U-Node.
5.2 What is Sid and where does it come from?
Sid is defined as the node that initiated the multicast session by
broadcasting the NEW-SESSION message to its surrounding nodes. In a
single-sender, multiple-receiver environment, the single-sender would
most likely assume the role of Sid. In a multiple-sender, multiple-
receiver environment, it is most probable that one of the multiple-
senders will assume the role of Sid in initiating the multicast
session. Any core-election type of algorithm can be used if there are
Wu, Tay, and Toh Expires 24 May 1999 [Page 6]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
multiple nodes contending for the role of Sid. Obviously, the choice
of the core will have an initial effect on the shape of the delivery
tree formed. We hope to have more insight on this matter after
analyzing simulation results.
5.3 Initializing the Multicast Session
We assume that Sid has some means of obtaining a unique identifier
for the multicast session. Sid creates a new multicast session by
broadcasting a NEW-SESSION message to its surrounding neighbours. The
NEW-SESSION will contain among other things, Sid's msm-id, multicast
session address, and routing metrics. All nodes that receive the NEW-
SESSION message will then generate their own msm-id and replace the
msm-id in the message with their own, as well as various routing
metrics before broadcasting the message again. Information derived
from the NEW-SESSION message is kept in the Neighbour-Status table
for up to T1 secs. A random delay of T2 secs is inserted between the
receipt of a NEW-SESSION message and its subsequent rebroadcast. A
node may receive multiple NEW-SESSION messages from different nodes.
If it has not rebroadcast any messages yet, it will keep the message
that has the best routing metric. That message is then modified and
rebroadcast. Otherwise the messages received are dropped.
5.3.1 Bootstrapping the msm-id value
Each node that receives the NEW-SESSION message will calculate the
initial value of its msm-id using hop count as a parameter to the
function F1 Calculate_Initial_msm-id(Section 6 describes the
function in greater detail). In a nutshell, the larger the hop-
count value in NEW-SESSION message received, the larger will be its
msm-id which is the value returned by Calculate_Initial_msm-id. The
function's behaviour is such that there is a large msm-id insertion
window between nodes that are one hop-count away. This facilitates
the subsequent insertions of other nodes in between these two
nodes. The beacon will now include the msm-id. If the beacon is
implemented within the multicast routing layer and no other
multicast session existed before this, the beacon is started up for
the first time.
The NEW-SESSION message thus travels outward from the Sid in an
expanding ring fashion. Eventually every node will have assigned to
themselves a msm-id. The msm-id is used when the node joins the
multicast session. The msm-id will be removed when the multicast
session is no longer desired(or expired). This will release the msm-
id usage back to the pool. msm-id is related to specific nodes
supporting an active on-going multicast sesssion.
Wu, Tay, and Toh Expires 24 May 1999 [Page 7]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
5.4 Joining the Multicast Session
When a NEW-SESSION message is received, a node X decides if it wishes
to join the session by examining the contents of the message. (The
contents of the message will obviously contain information about the
multicast session). The joining approach attempts to fultil the join
in an adjacent approach rather than resorting to localized broadcast
right away. If the immediate neighbouring nodes are nodes already on
the multicast tree, then this 1-hop 'peek' approach is very fast and
efficient. The presence of msm-id helps in identifying the likelihood
of a successful join. Our protocol does not cover the area of
notifying the senders the identities of receivers(old or new). A
node X joins a multicast session in one of several ways depending on
the situation:
1) Node X has a valid msm-id and has a neighbour that also has a
valid msm-id. (this is normally the case after tree initialization)
2) Node X does not have a valid msm-id and has a neighbour that also
has a valid msm-id. (Probably node X missed the NEW-SESSION
broadcast.)
3) Node X has a valid msm-id and does not have any neighbours with
valid msm-id. (Probably the neighbours have timed out that msm-ids. X
must therefore find other nodes that have valid msm-ids)
4) Node X does not have a valid msm-id and does not have any
neighbours with valid msm-id. (Probably node X missed the NEW-SESSION
broadcast.)
Case 1
Node X sends a JOIN-REQ to that neighbouring potential parent PP1.
Potential parent PP1 checks that X can be a child node (i.e. X has
a bigger msm-id than Y) of PP1 and sends a JOIN-ACK back to Node X.
Potential parent PP1 updates its Neighbour-Status table to indicate
that node X is a registered child of PP1. Node X updates its
Neighbour-Status table to indicate that node PP1 is a registered
parent of X.
Case 2
If Node X is aware that a neighbour Y can be a potential parent,
node X will also know Y's msm-id because it must have received Y's
beacon. Node X then assigns itself a msm-id using Y's as a
parameter. Node X's situation is now similar to case 1 and node X
will behave as in case 1.
Case 3-4
Node X initiates Branch Reconstruction (BR) with the msm-id. (Refer
Wu, Tay, and Toh Expires 24 May 1999 [Page 8]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
to Section 5.7 for BR)
A node may also receive a JOIN-NACK instead of a JOIN-ACK, if so,
node X will initiate BR based on the error code returned in the
JOIN-NACK. If X does not receive any reply with T3 secs, it will
initiate BR accordingly.
When a node PP1 receives a JOIN-REQ from a bigger-msm-id node X,
PP1 will be in one of the following situations:
1) be part of the multicast session already (as in case 1 above)
or 2) it has a msm-id but has not sent out any JOIN-REQ before.(this
happens when the node PP1 received the NEW-SESSION message and
determined its own msm-id. However the node PP1 was not interested in
joining the multicast session. Thus it did not send out any JOIN-REQ
of its own yet.)
or 3) it has a msm-id and has sent out JOIN-REQ pending reply. (as in
case 1 or 2 above)
or 4) it does not have a msm-id yet. (as in case 3 or 4 above)
PP1's reaction to receiving a JOIN-REQ (dependent on which situation
it is it as discussed above) is as follows:
Case 1
If PP1's msm-id is smaller than the requesting node X, it sends a
JOIN-ACK and updates its multicast state tables. if it is bigger or
equal, it sends a JOIN-ACK.error="msm id too small/equal" to the
requesting node. It updates the neighbour-Status table to indicate
the node X is now a registered child node of node PP1. However no
multicast traffic is forwarded to X yet until X increases its msm-
id to be bigger than PP1. PP1 will know when X has increased its
msm-id through X's beacon.
Case 2
PP1 must now join ('coerced' into joining by X) the multicast
session. It sends out a JOIN-REQ.passive to its own potential-
parent node. If PP1 successfully joins the multicast session, it
will send a JOIN-ACK.passive back to requesting node X. Otherwise,
it sends a JOIN-NACK with the appropriate error code. Since PP1 was
'coerced' into joining, it will not forward any traffic to X until
X sends a JOIN-CONF message to confirm that X has selected PP1 as
its parent. Note that this is slightly different from the case 1.
(In general, JOIN-REQ/ACK.passive and JOIN-CONF is used when the
parent node does not yet have a msm-id) During the time PP1 is
Wu, Tay, and Toh Expires 24 May 1999 [Page 9]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
waiting for X's JOIN-CONF, the links through PP1 are considered as
passive links. The passive links are converted to active links when
a JOIN-CONF from X is received. The JOIN-CONF from X will PP1 to
send its its parent a JOIN-CONF as well it the parent sent it a
JOIN-ACK.passive previously.
Case 3
PP1 waits until it receives a reply for its own JOIN-REQ or times
out. It sends a JOIN-ACK or JOIN-NACK depending on the success of
its own JOIN-REQ to node X.
Case 4
If it does not have a msm-id, then no node should have sent it a
JOIN-REQ. it sends a JOIN-NACK.error="NO msm-id yet" back to the
JOIN-REQ node.
All other nodes that receive a JOIN-REQ with a broadcast address will
forward the message provided the time-to-live is not zero yet. The
node must keep track of who sent the JOIN-REQ so that a reverse path
can be followed subsequently. A node PP1 may also receive a broadcast
JOIN-REQ, i.e. a JOIN-REQ with a broadcast address. PP1 will then
send out its JOIN-REQ but the ttl is always limited to one. It will
follow the behaviour as in case 3.
Only the core node does not try to send a JOIN-REQ out when it itself
receives JOIN-REQs.
5.5 Reaction to mobility/broken links during Joining Phase
We discuss how the protocol behaves when links break during Joining
Phase.
Case 1
X lookups Neighbour-Status table and sees Y as a Potential Parent.
X sends JOIN-REQ to Y. Y's link to X is broken thereafter. Hence, Y
is unable to reply. X eventually times out and goes into BR mode. A
broadcast JOIN-REQ is subsequently sent by X in BR mode. Y's status
as a potential parent is removed from X's Neighbour-Status table.
Case 2
X sends JOIN-REQ to Y. Y is not on multicast tree., so Y must join
multicast session as well. Y sends out JOIN-REQ.passive to Z. Z
sends JOIN-ACK.passive but at this time link between X and Y
breaks. Y tries to send to X but will not succeed. Since Y was a U-
node, and has no I-node children. Eventually it will time out and
prune itself off the tree. X will eventually go into BR mode as in
case 1.
Wu, Tay, and Toh Expires 24 May 1999 [Page 10]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
5.6 Forwarding Policy
The forwarding policy rules are as follows for multicast _data_
traffic(not control traffic):
1) When a multicast datagram is received, it first checks if the
originator is itself, if so, it will drop the datagram.
2) If a multicast datagram is received from its registered parent
node, it will forward to all registered child nodes.
3) If a multicast datagram is received from a registered child node,
it will forward to all other registered child nodes and its
registered parent node.
4) If a multicast datagram is received from any other node, it is not
forwarded to any other nodes.
5.7 Reaction to mobility/broken links
When a link breaks between two nodes, the node with the larger msm-id
is supposed to do recovery by going into BR mode. Nodes can also
enter BR mode because of unsuccessful joins to its neighbouring
nodes. A node X entering BR mode can be classified into having one
of the following initial states:
1) X has a valid msm-id but does not have any neighbour nodes that
can be potential parent or parent nodes.
2) X has a valid msm-id and has at least one neighbour node that can
be potential parent or parent nodes.
3) X does not have a valid msm-id and does not have any neighbouring
nodes that can be potential parent or parent nodes.
4) X does not have a valid msm-id and has at least one neighbouring
node that can be potential parent or parent nodes.
In cases 1 and 2, X may have child nodes whose parent node is X. i.e.
there is a sub-tree below X.
Initial State 1:
X sends a broadcast JOIN-REQ beginning with range R of two. If no
reply is received after T3 secs, R is increased by one. This is
repeated until the number of incremental attempts exceeds the
recover delay that may have been specified. If there is no reply,
then it means that the multicast session has either ended a long
Wu, Tay, and Toh Expires 24 May 1999 [Page 11]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
time ago or a network partition has taken place. If X has child
nodes, it will send a New-Partition-Id message to all its child
nodes. If X does not have any child nodes, then X can either begin
a new multicast session or X is unable to join the multicast
session.
If a JOIN-ACK is received by X, it indicates that X has
successfully joined the multicast session. X updates its Neighbour-
Status table to indicate that the neighbour node which sent the
JOIN-ACK as X's registered parent. If a JOIN-ACK.passive is
received, X sends a JOIN-CONF to the neighbour node that send the
JOIN-ACK.passive. X updates its Neighbour-Status table that the
neigbour is the registered parent of X. A JOIN-ACK.passive is
received because the was neighbour 'coerced' to join the multicast
session. Since more than one neighbour might do this, a JOIN-CONF
is necessary to select the neighbour to be the registered parent.
A node that sends out JOIN-ACK.passive does not forward any traffic
until it receives a JOIN-CONF. Other requesting nodes can turn this
node's passive links into active links if they send a JOIN-CONF to
this node. If a JOIN-ACK.error="msm-id too small" is received, X
increases its msm-id as required and sends a multicast beacon. If X
is unable to increase its msm-id because of child nodes(the child
nodes' msm-id may be equal or smaller then the required new value
for X), X sends an Modify-msm-id message to its child nodes before
increasing its own msm-id. X can detect if its child nodes have
increased their msm-id when it receives their beacons.
Initial State 2:
X sends a JOIN-REQ to the potential parent node PP1. If a JOIN-ACK
is received, then X updates its Neighbour-Status table that PP1 is
the registered parent of X. If no reply is received from PP1 after
T3 secs, X goes into BR mode with initial state 1.
Initial State 3:
X sends a broadcast JOIN-REQ as in Initial State 1. It's msm-id is
set to a random value. Any necessary adjustments will be in
response to a JOIN-ACK.error="msm-id too small" message.
Initial State 4:
X can determine a msm-id for itself based on its neighbour's msm-
id. It then re-enters BR with initial state 1.
In the case of a JOIN-REQ broadcast, the child nodes Cx of the node
X executing BR will also receive the JOIN-REQ. When they
rebroadcast it, they must keep track of the rebroadcasted JOIN-REQ
so that if a reply should return from one of the child node's(C*)
neighbor, the child (C*1) must check that the msm-id of the
Wu, Tay, and Toh Expires 24 May 1999 [Page 12]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
neighbour is smaller than its own, if not it will send a JOIN-
NACK(msm-id error) instead of forwarding the JOIN-ACK to its
parent. Child nodes which receive a JOIN-NACK will just forward it
along.
If X (the node executing BR) receives a JOIN-NACK(msm-id error)
forwarded through an on-tree child node, it is treated differently
than if it were received from other non-child nodes. To node X the
message means that a route exists to a potential parent but that
route runs through the its children's links instead. (This new
route may be the only available route to the rest of the multicast
tree). If the BR has no other routes to potential parents to choose
from, then it must change its msm-id such that it is now larger
than its children. This process continues to the descendent node
which swapped the JOIN-ACK with the JOIN-NACK(msm-id error). This
is a really worse case scenario. The BR node can initiate the
change by sending a Reverse-msm-id message to the affected child
nodes. The Reverse-msm-id message is forwarded only to downstream
neighbours that require the change as a result of the BR node's new
msm-id. It will stop at the node which swapped the JOIN-ACK with
JOIN-NACK.
We have looked at what happens when the broken link is between a
single upstream node and a single downstream node. We want to refine
the basic policy if the broken link is between a single upstream node
and multiple downstream nodes.
If there originally was a group of neighbouring nodes participating
in the same multicast session and their common parent node moves
away, then instead of having all the nodes broadcast a JOIN-REQ, it
makes more sense to have only a subset of those nodes broadcast the
JOIN-REQ. This is done by introducing a short random delay before a
JOIN-REQ is sent if a node has more than one neighbour sharing the
same parent who is also a member of the multicast session. If the
node hears its neighbour JOIN-REQ, it will delay its own JOIN-REQ
until either it hears a JOIN-ACK to its neighbour and some timer
timouts. A node X will wait random time before transmitting JOIN-REQ.
if it hears a JOIN-REQ from a neighbour for a parent node that is
also suitable for X. X will delay its JOIN-REQ for Ts. If it hears a
JOIN-ACK from the PP1 node, it will send its own JOIN-REQ directly to
PP1. If no reply is heard, then it will broadcast its own JOIN-ACK
after Ts.
We look at some link breakage scenarios and illustrate how BR works
out in each case.
5.7.1 Reaction to leaf node movement
Wu, Tay, and Toh Expires 24 May 1999 [Page 13]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
There are two situations of leaf node movement.
5.7.1.1 Situation 1: Leaf node moves to new location where multicast
tree is already established
When the leaf node C1 moves, its parent P1 will eventually detect
this. P1 will proceed to prune itself from the tree if P1 is a U-
node and has no other child nodes. The pruning is as similar to
that described in Section 5.9 Group Membership except the parent
does not receive explicit notification from the child node. P1 has
received implicit notification as a result of broken link to C1.
When C1 moves into new location L2, it can hear node P2's multicast
beacon and discover that a multicast tree already exists there.
(Another way that C1 can discover P2 is on the multicast tree is
hearing multicast traffic for that session being forwarded by P2).
If P2 has a smaller msm-id than C1 then C1 can immediately send a
JOIN-REQ to P2. If P2 has a larger msm-id, then C1 will increase
its msm-id using P2's msm-id as a parameter into Calculate_MSM_ID()
to acquire its new msm-id. C1 then sends another JOIN-REQ using its
new msm-id. P2 replies with a JOIN-ACK to C1 after it receives the
second JOIN-REQ with the new msm-id from C1. It will subsequently
forward any multicast traffic to C1 as well. This is similar to the
tree initialization process.
[Note: C1 does not send a leave notification control message to its
old parent P1. Reason for not sending: Network resource consumed in
sending a leave message to P1 from C1's new location, must include
resource consumed to establish path to old parent no de etc.]
5.7.1.2 Situation 2: Leaf node moves to new location where no
multicast tree exists
The behaviour of the original parent P1 is as in situation 1. When
leaf node C1 reaches new location L2, it is unable to discover any
existing neighbours who can serve as parent nodes. It then
initiates a broadcast BR to its neighbours. Neighbouring nodes
which receive the JOIN-REQ will send out their own JOIN-
REQ.passive. This is repeated at each node until the range reaches
0. An on-tree node that receives the JOIN-REQ.passive will send a
JOIN-ACK.passive. The JOIN-ACK.passive travels along the reverse
path taken by the original JOIN-REQ and JOIN-REQ.passive. JOIN-REQ-
PENDING table. The multicast delivery tree now extends to C1
through a set of passive links. C1 must send a JOIN-CONF along one
of the passive links to turn it into an active parent link. The
parent nodes will start to forward traffic only when a JOIN-CONF is
received.
Wu, Tay, and Toh Expires 24 May 1999 [Page 14]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
5.7.2 Reaction to Intermediate node movement
We explain the action taken by an intermediate node that moves such
that the link to is parent is broken but the link to its child
nodes are still active. The action taken by the intermediate node
is similar to that in 5.7.1. except if it receives a JOIN-
ACK.error="msm-id too small". Then the intermediate must send a
Modify-msm-id message to all its child nodes. If the intermediate
node's child links are broken as well, then intermediate node need
only to perform the BR if it is a I-node.
5.7.3 Reaction to Sid node movement
When Sid moves such that its child links are broken, the child
nodes will begin a BR process towards the Sid. Only a subset of the
child nodes actually broadcast the JOIN-REQ as a result of the
optimization performed.
5.8 Reaction to Network partition
A network partition will cause the multicast tree to be divided into
different segments. When a partition takes place, the node X at the
point of partition will behave as though it has lost the parent link
and will behave as discussed in section X and X. If BR does succeed
after n-tries, we can assume that a network partition has take place.
Within each partition, multicast traffic continues to be forwarded in
accordance to the forwarding rules as stated in Section 6.4, i.e.
intra-partition traffic can continue as per normal but inter-
partition traffic cannot take place.
When this happens, the child node (who is also the one with the
smallest-id within this partition) at the point of link breakage will
become the new temporary Sid-temp, i.e. the node with the smallest
msm-id within that partition. At a later time, the network may be
such that a path now exists either between the Sid-temp or one of its
child node back to the original partition.
When a partition takes place, the Sid-temp should send a Partition-Id
change message to its decendent nodes. The message can be sent
standalone or piggybacked along multicast traffic. This will update
all child nodes eventually. The multicast beacon will carry the new
partition-id.
Subsequently, any node that hears a beacon for the same multicast
session but with a different partition id will send a FOUND_PARTITION
message to its own partition's Sid-temp. Only the node with the
Wu, Tay, and Toh Expires 24 May 1999 [Page 15]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
smallest msm-id will send the message to its own partition's core.
The node in the other partition will not. If there is a tie, the one
with largest unique id will inform its core. The core will send a
JOIN-REQ back to its child node if after it compares the msm-ids,
unique ids, of the reporting nodes and the other partitions reporting
nodes.
The temp core may receive several of such messages. It will choose
the one with the best routing metric and send a JOIN-REQ message back
to the node. Intermediate nodes which receive the JOIN-REQ will react
as discussed in Section 5.7. When a JOIN-ACK returns in response to
the JOIN-REQ, the temp core may need to send out Modify-msm-id
messages to a subset of its child ndoes that lie on the path to the
other partition.
So in this situation, we have two partitions with joining together.
The node with the smallest msm-id will eventually become the new Sid.
However we have a problem if we have two partitions whose core have
the same msm-id, then neither partition will join with each other but
they are still in different partitions because the original core may
be destroyed.
5.9 Group Membership
Group membership is dynamic in nature, any node is free to join or
leave the node at any time except for the Sid. If Sid wishes to
leave, another node will have to be designated as the new Sid before
the present one can leave.
Nodes wishing to join the multicast session after it has already
"started" will do so by sending a JOIN-REQ to any of the on-tree
nodes as discussed in Section 5.4. On-tree nodes can be detected by
listening to its neighbours' beacons and detecting if any of the
neighbours are already an on-tree node. If the node is unable to
locate any neighboring on-tree nodes, it will begin a N-hop-lifetime
JOIN-REQ broadcast to its neighbours. N begins from 2 to MAX-TTL.
After sending the broadcast, it will wait for a reply. If no reply is
received within time T1, it will increase N by one and send again.
Any node that receives the JOIN-REQ and is not an on-tree node will
update its NEIGHBOUR-STATUS table and rebroadcast. The behaviour here
is similar to tree initialization except that the intermediate nodes
may not yet have a msm-id. Similarly the I-node also does not yet
have a msm-id. Eventually, the JOIN-REQ will be received by an on-
tree node which will reply with a JOIN-ACK. The nodes along the path
from the I-node to the on-tree node will then dynamically program
their msm-id using their respective parent node's msm-id as parameter
into function Calculate_Initial_MSM_ID.
Wu, Tay, and Toh Expires 24 May 1999 [Page 16]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
A leaf node can leave the multicast session by sending a SESSION-
LEAVE message to its parent node. If the parent node is a U-node in
the multicast session. It too will send a SESSION-LEAVE message to
its own parent node provided it does not have other child nodes.
5.10 Terminating the Multicast Session
Only Sid can close a multicast session. Nodes are of course free to
leave as and when subject to conditions in Section 5.9 - Group
Membership.
Sid closes the multicast session by sending a SESSION-END message
down to its child nodes. This is rebroadcasted by intermediate nodes.
All nodes that receive the SESSION-END message purge any
entries/state associated with the multicast session. The nodes store
the session-id for up to time T4 before finally expiring that entry.
This is to take into consideration partitioned networks. If the
network is partitioned, the original Sid may have closed the session
but the other partitions have not since they did not receive the
message. For this reason, nodes which receive the END-SESSION message
will remember the session-id for time T4. If the node hears a beacon
with state about the session. It will forward the END-SESSION message
to it.
Each multicast entry in the Neighbour-Status table has an associated
timeout value. Session termination can also be done via a soft state
approach, i.e. when the entries expire in the Neighbour-Status table.
6. msm-id
The Multicast Session Node ID (msm-id) is a numerical value that
identifies a node with a particular multicast session as well as give
an indication of the node's relative distance from the root of the
tree.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multicast Session Node ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.1.1 Calculating the msm-id
Address Mapping Function - Calculate_Initial_MSM_ID
An address mapping function Calculate_Initial_MSM_ID is required to
map the node's current hop count from the session initiator into a
larger address space. We illustrate with an example of how the
Wu, Tay, and Toh Expires 24 May 1999 [Page 17]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
function should perform:
Suppose M is the number of bits of msm-id, let's say 16 bits. The
value is calculated using a function that takes in the hop count in
the NEW-SESSION message and returns a value that is within the 16bit
range.
The value returned must be an increasing function of hop count**. We
do not give a specific function that one must use here. A possible
function, (though not a very good one is):
msm-id=INT((2^(M/2))/hop_count)
The idea is the function will give nodes a widely spaced address
within the allowable range with the hop count as a initial
parameter. The larger the hop count, the larger should be the
multicast node ID and thus msm-id as well.
**During multicast delivery path initialization, we just want to
use hop count to "jumpstart" the node's msm-id, subsequently the
node's msm-id can change as it moves around. Its msm-id would then
be a function of the upstream and downstream nodes' msm-ids.
We want to utilize a sparse address space because we foresee such a
situation:
Node X ===> Node Y ===> Node Z ===> downstream nodes
Suppose at time t, node X and node Z can communicate directly. Node
Z has a set of downstream nodes. At time t+1, link between node X
and node Z breaks. They must now communicate through an
intermediate node Y.
If we are just using hop-count directly as msm-id, then Z and its
downstream nodes must all increment their msm-id by one since
datagrams must go through 1 extra hop through Y. Some overhead will
be required to inform Z's downstream nodes to increment their msm-
ids. If we use a sparse address space, Y can just acquire an
address that is of the nature (X+Z) div 2. The increasing msm-id
property is maintained and Z and its sub-tree need not update their
msm-ids. There are other situations when this is also
useful.
To ensure that the msm-id remains consistent, each node would
require a self-check routine. This routine would possibly be based
on the msm-id of one's neighbours. Another issue is the scalability
and numbering overflow of msm-id. This will be examined in our
future work.
Wu, Tay, and Toh Expires 24 May 1999 [Page 18]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
7. Multicast Beacon
The Multicast Beacon can be "piggy-backed" on existing underlying
layers' beacons, if they are available. Alternatively a separate
daemon to periodically broadcast the multicast beacon can be used,
existing within the multicast routing layer.
The beacon contains the following fields:
1) Node-unique-id
2) msm-id and status (member/non-member;lifetime)
3) Registered parent msm-id and unique-id
4) Registered child msm-id and unique-id
5) partition_id(initially will be the original core's id)
Every node must implement the beacon mechanism. The beacon is a
one-hop broadcast message sent by every node. The main use of the
beacon is to detect link breakages within a fixed time
interval(this is be closely related to the beacon interval)
8. Routing Metric
We are investigating how routing metrics such as
associativity[7], received signal strength[8] and can be
incorporated into AMRIS to select "better" routes. This will be
discussed further insubsequent drafts.
9. Tables 1. Neighbour-Status Table
[work-in-progress]
-----------------------------------------------------------
|Neighbour| msm-id|Relation-Type |Status|Remaining|Routing|
|unique-id| |(eg. parent or| |Timeout |Metric |
| | | child) | |Value | |
-----------------------------------------------------------
10. Message Formats
[work-in-progress] 10.1 NEW-SESSION
10.2 JOIN-REQ/JOIN-REQ.passive
10.3 JOIN-ACK/JOIN-ACK.passive/JOIN-NACK
Wu, Tay, and Toh Expires 24 May 1999 [Page 19]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
10.5 JOIN-CONF
10.5 Modify-msm-id
10.6 LEAVE-SESSION/END-SESSION
11. Detailed psuedocode [work-in-progress]
12. Timers Description
Timer Name Timer value Timer Purpose
T1 NEW-SESSION Lifetime
T2 Random delay between receipt of NEW-
SESSION and subsequent rebroadcast
T3 Time out value for JOIN-REQ
T4 End-Session message lifetime
13. Future Directions
Perform Simulation to investigate performance and feasibility.
Investigate overhead of signalling requirements. Investigate QOS
aspects.
14. Applicability Statement
* Does the protocol provide support for unidirectional links?
(if so,
how?)
- No, bidirectional links are assumed with the first draft.
* Does the protocol require the use of tunneling? (if so, how?)
- No.
* Does the protocol require using some form of source routing?
(if
so, how?)
- No.
* Does the protocol require the use of periodic messaging? (if
so,
how?)
Wu, Tay, and Toh Expires 24 May 1999 [Page 20]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
- Yes. The periodic messaging is in the form of a periodic
beacon.
* Does the protocol require the use of reliable or sequenced
packet
delivery? (if so, how?)
- No.
* Does the protocol provide support for multiple hosts per
router?
(if so, how?)
- This will be covered in subsequent drafts.
* Does the protocol support the IP addressing architecture? (if
so,
how?)
- Yes, the protocol is based on the IP multicast host group
model.
* Does the protocol require link or neighbor status sensing (if
so,
how?)
- Yes, this is done either by the periodic beacon or by
underlying layers if such facilities exist there
* Does the protocol have dependence on a central entity? (if so,
how?)
- No.
* Does the protocol function reactively? (if so, how?)
- Yes, the protocol reacts accordingly to maintain tree when
links are broken
* Does the protocol function proactively? (if so, how?)
- No.
* Does the protocol provide loop-free routing? (if so, how?)
- Yes.
* Does the protocol provide for sleep period operation? (if so,
Wu, Tay, and Toh Expires 24 May 1999 [Page 21]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
how?)
- TBD.
* Does the protocol provide some form of security? (if so, how?)
- TBD.
* Does the protocol provide support for utilizing multi-channel,
link-layer technologies? (if so, how?)
- Yes. TBD.
15. References
[1] T. Pusateri. Distance Vector Multicast Routing Protocol.
Internet-Draft, draft-ietf-idmr-dvmrp-v3-06.txt, March 1998.
[2] John Moy. Multicast extensions to OSPF. RFC1584, March 1994.
[3] A.J. Ballardie. Core Based Trees(CBT) Multicast Routing
Architecture, RFC2201 (September 1997).
[4] D.Estrin, D.Farinacci, A. Helmy, D.Thaler; S. Deering, M.
Handley, V.Jacobson, C. Liu, P.Sharma, L. Wei. Protocol
Independent
Multicast-Sparse Mode (PIM-SM): Protocol Specification. RFC2362,
June
1997.
[5] S. Deering, D. Estrin, D. Farinacci, V. Jacobson, A. Helmy, and
L. Wei.
Protocol Independent Multicast Version 2, Dense Mode
Specification. Internet-Draft, draft-ietf-idmr-pim-dm-spec-05.ps,
May 21, 1997.
[6] Corson, S., and J. Macker, "Mobile Ad hoc Networking (MANET):
Routing
Protocol Performance Issues and Evaluation Considerations",
Internet Draft, draft-ietf.manet-issues-00.txt, September 1997.
[7] C-K Toh, "Associativity Based Routing For Ad Hoc Mobile Networks"
Wireless Personal Communications Journal', Special Issue on
Mobile Networking & Computing Systems, Vol. 4, No. 2, March 1997.
[8] Rohit Dube, Cynthia D. Rais, Kuang-Yeh Wang and Satish K.
Tripath.
Signal Stability based Adaptive Routing (SSA) for Ad-Hoc Mobile
Wu, Tay, and Toh Expires 24 May 1999 [Page 22]
INTERNET-DRAFT AMRIS Functional Specification 17 November 1998
Networks, CS-TR-3646, August 1996.
This work was supported in part by National University of Singapore
ARF grant RP960683.
Author's Address
Questions about this document can also be directed to the authors:
C.W. Wu
Mobile Computing Group
School of Computing
National University of Singapore
10 Kent Ridge Crescent
Singapore 119260
(65) 472-2628
wuchunwe@comp.nus.edu.sg
Y.C. Tay
Department of Mathematics
National University of Singapore
10 Kent Ridge Crescent
Singapore 119260
(65) 874-2949
tay@acm.org
C-K. Toh
Mobile Multimedia & HiSpeed Networking Lab
School of Electrical and Computer Engineering
Georgia Institute of Technology
Atlanta, Georgia GA 30332, USA
C-K.Toh@acm.org
Wu, Tay, and Toh Expires 24 May 1999 [Page 23]