Top Banner
TCP — suite RICM 2e année Martin Heusse Foil T E X
21

TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

Jun 20, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

TCP — suiteRICM 2e année

Martin Heusse

FoilTEX

Page 2: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 3: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

Équité max min

11

0,2

0,2

0,8

• Obtenu par adaptation AIMD (Additive Increase Multiplicative Decrease)

FoilTEX 2

Page 4: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 5: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

TCP/UDP

••

FoilTEX 4

Page 6: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 7: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 8: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 9: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 10: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 11: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

Fast recovery

Slow start

FoilTEX 10

Page 12: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 13: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 14: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 15: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 16: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

Exemple — Fast Recovery (trace 1)

FoilTEX 15

Page 17: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

Exemple — Fin de slow start (trace 2)

FoilTEX 16

Page 18: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 19: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 20: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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

Page 21: TCP — suite RICM 2e annéelig-membres.imag.fr/heusse/TCPS2.pdf · Fast recovery (à partir de TCP Reno) ∗ Un récepteur ré-acquitte le dernier segment reçu en cas de rupture

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