Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Apr 2015 00:10:51 +0200
From:      Marek Salwerowicz <marek_sal@wp.pl>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   RTT and TCP Window size doubts, bandwidth issues
Message-ID:  <552455EB.7080609@wp.pl>

next in thread | raw e-mail | index | archive | help
Hi list,

I am trying to find correct setup of sysctl's for following machines 
(VMs under Vmware Workstation 8) to test large TCP window size:


There are 2 boxes, each of them has following setup:
- % uname -a
FreeBSD freeA 10.1-RELEASE-p6 FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 
19:00:21 UTC 2015 
root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64

- 4GB of RAM
- 1 NIC

without any modifications, iperf reports bandwidth speed ~1Gbit/s 
between hosts:

server-side:
# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------

client-side:

# iperf -c 192.168.108.140
------------------------------------------------------------
Client connecting to 192.168.108.140, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.108.141 port 35282 connected with 192.168.108.140 
port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.46 GBytes  1.25 Gbits/sec



I want to simulate (using dummynet) link between hosts with bandwidth 
400mbit/s and latency ~20ms.
In order to do that, I create the ipfw pipe on one box:
IPFW="ipfw -q"


$IPFW pipe 1 config bw 400Mbit/s delay 10ms

$IPFW add 1500 pipe 1 ip from any to any


after running ipfw, bandwidth with default kernel sysctl becomes lower:

client-side:
------------------------------------------------------------
Client connecting to 192.168.108.140, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.108.141 port 35340 connected with 192.168.108.140 
port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  12.5 MBytes  10.4 Mbits/sec



I'd like to achieve bandwidth ~400Mbit/s.

I've modified following sysctl's (both on client- and server-side):

kern.ipc.maxsockbuf=33554432  # (default 2097152)

net.inet.tcp.sendbuf_max=33554432  # (default 2097152)
net.inet.tcp.recvbuf_max=33554432  # (default 2097152)

net.inet.tcp.cc.algorithm=htcp  # (default newreno) #enabled in 
/boot/loader.conf also
net.inet.tcp.cc.htcp.adaptive_backoff=1 # (default 0 ; disabled)

net.inet.tcp.cc.htcp.rtt_scaling=1 # (default 0 ; disabled)

net.inet.tcp.mssdflt=1460  # (default 536)

net.inet.tcp.minmss=1300   # (default 216)

net.inet.tcp.rfc1323=1  # (default 1)
net.inet.tcp.rfc3390=1  # (default 1)


net.inet.tcp.sendspace=8388608  # (default 32768)
net.inet.tcp.recvspace=8388608  # (default 65536)

net.inet.tcp.sendbuf_inc=32768  # (default 8192 )
net.inet.tcp.recvbuf_inc=65536  # (default 16384)



But the  results are not really good as I expected:

server-side:
# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 MByte (default)
------------------------------------------------------------

client-side:
# iperf -c 192.168.108.140
------------------------------------------------------------
Client connecting to 192.168.108.140, TCP port 5001
TCP window size: 8.00 MByte (default)
------------------------------------------------------------
[  3] local 192.168.108.141 port 21894 connected with 192.168.108.140 
port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  24.2 MBytes  20.2 Mbits/sec


I was trying to follow the articles:
- http://www.psc.edu/index.php/networking/641-tcp-tune
- https://fasterdata.es.net/host-tuning/freebsd/

But can't really figure out what / how should be tuned in order to 
achieve good results.

If anyone could find some time and give me some hints, I'd be pleased!


Cheers


Marek




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