A Wireguard comparison DB

Test on NanoPi R2S again:

root@OpenWrt:~/wg-bench# ubus call system board
{
	"kernel": "6.6.73",
	"hostname": "OpenWrt",
	"system": "ARMv8 Processor rev 4",
	"model": "FriendlyElec NanoPi R2S",
	"board_name": "friendlyarm,nanopi-r2s",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.0-rc6",
		"revision": "r28388-58d0057481",
		"target": "rockchip/armv8",
		"description": "OpenWrt 24.10.0-rc6 r28388-58d0057481",
		"builddate": "1737575574"
	}
}

Test results:

root@OpenWrt:~/wg-bench# ./benchmark.sh 
Connecting to host 169.254.200.2, port 5201
[  5] local 169.254.200.1 port 43044 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  39.1 MBytes   328 Mbits/sec    0    371 KBytes       
[  5]   1.00-2.00   sec  38.5 MBytes   323 Mbits/sec    0    390 KBytes       
[  5]   2.00-3.00   sec  38.8 MBytes   325 Mbits/sec    0    413 KBytes       
[  5]   3.00-4.00   sec  36.8 MBytes   308 Mbits/sec    0    538 KBytes       
[  5]   4.00-5.00   sec  37.8 MBytes   316 Mbits/sec    0    538 KBytes       
[  5]   5.00-6.00   sec  38.6 MBytes   324 Mbits/sec    0    538 KBytes       
[  5]   6.00-7.00   sec  38.8 MBytes   325 Mbits/sec    0    538 KBytes       
[  5]   7.00-8.00   sec  38.9 MBytes   326 Mbits/sec    0    538 KBytes       
[  5]   8.00-9.00   sec  38.6 MBytes   324 Mbits/sec    0    538 KBytes       
[  5]   9.00-10.00  sec  38.5 MBytes   323 Mbits/sec    0    538 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   385 MBytes   323 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   383 MBytes   321 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:~/wg-bench# ./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[  5] local 169.254.200.1 port 44796 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  36.2 MBytes   304 Mbits/sec                  
[  5]   1.00-2.00   sec  37.1 MBytes   311 Mbits/sec                  
[  5]   2.00-3.00   sec  36.6 MBytes   307 Mbits/sec                  
[  5]   3.00-4.00   sec  36.8 MBytes   309 Mbits/sec                  
[  5]   4.00-5.00   sec  36.5 MBytes   306 Mbits/sec                  
[  5]   5.00-6.00   sec  36.4 MBytes   305 Mbits/sec                  
[  5]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec                  
[  5]   7.00-8.00   sec  36.5 MBytes   306 Mbits/sec                  
[  5]   8.00-9.00   sec  37.0 MBytes   310 Mbits/sec                  
[  5]   9.00-10.00  sec  36.4 MBytes   305 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   368 MBytes   308 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   367 MBytes   308 Mbits/sec                  receiver

iperf Done.

I found it strange, I own R6S, just tested with RC6 and the restult is still < 1Gbps (910Mbps, though it's already significantly higher than before), but I wonder how you get > 3Gbps with R6C???

{
  "client": "owut/2025.01.06~e623a900-r1",
  "target": "rockchip/armv8",
  "profile": "friendlyarm_nanopi-r6c",
  "version": "24.10.0-rc6",
  "version_code": "r28388-58d0057481",
  "filesystem": "squashfs",
  "diff_packages": true,
  "packages": [
    "luci-proto-wireguard",
    "libc",
    "mkf2fs",
    "opkg",
    "ip-full",
    "luci-app-irqbalance",
    "kmod-veth",
    "procd-ujail",
    "base-files",
    "partx-utils",
    "libustream-mbedtls",
    "firewall4",
    "kmod-r8125-rss",
    "odhcp6c",
    "uci",
    "dropbear",
    "mtd",
    "odhcpd-ipv6only",
    "urandom-seed",
    "logd",
    "e2fsprogs",
    "ca-bundle",
    "luci",
    "owut",
    "kernel",
    "git-http",
    "iperf3",
    "openvpn-mbedtls",
    "urngd",
    "luci-app-openvpn",
    "dnsmasq-full"
  ],
  "rootfs_size_mb": 1024
}

The other things I did:

Question: Why is R8169 being replaced?

because 8125 is faster

It used to be that sometimes when you ran iperf3 it would appear to use or lead with the big cores and you get that nice result, and sometimes it would use or lead with the small cores and get the result you get. I think perhaps that some change got made in recent kernels and now it just always seems to use/lead with the slow cores... or something like this.I'm not sure what to do about it I kind of actually like it that way. I use containers on my Rock 5b and force the openwrt containers to use the slow cores and force the distro container to only use big cores that way the smaller cores never get lagged down. It seems like 2 small cores is about enough for my 100/40 mbit/s internet

Below is something just for fun, I grabbed a pretty old laptop Dell Inspiron N4050 and do the test.

Processor: Intel Pentium B950 (2C2T @2.1GHz)
Running OpenWrt 24.10.0-rc7
Tested result: 1.31 Gbps (1.2 Gbps when using -R)

The result is quite close to modern Celeron J4125 and the Desktop i7 in same generation, I wonder why......

B950 and Celeron J4125 having comparable performance wouldn't surprise me (old Core vs new'ish Atom), as the Atom platform was quite neglected for a long time (that only changed with alderlake-n) - with a very distinct performance delta between Core- and Atom architectures. Any i7 should obviously be (much) faster.

