[openib-general] RDMA CM and loopback addresses

Jason Gunthorpe jgunthorpe at obsidianresearch.com
Thu Mar 30 16:14:24 PST 2006


On Thu, Mar 30, 2006 at 03:48:50PM -0800, Sean Hefty wrote:

> On the client side, the client does need to know which device to use before
> calling connect.  The client obtains the device by calling bind() or
> resolve_addr().  The latter call takes the source and destination addresses, and
> obtains the device based on local routing information.

> So, bind() could be made to avoid mapping to a specific hardware device.  I just
> don't think that it makes as much sense for RDMA interface, and results in other
> restrictions, such as requiring deferred resource allocation.

Hmm. This all sounds very reasonable, but if resolve_addr is
available, why not get rid of bind()? Do not provide any way
in the API for a non-listening socket to get the bound hardware device
without providing both source and dest. 

ie make:

bind(src);
preallocate();
connect(dest)

Illegal and instead require:

reasolve_addr(src,dest);
preallocate();
connect(dest);

Then the only time you ever have to choose a device based only on
source address is if it is a listening socket, which is entirely OK,
IMHO.

If you always have a src,dest pair when looking up the hardware device
for an outgoing connection then you can always follow the directions
for egress device in the routing table so it should be as consistent
as possible..

Regards,
Jason



More information about the general mailing list