The additive-increase/multiplicative-decrease (AIMD) algorithm is a feedback control algorithm best known for its use in TCP congestion control. AIMD combines linear growth of the congestion window when there is no congestion with an exponential reduction when congestion is detected. Multiple flows using AIMD congestion control will eventually converge to an equal usage of a shared link.[1] The related schemes of multiplicative-increase/multiplicative-decrease (MIMD) and additive-increase/additive-decrease (AIAD) do not reach stability.
The approach taken is to increase the transmission rate (window size), probing for usable bandwidth, until loss occurs. The policy of additive increase may, for instance, increase the congestion window by a fixed amount every round-trip time. When congestion is detected, the transmitter decreases the transmission rate by a multiplicative factor; for example, cut the congestion window in half after loss. The result is a saw-tooth behavior that represents the process of bandwidth probing.
AIMD requires a binary congestion signal. Most frequently, packet loss serves as the signal; the multiplicative decrease is triggered when a timeout or an acknowledgement message indicates a packet lost. It is also possible for in-network switches/routers to mark congestion (without discarding packets) as in Explicit Congestion Notification (ECN).
Let
w(t)
t
a
a>0
b
0<b<1
w(t+1)=\begin{cases} w(t)+a&ifcongestionisnotdetected\\ w(t) x b&ifcongestionisdetected \end{cases}
In TCP, after slow start, the additive increase parameter
a
b
AIMD congestion avoidance is or was used in:
AIMD has been found to be utilized by diverse biological systems, including for regulating foraging of harvester ant colonies, maintaining cell-size homeostasis, and for synaptic learning and adaptation in neural circuits.[3]