Just to add some, different, context (kernel build, with a specific config):

Kernel build 'benchmark' for a small selection of x86_64 devices
  • Atom 330
    real 674m32,640s
    user 2407m8,127s
    sys 243m21,977s
  • Atom J1900
    real 213m36,622s
    user 639m13,289s
    sys 62m58,065s
  • c1037u
    real 200m32,758s
    user 359m17,649s
    sys 30m58,063s
  • Pentium G850
    real 132m28,026s
    user 235m5,151s
    sys 23m59,497s
  • Pentium G2020
    real 127m45,483s
    user 229m24,599s
    sys 21m47,691s
  • i7-2600K
    real 46m39,313s
    user 325m39,929s
    sys 36m23,108s

(stopping the off-topic list here)

--
E.g. my ivy-bridge based Celeron 1037u ist much faster than my Baytrail-D Atom j1900, both of roughly similar vintage.

OpenWrt One with OpenWrt 24.10.0 and receive packet steering (RPS), receive flow steering (RFS) and irqbalance enabled:

|OpenWrt One | Mediatek MT7981BA (Dual Core A53, 1.3 GHz) | 24.10.0 | 372Mbps|

/etc/config/network globals

config globals 'globals'
option ula_prefix 'fde8:aaaa:aaaa::/48'
option packet_steering '2'
option steering_flows '128'

Router details:

Router details:
{
"kernel": "6.6.73",
"hostname": "OpenWrt_One",
"system": "ARMv8 Processor rev 4",
"model": "OpenWrt One",
"board_name": "openwrt,one",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "24.10.0",
"revision": "r28427-6df0e3d02a",
"target": "mediatek/filogic",
"description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
"builddate": "1738624177"
}
}

Forward test

Connecting to host 169.254.200.2, port 4242
[ 5] local 169.254.200.1 port 51098 connected to 169.254.200.2 port 4242
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 47.1 MBytes 395 Mbits/sec 0 946 KBytes
[ 5] 1.00-2.00 sec 48.6 MBytes 408 Mbits/sec 0 1.52 MBytes
[ 5] 2.00-3.00 sec 49.0 MBytes 411 Mbits/sec 0 1.52 MBytes
[ 5] 3.00-4.00 sec 49.2 MBytes 413 Mbits/sec 0 1.52 MBytes
[ 5] 4.00-5.00 sec 49.1 MBytes 411 Mbits/sec 0 1.81 MBytes
[ 5] 5.00-6.00 sec 49.4 MBytes 416 Mbits/sec 0 1.91 MBytes
[ 5] 6.00-7.00 sec 49.5 MBytes 415 Mbits/sec 0 1.91 MBytes
[ 5] 7.00-8.00 sec 48.9 MBytes 410 Mbits/sec 254 1.46 MBytes
[ 5] 8.00-9.00 sec 48.0 MBytes 402 Mbits/sec 0 1.55 MBytes
[ 5] 9.00-10.00 sec 50.5 MBytes 424 Mbits/sec 0 1.55 MBytes


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 489 MBytes 410 Mbits/sec 254 sender
[ 5] 0.00-10.01 sec 486 MBytes 408 Mbits/sec receiver

iperf done

Reverse test

