RI Chap 3
RI Chap 3
RI Chap 3
La couche Transport
Fondements de base
Introduction
client Hosts serveur
Pages HTML ou fichiers
navigateur web server
HTTP ou FTP
application application
présentation presentation
TCP
(session) (session)
transport routage routage transport
IP IP IP
réseau réseau réseau réseau
ETH PPP ETH
liaison de données liaison de données liaison de données liaison
physique physique physique physique
Fournit à la couche supérieure un service adapté aux besoins : adapte et optimise les services
de la couche réseau afin d’assurer un service approprié
Gère les communications de bout en bout
2
Services de la couche transport
Mode « orienté connexion »
création d’une connexion préalable, maintenue pendant toute
la communication et explicitement terminée
négociation des paramètres de qualité de service à
l’établissement
communication bidirectionnelle et ordonnée
contrôle de flux
contrôle de congestion (cas de TCP)
Mode « sans connexion »
transfert de datagrammes sans garanties
Contrôles simplifiés
3
Eléments de protocole - Adressage
Cas de TCP /UDP
Les ports : une application particulière échange les données à
travers une (ou plusieurs) extrémité(s) dédiée(s) appelée(s)
port(s)
Comment connaître le port distant ?
Un service est toujours disponible à un port bien connu
«Wellknown ports». La RFC 1340 donne la liste des numéros de
ports affectés, de façon prédéfinie, à des applications bien connues
Pour TCP
21: échange de fichiers via FTP
22: accès à un shell sécurisé Secure Shell
23: telnet
25: envoi d'un email via SMTP
80: consultation d'un serveur HTTP
110: récupération d’email via POP
443: HTTPS
…
4
Eléments de protocole - Adressage
Pour UDP
161, 163: administration via SNMP
520 : routage RIP
…
Ces numéros sont compris entre 0 et 1023, ne peuvent être
manipulés, sur les systèmes qu’avec les privilèges du super utilisateurs
Les ports entre 1024 à 49151 sont des ports enregistrés et aussi
attribués par l' IANA à des services spécifiques et à la demande. Ces
ports peuvent être utilisés sans privilèges super utilisateur
Les ports entre 49152 à 65535 sont dynamiques et ne peuvent être
enregistrés auprès de l' IANA, utilisés pour de façon temporaire
notamment coté client : ports éphémères
5
Le protocole UDP - Propriétés
UDP - «User Datagram Protocol» RFC
768 32 bits
«Connectionless» Sans contrôle de flux, ni
port source port dest
de congestion
Le contrôle de congestion n’étant pas réalisé, ainsi longueur checksum
qu’au niveau IP, les protocoles de niv. application qui
n’effectuent pas un contrôle de congestion peuvent
causer des situations de congestion et donc des
pertes de données (sans contrôle approprié)
Pas d’acquittement (ack)
Adressage à travers des ports, service Données de la couche
«end-to-end» Application
Comparé à IP, UDP n'apporte pas de (message)
fonctionnalités supplémentaires à part
l'utilisation des ports.
Détection des erreurs au niveau de Format d’un segment UDP
l’entête (Checksum), inutile !
6
Le protocole UDP - Utilisations
Utilisations
transmettre des données très rapidement, avec moins de
surcoûts (puisque UDP impose moins de contrôle que TCP):
transmettre des petites quantités de données sans perdre de temps
pour l’établissement d’une connexion TCP
et la perte de données devrait être tolérée
Eventuellement, ajouter des fonctions de contrôle au niveau de la
couche application pour améliorer la fiabilité : recouvrement
spécifique d’erreurs au niveau applicatif
Exemple: Dans le cas de la transmission de la voix sur
IP/multimédias, tolérants à la perte de données (Existence de
mécanismes de substitution des données manquantes), par
contre la rapidité de transmission est un critère primordial
pour la qualité d'écoute
7
Le protocole TCP - Aperçu
TCP – « Transmission Control Protocol » RFCs 793, 1122, 2474, 4379
…
Transmission duplex fiable en mode connecté
les messages sont découpés en segments.
Les segments sont délivrés dans l'ordre d'émission
La segmentation/concaténation (comme on va le voir dans la suite)
• En fonction de la taille des buffers et de la fenêtre d’anticipation
• Selon des algorithmes bien déterminés : Nagle, traitement de la fenêtre stupide
Un mécanisme de contrôle de flux par fenêtre coulissante (voir ce qui
suit)
Le contrôle de flux est opéré sur un flot d’octets
Une numérotation des segments par rapport aux octets
Un acquittement spécifie le num. d’octet attendu (cumulatif: les
précédents sont acquittés)
La retransmission est déclenchée suite à l’expiration d’un temporisateur,
par application de la technique « Fast Retransmit » avec ou sans l’option
SACK (cf. diapos suivants)
La valeur du temporisateur est recalculée en fonction du temps de cycle
8
Exemple TCP
Client Serveur
UPL TCP TCP UPL
Etablissement de connexion
Transfert de données
Fermeture de connexion
9
Le protocole TCP – Format d’un segment
Port source Port destination
Numérotation par
Numéro de séquence rapport à l’octet
Numéro d’ACK
Nombre
Long. C E UAP R S F Fenêtre d’octets
En-tête W C R C S S YI pouvant être
R E GKHT NN acceptés
Checksum Pointeur urgent Fermeture de
connexion
Options (exemples : négociation du MSS Max segment size (non inclus l’entête
TCP, par defaut 536 bytes), « Window scale factor », No-Op, utilisation d’un Ouverture de
protocole de retransmission sélective SACK …) connexion
Congestion Window Explicit
Longueur Congestion Données
Reduced Utilisé par la Livraison Refus de
de l'en- Notification urgentes à Champ
source pour indiquer immédiate à connexion
tête en ECN-Echo: partir de « Num
qu’elle a bien recu un l’application
mots de signale la pointeur d’ACK
ECE=1 et la fenêtre a (coté
32 bits présence de urgent » valide
été réduite destinataire)
congestion
10
Le protocole TCP – Les phases d’une
connexion
Etablissement d’une connexion
(Active) (Passive)
Client Server
Rejet (ex. serveur
indisponible)
Client Serveur
UPL TCP TCP UPL
SEQ=101 SEQ=322
12
Le protocole TCP - Les phases d’une
connexion
Transfert de données
SEQ=101 SEQ=322
Client Serveur
UPL TCP TCP UPL
SEQ=117 SEQ=332
13
Le protocole TCP - Les phases d’une
connexion
Libération d’une connexion
SEQ=117 SEQ=332
Client Serveur
UPL TCP TCP UPL
15 octets
restent
à envoyer
14
Les drapeaux
Client Serveur
SYN: Drapeau SYN à 1
UPL TCP TCP UPL
15
Le protocole TCP – Gestion des
acquittements
Quelques scenarios de perte ou de retard d’acquittement
16
Le protocole TCP – Contrôle de flux
Circular buffer
17
Le protocole TCP – Contrôle de congestion
Problème : plusieurs sources envoient de grands volumes de données qui passent
par un même routeur
Perte de paquets (saturation des buffers des routeurs ) : lout << l in
l l out
in :
données
originales
18
Le protocole TCP – Contrôle de congestion
Solution : contrôle au niveau TCP (pas d’assistance du niveau
réseau)
Détection
La détection se base sur le fait que la perte d’un paquet est probablement
due à une congestion plutôt qu’une erreur de transmission, le taux
d’erreur sur les supports de transmission actuels est considéré très faible
Contrôle
En plus de la fenêtre de contrôle de flux (RcvWindow), utilisation d’une
fenêtre dite de congestion (CongWindow) :
Min{CongWindow, RcvWindow}
Adapter dynamiquement la taille de la fenêtre de congestion
Solution : « Slow Start » + « Additive Increase/Multiplicative Decrease »
Min{CongWindow, RcvWindow}
Débit= Bytes/sec
RTT
19
Le protocole TCP – Contrôle de congestion
Une vue d’ensemble :
SS « Slow Start » + AIMD « Additive Increase/Multiplicative Decrease»
44
40 “Additive Increase" Expiration du temporisateur
ou 3 ACKs dupliqués
Seuil
Fenêtre de congestion (MSS)
36
d’évitement "multiplicative decrease”
32
Suite 3 ACKs dupliqués (Reno)
28
“Additive Increase"
24
20
16 Augmenter la fenêtre Le seuil est ramené à la moitié
rapidement, la doubler: de la taille de la fenêtre
12 incrémentation à chaque
1 MSS (Maximum Segment 8 réception des acks
Size), pour ne pas (Si émission de 8 seg. et
4 "multiplicative decrease”
Contribuer à une situation, réception des acks
correspondants, on passe à 16) Suite RTO
éventuelle, de congestion 0
déjà existante Time(RTT)
10
12
14
16
18
20
22
24
0
20
Le protocole TCP – Contrôle de congestion
Phase SS « Slow Start », démarrage lent
La connexion démarre, CongWindow = 1 MSS Cwnd (+1 à chaque
Ack reçu)
Exemple : si MSS = 500 oct. & RTT = 200 ms alors le
débit init.=20 kbps
La bande passante disponible pourrait être >> MSS/RTT
alors il serait souhaitable d’augmenter rapidement
le taux d’envoi aux taux supporté par la bande passante
disponible
mais sans arriver à une situation de congestion
quand la connexion démarre, le taux d’envoi croît de façon
exponentielle (doubler CongWindow) à chaque RTT j
jusqu’à un seuil d’évitement («slow start threshold» ) : à
partir de ce seuil le risque est considéré plus grand, le seuil
est la moitié de la fenêtre précédemment atteinte
21
Le protocole TCP – Contrôle de congestion
Phase « Congestion Avoidance » -
AIMD « Additive Increase/Multiplicative Decrease»»
Accroissement additif : augmenter la valeur de CongWin de
1MSS après chaque RTT en absence de phénomène de perte
Décroissance Multiplicative
réduire CongWindow à 1 si l’événement de perte apparaît
(version Tahoe)
réduire CongWindow à sa moitié si l’événement 3 ACKs
dupliqués et à 1 si RTO (version Reno) : « Fast Retransmit» »
Si on reprend à 1 alors « slow Start »
Fenêtre de
congestion
24 Kbytes
Version Reno Cwnd
(+1/cwnd à la
3ACK 3ACK réception des
16 Kbytes 8 Ack)
dup. dup. 3ACK
3ACK 3ACK
dup.
dup. dup.
8 Kbytes
temps
22
Le protocole TCP – Contrôle de congestion
Pour résumer, reprenons
Slow Start: A chaque Ack recu, CWND=CWND+1 (doubler CWND à chaque pas)
Congestion Avoidance
Tous les CWND Acks recus, CWND=CWND+1
Timeout (RTO): SSThresh= CWND/2 et CWND=1
CWND Additive
Increase
Timeout
20 (RTO)
Timeout
16 Threshold (RTO)
12 Threshold
Threshold
8
4 Slow-start
23 2 4 6 8 10 12 14 16 18 20 22 24 26 t
Le protocole TCP – Contrôle de congestion
Pour résumer, reprenons
Congestion Avoidance
Tous les CWND Acks recus, CWND=CWND+1
Timeout (RTO): SSThresh= CWND/2 et CWND=1
3 ACKs dupliqués : Fast Retransmit, CWND=SSThresh= CWND/2
CWND
3 Acks dup.
20 +++ Timeout
16 Threshold
12 Threshold
t
2 4 6 8 10 12 14 16 18 20 22 24 26
24
Le protocole TCP – Contrôle de congestion
Pour résumer, reprenons
Congestion Avoidance
Tous les CWND Acks recus, CWND=CWND+1
Timeout (RTO): SSThresh= CWND/2 et CWND=1
3 ACKs dupliqués : Fast Retransmit, CWND=SSThresh= CWND/2
CWND
3 Acks dup
20 +++ Timeout
16 Threshold
12
Threshold
8
t
2 4 6 8 10 12 14 16 18 20 22 24 26