Логічно, VPN повинен бути швидшим, ніж SSH для тунелювання, оскільки:
- Він працює на UDP, а не на TCP (тому немає TCP через TCP)
- Він має стиснення
Однак сьогодні я перевірив реплікацію Редіса на обох методах.
Я пройшов випробування над Ірландією AWS VM, підключившись до АМ США-Схід VM.
Оскільки мій тестовий випадок - це реплікація Redis, це саме те, що я перевірив - я запустив чистий сервер Redis, і після його завершення завантаження я виконав slaveof
інший сервер і виміряв час між Connecting to MASTER
і MASTER <-> SLAVE sync: Finished with success
. Між тим я використовував
while 1; do redis-cli -p 7777 info | grep master_sync_left_bytes;sleep 1; done
Щоб отримати грубу оцінку швидкості.
SSH виграв дальнім ударом: ~ 11 Мб / с порівняно з ~ 2 Мб / с OpenVPN.
Чи означає це, що все, що я повторно підтвердив, було неправильним, або я грубо неправильно налаштував налаштування?
Оновлення
Я зробив кілька тестів з тим же набором даних і отримав такі результати:
- OpenVPN
- TCP:
стиснення: 15м
без стиснення: 21м - UDP:
стиснення: 5м
без стиснення: 6м
- TCP:
- Налаштування SSH
: 1m50s
без стиснення: 1m30s
стиснення: 2m30s
Оновлення2
Ось результати iperf з двонаправленими тестами (крім SSH, де немає зворотного шляху)
| method | result (Mb/s)|
|------------------+--------------|
| ssh | 91.1 / N.A |
| vpn blowfish udp | 43 / 11 |
| vpn blowfish tcp | 13 / 12 |
| vpn AES udp | 36 / 4 |
| vpn AES tcp | 12 / 5 |
Технічні характеристики
Я працюю CentOS 6.3 (сервер), CentOS 6.5 (клієнт).
Версія OpenVPN становить 2.3.2 (те саме, що і в Ubuntu 14.10, тому немає цвілі версії)
Мій тунель SSH виглядає так:
ssh -f XXXX@XXXX -i XXXX -L 12345:127.0.0.1:12345 -N
Мій файл конфігурації виглядає так:
сервер
port 1194
proto udp
dev tun0
topology subnet
log /var/log/openvpn.log
ca XXXX
cert XXXX
key XXXX
dh XXXX
crl-verify XXXX
cipher AES-256-CBC
server XXXX 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
comp-lzo
status /var/log/openvpn-status.log
verb 3
tun-mtu 1500
fragment 1300
persist-key
persist-tun
клієнт
client
remote XXXX 1194
proto udp
dev tun
log /var/log/openvpn.log
comp-lzo
cipher AES-256-CBC
ns-cert-type server
# the full paths to your server keys and certs
ca XXXX
cert XXXX
key XXXX
tun-mtu 1500 # Device MTU
fragment 1300 # Internal fragmentation
persist-key
persist-tun
nobind