[Openib-windows] IPoIB GUID to MAC conversion

Yossi Leybovich sleybo at mellanox.co.il
Thu May 26 00:55:09 PDT 2005


I would go for option (4) , We tried it here in Mellanox. NDIS does not care
if you change your MAC between Disable/Enable.
The Local MAC should use LID 0 ,this enable you to have MAC even if the SM
not config you yet , and not changing your MAC if the SM reassign your LID.
So the local system use LID 0 for the MAC while the remote system use the
true LID for MAC.
This also good for Multicast MACs.
 
Yossi 

-----Original Message-----
From: Dror Goldenberg [mailto:gdror at mellanox.co.il] 
Sent: Wednesday, May 25, 2005 10:32 PM
To: Fab Tillier; openib-windows at openib.org
Subject: RE: [Openib-windows] IPoIB GUID to MAC conversion





> From: Fab Tillier [mailto:ftillier at silverstorm.com
<mailto:ftillier at silverstorm.com> ] 
> Sent: Wednesday, May 25, 2005 9:00 PM 
> 
> 
> Folks, 
> 
> The IPoIB driver is an NDIS miniport driver that reports 
> itself as an 802.3 Ethernet device.  NDIS doesn't support MAC 
> addresses larger than 6 bytes. 
> 
> Currently, the driver has knowledge of how to convert 
> InfiniCon/SilverStorm port GUIDs into valid, globally unique 
> Ethernet MAC addresses.  Is this the case for any of the 
> other IB vendors?  If so, what is the algorithm? 

Linux 2.4 had the exact same problem. You can take a look 
at the gen1 code to see what of solutions people had. One 
example: gen1/trunk/src/linux-kernel/infiniband/ulp/ipoib/ipoib_arp.c 
is some hashing on the {GID,QPN} into 48 bits. I don't believe it has any 
assumption on how GUID is constructed / allocated by the 
vendor. 

> 
> I'd like to hear suggestions for how to handle all vendors 
> with this driver, as well as how to properly handle GIDs 
> where the lower 64-bits aren't the port GUID. 

Can be one of: 
1) generic hash on GID - all nodes will show the same MAC 
      entries on ARP. You're stuck if you have hash collision 
2) create locally faked MAC in each node - not all nodes will 
      show the same MAC (arp -a). You can solve it by writing 
      a new utility, e.g. ipoib_arp, which will dump the full 20B 
      MAC addresses by using some private interface with the NDIS 
      miniport 
3) assume some GUID assignment algorithm - can be problematic 
      looking into the future. Might not fit all cards, all vendors, etc. 
      I'm not sure that all the vendors can commit on how they 
      assign GUIDs today, because they may want the ability 
      to change the GUID assignment method without rewriting 
      the miniport. 
4) Use the 48 bits to contain the path information. A non IB routable 
     approach will use the bits as follows: 16 LID, 4 SL, 24 QPN, 
     2 static rate (might be not enough to hold all static rate options) 
     2 reserved (local/global, unicast/mcast) - total 48 bits. 
     
I don't have any strong opinion about which one to choose. 

> 
> One thing that needs to happen is for local instances of the 
> driver to have the same MAC address across disable/enable 
> device state transitions. 

Can you better explain ? MAC address is {GID,QPN}. If you disable/enable 
the HCA you might end up getting a new QPN which implies that your MAC 
address has changed. This is how IPoIB supposed to work. 
If you want to preserve the MAC, you'd need to maintain the same QP which 
is something beyond the standard IB verbs. By tweaking the driver , you can 
reserve some QP numbers for IPoIB. But is it really required ? 


> 
> Thanks, 
> 
> - Fab 
> 
> _______________________________________________ 
> openib-windows mailing list 
> openib-windows at openib.org 
> http://openib.org/mailman/listinfo/openib-windows
<http://openib.org/mailman/listinfo/openib-windows>  
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20050526/80b94513/attachment.html>


More information about the ofw mailing list