Subject: Re: [Ipoverib] remaining multicast issues - one more try

From: Bill Fenner <[email-masked]>
Date: Tue, 18 Jun 2002 15:15:49 -0700

I removed a couple of round trips from the quoting here, in order
to simplify the exchange.  Apologies if I misunderstood something and
acidentally modified or misattributed someone's meaning.

Jerry's original #2 suggestion:

>2. Modify IP group management protocol module to do some extra
>work in case the link type is IB. An IP router will explicitly
>join any new multicast group that comes into existence. The
>router needs to figure out when to leave too (details from
>Vivek).

Vivek replies:

>        In existing implmementation the routing daemon on receiving an
>        IGMP report adds the IP multicast group to the interface list.
>        It tells the kernel to add the group by a socket option (in
>        BSD/LInux implementations). The function after it adds the IP
>        group to the interface can call the interface's device
>        specific function - for IPoIB this function will ask the
>        driver to join the IB group.

How does the router receive the IGMP report?  In IGMPv1 and IGMPv2, the
report is sent to the group being reported, with the assumption that the
router, being promiscuous to multicast, will receive it.  IGMPv3 changes
this to send to a protocol-specific "all-IGMPv3-routers" group, so doesn't
have this problem in an IB environment, but IGMPv3 is not widely deployed.

Existing router implementations of which I'm aware (mrouted/gated/pimd/etc)
don't specifically add a group to an interface in the kernel; instead they
wait for data to arrivate and add a forwarding cache entry for the given
source and group.  The router implementations would have to be modified
to inform the kernel of group memberships on a given interface.

Modifying host implementations to send IGMP to the all-routers group
could work, but that's back to modifying the IP stack for an IB-specific
case.

  Bill

_______________________________________________
IPoverIB mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/ipoverib

---

From: Vivek Kashyap <[email-masked]>
Date: Tue, 18 Jun 2002 16:11:06 -0700 (PDT)

> have this problem in an IB environment, but IGMPv3 is not widely deployed.

        For IGMPv1/v2 the following will have to be done in the driver
        in the thread where IP_ADD_MEMBERSHIP is called:

                        check for corresponding IB group
                        if IB group exists 
                                IB_join it
                                IB_send report to group
                        else
                                IB_create IB group
                                IB_send report to all-routers MGID or
                                could send it to all-hosts group

        It is easy to ensure that the report, is sent out the
        all-hosts MGID. After the first such send, subsequent periodic
        reports need only be sent on the group specific MGID.

        One can't avoid this step but one can localise it in the
        driver. 

> to inform the kernel of group memberships on a given interface.

        My suggestion is based on my reading of BSD and Linux
        multicast routing howto's:

        For example, in the case of BSD - a setsockopt()
        DVMRP_ADD_LGRP is sent down by mrouted/gated in response to
        IGMP_HOST_MEMBERSHIP_REPORT. The daemon lets the kernel know
        of the group and the interface. In this execution thread, when
        the group entry is created in the kernel, the associated
        interface can be called to join the relevant IB group (or such
        a join can be scheduled). For, the interfaces that don't have
        such a need the call can be a no-op (one can of course code
        such changes in manyways). Implementations that don't support
        IPoIB are unaffected and non-IPoIB drivers are unaffected
        too. 

        This group_list is consulted by the ip forwarding code to
        decide if a datagram needs to be output on the network(s)
        connected to local interfac(es). Only if there is a group
        entry associated with the interface is the packet output.

        mrouted/gated also send down ADD_MRT command to update the
        multicast route entries (in BSD).

        In this model there is no change required in the routing
        daemons. 

> could work, but that's back to modifying the IP stack for an IB-specific

	No that would be done in the IPoIB interface driver.

Vivek

-- 
Vivek Kashyap
Linux Technology Center, IBM
[email-masked] 
[email-masked] 
503 578 3422 (o)