So I've been trying out Davidc502's build on my WRT1900AC. The router was collecting dust for a while since the mwlwifi driver was a bit unstable and the router would periodically reboot on the account of the 4.9 kernel issues. It looks like with the release of 18.06.1 and the latest mwlwifi driver, all issues have been resolved.
I'm now playing with Wireguard as it has some promising performance numbers compared to OpenVPN. It appears the limits of the WRT1900AC are about ~ 300Mbits/sec over a Wireguard link.
I'm sure with a WRT3200ACM or perhaps the R7800 with a better CPU I can reach near Gbit speeds. Has anyone else tried testing Wireguard on either of these two routers?
Here are some results. The VMs are running on a DL380-G7 w/ Xeon L5640 and vSphere 6.7
From Linux VM to WRT1900AC (via 1Gb network) (no Wireguard tunnel)
root@ubuntu:~# iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[ 4] local 192.168.1.94 port 38290 connected to 192.168.1.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 109 MBytes 918 Mbits/sec 75 232 KBytes
[ 4] 1.00-2.00 sec 109 MBytes 913 Mbits/sec 42 158 KBytes
[ 4] 2.00-3.00 sec 110 MBytes 919 Mbits/sec 81 267 KBytes
[ 4] 3.00-4.00 sec 108 MBytes 907 Mbits/sec 73 170 KBytes
[ 4] 4.00-5.00 sec 107 MBytes 899 Mbits/sec 28 211 KBytes
[ 4] 5.00-6.00 sec 97.1 MBytes 814 Mbits/sec 26 334 KBytes
From Linux VM to WRT1900AC (via 1Gb network) (via Wireguard tunnel)
root@ubuntu:~# iperf3 -c 10.20.40.1 -t 10
Connecting to host 10.20.40.1, port 5201
[ 4] local 10.20.40.4 port 56268 connected to 10.20.40.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 35.9 MBytes 301 Mbits/sec 44 198 KBytes
[ 4] 1.00-2.00 sec 37.5 MBytes 315 Mbits/sec 4 218 KBytes
[ 4] 2.00-3.00 sec 35.9 MBytes 301 Mbits/sec 4 248 KBytes
[ 4] 3.00-4.00 sec 36.9 MBytes 309 Mbits/sec 16 194 KBytes
[ 4] 4.00-5.00 sec 35.9 MBytes 301 Mbits/sec 8 222 KBytes
[ 4] 5.00-6.00 sec 36.7 MBytes 308 Mbits/sec 19 231 KBytes
[ 4] 6.00-7.00 sec 36.9 MBytes 310 Mbits/sec 3 250 KBytes
[ 4] 7.00-8.00 sec 37.0 MBytes 311 Mbits/sec 15 259 KBytes
With the second test, the CPUs on the WRT1900ac are pegged at 100%
Next, I thought I'd try between two VMs on the DL360 over a 10Gb vswitch (VMNET3)
The first VM is running Ubuntu, the second one is OpenWRT x86_64
First, direct link over the virtual network.
root@ubuntu:~# iperf3 -c 192.168.1.254
Connecting to host 192.168.1.254, port 5201
[ 4] local 192.168.1.94 port 49170 connected to 192.168.1.254 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.31 GBytes 11.2 Gbits/sec 168 518 KBytes
[ 4] 1.00-2.00 sec 944 MBytes 7.92 Gbits/sec 0 836 KBytes
[ 4] 2.00-3.00 sec 1.15 GBytes 9.89 Gbits/sec 68 851 KBytes
[ 4] 3.00-4.00 sec 1.01 GBytes 8.66 Gbits/sec 0 851 KBytes
[ 4] 4.00-5.00 sec 1.15 GBytes 9.85 Gbits/sec 598 798 KBytes
[ 4] 5.00-6.00 sec 1019 MBytes 8.54 Gbits/sec 0 884 KBytes
[ 4] 6.00-7.00 sec 1.18 GBytes 10.1 Gbits/sec 118 846 KBytes
[ 4] 7.00-8.00 sec 1.01 GBytes 8.67 Gbits/sec 378 625 KBytes
Finally, the same two VMs over the Wireguard tunnel via the virtual network
root@ubuntu:~# iperf3 -c 10.20.40.1
Connecting to host 10.20.40.1, port 5201
[ 4] local 10.20.40.4 port 56280 connected to 10.20.40.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 190 MBytes 1.59 Gbits/sec 786 350 KBytes
[ 4] 1.00-2.00 sec 188 MBytes 1.58 Gbits/sec 0 625 KBytes
[ 4] 2.00-3.00 sec 217 MBytes 1.82 Gbits/sec 48 506 KBytes
[ 4] 3.00-4.00 sec 222 MBytes 1.86 Gbits/sec 1 612 KBytes
[ 4] 4.00-5.00 sec 225 MBytes 1.89 Gbits/sec 64 492 KBytes
[ 4] 5.00-6.00 sec 221 MBytes 1.85 Gbits/sec 1 625 KBytes
[ 4] 6.00-7.00 sec 228 MBytes 1.92 Gbits/sec 0 848 KBytes
[ 4] 7.00-8.00 sec 229 MBytes 1.92 Gbits/sec 103 824 KBytes
[ 4] 8.00-9.00 sec 230 MBytes 1.93 Gbits/sec 163 768 KBytes
[ 4] 9.00-10.00 sec 212 MBytes 1.78 Gbits/sec 78 387 KBytes
This last test pegged the two vCPUs assigned to the OpenWRT VM running WireGuard. I suppose I could double the vCPUs and see if this improves performance.