Re: FreeBSD TCP (with iperf3) comparison with Linux

From: Murali Krishnamurthy <muralik1_at_vmware.com>
Date: Mon, 03 Jul 2023 15:43:36 UTC
Richard,


“How having high timer granularity pacing (as what RACK does) can prevent microbursts?”
“ That TCP can, at high transmission rates, overrun the NIC driver memory buffers?”

Yes. Any relevant doc/write-up on these would help for better understanding.

I know high transmission of packets could lead to packet drops at NIC buffers. Linux somehow seem to be avoiding that problem.


“What did your experiments with the suggestions by @cc show with the base stack?”
Just posted a follow up query to Cheng on this.

On enabling RACK: It seems we need to rebuild freebsd with compile time option. Is there a build (iso) available in repository with RACK enabled already?


Regards
Murali


On 03/07/23, 2:08 PM, "Scheffenegger, Richard" <rscheff@freebsd.org> wrote:
Hi Murali,

> Appreciate the useful inputs you have shared so far. Will try to figure out regarding packet drops.
>
> Regarding HyStart, I see even BSD code base has support for this. May I know by when can we see that in an release, if not already available ?

You "simply" switch to the RACK stack. Just as I mentioned earlier. Note that this is a completely refactored stack by itself - so please validate that all your userspace applications (or kernel patches) still work when you activate it.

https://man.freebsd.org/cgi/man.cgi?query=tcp_rack&sektion=4&manpath=FreeBSD+13.2-RELEASE+and+Ports

>
> Regarding this point : “Switching to other cc modules may give some more insights. But again, I suspect that momentary (microsecond) burstiness of BSD may be causing this significantly higher loss rate.”
> Is there some info somewhere where I can understand more on this in detail?

What detail? How to toggle to a different congestion control?

How having high timer granularity pacing (as what RACK does) can prevent microbursts?

That TCP can, at high transmission rates, overrun the NIC driver memory buffers?

What did your experiments with the suggestions by @cc show with the base stack?

And again, the RACK stack does HyStart and high-granularity pacing, addressing many issues which are important to smooth streaming workflows and preventing momentary burst loads. However, the RACK stack certainly needs to be validated with particular applications such as the kernel NFS server/client, which are deeply embedded and may rely on some things in the base stack to work properly. I suspect that until now, noone has done a thorough investigation of the implications of RACK with NFS really.


Best regards,
   Richard

>
> Regards
> Murali