TunSafe vs OpenVPN

This is a test with iperf using TunSafe 64-bit running on Windows 10 on an Intel Core i7-860 2.80GHz communicating over Gigabit Ethernet to a Linux server that uses the WireGuard kernel module.

Throughput0100200300400500600700800900TunSafeOpenVPN861 mbps142 mbpsmegabits per second (higher is better)
Tunnelmegabits per second
TunSafe861
OpenVPN142

Ping Time0.000.250.500.75TunSafeOpenVPNDirect0.550 ms0.642 ms0.284 msmilliseconds (lower is better)
Tunnelmilliseconds
TunSafe0.55
OpenVPN0.642
Direct0.284

TunSafe

$ iperf -t 30 -c 192.168.2.1                                                                   
------------------------------------------------------------                                    
Client connecting to 192.168.2.1, TCP port 5001                                                 
TCP window size: 64.0 KByte (default)                                                           
------------------------------------------------------------                                    
[460] local 192.168.2.2 port 61758 connected with 192.168.2.1 port 5001                         
[ ID] Interval       Transfer     Bandwidth                                                     
[460]  0.0-30.0 sec  3.00 GBytes   860 Mbits/sec                                                
                                                                                                
$ iperf -t 30 -c 192.168.2.1                                                                   
------------------------------------------------------------                                    
Client connecting to 192.168.2.1, TCP port 5001                                                 
TCP window size: 64.0 KByte (default)                                                           
------------------------------------------------------------                                    
[460] local 192.168.2.2 port 61803 connected with 192.168.2.1 port 5001                         
[ ID] Interval       Transfer     Bandwidth
[460]  0.0-30.0 sec  3.01 GBytes   861 Mbits/sec

$ iperf -t 30 -c 192.168.2.1                                                              
------------------------------------------------------------                               
Client connecting to 192.168.2.1, TCP port 5001                                            
TCP window size: 64.0 KByte (default)                                                      
------------------------------------------------------------                               
[464] local 192.168.2.2 port 61963 connected with 192.168.2.1 port 5001                    
[ ID] Interval       Transfer     Bandwidth                                                
[464]  0.0-30.0 sec  3.01 GBytes   861 Mbits/sec                                           
The configuration file on the client is:
[Interface]
PrivateKey = <hidden>
Address = 192.168.2.2/24
MTU = 1420

[Peer]
PublicKey = <hidden>
AllowedIPs = 192.168.2.0/24
Endpoint = 192.168.1.4:8040
PersistentKeepalive = 25
Here's screenshots of Process Explorer displaying the CPU usage of the TunSafe process (100% means all cores are fully utilized):

OpenVPN

Here's an equivalent comparison using OpenVPN on the same hardware. OpenVPN uses aes-256-gcm:
$ iperf -t 30 -c 10.8.0.1
------------------------------------------------------------
Client connecting to 10.8.0.1, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[460] local 10.8.0.6 port 53936 connected with 10.8.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[460]  0.0-30.0 sec   498 MBytes   139 Mbits/sec

$ iperf -t 30 -c 10.8.0.1
------------------------------------------------------------
Client connecting to 10.8.0.1, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[460] local 10.8.0.6 port 54014 connected with 10.8.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[460]  0.0-30.0 sec   513 MBytes   143 Mbits/sec

$ iperf -t 30 -c 10.8.0.1
------------------------------------------------------------
Client connecting to 10.8.0.1, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[460] local 10.8.0.6 port 54059 connected with 10.8.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[460]  0.0-30.0 sec   517 MBytes   145 Mbits/sec