AIMD
/ A-I-M-D /
Imagine you are filling a glass under a tap but you cannot see the glass, so you do not know when it will overflow. A sensible strategy: add water a little at a time, and the instant it spills, cut your pour dramatically — say, in half — then go back to adding slowly. Over time you hover just below the brim. AIMD, additive increase / multiplicative decrease, is exactly this strategy, and it is the heart of how TCP probes for how fast it can safely send.
The rule has two halves. Additive increase: while no loss is seen, grow the congestion window by a small fixed amount each round-trip — roughly one extra packet's worth per RTT. This is gentle, linear climbing. Multiplicative decrease: the moment loss signals congestion, cut the window by a multiplicative factor — classic TCP halves it. The increase is additive (slow and steady, +1) while the decrease is multiplicative (sudden and proportional, x0.5). Plot the window over time and you get the famous TCP sawtooth: a slow ramp up, a sharp drop, a slow ramp up again, forever.
Why this particular asymmetry? It turns out that additive-increase-with-multiplicative-decrease is the rule that drives competing flows toward a fair, stable share of a link, while still recovering quickly enough to be efficient. If two flows share a link, AIMD nudges them toward an equal split: the flow that is using more loses more in absolute terms on each cut, so over many sawteeth they converge. Cutting hard on loss keeps the network safe; rising gently keeps it from oscillating wildly. Most other increase/decrease combinations either are unfair or fail to converge.
A flow's window grows 1, 2, 3, 4, 5, 6, 7, 8 packets per RTT (additive increase). At 8 it overruns the link and loses a packet, so it halves to 4 (multiplicative decrease). Then it climbs 5, 6, 7, 8 again, loses, halves to 4 again. That repeating /\/\/\ pattern — climb, drop by half, climb — is the sawtooth, and its average sits near the link's true capacity.
Gentle linear rise plus sharp halving on loss produces TCP's sawtooth and its rough fairness.
AIMD's fairness is only rough, and it favours short round trips: two flows with very different RTTs do NOT get equal shares, because the one with the shorter RTT increases its window more often per second. Newer algorithms like CUBIC and BBR change the climb to fix or sidestep this RTT-unfairness.