TCP スロー スタートは、インターネットが「輻輳の崩壊」を経験し始めたときに発生しました。Van Jacobson と Michael Karels の論文からの逸話的な例は次のとおりです。
During this period, the data throughput from LBL to UC Berkeley (sites separated
by 400 yards and two IMP hops) dropped from 32 Kbps to 40 bps.
輻輳の問題は、高速リンクから低速リンクへの移行と、このボトルネックでのバッファでのパケットのビルドアップ/ドロップによって引き起こされると説明されることがよくあります。
私が理解しようとしているのは、完全なバッファーにつながるリンクの高速部分で余分なアクティビティ/再送信を単に引き起こすのではなく、そのような蓄積がエンドツーエンドのスループットの低下を引き起こす方法です。例として、次のネットワークを考えてみましょう。
fast slow fast
A ======== B -------- C ======== D
A と D はエンドポイント、B と C は高速ネットワークから低速ネットワークへの移行時のパケット バッファです。たとえば、A/B と C/D 間のリンクは 10Mbps で、B/C 間のリンクは 56Kbps です。ここで、A が大きな(理論的には無限としましょう)Dへのメッセージ、私が理解しようとしているのは、接続の途中で低速のリンク速度に適応するのではなく、TCP接続をデータで叩いた場合、通過するのに時間がかかる理由です. 私は、B は、A によってバッファがどれだけ大量に叩かれているかに関係なく、またバッファがいっぱいになったために破棄しなければならないパケットの数に関係なく、56Kbps の固定レートでバッファが消耗するものであると想定しています。したがって、A が常に B のバッファーをフル (場合によってはオーバーフル) に保ち、B が常に最大レートの 56Kbps で送信している場合、代わりにスロースタートを使用することで、スループットはどのように向上しますか?
私が考えられる唯一のことは、D が既に受信した同じパケットが、輻輳の下で低速の B/C リンクを介して再送信される必要があり、これが新しいパケットをブロックしているということでした。しかし、D は通常、受信したすべてのパケットに ACK を送信していないので、再送信されるパケットのほとんどは、B のバッファーでドロップされたために D によって正当に受信されなかったものである必要があります。