I have multiple laptops running FreeBSD 12.1 (used as a router, only 1 is active at a time) and all are maxing out at < 100 Mbps and I should be getting 200 Mbps. I tried the same hardware booted up to Ubuntu and it is seeing > 200 Mbps, so I am sure it isn't hardware. I also have tried disabling lro, tso, tx and rx checksums, but that didn't seem to have any effect.
I should note that I since I'm using a laptop as a router, I am using a USB Ethernet adapter to provide the WAN connection. As the laptop is older, it is only USB 2.0 (480 Mbps). That should still be providing adequate bandwidth to get 200 Mbps. The LAN port is 1 Gbps.
I ran tcpdump to see what was going on and I see a high number of TCP retransmissions and duplicate acks. Additionally, when the laptop is idle, the CPU is 99+% idle, whenever I run a speed test, I see the CPU idling at as little as 35%. I am running ZFS on all the laptops. Is there perhaps some sort of interaction with ZFS, network load, and CPU usage that is causing this degradation? If the CPU is having trouble keeping up, that could explain the retransmissions or duplicate acks, it's too latent. I also tried disabling pf to see if my rules were too complex and that made no difference.
I should note that I since I'm using a laptop as a router, I am using a USB Ethernet adapter to provide the WAN connection. As the laptop is older, it is only USB 2.0 (480 Mbps). That should still be providing adequate bandwidth to get 200 Mbps. The LAN port is 1 Gbps.
I ran tcpdump to see what was going on and I see a high number of TCP retransmissions and duplicate acks. Additionally, when the laptop is idle, the CPU is 99+% idle, whenever I run a speed test, I see the CPU idling at as little as 35%. I am running ZFS on all the laptops. Is there perhaps some sort of interaction with ZFS, network load, and CPU usage that is causing this degradation? If the CPU is having trouble keeping up, that could explain the retransmissions or duplicate acks, it's too latent. I also tried disabling pf to see if my rules were too complex and that made no difference.