[e2e] Some questions about TCP.
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