[e2e] Some questions about TCP.

Detlef Bosau detlef.bosau at web.de
Tue Jan 19 07:53:05 PST 2010


Ethan Blanton wrote:
> Detlef Bosau spake unto us the following wisdom:
>   
>> 1.: What is the correct behaviour of a TCP receiver when it receives  
>> data which is already acknowledged?
>>     
>
> Send an ACK for the current cumulative ACK point.  Whether that is an
> ACK piggybacked on an outgoing data segment or a pure ACK is
> immaterial in this case.  See RFC 793:
>   

Not quite, because only pure ACKs can be "DupAcks", refer to RFC 5681.

And the focus of my question is DupAck filtering (see Hari Balakrishnans 
PhD thesis).

>
>   
>> The question arises in the context of SNOOP, because SNOOP introduces a  
>> DUPACK filtering in cases where a packet is duplicated by the SNOOP  
>> recovery mechanism.
>>
>> To my understanding, the correct behaviour would simply do nothing.
>>     
>
> This is broken, and can prevent progress on the connection.  If the
>   

Why? Perhaps, "doing nothing" is misleading.

Of course, the receiver maintains its ACK counter and sends this 
piggybacked with the next sent segment.
However, it does not send a _pure_ ACK, hence does not see any "DupAcks".

That's what I wanted to say.


> sender of this out-of-window segment sent it because it has not
> received a valid acknowledgement for the segment, then failing to
> acknowledge it with the current cumulative ACK point will leave the
> sender in loss recovery indefinitely.
>   

Really? First: Is a duplicate packet really an out of sequence packet?
Out of window is not yet clear to me, because the receiver does not see 
the actual window.
Second: When the sender did not receive an acknowledgement for this 
segment (it may be an erroneous retransmission due to a lost ACK) on 
time, it must retransmit the segment. As often as necessary.

> [Snip question on RTO; I'm not going to take a position on this, as it
>  seems valid to me to either leave the current timer running, or
>  restart it on Fast Retransmit.  The decision in this case probably
>  depends on how conservative your RTO is.  Certainly it is *not* valid
>  to start a new RTO only on transmission of new, previously unsent
>  data.]
>
>   

The more I think about it, I tend to start a new RTO, because otherwise 
there is a high probability to stall the Reno recovery and to end up in 
an a Tahoe slow start...

But I'm eager to learn on this one, that's why I asked.

Detlef
>> My questions may be a bit annoying, but from what I've seen in the last  
>> weeks, particularly in quite some private mail off list, is that there  
>> is quite some unspoken agreement here and that quite some information in  
>> the RFC is given a bit between the lines.
>>
>> One of these is the _definite_ distinction between "piggyback acks",  
>> which are _never_ DUPACKs and pure acks, which
>> _can_ be DUPACKS, under certain conditions given in RFC 5681.
>>     
>
> I feel like the definition of duplicate acknowledgment (for non-SACK
> loss recovery) is pretty clear in 5681, and should clear up any
> ambiguity which was present prior to this document.
>
> Ethan
>
>   


-- 
Detlef Bosau            Galileistraße 30        70565 Stuttgart
phone: +49 711 5208031  mobile: +49 172 6819937 skype: detlef.bosau     
ICQ: 566129673          detlef.bosau at web.de     http://www.detlef-bosau.de                      




More information about the end2end-interest mailing list