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
_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to