Về mặt logic, VPN phải nhanh hơn SSH để tạo đường hầm, bởi vì:
- Nó chạy trên UDP và không phải TCP (vì vậy không có TCP trên TCP)
- Nó có nén
Tuy nhiên, hôm nay tôi đã thử nghiệm nhân rộng Redis qua cả hai phương pháp.
Tôi đã chạy thử nghiệm trên máy ảo AWS VM của Ireland, kết nối với máy ảo AWS US-East.
Vì trường hợp thử nghiệm của tôi là sao chép Redis, đây chính xác là những gì tôi đã thử nghiệm - tôi đã chạy một máy chủ Redis trống và sau khi tải xong, tôi đã thực hiện slaveof
máy chủ khác và đo thời gian giữa Connecting to MASTER
và MASTER <-> SLAVE sync: Finished with success
. Ở giữa, tôi đã sử dụng
while 1; do redis-cli -p 7777 info | grep master_sync_left_bytes;sleep 1; done
Để có được một ước tính thô của tốc độ.
SSH giành chiến thắng sau một cú sút xa: ~ 11MB / s so với OpenVPN ~ 2MB / s.
Điều đó có nghĩa là tất cả những gì tôi đã đánh dấu lại là sai, hay tôi đã định cấu hình sai thiết lập của mình?
Cập nhật
Tôi đã thực hiện một số thử nghiệm với cùng một bộ dữ liệu và nhận được các kết quả sau:
- OpenVPN
- TCP:
nén: 15m
không nén: 21m - UDP:
nén: 5m
không nén: 6m
- TCP:
- SSH
mặc định: 1m50s
không nén: 1m30s
nén: 2m30s
Cập nhật2
Dưới đây là kết quả iperf, với các thử nghiệm hai chiều (ngoại trừ SSH, nơi không có đường dẫn trả lại nào khả dụng)
| 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 |
Thông số kỹ thuật
Tôi đang chạy CentOS 6.3 (máy chủ), CentOS 6.5 (máy khách).
Phiên bản OpenVPN là 2.3.2 (giống như trong Ubuntu 14.10, vì vậy không có phiên bản bị mốc nào ở đó)
Đường hầm SSH của tôi trông như sau:
ssh -f XXXX@XXXX -i XXXX -L 12345:127.0.0.1:12345 -N
Tập tin cấu hình của tôi trông như:
máy chủ
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
khách hàng
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