TCP — suite RICM 2e année Martin Heusse Foil T E X
TCP — suiteRICM 2e année
Martin Heusse
FoilTEX
Points abordés
• Contrôle de congestion– Le but : équité max min– Slow start ; Congestion avoidance ; fast recovery– Facteurs limitants du débit TCP
• Temporisateur de retransmission RTO (calculé en fonction du RTT)
FoilTEX 1
Équité max min
11
0,2
0,2
0,8
• Obtenu par adaptation AIMD (Additive Increase Multiplicative Decrease)
FoilTEX 2
Rappels : variables de contrôle d’unedemi-connexion
• Fenêtre glissante : plus grand numéro de séquence émis, plus grandnuméro de séquence acquitté.
• Fenêtre de congestion cwnd (toujours plus grande que 1 MSS, plus petitque 64k)
• Threshold twnd (passage de slow start à évitement de conges-tion)(maintenu toujours plus grand que 2 MSS)
• Champs WIN (tampon disponible au récepteur)• RTO• État : slow start ; congestion avoidance ; fast recovery
FoilTEX 3
TCP/UDP
••
FoilTEX 4
TCP : modes de fonctionnement
49
Récupération (fast recovery)
! Après une temporisation, on entre dans la phase dedémarrage
– inefficace si les pertes sont isolées
– log n RTT, n = twnd/MSS, pour atteindre twnd
! Si une perte détectée par la retransmission rapide (fast
retransmit) (trois ACKs dupliqués)
– une phase de récupération (fast recovery)
» on garde le niveau élevé de twnd
» chaque ACK reçu est interprété comme un signalpositif - augmentation exponentielle
50
Trois phases
Démarrage
augmentation exp. de cwndjusqu'à cwnd = twnd
Évitement
augmentation add. de twndcwnd = twnd
Tempo
cwnd = twnd
Tempo
Ouverture de connexion :twnd = 64Kocwnd =1 seg
Récupération
augmentation exp. de cwndaudéla de twnd
Retransmissionrapide
Retransmissionrapide
Tempo ACK reçu
diminution mul. de twnd
FoilTEX 5
Slow start
• Initialisation : twnd=65535 ; cwnd=MSS• Réception ACK : cwnd+=MSS• Temporisation : twnd=cwnd/2 ; cwnd=MSS
1 2 3 4 5 6 7 8cwnd :
1 1
2
3
2
3
4
5
FoilTEX 6
Congestion avoidance
• État atteint quand cwnd a dépassé twnd• À chaque RTT :
– cwnd += MSS ; twnd=cwnd– Mise en œuvre : à chaque réception d’un acquittement on met à jour la fenêtre
de congestion
cwnd ← cwnd +MSS × MSS
cwnd(On reçoit cwnd/MSS ACKs par RTT)
• Temporisation : retour en slow starttwnd=cwnd/2 ; cwnd=MSS
FoilTEX 7
Fast recovery (à partir de TCP Reno)
∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupturede séquence
• Fast retransmit : après 3 acquittements dupliqués (4 ACK identiques),on considère qu’un paquet a été perdu (RFC 2581)1.Il est renvoyé immédiatement→ Ré-émission avant expiration du timer– Pas de slow start : le réseau a transporté des paquets après la perte. . .
• twnd=W/2 ; cwnd=W/2+3 * MSS(W : nombre courant de paquets non acquittés)(3 ack dupliqués reçus : 3 paquets sont sortis du réseau)
• Pour chaque ACK dupliqué, cwnd+=MSS• Réception d’un ACK non dupliqué : cwnd=twnd
(RFC 2581 : This is termed ”deflating” the window.)
13, pour ne pas réagir à un déséquencement bénin
FoilTEX 8
S1S2 S3 S4 S5
A1
S6
Fast retransmit
S2 S8
4 5
5/2+3
3 5,5 6,5
S7
2,5
A6
A1 A1 A1 A1 A6 A7
cwnd : 2,5+x
S9
FoilTEX 9
Fast recovery
Slow start
FoilTEX 10
New Reno (RFC 2582)
• Fast recovery : En cas de pertes multiples, le «gonflage» de la fenêtreaprès la détection de la 2eperte peut être insuffisant pour transmettrede nouvelles données → on attend le temporisateur
• En cas d’acquittement partiel, cwnd=cwnd-3MSS+MSSPas de division par deux
→ Récupération de plus d’un paquet→ Une seule perte récupérable par RTT
FoilTEX 11
Quelques exemples
• Topologie :
Ligne SLIP
Ethernet
• Ethernet 100baseTX full duplex Ligne série à 115200 baud
• Debit UDP max : 88.3 kb/s ;MTU : 552 octets
FoilTEX 12
Exemple 1 — Fast recovery, New Reno
0 50 100 150 200
010
000
2000
030
000
Temps (s)
Oct
ets
non
acqu
ittés
Attention, le slow start est ici interrompu à un niveau enregistré d’une connexion précédente. Le RTT est nul, quelle est la taille du tampon du routeur ? ?
FoilTEX 13
Exemple 2 — Slow start, Fast Recovery
0 20 40 60 80 100
020
000
4000
060
000
Temps (s)
Oct
ets
non
acqu
ittés
FoilTEX 14
Exemple — Fast Recovery (trace 1)
FoilTEX 15
Exemple — Fin de slow start (trace 2)
FoilTEX 16
Acquittements sélectifs (1996—RFC 2018)
• SACK-permitted : Option dans le SYN• SACK : indique à l’émetteur les plages de numéros de séquences bien reçues
FoilTEX 17
Temporisateur de retransmission RTO
• Calculé en fonction du RTT– Trop court : réémission du segment avant que l’ACK puisse revenir– Trop long : perte de performance
• Mesure du RTT (t)– Ne peut pas se faire pour des paquets retransmis (auquel correspond l’ACK ?)– Option timestamp : écrit par émetteur, recopié par récepteur
• À chaque nouvelle mesure t :Erreur : δ ← t̂ − tEstimation du RTT : t̂ ← (1 − α)t̂ + αtv̂ ← (1 − β)v̂ + βδ✛
✚
✘
✙RTO ← t̂ + 4v̂
(α = 1/8 ; β = 1/4)• À chaque retransmission, RTO est doublé
FoilTEX 18
Limitations du débit TCP (D)
1. Limitation par le goulot d’étranglement
D ≤ minl∈chemin
(Dl)
2. Limitation par la fenêtre du récepteur
D ≤ WINRTT
3. Interaction RTT ↔ pertes (p)
D ≤ ζMSSRTT
√p
FoilTEX 19
TCP : réglages
• configuration système/socket : reno/newreno ; SACK ; acquittement re-tardé ; Nagle
• Taille du tampon de réception• Vegas : réduction de la fenêtre de congestion avant même qu’une perte
advienne (quand le RTT augmente)– FreeBSD : TCP bandwidth delay product window limiting
FoilTEX 20