web-dev-qa-db-ja.com

LinuxおよびWindowsのTCP実装のパフォーマンスについて

WindowsとLinuxでのTCPスタックの実装が異なることを理解しています。WindowsはTCP Renoと呼ばれる輻輳制御アルゴリズムを使用しますが、LinuxはCubicを使用します。

2つのプロトコルが同じネットワーク上で共存する場合、2つのプロトコルはどのように比較されますか? Cubic(Linux)はより積極的であり、帯域幅のより高いシェアを獲得する可能性があると言うのは本当ですか?

13
AIB

輻輳制御アルゴリズムはアップストリームトラフィックにのみ影響し、したがってアップストリーム帯域幅にのみ影響することに注意してください。

そうは言っても、Cubicは実際には、特に高帯域幅遅延積を持つネットワークの場合、より積極的です。 Linuxの実装には、同じ状況でrenoよりも小さい送信レートを使用しないようにするルールも組み込まれています。

Linux Cubicアルゴリズムには、3次アルゴリズムが少なくとも標準TCPと同じくらい積極的であることを保証するコードも含まれています。

--Leith、Shorten、McCullagh、 Cubic-TCPの実験的評価

そのため、Youtubeビデオを見ながらWindows Updateをダウンロードすると、YoutubeトラフィックがMicrosoftトラフィックを枯渇させる可能性があり、それについては何もできません。

4
artistoex

まず、あなたの言うことは事実上正しくありません:

  • Linuxからカーネルバージョン2.6.18までは、デフォルトで [〜#〜] bic [〜#〜] を使用します。
  • Linuxカーネル2.6.19以降では、デフォルトで [〜#〜] cubec [〜#〜] が使用されます。
  • LinuxのTCP輻輳制御メカニズムは プラグ可能 です。たとえば、ファイルで変更できます。
  • Windows XP以前はTCP Reno(または New Reno )を使用
  • Windows Vista以降にも Compound TCP があります。これは、Server 2008でデフォルトで有効になっており、必要に応じてVistaおよびWindows7で有効にできます。

これらのアルゴリズムのすべては、利用可能なネットワーク帯域幅、遅延、利用可能なメモリなどに応じて自己調整されます。また、手作業で使用できる多くの構成パラメーターがあります。それらを調整します。

したがって、正確な特定のネットワークトポロジ、使用されているハードウェアとソフトウェアなどを確認せずに、実際に相互に比較することはできません。一方が他方より優れているとは限らず、使用可能な帯域幅のより大きなシェアを使用します。 CUBICはBICよりも攻撃的ではないことは事実ですが、実際には、使用されるTCP輻輳アルゴリズムのフレーバーよりも他の考慮事項の方が重要であることがよくあります。

非常に狭い範囲で異常なネットワークシナリオに調整しようとしているのでない限り、これらのアルゴリズムはすべて、箱から出してすぐに十分にうまく機能します。

12
haimg