[openib-general] [PATCH 6/6] [RFC] iser socket
Caitlin Bestler
caitlinb at broadcom.com
Fri Feb 24 10:23:17 PST 2006
Alexander Nezhinsky wrote:
> Caitlin Bestler wrote:
>
>>> So what do the iser sockets do? They look like noop stubs to me.
>>>
>>
>> Good question.
>>
>> I am guessing that they are exactly noop stubs, and the real point is
>> to have a socket associated with an iSER RDMA connection.
>>
>> My question is why? Unless the attempt is to allow upgrading an iSCSI
>> stream connection to an iSER connection I don't see why an iSER RDMA
>> connection is in any more of a need for having a proxy socket than
>> any other RDMA connection.
>>
> We don't upgrade iSCSI stream connection but start with an
> RDMA connection right away.
> The iSER code is going to be one of open-iscsi transports,
> and open-iscsi opens connections using sockets from user
> space, which is only natural with tcp.
> The iSER RC connection should be open from kernel, so this
> special socket gives us an opportunity to do so, while
> leaving intact the entire mechanism of connection
> establishment and user-kernel handover.
> We don't really need to implement read/write primitives
> because they are initiated either from within kernel
> transport module itself or through a special user-kernel
> interface bypassing the socket.
>
>> I really don't see the benefit of having a "socket" that is not truly
>> integrated with the host stack. What socket attributes are being
>> sought? And how is it unique to iSER as opposed to RDMA in general?
>>
> Perhaps it is plausible to implement a general-purpose
> stack-integrated socket giving access to IB RC connections,
> if this is what you mean.
> But this was clearly out of scope for the iSER initiator.
> We sought a solution to the immediate problem in open-iscsi.
> So the main socket feature used here was a neat way to
> delegate the IB connection establishment from user space to kernel.
I remain concerned that the use of a socket without full socket
semantics will only lead to confusion. I also do not see how
it can enable iSER/IP.
For example, is this limited socket inheritable? If so how
does it transfer ownership of the "connection" to the child?
How will this work for iSER/IP as well as iSER/IB?
Extending CMA to allow sending/receiving startup-phase
messages does map naturally to iSER/IB, iSER/IP as
well as plain iSCSI/TCP. It also avoids creating any
unrealistic expectations, such as a general purpose
write that can composite a message in multiple calls
or that can be inherited by a child, that calling it
a "socket" would imply to any experienced socket developer.
More information about the general
mailing list