root@OpenWrt_One:/srv/persistent_data/CODE/wg-bench$ ./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[ 5] local 169.254.200.1 port 60034 connected to 169.254.200.2 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 43.6 MBytes 365 Mbits/sec
[ 5] 1.00-2.00 sec 45.6 MBytes 382 Mbits/sec
[ 5] 2.00-3.00 sec 45.6 MBytes 383 Mbits/sec
[ 5] 3.00-4.01 sec 45.5 MBytes 379 Mbits/sec
[ 5] 4.01-5.00 sec 42.6 MBytes 360 Mbits/sec
[ 5] 5.00-6.00 sec 45.1 MBytes 379 Mbits/sec
[ 5] 6.00-7.00 sec 43.1 MBytes 362 Mbits/sec
[ 5] 7.00-8.00 sec 45.1 MBytes 379 Mbits/sec
[ 5] 8.00-9.00 sec 43.1 MBytes 361 Mbits/sec
[ 5] 9.00-10.00 sec 43.5 MBytes 365 Mbits/sec


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 446 MBytes 374 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 443 MBytes 372 Mbits/sec receiver

iperf done

2 Likes

Seems to be a significant jump when compared to the 24.10.0-RC2 (which was 327Mbps)

1 Like

I guess enabling RPS/RFS hekps for this test, and the defaults of RPS disabled might just not help the One...

Buffalo WXR-2533DHP:

Router Details

root@OpenWrt:~/wg-bench# ubus call system board
{
"kernel": "5.15.167",
"hostname": "OpenWrt",
"system": "ARMv7 Processor rev 0 (v7l)",
"model": "Buffalo WXR-2533DHP",
"board_name": "buffalo,wxr-2533dhp",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "23.05.5",
"revision": "r24106-10cc5fcd00",
"target": "ipq806x/generic",
"description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
}
}

Forward

oot@OpenWrt:~/wg-bench# ./benchmark.sh
Connecting to host 169.254.200.2, port 5201
[ 5] local 169.254.200.1 port 36356 connected to 169.254.200.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 34.5 MBytes 289 Mbits/sec 0 965 KBytes
[ 5] 1.00-2.00 sec 35.1 MBytes 295 Mbits/sec 15 1.06 MBytes
[ 5] 2.00-3.00 sec 32.6 MBytes 274 Mbits/sec 0 1.17 MBytes
[ 5] 3.00-4.00 sec 34.4 MBytes 288 Mbits/sec 0 1.25 MBytes
[ 5] 4.00-5.00 sec 34.6 MBytes 290 Mbits/sec 8 954 KBytes
[ 5] 5.00-6.01 sec 34.0 MBytes 283 Mbits/sec 0 1013 KBytes
[ 5] 6.01-7.00 sec 33.9 MBytes 286 Mbits/sec 0 1.05 MBytes
[ 5] 7.00-8.00 sec 33.8 MBytes 283 Mbits/sec 0 1.09 MBytes
[ 5] 8.00-9.00 sec 33.9 MBytes 284 Mbits/sec 0 1.11 MBytes
[ 5] 9.00-10.00 sec 35.4 MBytes 297 Mbits/sec 0 1.13 MBytes


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 342 MBytes 287 Mbits/sec 23 sender
[ 5] 0.00-10.02 sec 340 MBytes 284 Mbits/sec receiver

iperf Done.

Reverse

root@OpenWrt:~/wg-bench# ./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[ 5] local 169.254.200.1 port 47532 connected to 169.254.200.2 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 31.2 MBytes 262 Mbits/sec
[ 5] 1.00-2.00 sec 31.8 MBytes 266 Mbits/sec
[ 5] 2.00-3.00 sec 32.6 MBytes 274 Mbits/sec
[ 5] 3.00-4.00 sec 31.6 MBytes 265 Mbits/sec
[ 5] 4.00-5.00 sec 33.0 MBytes 277 Mbits/sec
[ 5] 5.00-6.00 sec 32.9 MBytes 276 Mbits/sec
[ 5] 6.00-7.00 sec 32.4 MBytes 272 Mbits/sec
[ 5] 7.00-8.00 sec 32.6 MBytes 274 Mbits/sec
[ 5] 8.00-9.00 sec 32.1 MBytes 269 Mbits/sec
[ 5] 9.00-10.00 sec 32.5 MBytes 273 Mbits/sec


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 326 MBytes 273 Mbits/sec 224 sender
[ 5] 0.00-10.00 sec 323 MBytes 271 Mbits/sec receiver

1 Like

Notes: Script doesn't work on:

openwrt 19.07
./setup-netns.sh 
Failed to create a new network namespace "wg-bench": Invalid argument
Error: argument "wg-bench" is wrong: Invalid "netns" value

Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
Cannot open network namespace "wg-bench": No such file or directory
OpenWrt SNAPSHOT, r28854-b74318481b
./setup-netns.sh 
Error: Unknown device type.
Cannot find device "wg-bench-ns"
Cannot find device "wg-bench"
Cannot find device "wg-bench-ns"
Cannot find device "wg-bench"
Cannot find device "wg-bench-ns"
This text will be hidden

