[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