Linux(3.5カーネル)でTCPパラメータを実験しています。基本的にこの接続に関して:
サーバー:データセンター内のギガビットアップリンク。別のデータセンターからテストした場合、実際の帯域幅(アップリンクの共有による)は約70 MB /秒です。
クライアント:200メガビットファイバーに接続されたギガビットローカルLAN。テストファイルを取得すると、実際には20 MB /秒に達します。
待ち時間:約50ミリ秒の往復。
リモートサーバーは、10〜100 MBの範囲のファイルのファイルサーバーとして使用されます。10のinitcwndを使用すると、これらのファイルの転送時間はTCPスロースタートの影響を大きく受け、10秒の読み込みに3.5秒かかります(最高速度:3.3 MB /秒に達します)。最高速度に達する前に終了します。私の目標は、これらのファイルの最小読み込み時間を調整することです(したがって、生のスループットが最高でも往復遅延が最低でもないので、ファイルを読み込むのにかかる実際の時間を短縮する場合は、両方を犠牲にしてもかまいません)。
そのため、他の接続や他への影響の可能性を無視して、理想的なinitcwndがどうあるべきかを決定するために簡単な計算を試みました。帯域幅遅延積は、200メガビット/秒* 50ミリ秒= 10メガビットまたは1.310.720バイトです。initcwndがMSSの単位で設定されていることを考慮し、MSSが約1400バイトであると仮定すると、1.310.720 / 1400 = 936の設定が必要になります。
この値はデフォルト(Linuxでは10 * MSS、Windowsでは64kb)とは非常に異なるため、このように設定することはお勧めできません。このように構成することの予想される欠点は何ですか?例えば:
- 同じネットワークの他のユーザーに影響しますか?
- 他の接続で許容できない輻輳が発生する可能性はありますか?
- パス上のどこかにルーターバッファーをフラッドしますか?
- 少量のパケット損失の影響を増やしますか?
70 MB/s
メガビットではなく、メガバイト/秒で話していることを確認できますか?説明を求めているだけです。