The full toy sequence forms the familiar rise-and-cut sawtooth shape.

highlighted = computed this step

The whole shape

Read the blue line left to right: fast rise, gentle rise, drop, then gentle rise again.

rise, rise, cut, rise\text{rise, rise, cut, rise}
Read the sawtoothToy congestion sawtooth recomputed from exact integer rules.Read the sawtoothcwnd in MSSlossthreshold12345678910RTTRTTcwndssthreshphaseeventnext118slow startdouble2228slow startdouble4348slow startdouble8488avoidanceadd one9598avoidanceadd one106108losshalve5755avoidanceadd one6865avoidanceadd one7975avoidanceadd one81085avoidanceadd one9

The pinned sequence

The cwnd values are 1, 2, 4, 8, 9, 10, 5, 6, 7, 8.

cwnd sequence is exact\text{cwnd sequence is exact}
Read the sawtoothToy congestion sawtooth recomputed from exact integer rules.Read the sawtoothcwnd in MSSlossthreshold12345678910RTTRTTcwndssthreshphaseeventnext118slow startdouble2228slow startdouble4348slow startdouble8488avoidanceadd one9598avoidanceadd one106108losshalve5755avoidanceadd one6865avoidanceadd one7975avoidanceadd one81085avoidanceadd one9

After the cut, growth resumes

After the loss, the threshold is 5 and the next rows add one: 5, 6, 7, 8.

585\to8
Read the sawtoothToy congestion sawtooth recomputed from exact integer rules.Read the sawtoothcwnd in MSSlossthreshold12345678910RTTRTTcwndssthreshphaseeventnext118slow startdouble2228slow startdouble4348slow startdouble8488avoidanceadd one9598avoidanceadd one106108losshalve5755avoidanceadd one6865avoidanceadd one7975avoidanceadd one81085avoidanceadd one9

What this toy leaves out

This is a deterministic toy for reading cwnd dynamics. It is not measured throughput, latency, fairness, retransmission timing, or a full TCP implementation.

toy dynamics only\text{toy dynamics only}
Read the sawtoothToy congestion sawtooth recomputed from exact integer rules.Read the sawtoothcwnd in MSSlossthreshold12345678910RTTRTTcwndssthreshphaseeventnext118slow startdouble2228slow startdouble4348slow startdouble8488avoidanceadd one9598avoidanceadd one106108losshalve5755avoidanceadd one6865avoidanceadd one7975avoidanceadd one81085avoidanceadd one9

Summary

A sawtooth is the repeated pattern of increase and cut. Here every displayed row is recomputed from the pinned start, threshold, additive step, loss RTT, and row count.

loss RTT=6\text{loss RTT}=6
Read the sawtoothToy congestion sawtooth recomputed from exact integer rules.Read the sawtoothcwnd in MSSlossthreshold12345678910RTTRTTcwndssthreshphaseeventnext118slow startdouble2228slow startdouble4348slow startdouble8488avoidanceadd one9598avoidanceadd one106108losshalve5755avoidanceadd one6865avoidanceadd one7975avoidanceadd one81085avoidanceadd one9