[ofw] Name resolution in WinVerbs/Multiple cards in one machine

Hefty, Sean sean.hefty at intel.com
Wed Jan 25 11:27:06 PST 2012


This message was forwarded to me, since it apparently never made it to the mail list.

> I have some problems understanding how the name resolution for IB devices
> works. My primary problem is that my WinVerbs-based application ceased
> functioning because OpenDevice() fails - it has worked before though, and I am
> not aware of any configuration changes so far. The problem seems to be that
> the device GUID that I use is invalid. I obtain this GUID from a Query() on
> the connect endpoint after this end point was bound, but the GUID is all null.
> I am pretty sure that it has not been before...

Name resolution depends on converting the hostname into an IP address using DNS.  There's nothing special that the IB stack provides to make this happen.  IP resolution requires mapping the IP address to an IB address (typically GID).  For this to work, ipoib is required.  A lookup is done to see what IB GID the IP address is associated with.

Note that native IB devices do not know of or use IP addresses.  The IP to IB address mapping is simply a convenience provided by the IB stack.  So, to map from a hostname to an IB address, DNS is used to convert the hostname into an IP address, and then ipoib is used to map that IP address into a GID.
 
> I assume that the subnet manager holds mapping from machine names to GUIDs, is
> that correct?

No - the IB subnet manager only knows of GIDs, LIDs, and GUIDs.

> I further assume that the subnet manager uses TCP/IP, DNS,
> whatever to obtain this information, and that might be the problem.

The local host software will handle this mapping.

> A further question would be: If I know the port GUID, is there any possibility
> to use it directly with WinVerbs? I can only see a Connect() accepting a
> socket address...

You can, but you would need to establish the connection using some sort of out of band mechanism (such as sockets) and manually configure the QPs.  If you have the source code, you may want to look at libibverbs and those samples.  libibverbs sits over winverbs and the samples will establish connections out of band.
 
> And is there any documentation on how to use multiple IB devices (dual port)
> in one machine? I have not found any way to address the ports separately so
> far, because I do not understand how the mapping of the socket address to the
> port GUID works.

Assuming that you get name resolution working again, as long as each port is assigned a different IP address you should be able to address each port separately.  You may need to use the IP address for your resolution rather than the host name.

- Sean



More information about the ofw mailing list