[openib-general] Re: [PATCH] CMA: allow/require bind beforeconnect

Caitlin Bestler caitlinb at broadcom.com
Tue Mar 28 10:36:22 PST 2006


Sean Hefty wrote:
>>> The app _usually_ doesn't care.  See NFS discussion for a client app
>>> that does care.  Also, providers DO care.  Because of this issue,
>>> the chelsio iwarp provider right now has to allocate its own
>>> ephemeral ports at connect time.  This logic should be moved into
>>> the IWCM or maybe the CMA and an explicit bind() operation be
>>> exported by the iwarp providers to allow the IWCM or CMA to track
>>> all port allocations.
> 
> Somehow I didn't receive Steve's response.  Anyway, I'm
> referring to apps that don't specify which port to use as the
> one's that don't care, versus those that do want to know their port.
> 
> In reality, the port space for RDMA connections over IB is
> distinct from the TCP port space.  No attempt is made to
> coordinate between the two, and I am not convinced that those
> two port spaces should be one and the same.  This is where I believe
> there's disconnect. 
> 
> - Sean

The real issue is how are application endpoints identified uniquely.

Currently an application endpoint is identified by IP address
and protocol/port, and a connection is a pairing of two endpoints.

So the question is whether IB endpoints can conform to that model,
whether we document that they aren't really IP addresses and hence
only have a sub-qualifier on the passive end, or that we officially
define an additional port space (just as already exists for UDP,
SCTP and DCCP).

There are valid arguments for the latter two, but adopting them
requires co-ordination with netdev, netfilter and probably some
other development groups I'm not thinking of at the moment.

Allocating a port number from one of the existing portspaces
so that existing APIs can be complied with is a decision that
can be made within this project.

Making that decision is not strictly necessary, but it solves
all the issues and resolves everything locally. Any theoretical
benefit of avoiding an unecessary allocation of a port will
have impact on a lot of network-releated code maintained by
teams that currently don't have the slightest hint as to what
RDMA is, let alone the distinctions between IB and iWARP.

So, do you have any reason why allocating a port number for
the active endpoint is so onerous that it is worth co-ordinating
the evolution of an L4 endpoint with an IP address to accommodate
that endpoint being an IB QP? Isn't assigning a port number to the
IB QP far simpler?




More information about the general mailing list