SSH と比較して VPN 経由の転送速度が 70% 低下する問題を修正しましたか? (OpenVPN、IPSec/L2TP、OpenSSH、SoftEther をテスト済み)

SSH と比較して VPN 経由の転送速度が 70% 低下する問題を修正しましたか? (OpenVPN、IPSec/L2TP、OpenSSH、SoftEther をテスト済み)

現在、送信接続と受信接続の両方を必要とする 2 つの VPS 間のサイト間 VPN を構成しています。これは高帯域幅のアプリケーションで使用されるため、接続で得られる最大の速度が必要です。

iperf3 を使用すると、接続速度が約 600Mbit/s になり、ping が約 30ms になります。

OpenSSH SCP では約 260Mbit/s を実現しており、追加の暗号化を考慮すると満足できる速度です。

私は、主に OpenVPN を使用した、さまざまな種類の VPN 構成を試してきました。sndbuf/rcvbuf の変更、暗号化なし、圧縮なしを試しましたが、それでもポート 443 で UDP では 20Mbit、TLS では 40Mbit しか得られません。

また、IPSec/L2TP、SoftEther (ただし、これでも 500Kbit/s 程度しか得られませんでした)、OpenSSH 組み込み tun アダプタも設定しました。これらのいずれも、iperf 速度を 40Mbit/s 以上にすることはできませんでした。

各ノードの HDD と CPU を注意深く監視してきましたが、どちらも飽和状態にはなっていません。1 つのサーバーは大幅に性能が低いのですが、テスト中の CPU 使用率は 30% 程度にしか達しません。

困惑しています。200Mbit/s 以上の速度 (確実に可能であることはわかっています) を達成できるものが必要で、1 つの仮想インターフェイスから別の仮想インターフェイスにルーティングするだけで済みます。理論的には、これが SoftEther の目的です。実際の速度を得るために、SoftEther を修正し続けるべきでしょうか?

堅牢なトンネル インターフェイスを稼働させるために、テスト/デバッグ/構成を行うべきその他の側面について何か提案はありますか? 通常のプロキシのようなトンネルを使用できるように、着信接続をルーティングするのに役立つ別のソフトウェアはありますか? よろしくお願いします!

答え1

コメントに投稿されたリンクを参考に、この openvpn の記事をもう一度読んでみることにしました。 https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux

この記事の設定をいくつか使用して、平均約 150Mbit/s を達成できました。これを実現するために OpenVPN を構成する手順は次のとおりです。

私が試した手順は次のとおりです。

  • デフォルト設定(AES-128 使用時): 14.7Mbit/s
  • mssfix 0、tun-mtu 6000、フラグメント 0 を有効にする: 16.3Mbit/s
  • 「暗号なし」設定: 17.7Mbit/s
  • AES-128、tun-mtu 9000に戻る: 22.0Mbit/s
  • tun-mtu 18000: 27.2Mbit/s
  • tun-mtu 36000: 37.2Mbit/s
  • tun-mtu 60000: 44.9Mbit/s
  • 「暗号 BF-CBC」設定(大きな差はない): 44.0Mbit/s
  • サーバーおよびクライアント上の sndbuf 393216、rcvbuf 393216: 67.1Mbit/s
  • Linux UDP受信バッファのサイズを増加: 102Mビット/秒
  • iperf3 [...] -P 10 は 10 個の並列接続を有効にします: SUM:135Mビット/秒 - 170Mビット/秒

最終的な iperf3 出力は次のとおりです。

64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=37.2 ms

$ iperf3 -c 10.8.0.1 -p 5201
Connecting to host 10.8.0.1, port 5201
[  4] local 10.8.0.2 port 59230 connected to 10.8.0.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  10.3 MBytes  86.5 Mbits/sec    2    632 KBytes
[  4]   1.00-2.00   sec  12.0 MBytes   101 Mbits/sec    7    569 KBytes
[  4]   2.00-3.00   sec  11.4 MBytes  95.8 Mbits/sec    7    443 KBytes
[  4]   3.00-4.00   sec  10.9 MBytes  91.2 Mbits/sec    5    443 KBytes
[  4]   4.00-5.00   sec  11.7 MBytes  98.4 Mbits/sec    2    759 KBytes
[  4]   5.00-6.00   sec  13.0 MBytes   109 Mbits/sec    6    822 KBytes
[  4]   6.00-7.00   sec  13.5 MBytes   113 Mbits/sec    5    696 KBytes
[  4]   7.00-8.00   sec  13.9 MBytes   117 Mbits/sec    6    696 KBytes
[  4]   8.00-9.00   sec  11.8 MBytes  98.9 Mbits/sec    5    696 KBytes
[  4]   9.00-10.00  sec  12.5 MBytes   105 Mbits/sec    4    696 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   121 MBytes   102 Mbits/sec   49             sender
[  4]   0.00-10.00  sec   120 MBytes   101 Mbits/sec                  receiver

非VPN直接接続との比較:

$ iperf3 -c [...] -p 5201
Connecting to host [...], port 5201
[  4] local [...] port 52172 connected to [...] port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  51.9 MBytes   435 Mbits/sec    0   3.03 MBytes
[  4]   1.00-2.00   sec  73.3 MBytes   615 Mbits/sec    0   3.03 MBytes
[  4]   2.00-3.00   sec  73.3 MBytes   615 Mbits/sec    0   3.03 MBytes
[  4]   3.00-4.00   sec  72.7 MBytes   610 Mbits/sec    0   3.03 MBytes
[  4]   4.00-5.00   sec  72.1 MBytes   605 Mbits/sec    0   3.03 MBytes
[  4]   5.00-6.00   sec  73.7 MBytes   619 Mbits/sec    0   3.03 MBytes
[  4]   6.00-7.00   sec  75.0 MBytes   629 Mbits/sec    0   3.03 MBytes
[  4]   7.00-8.00   sec  72.5 MBytes   608 Mbits/sec    0   3.03 MBytes
[  4]   8.00-9.00   sec  74.9 MBytes   628 Mbits/sec    0   3.03 MBytes
[  4]   9.00-10.00  sec  72.6 MBytes   609 Mbits/sec    0   3.03 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   712 MBytes   597 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   710 MBytes   596 Mbits/sec                  receiver

私が学んだこと

  • 私のネットワークは、tun-mtu の増加によって大きな恩恵を受けました。
  • UDP 輻輳は大きな問題です。Linux UDP recvbuf を増やすと、UDP のパフォーマンスが大幅に向上しました。iperf の再送信パケットを見ると、輻輳が依然として問題となっていることがわかります。改善するためのご提案があれば歓迎いたします。
  • 並列 iperf3 接続により、速度がさらに向上しました。
  • CPU コアが 100% 未満である限り、暗号はパフォーマンスにそれほど影響しません。
  • ギガビット速度を実現するオープンインターネット上で VPN を構成するのは困難です。
  • これは、プレーン ネットワークのパフォーマンスの 1/6 にすぎません。

関連情報