[openib-general] Multicast address aliasing in IPoIB
Dror Goldenberg
gdror at mellanox.co.il
Mon Aug 30 13:28:00 PDT 2004
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20040830/1c355280/attachment.html>
More information about the general
mailing list