[openib-general] [RFC] IB address translation using ARP

Sean Hefty mshefty at ichips.intel.com
Wed Oct 12 14:35:45 PDT 2005


Michael Krause wrote:
> 1. Applications want to use existing API to identify remote endnodes / 
> services. 

To clarify, the applications want to use IP based addressing to identify remote 
endnotes.  The connection API is under development.

> 7. When a route look up occurs, a set of IP addresses are returned.  
> Depending upon the kernel interface, one can also return the layer 2 
> information either as part of this look up or as a separate query to the 
> route table.

For IB, the route lookup returns a set of IB network addresses that are 
associated with the IP network addresses specified by the user.  See comments below.

> So, from the above, it seems the IP and IB world can operate using the 
> same code and work just fine.  So, where is the problem?  Is it really 
> just how management assigns IP address to IB interfaces and how an 
> application should select or be informed of which IP address to use and 
> thus transparently identifies the IB port?  Where is the connection 
> establishment problem?  The application does not see any difference.   
> The network stack only acts as a repository for routing information 
> unless running directly over IP over IB thus is not impacted.  The 
> middleware simply needs to extract the layer 2 information thus obtains 
> the requisite data to construct the CM messages when going straight to 
> IB (there is no change required here for iWARP as this is all native to 
> its operation).   What am I missing here?

The problem is that an application wants to use the network address from one 
protocol (IP), but run over a different network protocol (IB).

The solution is to translate IP addresses to a layer 2 address.  Converting a 
local IP address involves making a couple of calls using the standard Linux 
interfaces.  Converting a remote IP address requires more work, and currently 
there are two possible solutions.  One is to simply use ARP, which is what 
ib_addr, sdp, and ib_at do.  A second solution is to use the address translation 
service defined by DAT, which is supported by ib_at.

On the server side of a connection request, a reverse mapping is desired.  But 
with IB, IP was not involved as part of the connection.  So, the receiver of a 
connection request needs a mechanism to identify which IP address the sender 
used when connecting.  The solution is to pass the source IP address in the 
private data of the REQ.

 From an application's viewpoint, the address translation is done for them by 
the CMA.  But the CMA uses ib_addr to perform the actual translation.

Is this the information that you were looking for?

- Sean



More information about the general mailing list