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é
É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 ?
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
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
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
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
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
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
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
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