Secara logis, VPN harus lebih cepat daripada SSH untuk tunneling, karena:
- Ini berjalan pada UDP dan bukan TCP (jadi tidak ada TCP melalui TCP)
- Ini memiliki kompresi
Namun, hari ini saya menguji replikasi Redis atas kedua metode.
Saya menjalankan tes melalui VM AWS Irlandia, menghubungkan ke AS-Timur AWS VM.
Karena test case saya adalah replikasi Redis, inilah yang saya uji - saya menjalankan server Redis kosong, dan setelah selesai memuat, saya mengeksekusi slaveof
server lain, dan mengukur waktu antara Connecting to MASTER
dan MASTER <-> SLAVE sync: Finished with success
. Di antara, saya menggunakan
while 1; do redis-cli -p 7777 info | grep master_sync_left_bytes;sleep 1; done
Untuk mendapatkan estimasi kasar kecepatan.
SSH dimenangkan oleh pukulan panjang: ~ 11MB / s dibandingkan dengan OpenVPN ~ 2MB / s.
Apakah itu berarti bahwa semua yang saya ulangi salah, atau sudahkah saya salah mengonfigurasi pengaturan saya?
Memperbarui
Saya telah membuat beberapa tes dengan dataset yang sama, dan mendapatkan hasil ini:
- OpenVPN
- TCP:
kompresi: 15m
tanpa kompresi: 21m - UDP:
kompresi: 5m
tanpa kompresi: 6m
- TCP:
- SSH
default: 1m50s
ada kompresi: 1m30s
kompresi: 2m30s
Pembaruan2
Berikut adalah hasil iperf, dengan tes dua arah (kecuali SSH, di mana tidak ada jalur balik yang tersedia)
| 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 |
Spesifikasi teknis
Saya menjalankan CentOS 6.3 (server), CentOS 6.5 (klien).
Versi OpenVPN adalah 2.3.2 (sama seperti di Ubuntu 14.10, jadi tidak ada versi berjamur)
tunneling SSH saya terlihat seperti:
ssh -f XXXX@XXXX -i XXXX -L 12345:127.0.0.1:12345 -N
File konfigurasi saya terlihat seperti:
server
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
klien
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