[ofa-general] Re: [PATCH RFC] RDMA/CMA: Allocate PS_TCP ports from the host TCP port space.

Sean Hefty mshefty at ichips.intel.com
Wed Aug 1 10:49:02 PDT 2007


> Consider NFS and NFS-RDMA.  The NFS gurus struggled with this very issue 
> and concluded that the RDMA service needs to be on a separate port. Thus 
> they are proposing a new netid/port number for doing RDMA mounts vs 
> TCP/UDP mounts.  IMO that is the correct way to go:  RDMA services are 
> different that tcp services.  They use a different protocol on top of 
> TCP and thus shouldn't be handled on the same TCP port.  So, 
> applications that want to service Sockets and RDMA services concurrently 
> would do so by listening on different ports...

This is a good point, and a different view from what I've been taking. 
I was looking at it more like trying to provide the same service over 
UDP and TCP, where you use the same port number.  I just can't come up 
with any solution that works for iWarp, and sharing the port space seems 
like the only way to fix things.

> The iWARP protocols don't include a UDP based service, so it is not 
> needed.  But if you're calling it a UDP port space, maybe it should be 
> the host's port space?

I think it should match what's done for TCP.  IMO, there should be a 
connectionless RDMA service, along with multicast, over UDP/IP/Ethernet.  :)

> Yes.  The only exports interfaces into the host port allocation stuff 
> requires a socket struct.  I didn't want to try and tackle exporting the 
> port allocation services at a lower level.  Even at the bottom level, I 
> think it still assumes a socket struct...

I looked at this too at one point, and gave up as well.  I don't know 
what other assumptions are made in the stack as a result of this.  For 
example, if an app binds to an IP and port, and the IP address is 
removed and re-added, is the port still valid/reserved?

For iWarp, is using a struct socket essentially any different than 
transitioning an existing socket to RDMA mode?  You're just requiring it 
to be in a specific state.  Are there problems around doing this?  How 
much harder (technically, as opposed to politically) would it be to take 
this change a step farther and offload an active connection?

> I left it all in to show the minimal changes needed to implement the 
> functionality.  To keep the patch simple for initial consumption.  But 
> yes, the rdma-cm really doesn't need to track the port stuff for TCP 
> since the host stack does.

Okay - for final patches, I think we want to remove the rdma_cm specific 
port spaces, along with changing the API to clarify that it uses the 
same port space as TCP/UDP.

> I haven't looked in detail at the SDP code, but I would think it should 
> want the TCP port space and not its own anwyay, but I'm not sure.  What 
> is the point of the SDP port space anyway?

The rdma_cm needs to adjust its protocol for SDP over IB.  I'm not too 
concerned with SDP, since it's not upstream yet, but I don't want to 
break it beyond repair either.  The rdma_cm may not need to manage the 
SDP port space at all, and instead rely on SDP to ensure that it 
provides unique port numbers by itself.

- Sean



More information about the general mailing list