2015-11-25 18:23:25 +00:00
|
|
|
Performance Tests
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
### Test setup
|
|
|
|
|
2015-11-25 22:05:17 +00:00
|
|
|
Sender node:
|
|
|
|
* Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
|
|
|
|
* 8 GiB Ram
|
|
|
|
* Intel 82579LM Gigabit Network
|
|
|
|
* Ubuntu 14.04 (Kernel 3.13.0-65-generic)
|
|
|
|
|
|
|
|
Receiver node:
|
|
|
|
* Intel(R) Core(TM) i5-3450 CPU @ 3.10GHz
|
2015-11-25 18:23:25 +00:00
|
|
|
* 16 GiB Ram
|
2015-11-25 22:05:17 +00:00
|
|
|
* Realtek RTL8111/8168/8411 Gigabit Network
|
|
|
|
* Ubuntu 14.04 (Kernel 3.13.0-63-generic)
|
2015-11-25 18:23:25 +00:00
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
VpnCloud version: `VpnCloud v0.2.0 (with crypto support, protocol version 1)`
|
2015-11-25 18:23:25 +00:00
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
The sender runs the following command:
|
2015-11-25 18:23:25 +00:00
|
|
|
|
|
|
|
```
|
2015-11-26 21:16:51 +00:00
|
|
|
$> ./vpncloud -t tap -l SENDER:3210 -c RECEIVER:3210 \
|
2015-11-25 18:23:25 +00:00
|
|
|
--ifup 'ifconfig $IFNAME 10.2.1.1/24 mtu 1400 up' &
|
|
|
|
```
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
and the receiver runs:
|
2015-11-25 18:23:25 +00:00
|
|
|
|
|
|
|
```
|
2015-11-26 21:16:51 +00:00
|
|
|
$> ./vpncloud -t tap -l RECEIVER:3210 -c SENDER:3210 \
|
|
|
|
--ifup 'ifconfig $IFNAME 10.2.1.2/24 mtu 1400 up' &
|
|
|
|
$> iperf -s &
|
|
|
|
$> top
|
2015-11-25 18:23:25 +00:00
|
|
|
```
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
For encrypted tests, `--shared-key test` is appended.
|
2015-11-25 22:05:17 +00:00
|
|
|
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
### Throughput
|
2015-11-25 22:05:17 +00:00
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
The throughput is measured with the following command:
|
2015-11-25 22:05:17 +00:00
|
|
|
|
|
|
|
```
|
2015-11-26 21:16:51 +00:00
|
|
|
$> iperf -c DST -t 60
|
2015-11-25 22:05:17 +00:00
|
|
|
```
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
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.2.1.2`)
|
|
|
|
* Encrypted throughput via VpnCloud (`DST` is `10.2.1.2`)
|
2015-11-25 22:05:17 +00:00
|
|
|
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
| Throughput test | Bandwidth | CPU usage (one core) |
|
|
|
|
| -------------------- | ------------- | -------------------- |
|
|
|
|
| Without VpnCloud | 926 Mbits/sec | - |
|
|
|
|
| Unencrypted VpnCloud | 873 Mbits/sec | 80% / 95% |
|
|
|
|
| Encrypted VpnCloud | 635 Mbits/sec | 100% |
|
2015-11-25 22:05:17 +00:00
|
|
|
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
### Latency
|
2015-11-25 22:05:17 +00:00
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
The latency is measured with the following command:
|
2015-11-25 22:05:17 +00:00
|
|
|
```
|
2015-11-26 21:16:51 +00:00
|
|
|
$> ping DST -c 10000 -i 0.001 -s SIZE -U -q
|
2015-11-25 22:05:17 +00:00
|
|
|
```
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
For all the test, the best average RTT out of 5 runs is selected. The latency is
|
|
|
|
assumed to be half of the RTT.
|
2015-11-25 18:23:25 +00:00
|
|
|
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
| Payload size | 100 bytes | 500 bytes | 1000 bytes |
|
|
|
|
| -------------------- | --------- | --------- | ---------- |
|
|
|
|
| Without VpnCloud | 158 µs | 165 µs | 178 µs |
|
|
|
|
| Unencrypted VpnCloud | 210 µs | 216 µs | 237 µs |
|
|
|
|
| Difference | +52 µs | +51 µs | +59 µs |
|
|
|
|
| Encrypted VpnCloud | 225 µs | 252 µs | 262 µs |
|
|
|
|
| Difference | +15 µs | +36 µs | +25 µs |
|
2015-11-25 18:23:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
### Conclusion
|
|
|
|
|
2015-11-26 21:16:51 +00:00
|
|
|
* VpnCloud achieves over 850 MBit/s with default MTU settings.
|
|
|
|
* In encrypted mode, VpnCloud reaches over 600 MBit/s with default MTU settings.
|
|
|
|
* VpnCloud adds about 60µs to the latency.
|
2015-11-25 22:05:17 +00:00
|
|
|
* Encryption adds an additional latency between 10µs and 35µs depending on the packet size.
|