[openib-general] Multicast address aliasing in IPoIB
Michael S. Tsirkin
mst at mellanox.co.il
Sun Sep 5 00:47:09 PDT 2004
Hello!
Quoting Dror Goldenberg (gdror at mellanox.co.il) "[openib-general] Multicast address aliasing in IPoIB":
> IPoIB defines no aliasing in the mapping of IP multicast address into IPoIB HW
> addresses.
> In Ethernet, there is an aliasing, i.e. more than one IP address can map into
> the same
> Ethernet multicast MAC address.
>
> In short: IP to Ether takes 24 LSbits from the IP address
> IP to IB takes 28 LSbits from the IP address (which are
> essentially the whole
> IP address, the remaining 4 bits are "class D prefix").
>
> The problem is that the current IPoIB driver interfaces the Linux kernel as if
> it were an Ethernet driver.
> Therefore, the IP layer will not notify the net_device when
> a new MC
> address is added if it maps to the same MAC address. It will rather increment
> the
> reference count of the MAC address (net_device->mc_list->dmi_user) and won't
> call
> net_device->set_multicast_list().
> Therefore, if a user just adds itself to an IP MC group (setsockopt with
> IP_ADD_MEMBERSHIP), then if the IPoIB driver already has this Ether MAC address
> in its filter because of a previous registration to another IP MC group, then
> the IPoIB driver
> will not get any notification, and the user will not get registered to the MCG.
>
> I was wondering what should be the solution for that in the current kernels
> (gen1) and
> in future kernels (gen2).
>
What about registering for all possible IB multicast groups, up front?
There are 2^(28-24)=16 options, so you end up being registered in
16 multicast groups, which is not that huge an overhead.
Upper layers of the IP protocol will filter the right packets
as they do for ethernet.
This is essentially what
we do with IP over IB anyway - emulating broadcast with multicast.
MST
More information about the general
mailing list