Some openvpn perfomance tests:
setup:
server:
AF_ALG:
openvpn --engine afalg --dev tun --proto udp --port 11000 --secret ./static.key --tun-mtu 8192 --ifconfig 192.168.222.11 192.168.222.10 --cipher aes-256-cbc
SW:
openvpn --dev tun --proto udp --port 11000 --secret ./static.key --tun-mtu 8192 --ifconfig 192.168.222.11 192.168.222.10 --cipher aes-256-cbc
client:
openvpn --dev tun --proto udp --port 11000 --secret ./static.key --tun-mtu 8192 --ifconfig 192.168.222.10 192.168.222.11 --cipher aes-256-cbc --remote <server_ip>
results:
upload/download
network w/o openvpn - using wifi:
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.0.1.150, port 59184
[ 5] local 10.0.1.2 port 5201 connected to 10.0.1.150 port 59186
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 10.8 MBytes 90.7 Mbits/sec
[ 5] 1.00-2.00 sec 13.3 MBytes 112 Mbits/sec
[ 5] 2.00-3.00 sec 11.7 MBytes 98.4 Mbits/sec
[ 5] 3.00-4.00 sec 10.8 MBytes 90.2 Mbits/sec
[ 5] 4.00-5.00 sec 9.66 MBytes 81.1 Mbits/sec
[ 5] 5.00-6.00 sec 10.6 MBytes 88.8 Mbits/sec
[ 5] 6.00-7.00 sec 10.4 MBytes 87.6 Mbits/sec
[ 5] 7.00-8.00 sec 9.96 MBytes 83.5 Mbits/sec
[ 5] 8.00-9.00 sec 9.92 MBytes 83.2 Mbits/sec
[ 5] 9.00-10.00 sec 10.2 MBytes 85.8 Mbits/sec
[ 5] 10.00-10.02 sec 214 KBytes 78.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.02 sec 108 MBytes 90.1 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.0.1.150, port 59196
[ 5] local 10.0.1.2 port 5201 connected to 10.0.1.150 port 59198
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 31.2 MBytes 262 Mbits/sec 22 498 KBytes
[ 5] 1.00-2.00 sec 18.8 MBytes 157 Mbits/sec 0 564 KBytes
[ 5] 2.00-3.00 sec 23.8 MBytes 199 Mbits/sec 0 609 KBytes
[ 5] 3.00-4.00 sec 22.5 MBytes 189 Mbits/sec 0 641 KBytes
[ 5] 4.00-5.00 sec 20.0 MBytes 168 Mbits/sec 0 659 KBytes
[ 5] 5.00-6.00 sec 21.2 MBytes 178 Mbits/sec 0 667 KBytes
[ 5] 6.00-7.00 sec 21.2 MBytes 178 Mbits/sec 4 499 KBytes
[ 5] 7.00-8.00 sec 18.8 MBytes 157 Mbits/sec 0 533 KBytes
[ 5] 8.00-9.00 sec 21.2 MBytes 178 Mbits/sec 0 553 KBytes
[ 5] 9.00-10.00 sec 21.2 MBytes 178 Mbits/sec 0 567 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 220 MBytes 184 Mbits/sec 26 sender
AF_ALG:
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 52138
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 52140
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 2.74 MBytes 23.0 Mbits/sec
[ 5] 1.00-2.00 sec 2.99 MBytes 25.1 Mbits/sec
[ 5] 2.00-3.00 sec 3.22 MBytes 27.0 Mbits/sec
[ 5] 3.00-4.00 sec 3.09 MBytes 25.9 Mbits/sec
[ 5] 4.00-5.00 sec 2.95 MBytes 24.7 Mbits/sec
[ 5] 5.00-6.00 sec 3.27 MBytes 27.4 Mbits/sec
[ 5] 6.00-7.00 sec 3.20 MBytes 26.8 Mbits/sec
[ 5] 7.00-8.00 sec 3.22 MBytes 27.0 Mbits/sec
[ 5] 8.00-9.00 sec 3.24 MBytes 27.1 Mbits/sec
[ 5] 9.00-10.00 sec 3.13 MBytes 26.3 Mbits/sec
[ 5] 10.00-10.00 sec 5.23 KBytes 14.1 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 31.0 MBytes 26.0 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 52152
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 52154
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 13.8 MBytes 115 Mbits/sec 2 92.8 KBytes
[ 5] 1.00-2.00 sec 2.50 MBytes 21.0 Mbits/sec 4 91.5 KBytes
[ 5] 2.00-3.00 sec 2.50 MBytes 21.0 Mbits/sec 4 79.7 KBytes
[ 5] 3.00-4.00 sec 2.50 MBytes 21.0 Mbits/sec 2 71.9 KBytes
[ 5] 4.00-5.00 sec 2.50 MBytes 21.0 Mbits/sec 0 92.8 KBytes
[ 5] 5.00-6.00 sec 2.50 MBytes 21.0 Mbits/sec 2 82.3 KBytes
[ 5] 6.00-7.00 sec 2.50 MBytes 21.0 Mbits/sec 4 73.2 KBytes
[ 5] 7.00-8.00 sec 2.50 MBytes 21.0 Mbits/sec 0 94.1 KBytes
[ 5] 8.00-9.00 sec 2.50 MBytes 21.0 Mbits/sec 2 84.9 KBytes
[ 5] 9.00-10.00 sec 2.50 MBytes 21.0 Mbits/sec 2 74.5 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 36.2 MBytes 30.4 Mbits/sec 22 sender
SW:
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 52204
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 52206
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 4.52 MBytes 37.9 Mbits/sec
[ 5] 1.00-2.00 sec 5.03 MBytes 42.2 Mbits/sec
[ 5] 2.00-3.00 sec 6.01 MBytes 50.4 Mbits/sec
[ 5] 3.00-4.00 sec 5.22 MBytes 43.8 Mbits/sec
[ 5] 4.00-5.00 sec 5.83 MBytes 48.9 Mbits/sec
[ 5] 5.00-6.00 sec 4.56 MBytes 38.2 Mbits/sec
[ 5] 6.00-7.00 sec 4.36 MBytes 36.6 Mbits/sec
[ 5] 7.00-8.00 sec 3.47 MBytes 29.1 Mbits/sec
[ 5] 8.00-9.00 sec 4.66 MBytes 39.1 Mbits/sec
[ 5] 9.00-10.00 sec 4.81 MBytes 40.3 Mbits/sec
[ 5] 10.00-10.00 sec 24.8 KBytes 46.5 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 48.5 MBytes 40.7 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 52212
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 52214
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 15.0 MBytes 126 Mbits/sec 11 95.4 KBytes
[ 5] 1.00-2.00 sec 3.75 MBytes 31.5 Mbits/sec 1 98.0 KBytes
[ 5] 2.00-3.00 sec 5.00 MBytes 41.9 Mbits/sec 6 67.9 KBytes
[ 5] 3.00-4.00 sec 3.75 MBytes 31.5 Mbits/sec 8 84.9 KBytes
[ 5] 4.00-5.00 sec 3.75 MBytes 31.5 Mbits/sec 15 88.9 KBytes
[ 5] 5.00-6.00 sec 3.75 MBytes 31.5 Mbits/sec 4 92.8 KBytes
[ 5] 6.00-7.00 sec 5.00 MBytes 41.9 Mbits/sec 1 95.4 KBytes
[ 5] 7.00-8.00 sec 3.75 MBytes 31.5 Mbits/sec 20 52.3 KBytes
[ 5] 8.00-9.00 sec 3.75 MBytes 31.5 Mbits/sec 19 47.0 KBytes
[ 5] 9.00-10.00 sec 5.00 MBytes 42.0 Mbits/sec 6 67.9 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 52.5 MBytes 44.0 Mbits/sec 91 sender
Looks strange, bun in this case HW accelerated openvpn seems to be slower than software-only.
Probably it depends on small buffer size (i might be wrong - i think it depends on mtu size)
I couldn’t to force openssh to use afalg engine after recompiling with --with-sandbox=no
so for now i’m unable to benchmark ssh.
P.S. openvpn is clearly uses aes_mtk - it’s visible from/proc/interrupts
UPD2:
after openvpn tuning i finnaly got some nicer results 
added --fragment 0 --mssfix 0
to both client and server configs
HW:
Accepted connection from 192.168.222.10, port 53218
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 53220
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 9.33 MBytes 78.3 Mbits/sec
[ 5] 1.00-2.00 sec 10.6 MBytes 88.7 Mbits/sec
[ 5] 2.00-3.00 sec 9.66 MBytes 81.1 Mbits/sec
[ 5] 3.00-4.00 sec 11.9 MBytes 99.5 Mbits/sec
[ 5] 4.00-5.00 sec 11.0 MBytes 92.6 Mbits/sec
[ 5] 5.00-6.00 sec 11.4 MBytes 95.7 Mbits/sec
[ 5] 6.00-7.00 sec 10.8 MBytes 90.2 Mbits/sec
[ 5] 7.00-8.00 sec 11.1 MBytes 93.0 Mbits/sec
[ 5] 8.00-9.00 sec 10.9 MBytes 91.1 Mbits/sec
[ 5] 9.00-10.00 sec 10.8 MBytes 90.7 Mbits/sec
[ 5] 10.00-10.06 sec 707 KBytes 97.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.06 sec 108 MBytes 90.1 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 53222
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 53224
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 20.0 MBytes 168 Mbits/sec 1 294 KBytes
[ 5] 1.00-2.00 sec 8.75 MBytes 73.4 Mbits/sec 0 413 KBytes
[ 5] 2.00-3.00 sec 10.0 MBytes 83.9 Mbits/sec 0 501 KBytes
[ 5] 3.00-4.00 sec 8.75 MBytes 73.4 Mbits/sec 0 572 KBytes
[ 5] 4.00-5.00 sec 8.75 MBytes 73.4 Mbits/sec 4 350 KBytes
[ 5] 5.00-6.00 sec 10.0 MBytes 83.9 Mbits/sec 0 453 KBytes
[ 5] 6.00-7.00 sec 8.75 MBytes 73.4 Mbits/sec 0 533 KBytes
[ 5] 7.00-8.00 sec 10.0 MBytes 83.9 Mbits/sec 10 318 KBytes
[ 5] 8.00-9.00 sec 8.75 MBytes 73.4 Mbits/sec 0 421 KBytes
[ 5] 9.00-10.00 sec 8.75 MBytes 73.4 Mbits/sec 0 509 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 102 MBytes 85.9 Mbits/sec 15 sender
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
SW:
Accepted connection from 192.168.222.10, port 53132
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 53134
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 8.75 MBytes 73.4 Mbits/sec
[ 5] 1.00-2.00 sec 8.86 MBytes 74.3 Mbits/sec
[ 5] 2.00-3.00 sec 8.30 MBytes 69.6 Mbits/sec
[ 5] 3.00-4.00 sec 9.44 MBytes 79.2 Mbits/sec
[ 5] 4.00-5.00 sec 8.43 MBytes 70.7 Mbits/sec
[ 5] 5.00-6.00 sec 8.36 MBytes 70.1 Mbits/sec
[ 5] 6.00-7.00 sec 8.42 MBytes 70.7 Mbits/sec
[ 5] 7.00-8.00 sec 8.02 MBytes 67.3 Mbits/sec
[ 5] 8.00-9.00 sec 9.18 MBytes 77.0 Mbits/sec
[ 5] 9.00-10.00 sec 8.38 MBytes 70.3 Mbits/sec
[ 5] 10.00-10.03 sec 358 KBytes 85.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.03 sec 86.5 MBytes 72.3 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.222.10, port 53140
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 53142
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 18.8 MBytes 157 Mbits/sec 4 278 KBytes
[ 5] 1.00-2.00 sec 10.0 MBytes 83.9 Mbits/sec 0 397 KBytes
[ 5] 2.00-3.00 sec 8.75 MBytes 73.4 Mbits/sec 4 270 KBytes
[ 5] 3.00-4.00 sec 10.0 MBytes 83.9 Mbits/sec 0 390 KBytes
[ 5] 4.00-5.00 sec 10.0 MBytes 83.9 Mbits/sec 2 350 KBytes
[ 5] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 0 445 KBytes
[ 5] 6.00-7.00 sec 8.75 MBytes 73.4 Mbits/sec 9 175 KBytes
[ 5] 7.00-8.00 sec 10.0 MBytes 83.9 Mbits/sec 0 334 KBytes
[ 5] 8.00-9.00 sec 8.75 MBytes 73.4 Mbits/sec 33 231 KBytes
[ 5] 9.00-10.00 sec 8.75 MBytes 73.4 Mbits/sec 4 246 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 102 MBytes 85.9 Mbits/sec 56 sender
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
UPD2:
When using --fragment 0 --mssfix 0
, the speed is highly depends on --tun-mtu
–tun-mtu 1500:
upload
[ 5] 0.00-10.00 sec 35.9 MBytes 30.1 Mbits/sec receiver
download
[ 5] 0.00-10.00 sec 36.2 MBytes 30.4 Mbits/sec 43 sender
–tun-mtu 16000:
upload
[ 5] 0.00-10.11 sec 121 MBytes 101 Mbits/sec receiver
download
[ 5] 0.00-10.01 sec 144 MBytes 120 Mbits/sec 30 sender
–tun-mtu 16000 - no acceleration:
upload
[ 5] 0.00-10.05 sec 112 MBytes 93.4 Mbits/sec receiver
download
[ 5] 0.00-10.01 sec 126 MBytes 106 Mbits/sec 11 sender
full server/client command:
openvpn --dev tun --proto udp --port 11000 --secret ./static.key --tun-mtu 16000 --ifconfig 192.168.222.11 192.168.222.10 --cipher aes-256-cbc --fragment 0 --mssfix 0
openvpn --dev tun --proto udp --port 11000 --secret ./static.key --tun-mtu 16000 --ifconfig 192.168.222.10 192.168.222.11 --cipher aes-256-cbc --fragment 0 --mssfix 0 --remote 10.0.1.2
UPD3:
testing with --tun-mtu 16384
crashes server with same dmesg as openvpn test above, so --tun-mtu 16000
seems to be working configuration near it’s hw limit
setting ‘–tun-mtu 32768’ in sw mode didn’t gave any speed advantages compairing to --tun-mtu 16000
in sw mode