Xiaomi Redmi Router AX6S

ubus call system board
{
        "kernel": "5.15.167",
        "hostname": "openwrt",
        "system": "ARMv8 Processor rev 4",
        "model": "Xiaomi Redmi Router AX6S",
        "board_name": "xiaomi,redmi-router-ax6s",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.5",
                "revision": "r24106-10cc5fcd00",
                "target": "mediatek/mt7622",
                "description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
        }
}
./benchmark.sh
Connecting to host 169.254.200.2, port 5201
[  5] local 169.254.200.1 port 44602 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  48.1 MBytes   403 Mbits/sec    0    955 KBytes       
[  5]   1.00-2.00   sec  44.2 MBytes   371 Mbits/sec    0    955 KBytes       
[  5]   2.00-3.00   sec  45.0 MBytes   377 Mbits/sec    0    955 KBytes       
[  5]   3.00-4.00   sec  44.2 MBytes   371 Mbits/sec    0    955 KBytes       
[  5]   4.00-5.00   sec  46.5 MBytes   390 Mbits/sec    0    955 KBytes       
[  5]   5.00-6.00   sec  44.2 MBytes   371 Mbits/sec    0    955 KBytes       
[  5]   6.00-7.00   sec  43.5 MBytes   365 Mbits/sec    0    955 KBytes       
[  5]   7.00-8.00   sec  46.5 MBytes   390 Mbits/sec    0    955 KBytes       
[  5]   8.00-9.00   sec  45.0 MBytes   378 Mbits/sec    0    955 KBytes       
[  5]   9.00-10.00  sec  46.1 MBytes   386 Mbits/sec    0    955 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   454 MBytes   381 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   453 MBytes   380 Mbits/sec                  receiver

iperf Done.
./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[  5] local 169.254.200.1 port 33176 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  41.0 MBytes   344 Mbits/sec                  
[  5]   1.00-2.00   sec  42.2 MBytes   354 Mbits/sec                  
[  5]   2.00-3.00   sec  42.8 MBytes   359 Mbits/sec                  
[  5]   3.00-4.00   sec  41.5 MBytes   348 Mbits/sec                  
[  5]   4.00-5.00   sec  39.9 MBytes   335 Mbits/sec                  
[  5]   5.00-6.00   sec  43.6 MBytes   365 Mbits/sec                  
[  5]   6.00-7.00   sec  41.0 MBytes   345 Mbits/sec                  
[  5]   7.00-8.00   sec  44.5 MBytes   373 Mbits/sec                  
[  5]   8.00-9.00   sec  42.2 MBytes   354 Mbits/sec                  
[  5]   9.00-10.00  sec  40.9 MBytes   343 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   421 MBytes   353 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   420 MBytes   352 Mbits/sec                  receiver

iperf Done.

ASUS RT-AX53U

ubus call system board
{
        "kernel": "6.6.73",
        "hostname": "openwrt",
        "system": "MediaTek MT7621 ver:1 eco:3",
        "model": "ASUS RT-AX53U",
        "board_name": "asus,rt-ax53u",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0",
                "revision": "r28427-6df0e3d02a",
                "target": "ramips/mt7621",
                "description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
                "builddate": "1738624177"
        }
}
./benchmark.sh
./benchmark.sh 
Connecting to host 169.254.200.2, port 5201
[  5] local 169.254.200.1 port 51432 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  9.25 MBytes  77.4 Mbits/sec    0    152 KBytes       
[  5]   1.00-2.00   sec  9.00 MBytes  75.5 Mbits/sec    0    159 KBytes       
[  5]   2.00-3.00   sec  9.38 MBytes  78.6 Mbits/sec    0    167 KBytes       
[  5]   3.00-4.00   sec  9.25 MBytes  77.5 Mbits/sec    0    167 KBytes       
[  5]   4.00-5.00   sec  9.12 MBytes  76.7 Mbits/sec    0    186 KBytes       
[  5]   5.00-6.00   sec  9.50 MBytes  79.6 Mbits/sec    0    186 KBytes       
[  5]   6.00-7.00   sec  9.25 MBytes  77.7 Mbits/sec    0    186 KBytes       
[  5]   7.00-8.00   sec  9.62 MBytes  80.6 Mbits/sec    0    228 KBytes       
[  5]   8.00-9.00   sec  9.50 MBytes  79.8 Mbits/sec    0    228 KBytes       
[  5]   9.00-10.00  sec  9.25 MBytes  77.3 Mbits/sec    0    228 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  93.1 MBytes  78.1 Mbits/sec    0             sender
[  5]   0.00-10.01  sec  92.8 MBytes  77.7 Mbits/sec                  receiver

