[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