110 likes | 223 Views
Contrôler le débit d’émission. La couche application passe un bloc de données à la couche transport La couche transport divise le blocs en segments de MSS octets La couche transport envoie autant de segments que possible ( cgn_fenetre octets)
E N D
Contrôler le débit d’émission • La couche application passe un bloc de données à la couche transport • La couche transport • divise le blocs en segments de MSS octets • La couche transport envoie autant de segments que possible (cgn_fenetre octets) • Lorsque le premier acquittement parvient à l’émetteur, 1RTT s’est écoulé • Lorsque le dernier acquittement parvient à l’émetteur il s’est écoulé 1RTT + soit ~ 1RTT • Le débit est ~ cgn_fenetre/RTT octet/s • Conclusion: • Plus on augmente cgn_fenetre, plus on augmente le débit d’emission • Plus on diminue cgn_fenetre, plus on diminue le débit d’emission Ingénierie des réseaux - Chapitre 3: La couche transport
Evitement de la congestion (congestion avoidance) • Après la phase de démarrage lent on rentre dans la phase d’évitement de la congestion • On crée une nouvelle variable ssthresh • ssthresh vaut la moitié de la valeur de cgn_fenetre au moment où on a détecté un évènement de perte • La valeur du débit disponible est entre ssthresh et cgn_fenetre • Quand on rentre dans la phase de congestion avoidance • cgn_fenetre passe à ssthresh • L’augmentation de cgn_fenetre devient linéaire • A chaque réception d’ACK, on ajoute 1 MS à cgn_fenetre • On sort de la phase de congestion avoidance quand on reçoit un triple ACK dupliqué. Ingénierie des réseaux - Chapitre 3: La couche transport
Evitement de la congestion • On utilise une nouvelle variable ssthresh « slow startthreshold » • ssthresh vaut cgn_fenetre / 2 • Quand on passe dans la phase évitement de la congestion, on augmente cgn_fenetre de manière linéaire et non plus exponentielle. Ingénierie des réseaux - Chapitre 3: La couche transport
Raffinement: inférer la perte • Après 3 ACKs dupliqués • cgn_fenetre est divisé par deux • la fenêtre grossit ensuite linéairement • mais après un évènement de timeout • cgn_fenetre est fixé à 1 MSS • cgn_fenetre ensuite grossit exponentiellement jusqu’à atteindre Seuil , • puis elle grossit linéairement • Philosophie • 3 ACKs dupliqués indiquent que le réseau est capable de transporter des segments • un timeout indique une situation de congestion Ingénierie des réseaux - Chapitre 3: La couche transport
time Démarrage lent (Slow start) • Quand la connexion commence cgn_fenetre = 1MSS • A chaque réception d’ACK on double cgn_fenetre • Slow Start s’arrête lorsque on détecte 3 ACKs dupliqués • Le débit initial est faible mais augmente exponentiellement vite. • Slow start est une technique pour découvrir une borne supérieure du débit disponible HôteB Hôte A 1 segment RTT 2 segments 4 segments Ingénierie des réseaux - Chapitre 3: La couche transport
Résumé : Le contrôle de congestion de TCP • Quand cgn_fenetre est en dessous de Seuil , l’émetteur est en phase de slow start, la fenêtre croît exponentiellement • Quand cgn_fenetre est au dessous de Seuil, l’émetteur est en phase d’évitement de la congestion, la fenêtre croît linéairement • Quand on détecte trois ACKs dupliqués : • Seuil = cgn_fenetre / 2 • cgn_fenetre = Seuil • Quand un timeout survient • Seuil = cgn_fenetre / 2 • Cgn_fenetre = 1 MSS Ingénierie des réseaux - Chapitre 3: La couche transport
Augmentation additive, augmentation multiplicative • Approche: augmenter le taux de transmission jusqu’à rencontrer un évènement de perte • Augmentation multiplicative : Augmenter cgn_fenetre de 1 MSS à chaque RTT jusqu’à ce qu’une perte soit détectée • Augmentation additive Ingénierie des réseaux - Chapitre 1 Généralités
Contrôle de congestion • Quand la connexion commence, cgn_fenetre = 1MSS • Exemple: • MSS = 500 octets; RTT=200ms • débit initial : 20 kbs • La bande passante disponible est sans doute >> MSS/RTT • Il est souhaitable de monter rapidement à un débit proche du débit disponible • Quand la connexion va commencer, on va augmenter le débit jusqu’à observer un évènement de perte. Ingénierie des réseaux - Chapitre 3: La couche transport
Contrôle de congestion TCP (simplifié) • En phase de slow start, quand cgn_fenetre < Seuil la fenêtre croît exponentiellement • En phase de congestion avoidance, quand cgn_fenetre < Seuil la fenêtre croît linéairement • Quand un triple ACK dupliqué arrive: • Seuil = cgn_fenetre / 2 • cgn_fenetre = Seuil • On passe en congestion avoidance • Quand un timeout arrive : • Seuil = cgn_fenetre / 2 • cgn_fenetre= 1 MSS • On passe en slow start • Philosophie • 3 ACKs dupliqués indiquent que le réseau est capable de transporter des segments • un timeout indique une situation de congestion Ingénierie des réseaux - Chapitre 3: La couche transport
Evitement de la congestion (congestion avoidance) • Après la phase de démarrage lent on rentre dans la phase d’évitement de la congestion • On crée une nouvelle variable Seuil • Seuil vaut la moitié de la valeur de cgn_fenetre au moment où on a détecté un évènement de perte • La valeur du débit disponible est entre Seuil et cgn_fenetre Ingénierie des réseaux - Chapitre 3: La couche transport