[openib-general] Multicast address aliasing in IPoIB
David M. Brean
David.Brean at Sun.COM
Thu Sep 9 05:52:20 PDT 2004
Hello,
[I saw your recent email regarding the a potential request to change the
I-D at the next IETF meeting, so decided to reply using this email,
since it describes the problem.]
The IBTA allows multiple MGIDs to map to a MLID. That is the aliasing
mechanism on IB. As a result, it seems ok to have IP multicast
addresses to map 1-1 to MGIDs. As you know, the IPoIB multicast
hardware address is a special format of the MGID.
So, the OS should not need to map more than one IP multicast address to
a IPoIB hardware address. [There are other steps needed to program the
CA interface and obviously the SM must perform some internal mapping
management.]
Does that solve the problem?
-David
Dror Goldenberg wrote:
> 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).
>
> For gen2, will it be possible to define a new medium for the IPoIB
> driver (not ARPHRD_ETHER),
> such that arp_mc_map() will map the entire IP address into the HW
> address ? Today it looks
> impossible, because arp_mc_map() just overrides bits 31:24 of the IP
> address.
> For gen1, what is that we can do ? Is there a way to obtain such an
> event from the in_device ?
> If not, then I don't see any clean escape. Is it possible to
> periodically check out the in_device
> multicast list and see if anything has changed ? would that cause any
> problem during the transition
> periods ? Any other idea of how to do that without a kernel patch ?
>
> - Dror
>
> * For reference:
> The algorithm for mapping IP mcast address to Ether mcast address
> is defined in
> RFC 1113 section 6.4., and for IB in
> draft-ietf-ipoib-ip-over-infiniband-07.txt section 4.0.
>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>openib-general mailing list
>openib-general at openib.org
>http://openib.org/mailman/listinfo/openib-general
>
>To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>
>
More information about the general
mailing list