web-dev-qa-db-ja.com

TCPは非常に遅いです(tsg接続)

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を使用)。 TSG of external connection

ご覧のように、送信されたパケットは黄色の線の近くに留まっています。つまり、受信ウィンドウはほぼいっぱいになっています。グラフのこの部分は接続の開始近くにあり、後で、送信されたパケットは実質的に黄色の線の上にあります。

そして、このグラフは私がVPNから得たものです: TSG of vpn'ed connection

ここで、何らかの理由で、送信者はウィンドウが非常に小さいにもかかわらず、ウィンドウが非常に小さいかのように動作し(ウィンドウを何に設定するかは問題ではなく、デフォルト設定と4MBを維持してみました)、パケットを小さなバーストでのみ送信します。

これがこのようなグラフを見たのは初めてですか?何が原因ですか? ISPによるいくつかのUDPフィルタリング、OpenVPN自体、何か他のもの?

編集:UDPの代わりにTCPを使用してVPNを実行すると、10mbpsのスループットになります。

7
Pentium100

解決しました。むしろ、私はそれをより速くする方法を知っていますが、なぜそれが遅いのかわかりません。 AES暗号は、この特定のサーバーでTCPと何らかの形で干渉し、パフォーマンスが低下するようです。たとえば、暗号を3desに変更すると( "openssl speed"で報告されているように遅い) )、私は150 mbpsを取得します。いくつかの試行の後、私はこれを使用します:

cipher camellia-128-cbc
auth sha1
tun-mtu 9000

これで、1つのストリームで300 mbps、複数のストリームで450 mbpsが得られます。

3
Pentium100

接続でMTUの問題が発生している可能性があります。次の2つのリンクをご覧ください。役立つ情報が含まれている場合があります。

フラグメントとMSSでMTUを構成する

ギガビットネットワークでのパフォーマンスの最適化

1
user3973227