Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Mar 2000 13:59:50 -0600
From:      Jonathan Lemon <jlemon@flugsvamp.com>
To:        =?iso-8859-1?Q?R=E9mi_Guyomarch?= <rguyom@mail.dotcom.fr>
Cc:        net@freebsd.org
Subject:   Re: TCP performance problems, Linux faster than FreeBSD ?
Message-ID:  <20000303135950.C307@prism.flugsvamp.com>
In-Reply-To: <20000303195724.A26837@pingoo.ifn.fr>
References:  <local.mail.freebsd-net/20000303165052.C23732@pingoo.ifn.fr> <200003031759.LAA03466@prism.flugsvamp.com> <20000303194730.A26727@pingoo.ifn.fr> <20000303125536.A307@prism.flugsvamp.com> <20000303195724.A26837@pingoo.ifn.fr>

next in thread | previous in thread | raw e-mail | index | archive | help
Okay, I took a look at the trace you sent me, and yup, the answer
is, "they're broken".  :-(

Somewhere in the transfer, some packets are getting lost, which
in turn leads to the following steady-state scenario:

After 3 duplicate acks (caused by receiving older re-transmitted packets),
the sender (mistakenly) presumes that a packet was lost and re-transmits,
in accordance to the VJ fast-retransmit algorithm.  Call the sequence 
number of this re-transmitted packet 'A'.  The sender continues sending
at the leading edge of the window, say, on sequence 'F'.

Now, another older retransmitted packet is received, and a 4th duplicate
ack is sent.  This appears to cause the sender to abandon transmitting
at the leading edge of the window, and start re-transmitting segments
B-F at full speed.  

Since at this point, no packets are being lost, the receiver gets the
original sequence 'F', that was transmitted, then must ack the duplicate
retransmits.  This leads to duplicate acks, starting the whole cycle again.


I would guess the problem is primarily caused because the sender does
not correctly implement VJ fast-recovery, and slow-start is never 
entered, so there is no chance for re-synchronization.

Linux implements SACK (selective ack), which I would guess allows it 
to work around this problem; it doesn't have to send multiple duplicate
acks in a row.
--
Jonathan


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000303135950.C307>