[rds-devel] Re: RDS ACKs

Or Gerlitz ogerlitz at voltaire.com
Sun Nov 4 22:28:22 PST 2007


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...

> 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