There is one mrtObject (aka Arbiter) object per multicast capable
node. This object supports the ability for a node to run multiple
multicast routing protocols by maintaining an array of multicast
protocols indexed by the incoming interface. Thus, if there are
several multicast protocols at a node, each interface is owned by just
one protocol. Therefore, this object supports the ability for a node
to run multiple multicast routing protocols. The node uses the
arbiter to perform protocol actions, either to a specific protocol
instance active at that node, or to all protocol instances at that
node.
rX
[instance]addproto &
adds the handle for a protocol instance to its array of
protocols. The second optional argument is the incoming
interface list controlled by the protocol. If this argument
is an empty list or not specified, the protocol is assumed to
run on all interfaces (just one protocol).
[protocol]getType &
returns the handle to the protocol instance active at that
node that matches the specified type (first and only
argument). This function is often used to locate a protocol's
peer at another node. An empty string is returned if the
protocol of the given type could not be found.
[op, args]all-mprotos &
internal routine to execute ``op'' with ``args''
on all protocol instances active at that node.
[]start &
[]stop &
start/stop execution of all protocols.
[dummy]notify &
is called when a topology change occurs. The dummy argument is
currently not used.
[file-handle]dump-mroutes &
dump multicast routes to specified file-handle.
[G, S]join-group &
signals all protocol instances to join S, G.
[G, S]leave-group &
signals all protocol instances to leave S, G.
[code, s, g, iif]upcall &
signalled by node on forwarding errors in classifier;
this routine in turn signals the protocol instance that owns
the incoming interface (iif) by invoking the
appropriate handle function for that particular code.
[rep, s, g, iif]drop &
Called on packet drop, possibly to prune an interface.
In addition, the mrtObject class supports the concept of well known
groups, , those groups that do not require explicit protocol support.
Two well known groups, ALL_ROUTERS and ALL_PIM_ROUTERS
are predefined in ns.
The mrtObject../ns-2/tcl/mcast/McastProto.tcl defines
two class procedures to set and get information about these well known groups.
rX
[name]registerWellKnownGroups &
assigns name a well known group address.
[name]getWellKnownGroup &
returns the address allocated to well known group, name.
If name is not registered as a well known group,
then it returns the address for ALL
_ROUTERS.
Tom Henderson
2011-11-05