tcp - imaglig-membres.imag.fr/heusse/ricm4/tcps2.pdf · tcpavancé 3 3 Équité max min 1 1 0,2 0,2...
TRANSCRIPT
X ELaTEX 1 1
TCP
Martin Heusse
TCP avancé 2 2
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)
TCP avancé 3 3
Équité max min
11
0,2
0,2
0,8
• Obtenu par adaptation AIMD (Additive Increase Multiplicative Decrease)
TCP avancé 4 4
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 ssthresh (passage de slow start à évitement decongestion)(maintenu toujours plus grand que 2 MSS)
• Champs WIN (tampon disponible au récepteur)
• RTO
• État : slow start ; congestion avoidance ; fast recovery
TCP avancé 5 5
TCP/UDP
•
•
TCP avancé 6 6
TCP (Reno) : 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
TCP avancé 7 7
Slow start
• Initialisation : ssthresh=65535 ; cwnd=MSS
• Réception ACK : cwnd+=MSS
• Temporisation : ssthresh=cwnd/2 ; cwnd=MSS
1 2 3 4 5 6 7 8cwnd :
1 123
23
4
5
TCP avancé 8 8
Congestion avoidance
• État atteint quand cwnd a dépassé ssthresh
• À chaque RTT :
✓ cwnd += MSS ; ssthresh=cwnd
✓ Mise en œuvre : à chaque réception d’un acquittement on met à jour lafenêtre de congestion
cwnd← cwnd +MSS× MSS
cwnd
(On reçoit cwnd/MSS ACKs par RTT)
• Temporisation : retour en slow startssthresh=cwnd/2 ; cwnd=MSS
TCP avancé 9 9
Fast recovery (à partir de TCP Reno)
∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture deséquence
• Fast retransmit : après 3 acquittements dupliqués (4 ACK identiques), onconsidère qu’un paquet a été perdu (RFC 2581)(3, pour ne pas réagir à un déséquencement bénin).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,donc ça n’est pas bien grave. . .
• ssthresh=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=ssthresh(RFC 2581 : This is termed ”deflating” the window.)
TCP avancé 10 10
Fast recovery (à partir de TCP Reno) (suite)
S1S2 S3 S4 S5
A1
S6
Fast retransmit
S2 S84 5
5/2+33 5,5 6,5
S72,5
A6
A1 A1 A1 A1 A6 A7
cwnd : 2,5+xS9
TCP avancé 11 11
Fast recovery (à partir de TCP Reno) (suite)
Fast recovery
Slow start
TCP avancé 12 12
New Reno (RFC 2582)
• Pb avec Fast recovery de Reno : En cas de pertes multiples, le «gonflage»de la fenêtre après la détection de la 2e perte peut être insuffisant pourtransmettre de nouvelles données→ on attend le temporisateur sansplus rien transmettre… La solution, c’est new Reno
• En cas d’acquittement partiel, cwnd=cwnd-3MSS+MSSPas de division par deux decwnd ; ssthresh = W/2Retransmission du paquet réclamé. (il a été perdu…)
→ Récupération de plus d’un paquet
→ On sort de la récupération d’erreur quand on reçoit l’acquittement dudernier paquet émis au moment de la détection de la perte.
• On repart avec cwnd = min(ssthresh, W + MSS)
TCP avancé 13 13
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
TCP avancé 14 14
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 ? ?
TCP avancé 15 15
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
TCP avancé 16 16
Exemple — Fast Recovery (trace 1)
TCP avancé 17 17
Exemple — Fin de slow start (trace 2)
W1
Sortie fast recovery
fast retransmit
W1/4(2 congestions)
fast retransmit acquittementpartiel
…
Sortie fast recoveryW2= 0
cwnd < ssthresh⇒ slow start
Fast recovery Fast recoverycongestion avoidance
slow startslow start
congestion avoidanceÉtat
À
la réception d’un acquittement partiel, on retransmet le segment réclamé par le nouvel ACK.
TCP avancé 18 18
Acquittements sélectifs (1996—RFC 2018)
• SACK-permitted : Option dans le SYN
• SACK : indique à l’émetteur les plages de numéros de séquences bienreçues
TCP avancé 19 19
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 correspondl’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← max(̂t + 4̂v, 1s)
(α = 1/8 ;β = 1/4)(la valeur minimale est de 200ms pour linux,windows…)
• À chaque retransmission, RTO est doublé
TCP avancé 20 20
Qu’est ce qui limite le 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 ≤ WIN
RTT
3. Interaction RTT↔ pertes (p)
D ≤ ζMSS
RTT√
p
TCP avancé 21 21
TCP : réglages
• Configuration système/socket : reno/newreno ; SACK ; acquittementretardé ; Nagle
• Taille du tampon de réception
• Vegas : réduction de la fenêtre de congestion avant même qu’une perteadvienne (quand le RTT augmente)
✓ FreeBSD : TCP bandwidth delay product window limiting