[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