[openib-general] [RFC] IB address translation using ARP
Sean Hefty
mshefty at ichips.intel.com
Mon Oct 10 10:36:35 PDT 2005
Tom Tucker wrote:
>>Again, I don't think that the binding is the issue, so much as the desire to use
>>an address for a protocol that isn't actually being used for communication.
>
> Not to be pedantic, but if binding or mapping or somesuch weren't an
> issue we wouldn't need AT.
We need AT because we're not using network addresses. If a client used an IP
address and ran over IP, we wouldn't need to do anything special.
> IMHO, you need a service separate from the CMA to do address
> translation. My (iWARP's) rationale for this is that there are two
> clients of the service, the CM and IP. For CM, you need it to elect a
> route and thereby a local interface. For IP you need it because routes
> change and ARP entries time out.
The connection management and address translation are separate services, with
the CMA calling the address translation for the user. You may want to look at
ib_addr for details on how the address translation works.
> - route is discovered by looking at the Linux routing table
^^^^^
address mapping from IP to GID/Pkey.
> - local interface is IPoIB (looks at rdma_ptr embedded in netdev struct)
The address translation looks only at the hardware and broadcast addresses. No
additional rdma_ptr is needed with ib_addr.
> - send ARP AT message over local IB interface
It sends a normal IP ARP to get the remove hardware address, which contains the
destination GID. An ARP is sent only if the mapping isn't available in the
local ARP table.
At this point, the client has the SGID, DGID, and PKey. It then issues a path
record query to obtain the "route" to the destination. The CMA doesn't really
care if that destination is the actual destination or some gateway.
- Sean
More information about the general
mailing list