McastProtocol class

This is the base class for the implementation of all the multicast protocols. It contains basic multicast functions: rX []start, []stop & Set the status
of execution of this protocol instance.
[]getStatus & return the status of execution of this protocol instance.
[]getType & return the type of protocol executed by this instance.
[code args]upcall & invoked when the node classifier signals an error, either due to a cache-miss or a wrong-iif for incoming packet. This routine invokes the protocol specific handle, handle-code with specified args to handle the signal.

A few words about interfaces. Multicast implementation in ns assumes duplex links i.e. if there is a simplex link from node 1 to node 2, there must be a reverse simplex link from node 2 to node 1. To be able to tell from which link a packet was received, multicast simulator configures links with an interface labeller at the end of each link, which labels packets with a particular and unique label (id). Thus, ``incoming interface'' is referred to this label and is a number greater or equal to zero. Incoming interface value can be negative (-1) for a special case when the packet was sent by a local to the given node agent.

In contrast, an ``outgoing interface'' refers to an object handler, usually a head of a link which can be installed at a replicator. This destinction is important: incoming interface is a numeric label to a packet, while outgoing interface is a handler to an object that is able to receive packets, e.g. head of a link.

Tom Henderson 2011-11-05