Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Feb 2023 14:33:32 -0500
From:      Paul Mather <paul@gromit.dlib.vt.edu>
To:        Marek Zarychta <zarychtam@plan-b.pwste.edu.pl>
Cc:        stable@freebsd.org
Subject:   Re: Slow WAN traffic to FreeBSD hosts but not to Linux hosts---how to debug/fix?
Message-ID:  <83E43236-60F8-4949-8840-54E66D327EE9@gromit.dlib.vt.edu>
In-Reply-To: <8AE3B49C-6C7F-4A20-B2DC-0D4B1343FB59@gromit.dlib.vt.edu>
References:  <95EDCFCA-7E3F-458F-85A6-856D606B9D98@gromit.dlib.vt.edu> <4ed8b724-041f-f561-ae60-ab966aefbb68@plan-b.pwste.edu.pl> <282AF730-E5E0-4A50-9F47-E7301B36E5C8@gromit.dlib.vt.edu> <2ed582b9-b544-74bb-2047-99d04924b46b@plan-b.pwste.edu.pl> <8AE3B49C-6C7F-4A20-B2DC-0D4B1343FB59@gromit.dlib.vt.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 1, 2023, at 11:26 AM, Paul Mather <paul@gromit.dlib.vt.edu> =
wrote:

> On Jan 31, 2023, at 3:38 PM, Marek Zarychta =
<zarychtam@plan-b.pwste.edu.pl> wrote:
>=20
>> W dniu 31.01.2023 o 19:31, Paul Mather pisze:
>>>> While playing with different mod_cc(4) might bring some =
improvement, to get a real boost I'd suggest enabling tcp_rack(4) if =
feasible.
>>>=20
>>> I am interested in trying this out, but believe it is more feasible =
in my case for the -STABLE and -CURRENT systems I am using, not so much =
for the -RELEASE systems that are kept up to date via binary =
freebsd-update updates.  My reading of the tcp_rack(4) man page is that =
you have to build a custom kernel as, unlike the cc_* congestion control =
algorithms, the loadable tcp_rack module is not built by default.  Is =
that an accurate reading?
>>>=20
>> Yes, this gift from Netflix is probably better suited for -STABLE and =
-CURRENT as easier to set up there. There is an excellent, up-to-date =
article about it by Klara Systems writers[1]. =46rom my experience =
tcp_rack(4) is well suited for congested, lossy or redundant network =
paths where loses, duplicated packets or races between packets occur. =
Not a panacea, but very performant TCP stack based on the _fair_  =
algorithm. In some instances, it might help you to saturate the =
bandwidth of the link. TCP algo can be loaded/unloaded/changed on the =
fly. In FreeBSD 14-CURRENT you can change it on an active socket with =
tcpsso(8) utility, in FreeBSD 12 and 13 you have to restart the app =
bound to the socket.
>> Please feel free to play with TCP stacks and congestion algos with =
the help of benchmarks/iperf3 to find out what prevents the link from =
being saturated and give us some feedback here.
>>=20
>> [1] =
https://klarasystems.com/articles/using-the-freebsd-rack-tcp-stack/
>=20
>=20
> Thank you, Marek, for the link to the Klara article about building and =
using RACK.  I'm building it now on a FreeBSD-CURRENT system and will =
test it out.


It looks like we may have a winner, folks.  I built and enabled the =
extra TCP stacks and for the first time was able to max out my =
connection to the remote FreeBSD system.  I get consistently higher =
throughput over the 15-hop WAN path to the remote FreeBSD system when =
using the RACK TCP stack than when using the default "freebsd" stack.

Although the speeds are consistently higher when using the setting =
"net.inet.tcp.functions_default=3Drack", they are still variable.  =
However, rather than the 3--4 MB/s I saw that kicked off this thread, I =
now average over 10 MB/s.

I actually get the best results with =
"net.inet.tcp.functions_default=3Dbbr" (having loaded tcp_bbr).  That =
behaves very much like the Linux hosts in that speeds climb very quickly =
until it saturates the WAN connection.  I get the same high speeds from =
the remote FreeBSD system using tcp_bbr as I do to the Linux hosts.  I =
will stick with tcp_bbr for now as the default on my remote FreeBSD =
servers.  It appears to put them on a par with Linux for this WAN link.

Cheers,

Paul.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?83E43236-60F8-4949-8840-54E66D327EE9>