[Xorp-hackers] PIM and IGMP
Pavlin Radoslavov
pavlin@icir.org
Thu, 07 Jul 2005 11:12:18 -0700
> > How hard would it be to hack the code so that I could get certain multicast
> > addresses from being advertised across 2 different interfaces. Say I have 2
> > NIC cards and one is on an external network and one on the internal.
> > 239.x.x.x multicast is external and needs to be seen by hosts internally and
> > 238.x.x.x multicast is internal and should never be known externally. Would
> > there be a particular file that I could put a filter in?
>
> There is some initial support for multicast scoping, but it is
> incomplete, and it doesn't cover what you need.
> Basically, what we have is:
>
> * A generic class PimScopeZoneTable that contains information about
> configured multicast filters per interfaces.
>
> * XRL interface to configure those filters:
> "add_config_scope_zone_by_*" and "delete_config_scope_zone_by_*"
> inside xrl/interfaces/pim.xif
>
> * Support in the PIM Bootstrap implementation to use the above
> scoping information.
>
> What we don't have is:
>
> * Hooks in the rtrmgr templates (etc/templates/pimsm4.tp and
> etc/templates/pimsm6.tp) to configure the multicast filters.
> Adding those hooks should be trivial.
>
> * Support in the handling of the PIM Join/Prune and Assert messages
> to consider the PimScopeZoneTable when accepting or transmitting
> those control messages.
> Adding support for this shouldn't be very difficult, but requires
> some careful considerations where exactly to put the mods.
> E.g., in case of PIM Join/Prune messages we need to filter out
> only some of the entries inside the message rather than the whole
> message.
>
> In any case, the existing code for the Bootstrap scoping per
> interface (search for pim_scope_zone_table) can help to
> understand the code.
>
> * Documentation to describe the configuration once it is
> implemented :)
I forgot to add the following to the list:
* Support inside PIM-SM to filter-out the add/delete MLD/IGMP
group membership. This should be trivial and should be done
inside the PimNode::add_membership() and
PimNode::delete_membership() methods.
* Support to the MLD/IGMP module for multicast scoping.
Currently, the MLD/IGMP module doesn't have any support, but
it can be implemented by following the model in the PIM-SM
module.
Pavlin