Node support for multicast is realized in two primary ways: it serves
as a focal point for access to the multicast protocols, in the areas
of address allocation, control and management, and group membership
dynamics; and secondly, it provides primitives to access and control
interfaces on links incident on that node.
rX
[]expandaddr, &
[]allocaddr &
Class procedures for address management.
[]expandaddr is now obsoleted.
[]allocaddr allocates the next available multicast
address.
[]start-mcast, &
[]stop-mcast &
To start and stop multicast routing at that node.
[]notify-mcast &
[]notify-mcast signals the mrtObject at that node to
recompute multicastroutes following a topology change or
unicast route update from a neighbour.
[]getArbiter &
returns a handle to mrtObject operating at that node.
[file-handle]dump-routes &
to dump the multicast forwarding tables at that node.
[s g iif code]new-group &
When a multicast data packet is received, and the multicast
classifier cannot find the slot corresponding to that data
packet, it invokes []Node nstproc new-group to
establish the appropriate entry. The code indicates the
reason for not finding the slot. Currently there are two
possibilities, cache-miss and wrong-iif. This procedure
notifies the arbiter instance to establish the new group.
[a g]join-group &
An agent at a node that joins a particular group invokes
``node join-group agent group''. The
node signals the mrtObject to join the particular group,
and adds agent to its list of agents at that
group. It then adds agent to all replicators
associated with group.
[a g]leave-group &
Node instproc leave-group reverses the process
described earlier. It disables the outgoing interfaces to the
receiver agents for all the replicators of the group, deletes
the receiver agents from the local Agents
_ list; it
then invokes the arbiter instance's
[]leave-group.
[s g iif oiflist]add-mfc &
Node instproc add-mfc adds a multicast forwarding cache
entry for a particular source, group, iif.
The mechanism is:
- create a new replicator (if one does not already exist),
- update the replicator
_ instance variable array at the node,
- add all outgoing interfaces and local agents to the
appropriate replicator,
- invoke the multicast classifier's []add-rep
to create a slot for the replicator in the multicast
classifier.
[s g oiflist]del-mfc &
disables each oif in oiflist from the replicator for s, g.
The list of primitives accessible at the node to control its interfaces are listed below.
rX
[ifid link]add-iif, &
[link if]add-oif &
Invoked during link creation to prep the node about its
incoming interface label and outgoing interface object.
[]get-all-oifs &
Returns all oifs for this node.
[]get-all-iifs &
Returns all iifs for this node.
[ifid]iif2link &
Returns the link object labelled with given interface
label.
[link]link2iif &
Returns the incoming interface label for the given
link.
[oif]oif2link &
Returns the link object corresponding to the given outgoing
interface.
[link]link2oif &
Returns the outgoing interface for the link (ns object that is incident to the node).
[src]rpf-nbr &
Returns a handle to the neighbour node that is its next hop to the
specified src.
[s g]getReps &
Returns a handle to the replicator that matches s, g.
Either argument can be a wildcard (*).
[s g]getReps-raw &
As above, but returns a list of key, handle pairs.
[s g]clearReps &
Removes all replicators associated with s, g.
Tom Henderson
2011-11-05