Centralized Multicast

CtrMcast is inherits from McastProtocol. One CtrMcast agent needs to be created for each node. There is a central CtrMcastComp agent to compute and install multicast routes for the entire topology. Each CtrMcast agent processes membership dynamic commands, and redirects the CtrMcastComp agent to recompute the appropriate routes. rX []join-group & registers the new member with the CtrMCastComp agent, and invokes that agent to recompute routes for that member.
[]leave-group & is the inverse of []join-group.
[]handle-cache-miss & called when no proper forwarding entry is found for a particular packet source. In case of centralized multicast, it means a new source has started sending data packets. Thus, the CtrMcast agent registers this new source with the CtrMcastComp agent. If there are any members in that group, compute the new multicast tree. If the group is in RPT (shared tree) mode, then
  1. create an encapsulation agent at the source;
  2. a corresponding decapsulation agent is created at the RP;
  3. the two agents are connected by unicast; and
  4. the S,G entry points its outgoing interface to the encapsulation agent.

CtrMcastComp is the centralised multicast route computation agent. rX []reset-mroutes & resets all multicast forwarding entries.
[]compute-mroutes & (re)computes all multicast forwarding entries.
[source, group]compute-tree & computes a multicast tree for one source to reach all the receivers in a specific group.
[source, group, member]compute-branch & is executed when a receiver joins a multicast group. It could also be invoked by []compute-tree when it itself is recomputing the multicast tree, and has to reparent all receivers. The algorithm starts at the receiver, recursively finding successive next hops, until it either reaches the source or RP, or it reaches a node that is already a part of the relevant multicast tree. During the process, several new replicators and an outgoing interface will be installed.
[source, group, member]prune-branch & is similar to []compute-branch except the outgoing interface is disabled; if the outgoing interface list is empty at that node, it will walk up the multicast tree, pruning at each of the intermediate nodes, until it reaches a node that has a non-empty outgoing interface list for the particular multicast tree.

Tom Henderson 2011-11-05