Performance Measurements

Test setup

Sender node:

  • Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
  • 8 GiB Ram
  • Intel 82579LM Gigabit Network
  • Ubuntu 16.04 (Kernel 4.4.0-134-generic)
  • CPU Governor set to performance

Receiver node:

  • Intel(R) Core(TM) i5-3450 CPU @ 3.10GHz
  • 16 GiB Ram
  • Realtek RTL8111/8168/8411 Gigabit Network
  • Ubuntu 18.04 (Kernel 4.15.0-43-generic)
  • CPU Governor set to performance

VpnCloud version: VpnCloud v1.0.0, protocol version 1

The sender runs the following command:

$> ./vpncloud -t tap -l 5005 -c RECEIVER:5005 --no-port-forwarding --ifup 'ifconfig $IFNAME 10.0.0.1/24 mtu 1400 up' &

and the receiver runs:

$> ./vpncloud -t tap -l 5005 -c SENDER:5005 --no-port-forwarding --ifup 'ifconfig $IFNAME 10.0.0.2/24 mtu 1400 up' &
$> iperf -s &
$> top

For encrypted tests, --shared-key test --crypto METHOD is appended.

For increased MTU tests mtu 7000 is used in --ifup.

Throughput

The throughput is measured with the following command:

$> iperf -c DST -t 30

The test is run in 3 steps:

  • Native throughput without VpnCloud (DST is the native address of the receiver)
  • Throughput via VpnCloud (DST is 10.0.0.2)
  • Encrypted throughput via VpnCloud (DST is 10.0.0.2)
Throughput testBandwidthCPU usage (one core)
Without VpnCloud932 Mbits/sec-
Unencrypted VpnCloud901 Mbits/sec75% / 85%
Encrypted VpnCloud (ChaCha20)788 Mbits/sec100% / 100%
Encrypted VpnCloud (AES256)800 Mbits/sec90% / 100%
Unencrypted VpnCloud (MTU 7000)943 Mbits/sec40% / 40%
Encrypted VpnCloud (ChaCha20, MTU 7000)938 Mbits/sec60% / 60%
Encrypted VpnCloud (AES256, MTU 7000)938 Mbits/sec55% / 55%

Latency

The latency is measured with the following command:

$> ping DST -c 30000 -i 0.001 -s SIZE -U -q

For all the test, the second best average RTT out of 5 runs is selected. The latency is assumed to be half of the RTT.

Payload size100 bytes500 bytes1000 bytes
Without VpnCloud159 µs161 µs170 µs
Unencrypted VpnCloud244 µs (+85 µs)248 µs (+87 µs)259 µs (+75 µs)
Encrypted VpnCloud (ChaCha20)252 µs ( +8 µs)263 µs (+15 µs)272 µs (+13 µs)
Encrypted VpnCloud (AES256)246 µs ( +2 µs)257 µs ( +9 µs)268 µs ( +9 µs)

Conclusion

  • VpnCloud achieves about 900 MBit/s with default MTU settings.
  • In encrypted mode, VpnCloud reaches over 800 MBit/s with default MTU settings.
  • With increased MTU, VpnCloud reaches over 900 Mbit/s, encrypted and unencrypted.
  • VpnCloud adds about 80µs to the latency.
  • Encryption adds an additional latency up to 15µs.