title: AIMD
text: # AIMD
  
  La méthode augmentation additive/retrait multiplicatif (AIMD en anglais, pour additive increase/multiplicative decrease) est un algorithme utilisé par TCP pour éviter la congestion. Il alterne des phases de croissance linéaire de la vitesse de transmission et de brusques réductions en cas de congestion.
  
  ## Principe
  
  L'idée du protocole est d'augmenter progressivement (linéairement) la vitesse de transmission afin de tester la bande passante disponible jusqu'à ce que des paquets soient perdus (signe de congestion dans le réseau). Quand une perte est détectée (timeout, réception du même paquet ACK plusieurs fois, etc.), la vitesse de transmission est multipliée par un facteur $a<1$.
  
  Globalement, le profil d'utilisation de la bande-passante par AIMD est donc en dents de scie.
  
  ### Formulation mathématique
  
  Soit $w$ la taille de la fenêtre de congestion, qui correspond au nombre de paquets transmis par seconde, $a<1$ et $b\leq 1$.
  
      $w\leftarrow a\cdot w$ quand une perte est détectée;
      $w\leftarrow w+b$ quand un paquet ACK accuse réception de la fenêtre.
  
  ### Discussion
  
  Les valeurs adéquates de $a$ et $b$ dépendent du protocole utilisé et de la nature des échanges sur le réseau (tolérance aux retards, données critiques ou non, etc.). Dans certains cas, il est judicieux de faire dépendre $a$ et $b$ de la taille $w$ de la fenêtre de congestion.
  
  Il existe d'autres politiques de gestion équitable de la congestion, par exemple AIAD (augmentation et retrait additifs), MIAD (augmentation multiplicative, retrait additif) ou MIMD (augmentation et retrait multiplicatifs).
  
  