iperf Done.
./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[  5] local 169.254.200.1 port 39502 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  9.75 MBytes  81.8 Mbits/sec                  
[  5]   1.00-2.00   sec  9.88 MBytes  82.8 Mbits/sec                  
[  5]   2.00-3.00   sec  10.1 MBytes  84.9 Mbits/sec                  
[  5]   3.00-4.00   sec  10.1 MBytes  84.9 Mbits/sec                  
[  5]   4.00-5.00   sec  10.1 MBytes  84.8 Mbits/sec                  
[  5]   5.00-6.00   sec  10.2 MBytes  86.2 Mbits/sec                  
[  5]   6.00-7.00   sec  10.0 MBytes  83.9 Mbits/sec                  
[  5]   7.00-8.00   sec  9.75 MBytes  81.7 Mbits/sec                  
[  5]   8.00-9.00   sec  10.2 MBytes  85.7 Mbits/sec                  
[  5]   9.00-10.00  sec  9.88 MBytes  83.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   101 MBytes  84.5 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   100 MBytes  84.0 Mbits/sec                  receiver

iperf Done.

Bananapi BPI-R4

ubus call system board
{
        "kernel": "6.6.69",
        "hostname": "openwrt",
        "system": "ARMv8 Processor rev 0",
        "model": "Bananapi BPI-R4",
        "board_name": "bananapi,bpi-r4",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0-rc5",
                "revision": "r28304-6dacba30a7",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.0-rc5 r28304-6dacba30a7",
                "builddate": "1736026537"
        }
}
./benchmark.sh
Connecting to host 169.254.200.2, port 5201
[  5] local 169.254.200.1 port 33384 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   140 MBytes  1.17 Gbits/sec    0    767 KBytes       
[  5]   1.00-2.00   sec   136 MBytes  1.14 Gbits/sec    0    767 KBytes       
[  5]   2.00-3.00   sec   140 MBytes  1.17 Gbits/sec    0    998 KBytes       
[  5]   3.00-4.00   sec   138 MBytes  1.16 Gbits/sec    0    998 KBytes       
[  5]   4.00-5.00   sec   137 MBytes  1.15 Gbits/sec    0    998 KBytes       
[  5]   5.00-6.00   sec   140 MBytes  1.18 Gbits/sec    0   1.29 MBytes       
[  5]   6.00-7.00   sec   136 MBytes  1.14 Gbits/sec    0   1.29 MBytes       
[  5]   7.00-8.00   sec   138 MBytes  1.15 Gbits/sec    0   1.29 MBytes       
[  5]   8.00-9.00   sec   138 MBytes  1.15 Gbits/sec    0   1.29 MBytes       
[  5]   9.00-10.00  sec   138 MBytes  1.16 Gbits/sec    0   1.59 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.35 GBytes  1.16 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.34 GBytes  1.15 Gbits/sec                  receiver

iperf Done.
./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[  5] local 169.254.200.1 port 43268 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   120 MBytes  1.01 Gbits/sec                  
[  5]   1.00-2.00   sec   121 MBytes  1.01 Gbits/sec                  
[  5]   2.00-3.00   sec   120 MBytes  1.01 Gbits/sec                  
[  5]   3.00-4.00   sec   121 MBytes  1.01 Gbits/sec                  
[  5]   4.00-5.00   sec   120 MBytes  1.01 Gbits/sec                  
[  5]   5.00-6.00   sec   120 MBytes  1.01 Gbits/sec                  
[  5]   6.00-7.00   sec   121 MBytes  1.01 Gbits/sec                  
[  5]   7.00-8.00   sec   120 MBytes  1.01 Gbits/sec                  
[  5]   8.00-9.00   sec   120 MBytes  1.00 Gbits/sec                  
[  5]   9.00-10.00  sec   119 MBytes   999 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.18 GBytes  1.01 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.17 GBytes  1.01 Gbits/sec                  receiver

iperf Done.

MikroTik RouterBOARD 962UiGS-5HacT2HnT (hAP ac)

