OpenVPNに非常に奇妙な問題があります。
これを除いて、ほとんどのVPNは正常に動作します。ここでは、TCP=接続から非常に低いパフォーマンスが得られますが、CPU負荷は低いです(したがって、CPUの問題ではありません)。
OpenVPNは、UDP、AES-256-CBC暗号、SHA256認証で構成され、圧縮は行われません。
以下は、iperfで行った測定の一部です。
VPNを使用しないネットワーク接続:
iperf -c external.ip result:300 - 500mbps (good)
iperf -c vpn.int.ip result: 20-30mbps (not good)
両端のCPU使用率が低くなっています。 OK、おそらくいくつかのISPがUDPパケットをシェーピングまたはフィルタリングします。
iperf -c external.ip -b 500M result: no packet loss
うーん... VPN経由でUDPストリームを強制するとどうなりますか
iperf -c vpn.int.ip -b 100M result: no packet loss
iperf -c vpn.int.ip -b 180M result: packet loss ~0.1%
したがって、UDPの結果に基づいて、私のVPN接続は180 mbpsに達するはずですが、そうではありません。また、tcptraceを使用して非常に奇妙なグラフを取得します。
これは、適切なテストの方法です(VPNなし、外部IPを使用)。
ご覧のように、送信されたパケットは黄色の線の近くに留まっています。つまり、受信ウィンドウはほぼいっぱいになっています。グラフのこの部分は接続の開始近くにあり、後で、送信されたパケットは実質的に黄色の線の上にあります。
そして、このグラフは私がVPNから得たものです:
ここで、何らかの理由で、送信者はウィンドウが非常に小さいにもかかわらず、ウィンドウが非常に小さいかのように動作し(ウィンドウを何に設定するかは問題ではなく、デフォルト設定と4MBを維持してみました)、パケットを小さなバーストでのみ送信します。
これがこのようなグラフを見たのは初めてですか?何が原因ですか? ISPによるいくつかのUDPフィルタリング、OpenVPN自体、何か他のもの?
編集:UDPの代わりにTCPを使用してVPNを実行すると、10mbpsのスループットになります。
解決しました。むしろ、私はそれをより速くする方法を知っていますが、なぜそれが遅いのかわかりません。 AES暗号は、この特定のサーバーでTCPと何らかの形で干渉し、パフォーマンスが低下するようです。たとえば、暗号を3desに変更すると( "openssl speed"で報告されているように遅い) )、私は150 mbpsを取得します。いくつかの試行の後、私はこれを使用します:
cipher camellia-128-cbc
auth sha1
tun-mtu 9000
これで、1つのストリームで300 mbps、複数のストリームで450 mbpsが得られます。
接続でMTUの問題が発生している可能性があります。次の2つのリンクをご覧ください。役立つ情報が含まれている場合があります。