.png)
現在、送信接続と受信接続の両方を必要とする 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 にすぎません。