Hello I hope one of you can help point me in the right direction.
I have a VPS with a static IP and a wireguard tunnel from VPS to home network (no bridging in the router, just point-to-point with specific devices).
I found an abysmal connection speed with bandwidth on the order of 50-100 kbps tested via iperf. Connection between the same devices outside the wireguard tunnel is 10-20 mbps, which is 100-400 times slower, which I don’t understand since wireguard usually has very little overhead.
I have tried different MTU settings on both VPS and devices on my home network (both cabled and via wi-fi) in the range from 1360 to 1460, and above speeds are the best I have reached with MTU 1420 and 1440. I have tried both with and without iptables rules setting the mss correspondingly.
The above speeds are acceptable for incremental backups and document synchronization, but completely unsuitable for media streaming.
Where would I start diagnosing the bottleneck?
Thanks in advance.
tychosmoose@lemmy.world 3 days ago
Are you specifying bandwidth (-b) on the iperf UDP test? It defaults to 1M if I recall correctly, which would explain the result.
If not, try
-b 10M
or-b 0
for unlimited (the behavior used for TCP).stavefajl@feddit.dk 2 days ago
Thanks! I had not read the manpage close enough, I guess. When specifying the bandwidth, I can saturate the connection using UDP to around 15 Mbits/s. (That this speed is much much lower than the 300-500 Mbits my connection and the VPS is capable of is a problem for a different time, I think).
What I also realized is, that I had not put the iperf server in UDP-mode, so my results reported in another comment are wrong. I read the results from the client, but the server did not respond. When running the iperf server in UDP-mode, I get 15 Mbits/s outside the wireguard tunnel and 180 Kbits/s inside the tunnel. With TCP-mode I get 10-15 Mbits/s outside the thunnel and 250 Kbits/s inside the tunnel.
tychosmoose@lemmy.world 2 days ago
Just throwing out more ideas:
Is there a CPU spike on the VPS?
Anything weird about Wireguard on either end? Using kernel mode WG everywhere and not a user mode version, right?
As a test I would be inclined to try a very small mtu to see if it makes a difference. 1280 is a failsafe that I use when on unknown networks and trying to wg out.
Maybe try with a smaller packet size, like 1KB which I think is
-l 1K