Info0702 – Réseaux
Informatiques!
La couche Transport
Le service de Transport!
▶ Services destinés aux couches
supérieures
▶ Adressage
▶ Établissement de connexions
▶ Multiplexage
▶ Contrôle de flux
▶ Récupération de fautes
▶ Primitives de transport
▶ Sockets
Services offerts aux couches
supérieures!
▶ Les couches réseau, transport et application
▶ Parfois la couche transport est considérée comme la
"frontière" entre les parties "haute" et "basse" de la pile
Primitives de base pour le
transport!
▶ Un service de transport simple doit au
moins définir ces primitives
▶ Certaines variations dépendent de la qualité
de service exigé
Sockets Berkeley!
▶ Les sockets TCP ont un sous-ensemble
plus riche de primitives
Éléments des Protocoles de
Transport!
▶ Adressage
▶ Établissement des connexions
▶ Fermeture des connexions
▶ Contrôle de flux et buffering
▶ Multiplexage
▶ Récupération des fautes
Protocole de Transport!
▶ Fonctionnalités similaires à la couche 2
▶ Transport des données, contrôle de flux, etc
▶ Différences entre les deux couches
▶ Comment trouver un pair ? Quel "grain" de message à
récupérer ?
Adressage!
▶ L'adressage réseau (ex. IP) n'est pas suffisant
pour assurer l'adressage bout-à-bout
▶ Une adresse complémentaire est nécessaire pour
retrouver l'application demandée
▶ Ports :
- Couche 4 TCP/IP
- Couche 5 OSI
Établissement des Connexions!
▶ Une connexion entrante passe généralement par un
processus spéciale (portmapper, inetd) qui écoute sur
plusieurs ports
▶ La connexion est repassée au service identifié par le message
Établissement des Connexions!
▶ Le premier défi est d'établir une connexion
▶ Les deux côtés doivent être sûrs que la connexion est
réussie
▶ Protocole de la "poignée de mains en trois étapes"
▶ Efficace, mais il faut utiliser des ressources
supplémentaires (#séq) pour éviter des surprises
Fermeture d'une Connexion!
▶ Deux possibilités
▶ Déconnexion asymétrique
- La connexion est abruptement rompue
- Risque de perte de données
▶ Déconnexion symétrique
- Les deux côtés se mettent d'accord sur la
fermeture
- Où ? Quand ? Et si un problème arrive ?
Fermeture d'une connexion!
Déconnexion abrupte
Fermeture d'une Connexion!
▶ Le problème des deux armées
▶ Simplification du problème des Généraux
Byzantins
Fermeture d'une Connexion!
▶ Quatre scénarios possibles
▶ (a) Opération réussie
▶ (b) Dernier ACK perdu
Fermeture d'une Connexion!
▶ (c) Réponse perdue
▶ (d) Plusieurs échanges perdus - timeout
6-14, c,d
Contrôle de Flux et Buffering!
▶ Similarités est différences par rapport à la
couche 2
▶ Taille et nombre de PDUs
- Fixe pour la couche 2
- Le MTU Ethernet est bien connu
- La "fenêtre" peut être allouée à l'avance
- Variable pour la couche 4
- Quantité de données qui varie selon l'application
- Différentes politiques de buffering (ex UDP vs TCP)
- Fenêtres de taille variable (TCP)
▶ Impact : l'allocation des buffers ne peut plus être
faite de manière uniforme
Contrôle de Flux et Buffering!
▶ Similarités est différences par rapport à la
couche 2
▶ Politique de mémorisation (buffering)
- Couche 2 (Eth) : si une trame manque, le PDU est
jeté en attendant une retransmission
- Un timeout sur une trame invalide tout le PDU couche 3
- Couche 3 : Si un PDU manque, il faut demander la
retransmission tout en gardant les autres
morceaux
- Stockage dans la limite du timeout et du "compteur"
- Variations importantes selon la vitesse des liens (plus
tard)
Contrôle de Flux et Buffering!
▶ Similarités est différences par rapport à la
couche 2
▶ Politique de retransmission
- Couche 2 (Eth) : l'émetteur n'a pas à garder les
trames pour retransmission
- Couche 4 : selon le type de service (avec ou sans
connexion) il faut retransmettre les paquets
manquants
Contrôle de Flux et Buffering!
▶ Similarités est différences par rapport à la
couche 2
▶ Transmission à la couche supérieure
- Couche 2 : chaque trame est vue comme une
donnée indépendante (sauf si segmentation de la
trame). Envoi à la couche 3 dès sa réception
- Couche 4 : si le service le demande, la couche 4
doit garantir que toutes les données sont arrivées
(et dans le bon ordre)
Multiplexage!
▶ Multiplexage successifs
▶ type de trame de l’en-tête Ethernet
▶ champ protocole de l’en-tête IP
▶ numéro de port de destination
Ethernet
Trame
Driver
Ethernet
IP
ARP RARP
ICMP IGMP TCP UDP
Netscape ftp dhcp
Démultiplexage basé sur le champ
type de la trame Ethernet
du champ protocol de l’en−tête IP
Démultiplexage basé sur la valeur
Démultiplexage basé sur le numéro
de port de destination
Multiplexage!
▶ (a) Multiplexage en amont
▶ (b) Multiplexage en aval
Récupération des Fautes!
▶ Les clients et les serveurs doivent s'accorder sur les
stratégies de récupération
▶ Écrire (repasser à la couche supérieure) et répondre ?
▶ Répondre et ensuite repasser à la couche supérieure ?
▶ Que faire avec les données dupliquées ?
▶ Comment garantir le service ? Collaboration entre les
couches
Protocoles Internet : UDP!
• Introduction à UDP
• RPC - Remote Procedure Call
• UDP et le contrôle de flux
Introduction à UDP!
▶ L'en-tête UDP – uniquement l'essentiel
▶ Transport avec des garanties minimales
▶ Aucun enchaînement entre les paquets (#seq)
▶ Aucune garantie de livraison
UDP "!
▶ Utilise IP pour l'acheminement
▶ Livraison non fiable
+ par rapport à IP : distinguer plusieurs
applications destinataires
▶ Non connecté
▶ Pas d'accusé de réception
▶ Pas de garantie de l'acheminement effectif
▶ messages perdus, duplication, retard,
livraison en désordre, ...
▶ C'est à l'application de gérer tout ça
RPC!
▶ Une communication UDP (avec acquittement)
est similaire à une communication RPC
▶ Exemple : DNS
▶ Permet la création d'interfaces "génériques" de
programmation
▶ Même "appel" pour une méthode locale ou distante
UDP et le Contrôle de Flux!
▶ UDP = mode sans connexion
▶ Comment effectuer le contrôle de flux ?
▶ Réponse : UDP ne le fait pas
▶ Conséquences :
- "remplissage des tuyaux" – best-effort
▶ Sans contrôle de flux à sans contrôle de
congestion
▶ Une transmission UDP consomme tous les
ressources disponibles
- Algorithme gourmand
▶ Plus récemment : applications UDP-friendly
Le protocole TCP!
• Introduction à TCP
• Établissement de connexions TCP
• Fermeture de connexions TCP
• Politiques de retransmission
• Contrôle de flux
L'en-tête TCP!
The TCP Segment Header (2)!
The pseudoheader included in the TCP
checksum.
Gestion des Connexions!
▶ Les états utilisés dans la machine d'états TCP
Gestion des Connexions!
Contrôle de Flux en TCP!
▶ Deux problèmes à gérer
▶ Congestion à la réception
▶ Congestion lors du transport
Différentes Solutions pour le!
Contrôle de Flux!
▶ Solution 1 : Régulation par "tout ou rien"
▶ L'entité de transport destinataire envoie des
commandes qui autorisent ou arrêtent l'envoi
d'unités de données par l'expéditeur
▶ (similaire au mécanisme XON, XOFF)
▶ Ce mécanisme est très mal adapté car très
rigide
▶ Les commandes de ralentissement ou
d'accélération peuvent donner à l'expéditeur
une image périmée de la situation réelle
Différentes Solutions pour le!
Contrôle de Flux!
▶ Solution 2 : Utilisation de fenêtre glissante (taille fixe)
▶ Les paires se mettent d'accord sur une taille fixe de
fenêtre
▶ le destinataire peut assurer la régulation de flux en
ralentissant le rythme d'émission des acquittements,
ou en l'arrêtant, ce qui provoque alors l'arrêt des
expéditions des paquets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . .
- émission (6)
- acquittement (3-5)
- émission (7,8)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . .
3 4 5 6 7 8 9 10 11 12 13 14 15 . . .
3 4 5 6 7 8 9 10 11 12 13 14 15 . . .
Différentes Solutions pour le!
Contrôle de Flux!
▶ Solution 3 : Utilisation de fenêtre glissante de
taille variable
▶ Aussi appelé "régulation avec mécanisme de
crédit"
▶ Principe : ajouter dans certaines unités de
données (principalement les acquittements
ACK) un champ supplémentaire qui contient
un entier - le crédit
▶ nombre d'unités de données que l'émetteur peut
émettre en anticipation
▶ Le récepteur peut adapter la fenêtre
d'émission selon sa capacité de traitement
Le Mécanisme de Crédit!
Contrôle de Flux!
▶ Le mécanisme de crédits est efficace, mais il faut
l'utiliser correctement pour éviter la congestion
▶ Questions : quelle est la capacité du réseau ?
▶ a priori, les paires ne connaissent pas la vitesse du
réseau
▶ Quelle est la meilleure stratégie ? Augmenter
graduellement la vitesse de transmission ou
démarrer à fond (avec le risque de perte de
paquets) ?
▶ besoin d'une politique pour le démarrage
▶ Quand il y a congestion, quoi faire ?
▶ besoin d'une politique de sauvegarde de la connexion
La Stratégie TCP - AIMD!
▶ AIMD – Additive Increase, Multiplicative
Decrease
▶ La taille de la fenêtre dépend des paires mais aussi
du niveau de congestion enregistré
▶ L'émetteur reçoit des indications implicites (perte
de paquets) ou explicites (nouvelle taille de
fenêtre) sur la congestion
▶ définition d'une variable CongestionWindow (cwnd)
MaxWindow = min (CongestionWindow , AdvertisedWindow)
EffectiveWindow = MaxWindow – (LastByteSent -LastByteAcked)
Additive Increase!
▶ Idée de Base : à chaque paquet émis avec succès,
augmenter la taille de la fenêtre de congestion (cwnd)
d'une unité.
▶ En pratique, cwnd est augmenté proportionellement à la
taille maximale du segment (MSS) à chaque ACK arrivé
increment = MSS x (MSS / cwnd)
cwnd = cwnd + increment
Additive Increase!
Multiplicative Decrease!
▶ Le principe : un message perdu (timeout) est
dû à la congestion du réseau
▶ Pour éviter des nouvelles pertes, TCP doit
diminuer la fenêtre d'envoi
▶ Multiplicate Decrease : à l'expiration d'un
timeout TCP divise en deux la valeur de la
variable cwnd.
▶ La fenêtre peut être divisée successivement tant
qu'il y a de la congestion
▶ cwnd ne peut pas être plus petite que la taille
d'un paquet
Comportement typique de TCP!
AIMD!
▶ Il a été démontré que l'AIMD est un contrôle
de congestion nécessaire pour que TCP
puisse fonctionner de manière stable
▶ Il est important d'avoir des mécanismes
précis pour définir les timeouts, afin d'éviter
le déclenchement sauvage de multiplicative
décrease
▶ Les timeouts sont généralement établis en
fonction du temps d'aller-retour moyen (RTT)
Slow Start!
▶ Le mécanisme linéaire de l'additive increase est
trop lent lors du démarrage à partir du zéro (cold
start)
▶ À partir de la version TCP nommée "Tahoe", un
nouveau mécanisme a été introduit
▶ Slow start : mécanisme qui permet une
augmentation exponentielle de la taille de cwnd
lors du démarrage
▶ ATTENTION : "slow start" sert à prévenir le
démarrage lent
▶ Ce mécanisme est toujours plus lent que l'envoi d'une
fenêtre entière dès le début (advertised window)
Slow Start!
▶ La source commence la transmission avec cwnd=1
▶ À chaque ACK reçu, cwnd est augmenté
▶ en pratique, cwnd est doublé à chaque période RTT
▶ Ce mécanisme est déclenché dans deux
situations :
▶ au début d'une connexion (cold start)
▶ lorsque la connexion est bloquée en attendant un
timeout (la valeur de l'advertised windows devient
zéro !)
- dans ce cas TCP peut déduire une "borne de congestion", afin
d'arrêter le slow start à temps
Slow Start!
Congestion Avoidance!
▶ Lorsqu'on connaît la "borne de congestion",
TCP arrête Slow Start et entre dans une
phase de augmentation progressive connue
sous le nom de Congestion Avoidance
▶ Éventuellement un paquet sera perdu par hasard
ou parce qu'on a émis beaucoup trop vite
▶ Quand cela arrive, nous réduisons la valeur
de la "borne de congestion"
▶ on relance le mécanisme Slow Start
Contrôle de Flux TCP!
Techniques Supplémentaires!
▶ Algorithme de Nagle
▶ Regroupement de "petits paquets" pour
réduire la charge de mise sur le réseau
- Envoi d'un premier paquet et stockage des
prochains paquets tant que le premier n'est pas
acquitté
- Technique à désactiver pour certaines applications
▶ Algorithme de Clark
▶ Empêcher le syndrome de la "fenêtre stupide"
Syndrome de la fênetre
stupide!
▶ Silly window syndrom
▶ Si on libère la fenêtre par des petits blocs, on
ne fait que plomber la performance
▶ Il faut attendre que la
fenêtres se libère
d'une quantité
décente
Problèmes de performance!
• Les problèmes de performance et comment
les interpréter/diagnostiquer
• Mesure de la performance du réseau
• Design d'un système performant
• Les défis des protocoles pour les réseaux
Gigabit
Problèmes typiques de
performance!
▶ Congestion
▶ Déséquilibre de ressources
▶ Surcharge temporaire (tempête)
▶ Ex : si les destinataires multicast répondaient
à un paquet erroné
▶ Ex : redémarrage des machines après une
coupure de courant
▶ Temporisateurs/Buffers mal dimensionnés
▶ Écart type des paquets
Le problème des temporisateurs!
La transmission d'un 1Mo de San Diego à Boston
(a) t = 0, (b) après 500 µsec, (c) après 20 msec, (d) après 40 msec.
Adéquation des Fenêtres!
▶ La taille des fenêtres doit être au moins
équivalente à
▶ BDP = RTT * ( débit théorique / 8 )
▶ Attention : une fenêtre trop grande retarde la
détection des pertes
▶ Exemple : Grid5000
- RTT = 22ms entre Sophia et Rennes
- Lien à 1Gbit/s
- buffer=131072 bytes 69.05 Mbits/s
- buffer=524288 bytes: 255.79 Mbits/s
- buffer=2097152 bytes: 835.87 Mbits/s
- buffer=3145728 bytes: 870.07 Mbits/s
- buffer=4194304 bytes: 897.66 Mbits/s
Comment mesurer la
performance!
▶ Avoir une taille d'échantillon suffisamment
grande
▶ Être sûr que les échantillons sont représentatifs
▶ S'assurer que rien de particulier se passe
▶ Attention à la précision des horloges
▶ Les caches peuvent biaiser les mesures
▶ Comprendre ce qu'on mesure
▶ Faire attention à l'extrapolation des résultats
Design d'un Système
Performant!
▶ Règles :
▶ Aujourd'hui, la vitesse du processeur est plus
importante que celle du réseau
▶ Diminuer le nombre de paquets pour minimiser la
surcharge de traitement
▶ Minimiser le changement de contexte
▶ Minimiser les copies d'une donnée
▶ Il est possible d'augmenter le débit mais pas de
diminuer la latence
▶ Prévenir la congestion coûte moins cher que de
la traiter
▶ Éviter d'utiliser les timeouts
Protocoles pour les réseaux
Gigabit!
Temps de transfert+ACK d'un fichier de 1Mo
sur une ligne de 4000 km
Les défis des réseaux Gigabit!
▶ TCP/IP est un protocole qui vieillit
▶ Spécification datant de 1980 !
▶ Un débit accru met en péril certaines
"constantes" TCP
▶ Ex : les numéros de séquence TCP = 232
- À 56 kbit/s à plus d'une semaine
- À 10Mbit/s à 57 minutes
- À 1Gbit/s à 34 secondes
▶ Mais les temporisateurs restent à 120s !
▶ La RFC 1323 donne des solutions

Introduction aux réseaux informatiques - la couche transport

  • 1.
  • 2.
    Le service deTransport! ▶ Services destinés aux couches supérieures ▶ Adressage ▶ Établissement de connexions ▶ Multiplexage ▶ Contrôle de flux ▶ Récupération de fautes ▶ Primitives de transport ▶ Sockets
  • 3.
    Services offerts auxcouches supérieures! ▶ Les couches réseau, transport et application ▶ Parfois la couche transport est considérée comme la "frontière" entre les parties "haute" et "basse" de la pile
  • 4.
    Primitives de basepour le transport! ▶ Un service de transport simple doit au moins définir ces primitives ▶ Certaines variations dépendent de la qualité de service exigé
  • 5.
    Sockets Berkeley! ▶ Lessockets TCP ont un sous-ensemble plus riche de primitives
  • 6.
    Éléments des Protocolesde Transport! ▶ Adressage ▶ Établissement des connexions ▶ Fermeture des connexions ▶ Contrôle de flux et buffering ▶ Multiplexage ▶ Récupération des fautes
  • 7.
    Protocole de Transport! ▶Fonctionnalités similaires à la couche 2 ▶ Transport des données, contrôle de flux, etc ▶ Différences entre les deux couches ▶ Comment trouver un pair ? Quel "grain" de message à récupérer ?
  • 8.
    Adressage! ▶ L'adressage réseau(ex. IP) n'est pas suffisant pour assurer l'adressage bout-à-bout ▶ Une adresse complémentaire est nécessaire pour retrouver l'application demandée ▶ Ports : - Couche 4 TCP/IP - Couche 5 OSI
  • 9.
    Établissement des Connexions! ▶Une connexion entrante passe généralement par un processus spéciale (portmapper, inetd) qui écoute sur plusieurs ports ▶ La connexion est repassée au service identifié par le message
  • 10.
    Établissement des Connexions! ▶Le premier défi est d'établir une connexion ▶ Les deux côtés doivent être sûrs que la connexion est réussie ▶ Protocole de la "poignée de mains en trois étapes" ▶ Efficace, mais il faut utiliser des ressources supplémentaires (#séq) pour éviter des surprises
  • 11.
    Fermeture d'une Connexion! ▶Deux possibilités ▶ Déconnexion asymétrique - La connexion est abruptement rompue - Risque de perte de données ▶ Déconnexion symétrique - Les deux côtés se mettent d'accord sur la fermeture - Où ? Quand ? Et si un problème arrive ?
  • 12.
  • 13.
    Fermeture d'une Connexion! ▶Le problème des deux armées ▶ Simplification du problème des Généraux Byzantins
  • 14.
    Fermeture d'une Connexion! ▶Quatre scénarios possibles ▶ (a) Opération réussie ▶ (b) Dernier ACK perdu
  • 15.
    Fermeture d'une Connexion! ▶(c) Réponse perdue ▶ (d) Plusieurs échanges perdus - timeout 6-14, c,d
  • 16.
    Contrôle de Fluxet Buffering! ▶ Similarités est différences par rapport à la couche 2 ▶ Taille et nombre de PDUs - Fixe pour la couche 2 - Le MTU Ethernet est bien connu - La "fenêtre" peut être allouée à l'avance - Variable pour la couche 4 - Quantité de données qui varie selon l'application - Différentes politiques de buffering (ex UDP vs TCP) - Fenêtres de taille variable (TCP) ▶ Impact : l'allocation des buffers ne peut plus être faite de manière uniforme
  • 17.
    Contrôle de Fluxet Buffering! ▶ Similarités est différences par rapport à la couche 2 ▶ Politique de mémorisation (buffering) - Couche 2 (Eth) : si une trame manque, le PDU est jeté en attendant une retransmission - Un timeout sur une trame invalide tout le PDU couche 3 - Couche 3 : Si un PDU manque, il faut demander la retransmission tout en gardant les autres morceaux - Stockage dans la limite du timeout et du "compteur" - Variations importantes selon la vitesse des liens (plus tard)
  • 18.
    Contrôle de Fluxet Buffering! ▶ Similarités est différences par rapport à la couche 2 ▶ Politique de retransmission - Couche 2 (Eth) : l'émetteur n'a pas à garder les trames pour retransmission - Couche 4 : selon le type de service (avec ou sans connexion) il faut retransmettre les paquets manquants
  • 19.
    Contrôle de Fluxet Buffering! ▶ Similarités est différences par rapport à la couche 2 ▶ Transmission à la couche supérieure - Couche 2 : chaque trame est vue comme une donnée indépendante (sauf si segmentation de la trame). Envoi à la couche 3 dès sa réception - Couche 4 : si le service le demande, la couche 4 doit garantir que toutes les données sont arrivées (et dans le bon ordre)
  • 20.
    Multiplexage! ▶ Multiplexage successifs ▶type de trame de l’en-tête Ethernet ▶ champ protocole de l’en-tête IP ▶ numéro de port de destination Ethernet Trame Driver Ethernet IP ARP RARP ICMP IGMP TCP UDP Netscape ftp dhcp Démultiplexage basé sur le champ type de la trame Ethernet du champ protocol de l’en−tête IP Démultiplexage basé sur la valeur Démultiplexage basé sur le numéro de port de destination
  • 21.
    Multiplexage! ▶ (a) Multiplexageen amont ▶ (b) Multiplexage en aval
  • 22.
    Récupération des Fautes! ▶Les clients et les serveurs doivent s'accorder sur les stratégies de récupération ▶ Écrire (repasser à la couche supérieure) et répondre ? ▶ Répondre et ensuite repasser à la couche supérieure ? ▶ Que faire avec les données dupliquées ? ▶ Comment garantir le service ? Collaboration entre les couches
  • 23.
    Protocoles Internet :UDP! • Introduction à UDP • RPC - Remote Procedure Call • UDP et le contrôle de flux
  • 24.
    Introduction à UDP! ▶L'en-tête UDP – uniquement l'essentiel ▶ Transport avec des garanties minimales ▶ Aucun enchaînement entre les paquets (#seq) ▶ Aucune garantie de livraison
  • 25.
    UDP "! ▶ UtiliseIP pour l'acheminement ▶ Livraison non fiable + par rapport à IP : distinguer plusieurs applications destinataires ▶ Non connecté ▶ Pas d'accusé de réception ▶ Pas de garantie de l'acheminement effectif ▶ messages perdus, duplication, retard, livraison en désordre, ... ▶ C'est à l'application de gérer tout ça
  • 26.
    RPC! ▶ Une communicationUDP (avec acquittement) est similaire à une communication RPC ▶ Exemple : DNS ▶ Permet la création d'interfaces "génériques" de programmation ▶ Même "appel" pour une méthode locale ou distante
  • 27.
    UDP et leContrôle de Flux! ▶ UDP = mode sans connexion ▶ Comment effectuer le contrôle de flux ? ▶ Réponse : UDP ne le fait pas ▶ Conséquences : - "remplissage des tuyaux" – best-effort ▶ Sans contrôle de flux à sans contrôle de congestion ▶ Une transmission UDP consomme tous les ressources disponibles - Algorithme gourmand ▶ Plus récemment : applications UDP-friendly
  • 28.
    Le protocole TCP! •Introduction à TCP • Établissement de connexions TCP • Fermeture de connexions TCP • Politiques de retransmission • Contrôle de flux
  • 29.
  • 30.
    The TCP SegmentHeader (2)! The pseudoheader included in the TCP checksum.
  • 31.
    Gestion des Connexions! ▶Les états utilisés dans la machine d'états TCP
  • 32.
  • 33.
    Contrôle de Fluxen TCP! ▶ Deux problèmes à gérer ▶ Congestion à la réception ▶ Congestion lors du transport
  • 34.
    Différentes Solutions pourle! Contrôle de Flux! ▶ Solution 1 : Régulation par "tout ou rien" ▶ L'entité de transport destinataire envoie des commandes qui autorisent ou arrêtent l'envoi d'unités de données par l'expéditeur ▶ (similaire au mécanisme XON, XOFF) ▶ Ce mécanisme est très mal adapté car très rigide ▶ Les commandes de ralentissement ou d'accélération peuvent donner à l'expéditeur une image périmée de la situation réelle
  • 35.
    Différentes Solutions pourle! Contrôle de Flux! ▶ Solution 2 : Utilisation de fenêtre glissante (taille fixe) ▶ Les paires se mettent d'accord sur une taille fixe de fenêtre ▶ le destinataire peut assurer la régulation de flux en ralentissant le rythme d'émission des acquittements, ou en l'arrêtant, ce qui provoque alors l'arrêt des expéditions des paquets 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . . - émission (6) - acquittement (3-5) - émission (7,8) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . . 3 4 5 6 7 8 9 10 11 12 13 14 15 . . . 3 4 5 6 7 8 9 10 11 12 13 14 15 . . .
  • 36.
    Différentes Solutions pourle! Contrôle de Flux! ▶ Solution 3 : Utilisation de fenêtre glissante de taille variable ▶ Aussi appelé "régulation avec mécanisme de crédit" ▶ Principe : ajouter dans certaines unités de données (principalement les acquittements ACK) un champ supplémentaire qui contient un entier - le crédit ▶ nombre d'unités de données que l'émetteur peut émettre en anticipation ▶ Le récepteur peut adapter la fenêtre d'émission selon sa capacité de traitement
  • 37.
  • 38.
    Contrôle de Flux! ▶Le mécanisme de crédits est efficace, mais il faut l'utiliser correctement pour éviter la congestion ▶ Questions : quelle est la capacité du réseau ? ▶ a priori, les paires ne connaissent pas la vitesse du réseau ▶ Quelle est la meilleure stratégie ? Augmenter graduellement la vitesse de transmission ou démarrer à fond (avec le risque de perte de paquets) ? ▶ besoin d'une politique pour le démarrage ▶ Quand il y a congestion, quoi faire ? ▶ besoin d'une politique de sauvegarde de la connexion
  • 39.
    La Stratégie TCP- AIMD! ▶ AIMD – Additive Increase, Multiplicative Decrease ▶ La taille de la fenêtre dépend des paires mais aussi du niveau de congestion enregistré ▶ L'émetteur reçoit des indications implicites (perte de paquets) ou explicites (nouvelle taille de fenêtre) sur la congestion ▶ définition d'une variable CongestionWindow (cwnd) MaxWindow = min (CongestionWindow , AdvertisedWindow) EffectiveWindow = MaxWindow – (LastByteSent -LastByteAcked)
  • 40.
    Additive Increase! ▶ Idéede Base : à chaque paquet émis avec succès, augmenter la taille de la fenêtre de congestion (cwnd) d'une unité. ▶ En pratique, cwnd est augmenté proportionellement à la taille maximale du segment (MSS) à chaque ACK arrivé increment = MSS x (MSS / cwnd) cwnd = cwnd + increment
  • 41.
  • 42.
    Multiplicative Decrease! ▶ Leprincipe : un message perdu (timeout) est dû à la congestion du réseau ▶ Pour éviter des nouvelles pertes, TCP doit diminuer la fenêtre d'envoi ▶ Multiplicate Decrease : à l'expiration d'un timeout TCP divise en deux la valeur de la variable cwnd. ▶ La fenêtre peut être divisée successivement tant qu'il y a de la congestion ▶ cwnd ne peut pas être plus petite que la taille d'un paquet
  • 43.
  • 44.
    AIMD! ▶ Il aété démontré que l'AIMD est un contrôle de congestion nécessaire pour que TCP puisse fonctionner de manière stable ▶ Il est important d'avoir des mécanismes précis pour définir les timeouts, afin d'éviter le déclenchement sauvage de multiplicative décrease ▶ Les timeouts sont généralement établis en fonction du temps d'aller-retour moyen (RTT)
  • 45.
    Slow Start! ▶ Lemécanisme linéaire de l'additive increase est trop lent lors du démarrage à partir du zéro (cold start) ▶ À partir de la version TCP nommée "Tahoe", un nouveau mécanisme a été introduit ▶ Slow start : mécanisme qui permet une augmentation exponentielle de la taille de cwnd lors du démarrage ▶ ATTENTION : "slow start" sert à prévenir le démarrage lent ▶ Ce mécanisme est toujours plus lent que l'envoi d'une fenêtre entière dès le début (advertised window)
  • 46.
    Slow Start! ▶ Lasource commence la transmission avec cwnd=1 ▶ À chaque ACK reçu, cwnd est augmenté ▶ en pratique, cwnd est doublé à chaque période RTT ▶ Ce mécanisme est déclenché dans deux situations : ▶ au début d'une connexion (cold start) ▶ lorsque la connexion est bloquée en attendant un timeout (la valeur de l'advertised windows devient zéro !) - dans ce cas TCP peut déduire une "borne de congestion", afin d'arrêter le slow start à temps
  • 47.
  • 48.
    Congestion Avoidance! ▶ Lorsqu'onconnaît la "borne de congestion", TCP arrête Slow Start et entre dans une phase de augmentation progressive connue sous le nom de Congestion Avoidance ▶ Éventuellement un paquet sera perdu par hasard ou parce qu'on a émis beaucoup trop vite ▶ Quand cela arrive, nous réduisons la valeur de la "borne de congestion" ▶ on relance le mécanisme Slow Start
  • 49.
  • 50.
    Techniques Supplémentaires! ▶ Algorithmede Nagle ▶ Regroupement de "petits paquets" pour réduire la charge de mise sur le réseau - Envoi d'un premier paquet et stockage des prochains paquets tant que le premier n'est pas acquitté - Technique à désactiver pour certaines applications ▶ Algorithme de Clark ▶ Empêcher le syndrome de la "fenêtre stupide"
  • 51.
    Syndrome de lafênetre stupide! ▶ Silly window syndrom ▶ Si on libère la fenêtre par des petits blocs, on ne fait que plomber la performance ▶ Il faut attendre que la fenêtres se libère d'une quantité décente
  • 52.
    Problèmes de performance! •Les problèmes de performance et comment les interpréter/diagnostiquer • Mesure de la performance du réseau • Design d'un système performant • Les défis des protocoles pour les réseaux Gigabit
  • 53.
    Problèmes typiques de performance! ▶Congestion ▶ Déséquilibre de ressources ▶ Surcharge temporaire (tempête) ▶ Ex : si les destinataires multicast répondaient à un paquet erroné ▶ Ex : redémarrage des machines après une coupure de courant ▶ Temporisateurs/Buffers mal dimensionnés ▶ Écart type des paquets
  • 54.
    Le problème destemporisateurs! La transmission d'un 1Mo de San Diego à Boston (a) t = 0, (b) après 500 µsec, (c) après 20 msec, (d) après 40 msec.
  • 55.
    Adéquation des Fenêtres! ▶La taille des fenêtres doit être au moins équivalente à ▶ BDP = RTT * ( débit théorique / 8 ) ▶ Attention : une fenêtre trop grande retarde la détection des pertes ▶ Exemple : Grid5000 - RTT = 22ms entre Sophia et Rennes - Lien à 1Gbit/s - buffer=131072 bytes 69.05 Mbits/s - buffer=524288 bytes: 255.79 Mbits/s - buffer=2097152 bytes: 835.87 Mbits/s - buffer=3145728 bytes: 870.07 Mbits/s - buffer=4194304 bytes: 897.66 Mbits/s
  • 56.
    Comment mesurer la performance! ▶Avoir une taille d'échantillon suffisamment grande ▶ Être sûr que les échantillons sont représentatifs ▶ S'assurer que rien de particulier se passe ▶ Attention à la précision des horloges ▶ Les caches peuvent biaiser les mesures ▶ Comprendre ce qu'on mesure ▶ Faire attention à l'extrapolation des résultats
  • 57.
    Design d'un Système Performant! ▶Règles : ▶ Aujourd'hui, la vitesse du processeur est plus importante que celle du réseau ▶ Diminuer le nombre de paquets pour minimiser la surcharge de traitement ▶ Minimiser le changement de contexte ▶ Minimiser les copies d'une donnée ▶ Il est possible d'augmenter le débit mais pas de diminuer la latence ▶ Prévenir la congestion coûte moins cher que de la traiter ▶ Éviter d'utiliser les timeouts
  • 58.
    Protocoles pour lesréseaux Gigabit! Temps de transfert+ACK d'un fichier de 1Mo sur une ligne de 4000 km
  • 59.
    Les défis desréseaux Gigabit! ▶ TCP/IP est un protocole qui vieillit ▶ Spécification datant de 1980 ! ▶ Un débit accru met en péril certaines "constantes" TCP ▶ Ex : les numéros de séquence TCP = 232 - À 56 kbit/s à plus d'une semaine - À 10Mbit/s à 57 minutes - À 1Gbit/s à 34 secondes ▶ Mais les temporisateurs restent à 120s ! ▶ La RFC 1323 donne des solutions