web-dev-qa-db-ja.com

単一接続と複数接続のネットワーク使用率の違いTCP接続

(基本)TCPが機能する方法は、スロースタートフェーズから開始し、その後に輻輳ウィンドウ(CWD)を直線的に増加させることです。CWDはネットワークステータスに応じて調整されます。接続を開始します。ネットワークの状態によっては、接続が安定したCWDに到達するまでに時間がかかります。

したがって、このロジックにより、a TCP接続は、リンクの使用可能なすべての白黒を埋めようとします。したがって、複数のTCP接続がある場合、それぞれがCWDを調整して、輻輳が最小限になるようにします。

したがって、100 Mbpsのリンクがあるとします(トポロジは以下に示されています)UDPトラフィックを送信しているアプリケーションがあります並列を開始できる別のアプリケーションiperfがありますTCPその同じリンク

[h1] ---- 100 Mbps ---- [h2]

h1 (UDP + iperf client)
h2 (UDP + iperf server)

私は次のように実験をしています

  1. 1 UDP + 1 TCP
  2. 1 UDP + 2 TCP
  3. 1 UDP + 4 TCP
  4. 1 UDP + 8 TCPなど

私の調査結果によると、1 TCP接続のスループットは8 TCP接続の合計(Exp1とExp4)のスループットよりも低い)です。維持する必要があります。 8つの接続の個々のスループットははるかに低いことに注意してください(これは明らかです)。

だから私の質問は、なぜ単一のTCP接続は、8 TCPが一緒にできるので、完全な白黒を利用できないのですか?

1
xavier666

CUBICまたは別のAIMD輻輳制御アルゴリズムを使用している場合、輻輳に達すると、レートが少し下がり、ゆっくりと上昇して再び最大値を見つけます。これにより、他のフローが満たすことができる未使用の帯域幅の「スカラップ」(tcptraceグラフ内)がほとんど残りません。 UDPフローが固定レートの場合、それらのギャップを埋めることはできません。しかし、他の競合するTCPフローは確かにそうなります。あなたが持っているTCPフローが多ければ多いほど、他の人の輻輳によって残された帯域幅をより多く満たすでしょう。管理措置。

1
Spiff