Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Feb 2010 08:09:25 -0800
From:      Stephen Hurd <shurd@sasktel.net>
To:        Harald Schmalzbauer <h.schmalzbauer@omnilan.de>
Cc:        freebsd-stable@freebsd.org, Patrick Mahan <mahan@mahan.org>
Subject:   Re: RELENG_8 ignoring TCP window size? [Was: Re: Help for TCP understanding wanted, ACK-MSS-Window [Was: Re: best practice to watch TCP parms of established sockets]]
Message-ID:  <4B7D6635.20605@sasktel.net>
In-Reply-To: <4B7D61DE.2020906@omnilan.de>
References:  <4B7C1365.9070806@omnilan.de> <70CD649D-7659-4CE2-A16C-49B8C891CB5B@mac.com> <4B7C4066.5040006@omnilan.de> <4B7D3938.1000309@omnilan.de> <4B7D5AC4.9020509@mahan.org> <4B7D61DE.2020906@omnilan.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Harald Schmalzbauer wrote:
> Some experimental results:
> When rsyncing with windows, and FreeBSD is receiver, I see the same 
> ACK ever two segemnts, but speed is at 72MB/s.
> When FreeBSD is sender and Windows is receiver, it looks more I 
> expected. There are about 20 data segments before a ACK is returned. 
> And there are  TCP Window Update Segments, reflecting smaller receiver 
> buffers on the windows side. But this happens at a throughput of 
> 82MB/s!!! So the windows machine is behaving like I understand the TCP 
> flow control.
> Any explanation why the FreeBSD machine seems to ignore window size?

Yes, here we are in RFC1122:


      4.2.3.2 When to Send an ACK Segment

A host that is receiving a stream of TCP data segments can increase 
efficiency in both the Internet and the hosts by sending fewer than one 
ACK (acknowledgment) segment per data segment received; this is known as 
a "delayed ACK" [TCP:5].

A TCP SHOULD implement a delayed ACK, but an ACK should not be 
excessively delayed; in particular, the delay MUST be less than 0.5 
seconds, and in a stream of full-sized segments there SHOULD be an ACK 
for at least every second segment.


The idea of delayed ACKs is to allow an ACK to be sent with data if 
there will be data sent right away, not to combine ACKs... leaving out 
ACKs makes calculation of RTT problematical which causes performance 
problems all over the place... maybe the dearth of ACKs from the windows 
system is causing the problem?



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