Help for TCP understanding wanted, ACK-MSS-Window [Was: Re: best
practice to watch TCP parms of established sockets]
Patrick Mahan
mahan at mahan.org
Thu Feb 18 15:31:06 UTC 2010
See inline...
Harald Schmalzbauer wrote:
> Harald Schmalzbauer schrieb am 17.02.2010 20:15 (localtime):
> ...
>>>> Now my first idea is to compare MSS and windows sizes before and
>>>> after the performance drop.
>>>> How do I best capture them? tdpcump? It's GbE linkspeed...
>>> It seems more likely that ZFS is running into slowdowns from resource
>>> contention, memory fragmentation, etc than your network would
>>> suddenly drop out, but tcpdump -w outfile.pcap is a good method of
>>> looking....
>>
>> Thanks, but fisrt tests showed that ZFS is not causing the slowdown.
>
> Hello,
>
> I got exactly the same limitations when using tmpfs. So for now I'll
> concentrate on that, back to ZFS later.
>
> Please clarify my TCP understanding.
> If I have the window set to 65535 in the header and a MSS of 1460, how
> often should the receiver send ACK segments? window/MSS, right?
How soon you see the ACK is based on two values in the kernel:
net.inet.tcp.delacktime
net.inet.tcp.delayed_ack
The first one controls how soon the peer replies with an ACK if there is
no data to send back, ie. it is just a plain ack. Van Jacobson first
recommended it in the early days of TCP/IP. Historically, it has been
implemented as a 200 ms timer, but in FreeBSD it is a 100 ms timer.
The second one controls wheter delayed acking is enabled. Setting this
sysctl variable to 0 should cause you to seem more ACKs.
> Now I see every two segments acknowledged in my dump (rsync between two
> em0 interaces).
I'm curious what an iperf between your systems shows? We have recently
upgrade some of test systems from 6.2 to 8.0-Stable and are seeing almost
1/2 the bandwidth over the em(4). Other systems that have been upgraded
are not seeing and drop in bandwidth.
> I'd like to understand
> a) why disabling net.inet.tcp.rfc1323 gives slightly better rsync
> throughput than enabled
rfc1323 deals with window scaling and timestamp options. Perhaps these
are getting in the way?
> b) why I can't transfer more than 50MB/s over my direct linked GbE boxes.
>
> But right now I even don't understand the dump I see. As far as I
> understand I should only see every 45 data segments one ACK segment.
> That would clearly explain to me why I can't saturate my GbE link. But I
> can't imagine this is a uncovered faulty behaviour, so I guess I haven't
> understood TCP.
>
No we are also seeing similar behavior over the em(4) interface under
FreeBSD 8.0-Stable.
Patrick
> Please help.
>
> Thanks in advance,
>
> -Harry
>
More information about the freebsd-stable
mailing list