Classifier/Multicast maintains a multicast forwarding
cache. There is one multicast classifier per node. The node stores a
reference to this classifier in its instance variable
multiclassifier
_. When this classifier receives a packet, it
looks at the source, group information in the packet headers,
and the interface that the packet arrived from (the incoming interface
or iif); does a lookup in the MFC and identifies the slot that should
be used to forward that packet. The slot will point to the
appropriate replicator.
However, if the classifier does not have an entry for this
source, group, or the iif for this entry is different, it will
invoke an upcall []new-group for the classifier, with one of
two codes to identify the problem:
- cache-miss indicates that the classifier did not
find any source, group entries;
- wrong-iif indicates that the classifier found
source, group entries, but none matching the interface
that this packet arrived on.
These upcalls to TCL give it a chance to correct the situation:
install an appropriate MFC-entry (for cache-miss) or change
the incoming interface for the existing MFC-entry (for
wrong-iif). The return value of the upcall determines
what classifier will do with the packet. If the return value is
``1'', it will assume that TCL upcall has appropriately modified MFC
will try to classify packet (lookup MFC) for the second time. If the
return value is ``0'', no further lookups will be done, and the packet
will be thus dropped.
[]add-rep creates a slot in the classifier
and adds a replicator for source, group, iif to that slot.
Tom Henderson
2011-11-05