APU2 / APU3 / APU4 - OpenVPN and Wireguard Performance benchmark

This article has been last updated on July 28, 2019

APU2/3/4 boards have a solid VPN performance due to the native support for AES-NI instructions in the CPU. Encryption happens on the CPU level instead of the software level. 

pfSense OpenVPN performance

APU routers achieve about 100 Mbit/s continuous throughput on OpenVPN on pfSense 2.4.4. Hardware should be able to achieve much more, but OpenVPN isn't multithreading and the throughput is limited to single core per connection.

Throughput shown on the screenshot below is about 112Mbit/s, but the acutal VPN throughput will be a bit lower (100Mbit/s) because of VPN tunnel overhead.  

The CPU load during this test was 34%. One out of 4 cores is hard at work.

 

We have tested APU2C2 with NordVPN client and pfSense configured using AES-128-GCM cipher. It achieved about 100Mbit up, 100Mbit/s down.

See screenshot from http://www.bredbandskollen.se/en/ below. 

 

Here's a session from iperf3 showing the actual VPN throughput.

sniku@homedesktop:~$ iperf3 -c 192.168.5.50 
Connecting to host 192.168.5.50, port 5201
[  5] local 10.0.8.2 port 36574 connected to 192.168.5.50 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.9 MBytes   108 Mbits/sec   37   48.6 KBytes       
[  5]   1.00-2.00   sec  12.5 MBytes   105 Mbits/sec   19   41.1 KBytes       
[  5]   2.00-3.00   sec  11.7 MBytes  98.4 Mbits/sec   23   38.6 KBytes       
[  5]   3.00-4.00   sec  11.9 MBytes   100 Mbits/sec   28   49.8 KBytes       
[  5]   4.00-5.00   sec  12.5 MBytes   105 Mbits/sec   28   53.6 KBytes       
[  5]   5.00-6.00   sec  12.5 MBytes   105 Mbits/sec   35   47.4 KBytes       
[  5]   6.00-7.00   sec  12.5 MBytes   105 Mbits/sec   27   36.1 KBytes       
[  5]   7.00-8.00   sec  11.4 MBytes  95.3 Mbits/sec   30   46.1 KBytes       
[  5]   8.00-9.00   sec  12.1 MBytes   102 Mbits/sec   22   52.3 KBytes       
[  5]   9.00-10.00  sec  12.3 MBytes   103 Mbits/sec   32   46.1 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   122 MBytes   103 Mbits/sec  281             sender
[  5]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver

iperf Done.

This test was performed on pfSense 2.4.4, on APU2 with BIOS v4.9.0.3.

Note, throughput will be heavily dependant on the cipher you use. We strongly suggest AES-GCM because it's more secure AND more performant. See comparison below

 Cipher  Throughput
 AES-128-GCM / SHA-1  ~103 Mbit/s
 AES-128-GCM / SHA256   ~ 99 Mbit/s
 AES-256-GCM / SHA256   ~ 99 Mbit/s
 AES-128-CBC / SHA256  ~ 70 Mbit/s
 AES-256-CBC / SHA256  ~ 68 Mbit/s

 

OpenWRT OpenVPN performance

OpenWRT is based on Linux (while pfSense is based on OpenBSD). Linux has much better OpenVPN performance.

In our tests OpenWRT outperforms pfSense by about 40%. We have performed the same throughput benchmark on OpenWrt 18.06.4. And the result can be seen on a screenshot below. 

OpenWrt delivers about 145 Mbit/s on OpenVPN.

 

WireGuard VPN throughput

Wireguard is the next generation, modern VPN that performs way better than OpenVPN or IPSec.

Here's a simple test we ran between two APU3 routers running on debian. 

root@debian:~/wg# iperf3 -c 10.0.0.1
Connecting to host 10.0.0.1, port 5201
[ 4] local 10.0.0.2 port 36568 connected to 10.0.0.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 68.5 MBytes 574 Mbits/sec 66 1.41 MBytes 
[ 4] 1.00-2.00 sec 79.5 MBytes 667 Mbits/sec 0 1.55 MBytes 
[ 4] 2.00-3.00 sec 74.9 MBytes 628 Mbits/sec 36 1.17 MBytes 
[ 4] 3.00-4.00 sec 74.1 MBytes 623 Mbits/sec 0 1.24 MBytes 
[ 4] 4.00-5.00 sec 76.2 MBytes 640 Mbits/sec 0 1.28 MBytes 
[ 4] 5.00-6.00 sec 81.2 MBytes 680 Mbits/sec 0 1.31 MBytes 
[ 4] 6.00-7.00 sec 76.2 MBytes 640 Mbits/sec 20 1003 KBytes 
[ 4] 7.00-8.00 sec 78.5 MBytes 658 Mbits/sec 0 1.04 MBytes 
[ 4] 8.00-9.00 sec 77.5 MBytes 651 Mbits/sec 0 1.07 MBytes 
[ 4] 9.00-10.00 sec 73.3 MBytes 614 Mbits/sec 0 1.10 MBytes 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 760 MBytes 638 Mbits/sec 122 sender
[ 4] 0.00-10.00 sec 757 MBytes 635 Mbits/sec receiver
- - - - - - - - - - - - - - - - - - - - - - - - -

Wireguard uses all 4 CPU cores, and beats OpenVPN over 6x times! More than 600Mbit/s is trully amazing! 

Hopefully we will see Wireguard included in pfSense and other popular router OSes soon.

OpenWRT already ships with WireGuard!

 

TLSense OpenVPN throughput

See the router comparison table for TLSense OpenVPN throughput.