[e2e] Some questions about TCP.

Detlef Bosau detlef.bosau at web.de
Mon Nov 23 00:18:05 PST 2009

Noel Chiappa wrote:
>     > From: Detlef Bosau <detlef.bosau at web.de>
>     > How can I prevent to mistake several segments with the same ack number
>     > as duplicate acknowledgements?
> If they contain no data, by definition they _are_ duplicate acknowledgements.
> That is not necessarily a problem, though.

>     > RFC 2581 Section 4.2
>     >
>     >   A TCP receiver MUST NOT generate more than one ACK for every incoming
>     >   segment, other than to update the offered window as the receiving
>     >   application consumes new data [page 42, Pos81][Cla82].
> That is poorly phrased. It should say 'more than one ACK-only packet', or
> something like that.

However, this does not solve my problem.

In a bidirectional flow, it is well possible that one segment sent from 
a to be can see several acknowledgements in packets from b to a. Imagine 
a simple asymmetric connection with 2 MBit/s throughput in the one 
direction and 500 kBit/s in the other.

The question is: How can a sender determine whether he sees a "normal" 
number of acknowledgements for a packet or "more then DUPACKTHRESH", 
hence the sender has to retransmit the packet and must do recovery actions?

>     > So, when a node sends several segments without receiving new ones, it
>     > will repeat the same ack number several times.
> Yes, that is OK. Just as long as one does not send multiple ACK-only packets
> in response to a single data-containing packet.

Hm. I don't get the clue...... ;-)

>     > my problem is: When it is possible for a sender, to have the same
>     > packet acknowledged by several packets from the peer, not to mistake
>     > these for e.g. da Triple Duplicate Acknowledgement, which will cause
>     > the sender to go into fast retransmission and fast recovery?
> I'm not an expert in this area of TCP, but I think you have to look at the
> larger situation - i.e. look to see what exactly you have outstanding, etc.

The problem is quite simple. I'm working at a very simple tiny simulator 
at the moment - and anything was fine and worked as the RFC told - as 
long as I did not send any data full duplex.

As soon as both parties started to send, the party was over and both 
peers throttled their windows down to a single segment due to duplicate 

And now, I'm simply looking for the correct way to handle this 

> E.g. if you send segments A, A+100, A+200, and A+300, and you get back
> ACK-only packets for A, A, A then you can be fairly sure that A+100 has been
> lost, and you need to re-send it.

O.k., and when I see 10 or 15 data carrying segments which acknowledge A?

You will observe this with an arbitrary ADSL line!


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