ubus call system board
{
        "kernel": "6.6.73",
        "hostname": "openwrt",
        "system": "Qualcomm Atheros QCA9558 ver 1 rev 0",
        "model": "MikroTik RouterBOARD 962UiGS-5HacT2HnT (hAP ac)",
        "board_name": "mikrotik,routerboard-962uigs-5hact2hnt",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0",
                "revision": "r28427-6df0e3d02a",
                "target": "ath79/mikrotik",
                "description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
                "builddate": "1738624177"
        }
}
./benchmark.sh
Connecting to host 169.254.200.2, port 5201
[  5] local 169.254.200.1 port 48712 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  5.38 MBytes  44.9 Mbits/sec    0    269 KBytes       
[  5]   1.00-2.00   sec  4.88 MBytes  41.0 Mbits/sec    0    522 KBytes       
[  5]   2.00-3.00   sec  5.25 MBytes  44.1 Mbits/sec    0    584 KBytes       
[  5]   3.00-4.01   sec  5.25 MBytes  43.8 Mbits/sec    0    584 KBytes       
[  5]   4.01-5.01   sec  5.00 MBytes  42.0 Mbits/sec    0    584 KBytes       
[  5]   5.01-6.00   sec  5.25 MBytes  44.3 Mbits/sec    0    584 KBytes       
[  5]   6.00-7.01   sec  4.88 MBytes  40.7 Mbits/sec    0    584 KBytes       
[  5]   7.01-8.00   sec  5.38 MBytes  45.4 Mbits/sec    0    584 KBytes       
[  5]   8.00-9.01   sec  4.88 MBytes  40.7 Mbits/sec    0    584 KBytes       
[  5]   9.01-10.01  sec  5.00 MBytes  41.6 Mbits/sec    0    584 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  51.1 MBytes  42.8 Mbits/sec    0             sender
[  5]   0.00-10.08  sec  51.0 MBytes  42.5 Mbits/sec                  receiver

iperf Done.
./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[  5] local 169.254.200.1 port 46190 connected to 169.254.200.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  4.00 MBytes  33.5 Mbits/sec                  
[  5]   1.00-2.00   sec  4.25 MBytes  35.7 Mbits/sec                  
[  5]   2.00-3.01   sec  4.25 MBytes  35.4 Mbits/sec                  
[  5]   3.01-4.00   sec  4.12 MBytes  34.9 Mbits/sec                  
[  5]   4.00-5.00   sec  4.25 MBytes  35.6 Mbits/sec                  
[  5]   5.00-6.00   sec  4.12 MBytes  34.6 Mbits/sec                  
[  5]   6.00-7.00   sec  4.25 MBytes  35.6 Mbits/sec                  
[  5]   7.00-8.00   sec  4.25 MBytes  35.7 Mbits/sec                  
[  5]   8.00-9.00   sec  4.12 MBytes  34.6 Mbits/sec                  
[  5]   9.00-10.01  sec  4.25 MBytes  35.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec  42.6 MBytes  35.7 Mbits/sec    0             sender
[  5]   0.00-10.01  sec  41.9 MBytes  35.1 Mbits/sec                  receiver

iperf Done.

I think it's normal that it can't be run on 19.x which is too old (and for old devices that stuck at that version should be too slow for VPN as well)

Let's hope, that the device in question stuck in 19.07 (RB2011UiAS-2HnD-IN) will be supported in 24.10.

There are quite a few "old" routers that can't encrypt with speeds as 1Gbps, but are pretty damn useful for a range of other cases and thanks to @lanrat (if same guy) can be made versatile with tailscale/headscale.

Also, snapshot is also not supported.

BTW, here's the results of iperf3 on a remote machine

ubus call system board
{
        "kernel": "4.14.275",
        "hostname": "openwrt",
        "system": "Atheros AR9344 rev 3",
        "model": "Mikrotik RouterBOARD RB2011UiAS-2HnD",
        "board_name": "rb-2011uias-2hnd",
        "release": {
                "distribution": "OpenWrt",
                "version": "19.07.10",
                "revision": "r11427-9ce6aa9d8d",
                "target": "ar71xx/mikrotik",
                "description": "OpenWrt 19.07.10 r11427-9ce6aa9d8d"
        }
}
iperf3 -c remote_machine_through_wireguard
Connecting to host x.x.x.x, port 520This text will be hidden1
[  5] local 10.0.255.6 port 47948 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.27 MBytes  10.6 Mbits/sec    0   98.9 KBytes       
[  5]   1.00-2.00   sec  1.97 MBytes  16.5 Mbits/sec    0    188 KBytes       
[  5]   2.00-3.00   sec  2.39 MBytes  20.0 Mbits/sec    0    301 KBytes       
[  5]   3.00-4.00   sec  2.33 MBytes  19.6 Mbits/sec    0    417 KBytes       
[  5]   4.00-5.01   sec  2.64 MBytes  22.0 Mbits/sec    1    331 KBytes       
[  5]   5.01-6.00   sec  2.27 MBytes  19.1 Mbits/sec    0    371 KBytes       
[  5]   6.00-7.00   sec  2.21 MBytes  18.5 Mbits/sec    1    278 KBytes       
[  5]   7.00-8.00   sec  2.21 MBytes  18.6 Mbits/sec    0    302 KBytes       
[  5]   8.00-9.00   sec  2.08 MBytes  17.5 Mbits/sec    0    317 KBytes       
[  5]   9.00-10.00  sec  2.58 MBytes  21.6 Mbits/sec    0    323 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  21.9 MBytes  18.4 Mbits/sec    2             sender
[  5]   0.00-10.05  sec  21.6 MBytes  18.0 Mbits/sec                  receiver

