PPPoE performance with current setup

Started by mattuz, June 28, 2026, 10:55:43 PM

Previous topic - Next topic
Hello everyone I have a Lenovo Tiny m910q with I3-7100T and 4GB of RAM. I installed via pci-e a x4 nics rtl8125 card.
In the next month my local isp will hook up fiber optic with up to 2.5GB speed, and I'm getting ready all the hardware.

I started doing some lcoal test and iperf3 between opnsense and a pc results 2.37Gbit/s that seem ok. But using the same pc with linux and creating a PPPoE server is giving awful performance, I cannot get it past 500Mbit/s even with all the optimization recommanded online.

I tried two different pc for the PPPoE server to make sure it wasn't this side bootlenecking (even on a ryzen 9) but I can't get it past that limit. Looking at opnsense host cpu usage during the test it doesn't go over 30% so I don't really get it...

Unfortunatly I do not have any other scenario to test.. I would like to get your input it what might be the cause of this... I would like to get this Lenovo Tiny (opnsense host) to be 2.5GB capable as soon as the connectivity is hooked up

June 29, 2026, 02:22:07 AM #1 Last Edit: June 29, 2026, 02:25:26 AM by pfry
PPPoE is apparently single-thread on FreeBSD... but that should only halve your performance (or thereabouts) on that dual-core CPU. The CPU load figure may be misleading, but even proving that premise may not be enlightening. You could try OPNsense on a machine with greater single-thread performance, but a 3.4GHz Skabylake shouldn't be too bad. A Zen 5 (e.g. 9600X at 5.4GHz) might double it (on this workload). I haven't used PPPoE (knocking on wood...) myself (even my old DSLs used bridging or routing for static IPs, which I've always had; my only PPP link was ISDN, and 128k was pretty easy to achieve).

Edit: For the heck of it (quoting myself), you might try "netstat" - "-m", "-i", perhaps "-Q", "-T", "-x", "-s" options (most have to be issued separately), and see if anything looks bad. I'm not sure if these will provide useful data for a PPPoE device.

Did you use the Realtek vendor or the FreeBSD native driver on OpnSense?
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, Leox LXT-010H-D

1100 down / 450 up, Bufferbloat A+

June 29, 2026, 07:57:53 PM #3 Last Edit: June 29, 2026, 08:48:52 PM by mattuz
Quote from: pfry on June 29, 2026, 02:22:07 AMEdit: For the heck of it (quoting myself), you might try "netstat" - "-m", "-i", perhaps "-Q", "-T", "-x", "-s" options (most have to be issued separately), and see if anything looks bad. I'm not sure if these will provide useful data for a PPPoE device.

Thanks I will try these commands and update the thread with the results.

Quote from: meyergru on June 29, 2026, 09:14:29 AMDid you use the Realtek vendor or the FreeBSD native driver on OpnSense?
I'm using os-realtek-re drivers. The card plugged in without those didn't even show the interfaces on the GUI. I had "pci3: <network, ethernet> at device 0.0 (no driver attached"

Looking at netstat -Q it seems CPU 2 is handling major traffic compared to others. (this is during an iperf3 test)
=== netstat -Q ===
Configuration:
Setting                        Current        Limit
Thread count                         4            4
Default queue limit                256        10240
Dispatch policy               deferred          n/a
Threads bound to CPUs          enabled          n/a

Protocols:
Name   Proto QLimit Policy Dispatch Flags
ip         1   1000    cpu   hybrid   C--
igmp       2    256 source  default   ---
rtsock     3    256 source  default   ---
arp        4    256 source  default   ---
ether      5    256    cpu   direct   C--
ip6        6   1000    cpu   hybrid   C--
ip_direct     9    256    cpu   hybrid   C--
ip6_direct    10    256    cpu   hybrid   C--

Workstreams:
WSID CPU   Name     Len WMark   Disp'd  HDisp'd   QDrops   Queued  Handled
   0   0   ip         0    29        0     7688        0   101826   109514
   0   0   igmp       0     0        0        0        0        0        0
   0   0   rtsock     0     0        0        0        0        0        0
   0   0   arp        0     1        0        0        0       33       33
   0   0   ether      0     0     5905        0        0        0     5905
   0   0   ip6        0     1        0        0        0        1        1
   0   0   ip_direct     0     0        0        0        0        0        0
   0   0   ip6_direct     0     0        0        0        0        0        0
   1   1   ip         0    18        0     4310        0    64904    69211
   1   1   igmp       0     0        0        0        0        0        0
   1   1   rtsock     0     0        0        0        0        0        0
   1   1   arp        0     2        0        0        0    10006    10006
   1   1   ether      0     0      718        0        0        0      718
   1   1   ip6        0     1        0        0        0       10       10
   1   1   ip_direct     0     0        0        0        0        0        0
   1   1   ip6_direct     0     0        0        0        0        0        0
   2   2   ip         0    83        0    26970        0   227620   254590
   2   2   igmp       0     0        0        0        0        0        0
   2   2   rtsock     0     3        0        0        0       36       36
   2   2   arp        0     0        0        0        0        0        0
   2   2   ether      0     0   529402        0        0        0   529402
   2   2   ip6        0     1        0        0        0        2        2
   2   2   ip_direct     0     0        0        0        0        0        0
   2   2   ip6_direct     0     0        0        0        0        0        0
   3   3   ip         0    24        0     5346        0   174797   180143
   3   3   igmp       0     0        0        0        0        0        0
   3   3   rtsock     0     0        0        0        0        0        0
   3   3   arp        0     1        0        0        0      106      106
   3   3   ether      0     0    26856        0        0        0    26856
   3   3   ip6        0     0        0       16        0        0       16
   3   3   ip_direct     0     0        0        0        0        0        0
   3   3   ip6_direct     0     0        0        0        0        0        0

Just a side not: I've been trying the same setup with OpenWRT since based on google suggestions it handles PPPoE better, the results are worse than Opnsense. I get 380-400 Mbit/s. With ip-ip link the results are great as with opnsense (2.3-2.4Gbit/s)
I was starting to think the issue is coming from the PPPoE server but it doesn't make much sense since I'm getting the same performance using my laptop as a server (i7-11th mobile cpu) and my desktop (ryzen 9 3900x).