[1502] in linux-net channel archive
Re: double acks?
daemon@ATHENA.MIT.EDU (Rob Janssen reading Linux mailingl)
Thu Dec 7 20:06:09 1995
From: linux@pe1chl.ampr.org (Rob Janssen reading Linux mailinglist)
To: erb@inss1.etec.uni-karlsruhe.de
Date: Thu, 7 Dec 1995 11:42:18 +0100 (MET)
Cc: linux-net@vger.rutgers.edu
In-Reply-To: <199512062132.WAA07062@insl2.etec.uni-karlsruhe.de> from "Olaf Erb" at Dec 6, 95 10:32:25 pm
Reply-To: linux-vger@wab-tis.rabobank.nl
According to Olaf Erb:
> I'm wondering if anyone hasn't noticed that Linux always sends double
> acks on tcp sessions. Just a little example:
>
> 44.130.41.11.1186 > 44.130.29.32.79: P 1:3(2) ack 1 win 432
> Data (2): ^M^J (DF)
> 44.130.29.32.79 > 44.130.41.11.1186: . ack 3 win 1024
> 44.130.29.32.79 > 44.130.41.11.1186: . ack 3 win 1024
>
> This is on a very slow radio link. The same happens on slip, and
> on other slow links (100ms rtt is enough to get 2 acks).
> (tested on 1.2.13, 1.3.45).
>
> On slow links every packet is important, so maybe someone already has a
> solution? Or is it a bug in my config, since nobody mentioned it here or
> in the newsgroups?
Yes it has been noticed before.
Linux sends one ack immediately, and another when the receiving
process reads the data. Normally you will see a larger "win" value
on the second ACK. Strange... I don't see this in your example. But
maybe that was just a reconstruction from memory, and not an actual
trace.
Anyway, there was a patch posted on the linux-net list a few weeks ago, which
sends the second ACK only when the first one had sent a very small window.
This is the same as the KA9Q code does. (it only sends the second ACK
when the first one had sent window 0)
Rob
--
+------------------------------------+--------------------------------------+
| Rob Janssen rob@knoware.nl | BBS: +31-302870036 (2300-0730 local) |
| AMPRnet: rob@pe1chl.ampr.org | AX.25 BBS: PE1CHL@PI8WNO.#UTR.NLD.EU |
+------------------------------------+--------------------------------------+