iperf Done.
iperf3 -c remote_machine_without_wireguard
Connecting to host a.b.c, port 5201
[  5] local x.x.x.x port 39170 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.66 MBytes  13.9 Mbits/sec    0    136 KBytes       
[  5]   1.00-2.00   sec  2.70 MBytes  22.7 Mbits/sec    0    260 KBytes       
[  5]   2.00-3.00   sec  2.61 MBytes  21.9 Mbits/sec    0    370 KBytes       
[  5]   3.00-4.00   sec  2.75 MBytes  23.1 Mbits/sec    0    495 KBytes       
[  5]   4.00-5.00   sec  3.02 MBytes  25.3 Mbits/sec    0    542 KBytes       
[  5]   5.00-6.00   sec  2.60 MBytes  21.8 Mbits/sec    0    571 KBytes       
[  5]   6.00-7.00   sec  1.44 MBytes  12.1 Mbits/sec    0    571 KBytes       
[  5]   7.00-8.00   sec  2.64 MBytes  22.2 Mbits/sec    0    571 KBytes       
[  5]   8.00-9.00   sec  3.12 MBytes  26.1 Mbits/sec    0    610 KBytes       
[  5]   9.00-10.00  sec  2.94 MBytes  24.8 Mbits/sec    0    610 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  25.5 MBytes  21.4 Mbits/sec    0             sender
[  5]   0.00-10.09  sec  25.3 MBytes  21.0 Mbits/sec                  receiver

iperf Done.

Not too shabby at all. Thtoughput is less, but my use-case is not affected at all. Keep in mind this cpu has a single 500Mhz core.

You should probably measure also the CPU usage during wireguard test (or maybe keep it running longer to observe), I do tested a few MT7620/MT7628 devices which are also in range of less than 20Mbps wireguard, and the system would easily crash when having VPN tunnel, due to insufficient system resources, I don't know if the RB2011 can do better here (in fact I have the same device many years ago)

I was watching, it was 100% :slight_smile:
Sometimes I have to stop tailscale when doing stuff, because it degrades everything else. With just wg - it's kind of fine.

I just started using it as a replacement for a bricked device and it can't handle the same load. It's great for a backup device though and has 128mb/128mb flash/ram, usb port, 8 ports, a switch, usb, poe. Pretty versatile.

It's fine for router, but might not do very well when you have VPN

Zyxel EX5601-T0/T-56 on 24.10.0

ubus call system board
{
	"kernel": "6.6.73",
	"hostname": "gw",
	"system": "ARMv8 Processor rev 4",
	"model": "Zyxel EX5601-T0 ubootmod",
	"board_name": "zyxel,ex5601-t0-ubootmod",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.0",
		"revision": "r28427-6df0e3d02a",
		"target": "mediatek/filogic",
		"description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
		"builddate": "1738624177"
	}
}
forward
Connecting to host 169.254.200.2, port 4242
[  5] local 169.254.200.1 port 40156 connected to 169.254.200.2 port 4242
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  88.9 MBytes   745 Mbits/sec    0    442 KBytes       
[  5]   1.00-2.00   sec  89.4 MBytes   750 Mbits/sec    0    506 KBytes       
[  5]   2.00-3.00   sec  88.1 MBytes   739 Mbits/sec    0    530 KBytes       
[  5]   3.00-4.00   sec  87.2 MBytes   732 Mbits/sec    0    530 KBytes       
[  5]   4.00-5.00   sec  87.8 MBytes   736 Mbits/sec    0    530 KBytes       
[  5]   5.00-6.00   sec  88.0 MBytes   738 Mbits/sec    0    565 KBytes       
[  5]   6.00-7.00   sec  87.2 MBytes   732 Mbits/sec    0    565 KBytes       
[  5]   7.00-8.00   sec  87.4 MBytes   732 Mbits/sec    0    565 KBytes       
[  5]   8.00-9.00   sec  86.6 MBytes   727 Mbits/sec    0    565 KBytes       
[  5]   9.00-10.00  sec  86.9 MBytes   728 Mbits/sec    0    565 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   878 MBytes   736 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   876 MBytes   735 Mbits/sec                  receiver
reverse
Connecting to host 169.254.200.2, port 4242
[  5] local 169.254.200.1 port 35692 connected to 169.254.200.2 port 4242
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  89.0 MBytes   746 Mbits/sec    0    398 KBytes       
[  5]   1.00-2.00   sec  88.1 MBytes   739 Mbits/sec    0    433 KBytes       
[  5]   2.00-3.00   sec  88.5 MBytes   742 Mbits/sec    0    498 KBytes       
[  5]   3.00-4.00   sec  89.1 MBytes   748 Mbits/sec    0    498 KBytes       
[  5]   4.00-5.00   sec  88.0 MBytes   738 Mbits/sec    0    521 KBytes       
[  5]   5.00-6.00   sec  88.5 MBytes   743 Mbits/sec    0    521 KBytes       
[  5]   6.00-7.00   sec  89.2 MBytes   749 Mbits/sec    0    576 KBytes       
[  5]   7.00-8.00   sec  86.6 MBytes   727 Mbits/sec    0    576 KBytes       
[  5]   8.00-9.00   sec  87.5 MBytes   734 Mbits/sec    0    633 KBytes       
[  5]   9.00-10.00  sec  87.2 MBytes   731 Mbits/sec    0    633 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   882 MBytes   740 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   880 MBytes   738 Mbits/sec                  receiver
2 Likes

