Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Aug 2015 09:14:31 -0400
From:      Kurt Lidl <lidl@pix.net>
To:        freebsd-net@freebsd.org
Subject:   Re: ssh over WAN: TCP window too small
Message-ID:  <55DF0D37.5060003@pix.net>
In-Reply-To: <55DCF080.7080208@stankevitz.com>
References:  <55DCF080.7080208@stankevitz.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Chris Stankevitz wrote:
> Hi,
>
> # cat /dev/urandom | ssh root at host 'cat > /dev/null'
>
> I use the above ssh command over a high-BDP WAN link (80 ms @ 100 Mbps).
>   tcpdump shows I am TCP window limited to 64 KBytes (yielding 5 Mbps).
>   iperf with default options gets the window opened to 500 KBytes
> (yielding 35 Mbps).
>
> Both sides of the connection: FreeBSD 10.1 w/default sshd options
> (except I permit root login).  In particular, HPN is not disabled.
>
> Can anyone explain my abysmally small TCP window?
>
> Can anyone recommend some tools/tricks to figure out what in FreeBSD
> and/or base SSH is limiting the send/recv buffer and/or TCP window?

I know this response is a little late to the party, but...

I spent a bit of time last year tuning my FreeBSD 10.1 host to be
able to transfer a bunch of data between the east coast of the US
and the west cost.  My WAN link was more like 70ms @ 75 Mbps, so
not too different than yours.  The other end of the connection was
also a FreeBSD 10.1 host.

I have the following in my /etc/sysctl.conf - and I get pretty much
all 75Mbps when I scp or rsync a file:

# tcp options for long-haul speedups
kern.ipc.maxsockbuf=4194304             # (2 * default 2097152)
net.inet.tcp.mssdflt=1448               # (default 576)
net.inet.tcp.sendbuf_max=4194304        # (2 * default 2097152)
net.inet.tcp.recvbuf_max=4194304        # (2 * default 2097152)

net.inet.tcp.syncache.rexmtlimit=1      # (default 3)
net.inet.tcp.recvspace=262144           # (4 * default 65,536)
net.inet.tcp.sendspace=262144           # (4 * default 65,536)

net.inet.tcp.sendbuf_inc=65536          # (8 * default 8192)
net.inet.tcp.recvbuf_inc=131072         # (8 * default 16384)

One thing that was noticed - it can take a really, really, really
long time for the TCP window to open up the whole way with the
default net.inet.tcp.sendbuf_inc setting!

-Kurt






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