[rds-devel] RDS ACKs

Or Gerlitz ogerlitz at voltaire.com
Wed Oct 31 07:28:00 PDT 2007


Hi Zach,

Looking on the RDS sources, I see the following comment:

>  * You'd think that with reliable IB connections you wouldn't need to ack
>  * messages that have been received.  The problem is that IB hardware generates
>  * an ack message before it has DMAed the message into memory.  This creates a
>  * potential message loss if the HCA is disabled for any reason between when it
>  * sends the ack and before the message is DMAed and processed.  This is only a
>  * potential issue if another HCA is available for fail-over.

So RDS has ACKs, correct? are they in the level of the transport (IB, 
TCP) or at the RDS level? If its in the transport, then I wanted to 
check with you first that the ACKs used by the IB code are --not-- for 
the sole purpose of software flow control, correct? As Roland and other 
have commented in the past, this problem is not unique to IB RC 
programming, for example TCP also sends the ACK before the app consumes 
the data from the socket or in Roland's words:

> I think you just have to deal with this possibility at your level.
> This type of thing is just inherent in network programming: without an
> explicit message back, you don't know if any given message has really
> been received.  The exact same thing could happen with TCP for
> example: just cut the cable after a message has been received but
> before the ACK has gone back the other way.

where this is the related thread 
http://lists.openfabrics.org/pipermail/general/2007-October/042398.html

Are ACKs sent before the app consumed the data from the socket or after it?

Or.




More information about the rds-devel mailing list