[e2e] Some questions about TCP.

Detlef Bosau detlef.bosau at web.de
Mon Jan 4 12:20:41 PST 2010

Hi again and first of all a happy new year to all!

At least for me, the discussion during the last weeks shed quite some 
light on my open issues.

Perhaps my basic misconception was, that DUPACKs are always are pure 
acks. Hence, when acknowledgements are sent piggyback with normal data 
packets, these ACKs are never considered as DUPACKs.

I was particurly pointed to the definition of a DUPACK as given in RFC 5681.

Now, some minor questions are still left.

1.: What is the correct behaviour of a TCP receiver when it receives 
data which is already acknowledged?

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.

Neither does the duplicate packet affect the receiver's cumulative 
acknowledgement counter, nor any indication for a pure ack is given.

So, the most appropriate behaviour is to simply ignore the packet.

With particular respect to SNOOP, this kind of understanding will render 
the DUPACK filtering unnecessary, because packet duplication does not 
cause DUPACKs.

Q: Is this correct?

2.: The RTO handling as defined in RFC 2988 does not specify a 
particular timer handling for TCP Reno.

However, to my understanding any pending retransmission timer should be 
canceled after having received three DUPACKs, because the fast 
retransmit algorithm includes a "Go Back N", hence _any_ 
_unacknowledged_ _data_ is retransmitted anyway and a still pending 
timer is likely to cause a premature timeout. So, it makes sense to me 
to cancel any pending timer in this case and hence start with a new 
timer upon the transmission of the next packet.

Q: Is this correct?

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.



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