FriendlyARM - NanoPi R4S - 23.05.5 - ext4

ubus call system board

{
"kernel": "5.15.167",
"hostname": "R4S",
"system": "ARMv8 Processor rev 4",
"model": "FriendlyElec NanoPi R4S",
"board_name": "friendlyarm,nanopi-r4s",
"rootfs_type": "ext4",
"release": {
"distribution": "OpenWrt",
"version": "23.05.5",
"revision": "r24106-10cc5fcd00",
"target": "rockchip/armv8",
"description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
}
}

Forward - ./benchmark.sh

root@R4S:~/wg-bench-master# ./benchmark.sh
Connecting to host 169.254.200.2, port 5201
[ 5] local 169.254.200.1 port 40674 connected to 169.254.200.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 60.6 MBytes 508 Mbits/sec 0 411 KBytes
[ 5] 1.00-2.00 sec 62.5 MBytes 525 Mbits/sec 0 411 KBytes
[ 5] 2.00-3.00 sec 64.5 MBytes 541 Mbits/sec 0 493 KBytes
[ 5] 3.00-4.00 sec 64.2 MBytes 539 Mbits/sec 0 586 KBytes
[ 5] 4.00-5.00 sec 63.8 MBytes 535 Mbits/sec 0 615 KBytes
[ 5] 5.00-6.00 sec 60.6 MBytes 509 Mbits/sec 0 615 KBytes
[ 5] 6.00-7.00 sec 63.9 MBytes 536 Mbits/sec 0 653 KBytes
[ 5] 7.00-8.00 sec 63.8 MBytes 535 Mbits/sec 0 696 KBytes
[ 5] 8.00-9.00 sec 64.1 MBytes 538 Mbits/sec 0 741 KBytes
[ 5] 9.00-10.00 sec 62.2 MBytes 522 Mbits/sec 0 741 KBytes


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 630 MBytes 529 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 628 MBytes 527 Mbits/sec receiver

iperf Done.

Reverse - ./benchmark.sh -R

root@R4S:~/wg-bench-master# ./benchmark.sh -R
Connecting to host 169.254.200.2, port 5201
Reverse mode, remote host 169.254.200.2 is sending
[ 5] local 169.254.200.1 port 38598 connected to 169.254.200.2 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 63.9 MBytes 535 Mbits/sec
[ 5] 1.00-2.00 sec 64.4 MBytes 540 Mbits/sec
[ 5] 2.00-3.00 sec 64.4 MBytes 540 Mbits/sec
[ 5] 3.00-4.00 sec 64.1 MBytes 538 Mbits/sec
[ 5] 4.00-5.00 sec 62.5 MBytes 524 Mbits/sec
[ 5] 5.00-6.00 sec 66.1 MBytes 555 Mbits/sec
[ 5] 6.00-7.00 sec 67.0 MBytes 562 Mbits/sec
[ 5] 7.00-8.00 sec 64.1 MBytes 538 Mbits/sec
[ 5] 8.00-9.00 sec 63.8 MBytes 535 Mbits/sec
[ 5] 9.00-10.00 sec 64.5 MBytes 541 Mbits/sec


[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 647 MBytes 542 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 645 MBytes 541 Mbits/sec receiver

iperf Done.

Summary