[rds-devel] Re: RDS ACKs
Richard Frank
richard.frank at oracle.com
Mon Nov 5 07:10:36 PST 2007
Or Gerlitz wrote:
> Richard Frank wrote:
>> <<
>> I am not sure to follow your last comment: my thinking was that use
>> of RDS means that there are --no-- app-level acks and timeouts.
>> >>
>
>> The RDS driver uses transport acks for HA. That is, the send side
>> driver holds onto send buffers until the recv side driver has recv'd
>> them. This ensures, that we can resend messages lost due to an HCA
>> failure - via an RC formed over a new HCA.
>
> From what Zach wrote, I understood it differently: the RDS transport
> has to be reliable to the extent that it has to let the RDS core code
> know that the message was delivered to the app buffer on the remote
> side. For that end, the TCP transport relies on TCP ACKs (since kernel
> sockets has this property) and the IB transport has explicit ACKs
> (since the HCA send the RC ACK before doing/completing DMA-ing the data).
>
> I try to understand the requirements, the design and the
> implementation, so lets not confuse between them...
>
If I understand your point - it's the part of RDS driver implementing
RDS acks is the transport - my point is that the reason for the RDS acks
is to ensure data has made it to remote host memory to cover the HA case
I described. It's later which is the requirement.
>> Note, that from the applications perspective - the send completed
>> immediately - it's upto the RDS driver to ensure that the message
>> arrives at the destination - unless of course the recv side RDS
>> driver discovers that the destination (ip:port) are gone - in which
>> case the message is dropped.
>
> yes, this I can understand from the man page quote below:
>
>> If sendmsg(2) succeeds then RDS guarantees that the message will be
>> visible to recvmsg(2) on a socket bound to the destination address as
>> long as that destination socket remains open.
>
> Or.
>
More information about the rds-devel
mailing list