論理的に、VPNはトンネリングでSSHよりも高速である必要があります。理由は次のとおりです。
- TCPではなくUDPで実行されているため(TCP over TCPはありません)
- 圧縮されています
ただし、今日は両方の方法でRedisレプリケーションをテストしました。
アイルランドのAWS VMでテストを実行し、US-East AWS 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はロングショットで勝ちました:OpenVPNの〜2MB / sと比較して〜11MB / s。
それは、私が再調査したすべてが間違っていたことを意味しますか、それとも私はセットアップをひどく誤って構成しましたか?
更新
同じデータセットでいくつかのテストを行ったところ、次の結果が得られました。
- OpenVPN
- TCP:
圧縮:15m
圧縮なし:21m - UDP:
圧縮:5m
圧縮なし:6m
- TCP:
- SSH
デフォルト:1m50s
圧縮なし:1m30s
圧縮:2m30s
Update2
双方向テストでの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