tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Surprising observations on the NetBSD TCP stack



Hi Greg!

On 2025-10-09 00:34, Greg Troxel wrote:
Frank Kardel <kardel%netbsd.org@localhost> writes:

Surprising observations on the NetBSD TCP stack
Sounds like mlelstv@ has found some things to fix, and pointed you at
receive buffers.

receive buffers improve a bit.

I played with the buffersizes. It is still asymmetric between gateway and notebook.

notebook -> gateway

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   935 Mbits/sec 0 sender
[  5]   0.00-10.00  sec  1.09 GBytes   934 Mbits/sec                  receiver

gateway -> notebook (iperf3 -R)

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  1.02 GBytes   871 Mbits/sec 0 sender
[  5]   0.00-10.01  sec  1.01 GBytes   871 Mbits/sec                  receiver


I just got my Fiber 1GBit/sec internet connection (don't ask).
It's funny that you say don't ask.  It's hard to guess if you mean
"don't ask why it took me so long" or "don't ask why I got 1 Gb/s
instead of 400 Mb/s", or something else.  With my fiber provider, 300
Mb/s is less money than 1 Gb/s so I went with the lower speed.  I know
people where there's just a price for 1 Gb/s and that's all there is too
it.

A long way of saying "getting 1 Gb/s fiber would be unremarkable without
your parenthetical remark"!

Well Fiber is a long story. At my location near Frankfurt am Main/Germany I have a signed contract since 2021.

That provider had some serious rollout hickups. The offering was good though 1Gb/s symmetric for around 100€.

At my current local near Kiel Germany signing to activation took 2.5 months and 1Gb/s down 250 Mb/up fixed IP is around 96€.

Higher upload rate cost more an brings some more static IPs.

A college in Bad Vilbel waits for Fiber now for a year and has at least the hole in the wall now - waiting again.


The windows test shows that the Fiber connection lives up to its
performance claims.
The NetBSD performance is not competative at all - barely able to keep
up with ADSL modems, though
the send rate is ok.
A big issue in speed testing (besides buffer tuning, but that's about
performance of a single TCP connection more than testing) is whether
there is one TCP connection or multiple.  I use iperf3 and it can run
multiple connections in parallel.  Some browser speed tests use multiple
connections, e.g. speedtest.net.
Yes.

When running openSuse Linux in qemu on the NetBSD host we reach 5
times higher download rates.
That's a huge clue, because the NetBSD driver is still sending the
actual packets on the interface.  That basically says that the TCP
implementation OR the buffer sizing is the issue.

The current state is

It is still asymetric between gateway and notebook.

notebook -> gateway

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   935 Mbits/sec 0 sender
[  5]   0.00-10.00  sec  1.09 GBytes   934 Mbits/sec                  receiver

gateway -> notebook (iperf3 -R)

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  1.02 GBytes   871 Mbits/sec 0 sender
[  5]   0.00-10.01  sec  1.01 GBytes   871 Mbits/sec                  receiver


Any ideas what to look for?
Two things to look at:

   netstat -s, before and after your test, and diff -u, so that you see
   the counters changing that you expect, and the counters that changed
   that you didn't expect.

   pkgsrc/graphics/xplot (and xplot-devel) come with a script to process
   tcpdump output to a plot showing the data and ack lines.  The
   distributed script probably isn't right for current tcpdump which
   doesn't have a stable otuput format.  But this is by a wide margin the
   best way to understand TCP behavior.  You can see missed data packets,
   dupacks, sack.  It's clear if the window is too small.  Feel free to
   ask for offlist help using this.
Yes, I thought about xplot. I see what I can find. I may not be able to do tests for a while though.

Long ago, I was looking into some TCP issues, and didn't quite figure it
out, but it <very very fuzzy>seemed there were edge cases in ack
processing that weren't quite right</>.

I think the SACK handling is also broken. There may be a bug from me some years ago.

Frank



Home | Main Index | Thread Index | Old Index