Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Jan 2009 13:47:19 +0800
From:      "Lin Jui-Nan Eric" <ericlin@tamama.org>
To:        freebsd-net@freebsd.org
Subject:   TCP packet out-of-order problem
Message-ID:  <47713ee10901012147k1f25c31bn512dd29b2b294ad5@mail.gmail.com>
In-Reply-To: <47713ee10812301206j12b35264o715976c154080a1b@mail.gmail.com>
References:  <47713ee10812301206j12b35264o715976c154080a1b@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Dear listers,

We recently found our new FreeBSD server (located in some foreign
region) has poor network performance. After doing some tcpdump and
iperf testing, we found that out-of-order TCP packets are not inserted
into queue.

This is an 100Mbps line, and TSO is disabled.

% uname -a
FreeBSD bsd 7.1-RC2 FreeBSD 7.1-RC2 #2: Wed Dec 31 03:12:39 CST 2008
 root@bsd:/usr/obj/usr/src/sys/KERNEL  amd64

% iperf -c 10.1.1.250
------------------------------------------------------------
Client connecting to office, TCP port 5001
TCP window size: 3.07 MByte (default)
------------------------------------------------------------
[  4] local 10.1.1.210 port 61488 connected with 10.1.1.250 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec  5.74 MBytes  4.74 Mbits/sec

03:47:21.146397 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
159305:160753(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.146409 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 160753
win 12568 <nop,nop,timestamp 3216612488 555928950>
03:47:21.146473 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
160753:162201(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.146485 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 162201
win 12568 <nop,nop,timestamp 3216612489 555928950>
03:47:21.146972 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
163649:165097(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.146983 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 162201
win 12573 <nop,nop,timestamp 3216612489 555928950>
03:47:21.146985 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
162201:163649(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.146996 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 163649
win 12568 <nop,nop,timestamp 3216612489 555928950>
03:47:21.146998 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
165097:166545(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.147006 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 163649
win 12573 <nop,nop,timestamp 3216612489 555928950>
03:47:21.147009 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
166545:167993(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>
03:47:21.147017 IP 10.1.1.250.5001 > 10.1.1.210.54919: . ack 163649
win 12573 <nop,nop,timestamp 3216612489 555928950>
03:47:21.147019 IP 10.1.1.210.54919 > 10.1.1.250.5001: .
167993:169441(1448) ack 1 win 1040 <nop,nop,timestamp 555928950
3216612488>

* You can see "ack 163649" repeating, but the packet is transmitted
before 163649:165097.

% cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8 2003/03/13 18:43:50 mux Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
debug.bootverbose=1
kern.ipc.somaxconn=8192
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.maxprocperuid=65536
net.inet.ip.fastforwarding=1
net.inet.tcp.delayed_ack=0
vm.pmap.shpgperproc=2000
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968

Is our configuration wrong? Or it is an known bug? I have searched
stable & net list, but found no similar discussion.

Best Regards,

                 Eric



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