On Mon, 2006-03-27 at 10:22 -0800, Sean Hefty wrote: > Michael S. Tsirkin wrote: > >>>>>Sean, CMA currently bails out if I bind to ANY address before connect. > >>>>>I think in TCP you bind before connect > >>>> > >>>>It is not typical to use bind on the active side before connect. When it > >>>>is done, is when the application wants to control which local port > >>>>and/or interface to use when connecting to a remove peer. bind(2) is > >>>>typically used on the passive side before listen. > >>> > >>>Tom, I have a connection bind on a local port to control which local port > >>>to use when connecting to a remove peer. > > Couldn't you specify the local port when calling rdma_resolve_addr()? TCP > doesn't require calling bind before connect, so I'd like to avoid requiring > that > here. > > >>>At the level I work in SDP, Linux net core calls bind before connect if the > >>>socket source port is 0. I could override this but I don't think its a good > >>>idea since the point is to emulate TCP: TCP connections always have a > >>>source > >>>port and so should CMA connections. > > The purpose behind the CMA is to establish connections using TCP/IP > addressing, > versus trying to emulate TCP. On the passive side, this means that the CMA > supports listening on a 16-bit port number on a single IP address, or across > all > IP addresses. On the active side, there's no need to even use a port number > (when running over IB). The CMA doesn't need it to establish a connection or > use it to match received data with the correct connection. > > > CMA does not allocate ephemeral ports currently. > > This actually makes some sense since address families/port spaces expect > > different semantics wrt which port numbers are legal. > > It's correct that the CMA currently does not do this. I guess I'm still > unsure > of why it needs to when running over IB. The CMA should work fine if it > assigned every active connection the same port number. As long as the CMA > manages its own port spaces, does it matter if its semantics are defined this > way?
Yeah I think it does. Some applications pay attention to the remote port number. This is what I mean by 'emulating TCP'. It's important for SDP in particular because some of these applications will expect getsockname to return a fully qualified 4-tuple. The same for the 'addr' parameter to the accept call. > > - Sean _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
