後続の接続で TCP スロースタートが発生する理由

後続の接続で TCP スロースタートが発生する理由

私の理解では、TCP スロー スタートは輻輳と損失を補正して防止するために使用されます。接続が正常に確立され、しばらく使用されると、TCP 接続の帯域幅はほぼ最大になります。新しい接続が確立されるたびに、同時接続であっても TCP スロー スタートが使用され、両方の TCP スタックが物理層の動作をすでに認識している場合でも、低いウィンドウ サイズで接続が開始されます。

TCP スタックは、同じパートナーへの最近の接続のウィンドウ サイズを記憶している可能性があるにもかかわらず、なぜ常にスロー スタートを実行するのでしょうか。リンク状態が変化した場合に、適切に高速なスタートを安全に実行し、その後接続を低下させることはできないのでしょうか。

答え1

たとえ同じ 2 つのエンドポイント間であっても、2 つの TCP 接続が同じルートを取ると想定するのは安全ではありません。たとえば、関係するポートを考慮して複数の接続間で負荷分散を行うことは珍しくありません。

これは奇妙な選択に思えるかもしれませんが、多くのパケットが順序どおりに受信されないと TCP のパフォーマンスが低下する可能性があるため、これは理にかなっています。接続をルートに接着すると、これを回避できます。多くの場合、送信元 IP、宛先 IP、プロトコル、送信元ポート (該当する場合)、宛先ポート (該当する場合) がハッシュされ、そのハッシュが次のホップの選択に使用されます。

関連情報