TCP輻輳制御:窓が伸びては折れる

輻輳ウィンドウ cwnd が、スロースタートで指数的に伸び、ロスで半減する「鋸歯(のこぎり)波形」を時間軸で体感します。

40 pkt
1.5 %
14 RTT/s
cwnd(現在の窓)
ssthresh(しきい値)
フェーズ
経過 RTT
cwnd の時間変化(横=RTT、縦=ウィンドウサイズ) / 緑線=AIMDの平均的な安定点
TCP は一度にどれだけ送れるか(輻輳ウィンドウ cwnd)を自分で探ります。最初は容量が分からないので、 毎 RTT ごとに cwnd を倍々(指数増加)に増やす ── これがスロースタートです。
cwnd が ssthresh を超えると、慎重に1 RTT で +1(線形増加)へ切り替わります(輻輳回避)。 パケットを送りすぎてロスが起きると、cwnd を半分に折って ssthresh を下げ、また登り直します。
「ロスが無ければ毎回 +1 で増やし、ロスが起きたら ×0.5 で減らす」── この AIMD(加算増加・乗算減少)が、のこぎり状の波形と安定点を生みます。スライダーで容量とロス率を変えてみましょう。

いま何が起きている?

ここがポイント