les protocoles de transport TCP et UDP PLAN Origine de TCP
Transcription
les protocoles de transport TCP et UDP PLAN Origine de TCP
PLAN ❒ Origines de TCP-IP ❒ Les protocoles de transport ❍ Fonctions ❍ Ports les protocoles de transport TCP et UDP ❒ UDP ❒ TCP ❍ Éléments de base de TCP ❍ Fiabilité ❍ Fenêtres ❍ Reprise sur erreurs ❍ Algorithmes de contrôle de congestion Transport Layer Transport Layer 1 2 TCP-IP: origine ❒ Commutation de paquets ❒ Approche « informatique » vs « télécom » Origine de TCP/IP ❒ Expérimentations de chercheurs ❒ Approche intégrée : des applications aux outils techniques ❒ Approche de complémentarité par rapport à l’existant ❒ Déploiement rapide ❒ Devient standard de fait ❒ Internet Transport Layer 3 Interconnexion de réseaux ❒ ❒ ❒ ❒ ❒ Les réseaux d'entreprise Les passerelles Les protocoles Les adresses Le monde TCP-IP A Machine A C Réseau 1 Réseau 3 P1 D P2 4 F Transport Layer 5 Machine D Applications standards Transport Transport Protocole d'accès à R1 G Passerelle Applications standards Protocole IP Réseau 4 E Transport Layer Architecture TCP-IP B Réseau 2 ❒ Le Web Réseau R1 Protocole IP R1 R2 Protocole IP Protocole d'accès à R2 RéseauTransport R2 Layer 6 1 Le principe du bout en bout ❒ Pas d’intelligence dans le réseau ❍ Traitement simple dans le réseau -> haut débit ❍ Réseau généraliste -> évolution de l’utilisation du réseau ❍ Pas de redondance de contrôle Rôle du transport ❒ Séparation des fonctions ❍ Contrôle -> hôte ❍ Acheminement -> routeur Bout en bout Hôte Protocole IP Transport Layer network data link physical s an tr • Circuit virtuel • Datagramme network data link physical network data link physical ❍ po rt ❍ d en den ❒ al ❒ application transport network data link physical Mode non connecté et sans garantie ❒ Robustesse ❍ Indépendance du fonctionnement • Le fonctionnement du système d’extrémité n’est pas lié à celui du réseau relies on, enhances, network layer services Transport Layer Transport Layer 9 Fonction des protocoles de transport ❒ Protocoles de bout en bout (pas comme à la couche réseau par exemple) ❍ Service connecté ou non ❍ fiabilité ❍ performance ❒ Transport d’un message d’un émetteur au récepteur Général ❍ ❍ ❍ ❒ ❍ ❍ ❒ ❒ ❒ ❒ Contrôle des échanges Corriger les défauts du service réseau Compte rendu sur la performance de la communication Construction du service attendu par les applications distinct de celui fourni par la couche réseau ❍ 11 Communication inter-process Identification des points d‘extrémités Bout en bout A la demande de l'application ❍ Indépendamment des réseaux qui véhiculent l’information • Pas de connaissance sur les réseaux traversés « Interface » entre les applications et le réseau S’appuie sur des protocoles (des couches basses) pour l’acheminement des données. ❒ Deux protocoles principaux : ❍ TCP : fiabilité, contrôle d’erreur, de flux, d’ordre Transport Layer ❍ UDP : Vérification des erreurs 10 Rôle du Transport ❒ ❍ 8 ❒ Service réseau ❍ Modes d’acheminement network data link physical network data link physical c gi ❒ application transport network data link physical Transport Layer Principe du bout en bout lo ❒ communication logique entre des processus applicatifs s’exécutant sur des hôtes différents transport protocols run in end systems transport vs network layer services: network layer: data transfer between end systems transport layer: data transfer between processes Protocole IP 7 Services et protocoles de transport ❒ Fournissent une Hôte Routeur Mode connecté fiable, sur un réseau datagramme non fiable Séparation du service fourni par l’opérateur et Transport Layer offert à l’utilisateur 12 2 Ports ❒ ❍ PID -> trop dynamique par un point d’extrémité: • le port • n° de port sur 2 octets Ceci est réalisé avec les ports ❍ 16-bits qui identifient quel process est associé à quel datagramme. Attachement du processus au port Identification: (@ IP, n° port) ❍ well-known : appartiennent aux serveurs standards ❍ ❍ ❒ Recall: segment - unit of data exchanged between transport layer entities ❍ aka TPDU: transport protocol data unit Pour identifier une cible plus spécifique que l’adresse IP car les datagrammes sont destinés à des process et pas au système. ❍ ❒ Multiplexing/demultiplexing application-layer data Deux types de ports : • • • • ❍ segment header Numéro impair entre 1 et 1023 Utilisation d’un seul port sauf BOOTP (ports 67 et 68) telnet utilise le port 23 Permettent aux clients de trouver des serveurs sans information de configuration segment Demultiplexing: delivering received segments to correct app layer processes receiver P3 M P1 M Ht M Hn segment M P4 application transport network application transport network M P2 application transport network ephemeral • Les clients utilisent des ports spécifiés dans les paquets UDP • Entre 1024 et 5000 habituellement • <transport protocol, IP address, port number> doit être unique. Transport Layer Multiplexing/demultiplexing Multiplexing: gathering data from multiple app processes, enveloping data with header (later used for demultiplexing) host A source port # Web client host C Source IP: C Dest IP: B source port: y dest. port: 80 port use: simple telnet app application data (message) TCP/UDP segment format Web client host A Source IP: A Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: x dest. port: 80 Web server B port use: Web server Transport Layer 15 16 Adressage TSAP Host 1 Host 2 Application La connexion réseau commence ici server B source port:23 dest. port: x other header fields TSAP/NSAP La connexion transport commence ici source port: x dest. port: 23 dest port # Transport Layer TSAP n 14 Multiplexing/demultiplexing: examples 32 bits multiplexing/demultiplexing: ❒ based on sender, receiver port numbers, IP addresses ❍ source, dest port #s in each segment ❍ recall: well-known port numbers for specific applications Transport Layer 13 Couche transport Couche réseau Serveur TSAP m NSAP Couche liaison Couche physique Transport Layer 17 ❒ Transport Service Access Point ❍ Identification des applications en communication ❍ Ex : adresse IP + Port ❒ Scénario de connexion ❍ Serveur sur host2 associé au TSAP n ❍ Client sur host1 s’associe localement au TSAP m (source) et demande le TSAP n sur host 2 (destination) ❍ Établissement de la connexion réseau entre la source (host 1) et la destination (host 2) ❍ Demande d’établissement d’une connexion au niveau transport entre TSAP n et TSAP m Transport Layer ❍ Validation 18 3 Problèmes de transport Three Way handshake ❒ Etablissement de connexion ❍ Déséquencement ❒ Etablissement d’une connexion entité de transport B bidirectionnelle avec des numéros de séquence indépendants ❒ Utilisation d’un échange de 3 TPDU Etablissement en 3 étapes entité de Entité de transport B TPDU transport A demande de connexion Entité de transport A ❍ TPDU CR TPDU de données TPDU D TPDU confirmation de connexion T ou AK DT TPD U Transport Layer CONNECTION_REQUEST • Init. Envoie son numéro de séquence vers la destination • CONNECTION_ACCEPTED – Acquittement et envoi de numéro de séquence • DATA – Init. Acquitte avec les premières données vers le destinataire CC TPD U Transport Layer 19 Problèmes de transport Problèmes de transport ❒ Perte ❒ Etablissement de connexion A T_CONNECT.request Temporisateur de T1 retransmission ❍ B CR CC A B ouverture d'une connexion entre A et B Survivance TPDU DT 0 TPDU AK 1 T_CONNECT.indication T_CONNECT.response T1 CR T_CONNECT.confirmation 20 CC TPDU DT 1 TPDU AK 2 Temporisateur de retransmission Solutions • Difficulté: dimensionnement • Limitation de la durée de vie des paquets • numérotation étendue et valeur initiale aléatoire • Gel du numéro de port Transport Layer 21 Etablissement d’une connexion : bilan TPDU DT 1 TPDU AK 2 TPDU DT 1 TPDU AK 2 . . . La TPDU DT 1 est reçue sans erreur mais hors séquence Elle est gardée en attente de reséquencement La TPDU DT 0 ayant été reçue, l'acquittement peut se faire La seconde TPDU DT 1 est détectée comme dupliquée Elle est écartée mais acquittée Transport Layer 22 Pipelined protocols Pipelining: sender allows multiple, “in-flight”, yet-tobe-acknowledged pkts ❒ Envoi d’un CONNECTION_REQUEST TPDU, avec possibilité de ❍ Perte ❍ Mémorisation ❍ Duplication ❍ ❍ ❒ Eviter la duplication avec ❍ Génération d’un nouveau TSAP à chaque connexion ❍ Utilisation d’identificateurs uniques de connexion (état) ❍ Élimination des anciens (=TTL mais circulaire) Transport Layer établissement d'une nouvelle connexion TPDU DT 0 Perte Non Détéctée ❍ Duplication Non Détéctée fermeture de la connexion ❒ 23 range of sequence numbers must be increased buffering at sender and/or receiver Two generic forms of pipelined protocols: go-Back-N, selective repeat Transport Layer 24 4 GBN in action Go-Back-N Sender: ❒ k-bit seq # in pkt header ❒ “window” of up to N, consecutive unack’ed pkts allowed ❒ ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” ❍ may deceive duplicate ACKs (see receiver) ❒ timer for each in-flight pkt ❒ timeout(n): retransmit pkt n and all higher seq # pkts in window Transport Layer Selective Repeat ❒ Selective repeat: sender, receiver windows buffers pkts, as needed, for eventual in-order delivery to upper layer sender only resends pkts for which ACK not received ❍ ❒ 26 receiver individually acknowledges all correctly received pkts ❍ ❒ Transport Layer 25 sender timer for each unACKed pkt sender window ❍ ❍ N consecutive seq #’s again limits seq #s of sent, unACKed pkts Transport Layer 27 Selective repeat sender data from above : timeout(n): ❒ in-order: deliver (also ACK(n) in [sendbase,sendbase+N]: ❒ mark pkt n as received ❒ if n smallest unACKed pkt, advance window base to next unACKed seq # Transport Layer 30 Selective repeat in action ❒ send ACK(n) ❒ resend pkt n, restart timer 28 receiver pkt n in [rcvbase, rcvbase+N-1] ❒ if next available seq # in window, send pkt Transport Layer ❒ out-of-order: buffer deliver buffered, in-order pkts), advance window to next not-yet-received pkt pkt n in [rcvbase-N,rcvbase-1] ❒ ACK(n) otherwise: ❒ ignore Transport Layer 29 5 Selective repeat: dilemma Protocoles de bout en bout : bilan Example: ❒ Réseau “best effort” sous jacent ❍ Perte de paquets ❍ Dé-séquencement ❍ Limite la taille des paquets ❍ Temps de transfert aléatoire ❒ seq #’s: 0, 1, 2, 3 ❒ window size=3 ❒ receiver sees no difference in two scenarios! ❒ incorrectly passes duplicate data as new in (a) Q: what relationship between seq # size and window size? Transport Layer 31 Problèmes de transport ❒ Libération ❍ Brutale utilisateur fournisseur A DT0 B Action synchronisée sur réseau non fiable utilisateur temporisateur de retransmission T_DATA.req T_DATA.ind DT1 Dernier octet acquité CDT Fenêtre ACK2, CDT=3 T_DATA.req ❒ Dissociation du rôle des ACK: ❍ Contrôle d’erreur ❍ Contrôle de flux effacement de connexion T_DISC.req absence de T_DATA.ind après le T_DISC.req T_DISC.req DT2 DR DC AK Temporisateur d’effacement effacement de connexion DT3 DT4 Limite supérieure de fenêtre 32 Problèmes de transport ❒ Contrôle de flux ❍ Adaptatif: fenêtre à taille variable Numérotation séquentielle (modulo 2 7 ou 231) ❒ Services courants de bout en bout ❍ Remise garantie des messages ❍ Séquencement ❍ Taille des messages quelconque ❍ Synchronisation récepteur - émetteur ❍ Plusieurs processus applicatif sur une même Transport Layer machine ❍ ACK5, CDT=0 Ordonnée A B DT3 DT4 T_CLOSE.request CR5 ACK5, CDT=1 DT5 • • • Fermeture effective de la demi-conexion T_CLOSE.indication AK6 DT8 T_DATA.indication CR9 T_CLOSE.indication T_DATA.request T_CLOSE.request AK10 Transport Layer Transport Layer 33 34 Automate d’état Terminaison de connexion ❒ Symétrique ❍ Terminaison indépendante des deux directions ❍ Fin de connexion lorsque chaque extrémité à terminé Connection request TPDU received IDLE Passive establishment pending ❒ Asymétrique ❍ Fin de connexion dès qu’une des extrémités le demande Connection primitive executed Active establishment Pending Connection accepted TPDU received Disconnect primitive executed Passive disconnect pending Active disconnect pending Disconnect primitive executed IDLE Transport Layer 35 Transitions déclenchées par des primitives locales ou des arrivées de TPDU Establishment Disconnect request TPDU received • Petres possibles car plus de données acceptées après le DR Connection primitive executed Disconnection request TPDU received Transport Layer 36 6 UDP ❒ ❒ ❒ ❒ UDP ❒ ❒ ❒ ❒ ❒ ❒ Transport Layer UDP: User Datagram Protocol ❒ “no frills,” “bare bones” Internet transport protocol ❒ “best effort” service, UDP segments may be: ❍ lost ❍ delivered out of order to app ❒ connectionless: ❍ no handshaking between UDP sender, receiver ❍ each UDP segment handled independently of others 37 [RFC 768] 38 Communication entre les couches Why is there a UDP? ❒ no connection establishment (which can add delay) ❒ simple: no connection state at sender, receiver ❒ small segment header ❒ no congestion control: UDP can blast away as fast as desired process 1 process 2 process n port y port z port x UDP : démultiplexage de ports IP Transport Layer 39 Datagrammes UDP (1) ❒ Port Source ❍ indique le numéro de port du processus émetteur, ❍ toute réponse y est dirigée. ❒ RFC 768 Numéro de protocole 17 quand transporté par IP. Interface d’application pour IP Pas de fiabilité, contrôle de flux ou récupération sur erreur. Aucun contrôle sur le flot -> simplicité Peu d’overhead, mécanisme minimaliste Mode datagramme, non connecté (orienté message) “multiplexer/demultiplexer'' pour envoyer/recevoir des datagrammes, en utilisant des ports pour diriger ces datagrammes. Qualité “best effort” création d’un paquet et transmission immédiate au niveau IP Transport Layer Attention : pas de contrôle de congestion 40 Transport Layer 42 Datagrammes UDP (2) ❒ Contrôle d’erreur ❍ Optionnel en IPv4, obligatoire en IPv6 ❍ Pseudo-header + en-tête + données ❍ Pseudo-header: 32 bits 0 Transport Layer 15 16 port source 31 • @ IP source • @ IP destination • protocole port destination longueur checksum données ❒ Port Destinataire ❒ Longueur : ❍ nombre d'octets dans le datagramme entier (avec en-tête). ❍ >8 32 bits 0 15 16 port source 31 port destination longueur checksum données Transport Layer 41 7 UDP checksum Applications d’UDP Goal: detect “errors” (e.g., flipped bits) in transmitted segment ❒ ❒ compute checksum of ❒ treat segment contents received segment ❒ check if computed checksum equals checksum field value: ❍ NO - error detected ❍ YES - no error detected. But maybe errors nonethless? More later …. as sequence of 16-bit integers ❒ checksum: addition (1’s complement sum) of segment contents ❒ sender puts checksum value into UDP checksum field ❒ ❒ Receiver: Sender: ❒ Transport Layer ❒ ❒ la signalisation de certains protocoles Trivial File Transfer Protocol (TFTP) Domain Name System (DNS) name server Remote Procedure Call (RPC), utilisé par Network File System (NFS) Network Computing System (NCS) Simple Network Management Protocol (SNMP) ❒ applications temps réel, visio et audio conférences ❒ applications nécessitant transmission multipoint (multicast) exemple : applications du MBONE, sdr, tableau blanc, etc 43 Transport Layer 44 Transport Layer 46 UDP: more ❒ often used for streaming multimedia apps ❍ loss tolerant ❍ rate sensitive other UDP uses (why?): Length, in bytes of UDP segment, including header DNS SNMP ❒ reliable transfer over UDP: add reliability at application layer ❍ application-specific error recover! dest port # length checksum ❍ TCP Application data (message) ❍ UDP segment format Transport Layer 45 TCP Caractéristiques de TCP ❍ Control Protocol ❒ Flot d’octets ❍ Bonne utilisation des ressources du réseau ❍ Couche de transport des systèmes d’extrémités (i.e. utilisateurs des données) ❍ Transfert fiable de données (¹ ❍ • Communication bidirectionnelle et point à point sur des réseaux hétérogènes ❒ Circuit virtuel en mode UDP) connecté • Contrôle de perte • Contrôle de flux • Contrôle de congestion: interaction hôte-réseau réactive et agréssive ❍ ❍ ❍ • TCP suppose que les couches de communication qui lui sont inférieures lui procurent un service de transmission de paquet simple, dont la qualité n'est pas garantie. Mode connecté et commutation de paquets Orienté flux d’octets: ❍ ❍ ❍ Attendre d’avoir assez de données pour émettre (performance) Application process Application process Octets écrits TCP Octets lus TCP Buffer émission Buffer réception Segment Segment… Segment TSegments transmis ❒ Full duplex Récepteur le plus simple possible -> complexité chez l’émetteur • interopérabilité maximum recherchée ❍ Transport Layer La connexion est établie et considérée comme un circuit physique fiabilité ❒ Transfert bufferisé • application écrit des octets • TCP émet des segments • application lit des octets ❒ Utilisé parTELNET, FTP, HTTP … Séquencés Segmentation des données au niveau TCP … ❒ RFC 793 - Transmission ❒ 90% du trafic ❒ Principes … ❒ 32 bits source port # 47 Pour les ACKs Transport Layer 48 8 Caractéristiques de TCP Caractéristiques de TCP ❒ ❒ Numéros de séquence indépendants dans les 2 directions ❍ Associés à chaque octets ❍ Mots de 32 bits ❍ ❍ ❍ • Indique le numéro du premier octet transmis ❍ ❍ ❍ • Bouclage théorique en moins de 6 minutes à 100 Mbps mais en pratique, c’est beaucoup plus long ! ❍ Utilisé pour les acquittements ❒ • Si N octets sont délivrés du paquet avec le numéro de séquence X, l’acquittement aura la valeur X+N (soit le numéro du prochain octet à recevoir) ❍ ❍ Piggybacking Transport Layer • Selective repeat • Go back N Fenêtre modulée par le récepteur Inclus dans l’ACK • Fenêtre qui indique le plus grand numéro de séquence pouvant être reçu • Erreur = congestion ❒ Contrôle de congestion : adaptation à l’état d’occupation du réseau ❍ 49 Caractéristiques de TCP ❒ Sans signalisation réseau Les octets de données sont accumulés jusqu’au moment où TCP décide d’envoyer un segment ❒ Découpage en segment indépendant du découpage au niveau application ❒ MSS = longueur maximale d’un segment Pour permettre à plusieurs tâches d'une même machine de communiquer simultanément via TCP, le protocole définit un ensemble d'adresses et de ports pour la machine. ❍ Une "socket" est défini par l'association des adresses Internet source, destinataire, ainsi que les deux numéros de port à chaque extrémité. Une connexion nécessite la mise en place de deux sockets. Une socket peut être utilisée par plusieurs connexions distinctes. L'affectation des ports aux processus est établie par chaque ordinateur. Transport Layer 51 Sockets BSD Sockets ❒ Deux process communiquent par des sockets TCP qui ❒ fournissent aux process un flux de données full duplex. ❍ ❒ Port = TCP TSAP = numéro sur 16 bits ❍ ❍ ❍ Valeur locale 0 à 255 : well-known 0 à 1023 : ports système 1024 à 65536 : ports utilisateurs ❍ ❍ ❒ Une socket TCP : ❍ ❍ Triplet <TCP, IP address, port number>. ❍ ❒ Une connexion TCP : ❍ ❍ 2 sockets <TCP, local IP address, local port, remote IP address, remote port>. Transport Layer Buffer d’émission TCP header TCP IP header IP Transport Layer 52 Primitives pour TCP utilisées par les UNIX BSD ❍ ❒ Ports éphémères ❍ 50 Application ❒ ❍ ❍ Transport Layer Orienté connexion Segments Multiplexage ❍ Numéro de séquence Détection des pertes : • Aquittements positifs (ACK) du récepteur -> OK • Pas d’ACK -> timeout (temporisation) -> retransmission • ACK dupliqué Réordonnancement des paquets au récepteur Elimination des paquets dupliqués Checksum Retransmissions : Contrôle de flux par annonce de fenêtres ❍ • Les deux numéros sont présents dans les mêmes paquets ❒ Fiabilité SOCKET (création d’un nouveau point terminal) BIND (attache une adresse à la socket) LISTEN (acceptation des connexions avec file d’attente) ACCEPT (acceptation bloquante) CONNECT (établissement actif de connexion) SEND (envoi de données sur une connexion) RECEIVE (réception de données d’une connexion) CLOSE (terminaison d’une connexion) Serveur : SOCKET -> BIND -> LISTEN -> ACCEPT … [SEND, RECEIVE]… -> CLOSE ❒ Client : SOCKET –> BIND -> CONNECT … [SEND, RECEIVE]…-> CLOSE Transport Layer ❒ 53 54 9 Communication entre applications process 1 port x Données TCP header port:x Données Problèmes pour TCP ❒ Connexion avec des hôtes différents ❍ Établissement et libération de connexion process 2 ❒ RTT variable ❍ adaptation de la temporisation connexion ❒ Survivance de paquets (très long délai de port y transfert) socket TCP connexion TCP fiable TCP ❍ Attention aux arrivées de très vieux paquets ❒ Capacité de stockage dynamique des IP Adresse IP IP extrémités ❍ paquets IP non fiable Hôte 1 Transport Layer Hôte 2 55 “Apprendre” les ressources disponibles ❒ Capacité de la route varie dans le réseau Transport Layer ❍ Ajuster le débit d’émission à la bande passante Vie d’une Connexion Établissement d’une connexion ❒ Si deux processus désirent communiquer, ❒ Appel OPEN passif (serveur)/actif (client) établissement d’une connexion TCP ❒ Internet => best effort ❍ ❒ Fermeture d’une connexion avec le bit FIN (à faire dans les deux sens) on utilise donc une méthode d'initialisation par négociation bilatérale basée sur une horloge pour les numéros de séquence. ❒ A la fin de la connexion ❍ Fermeture qui libère les ressources ❒ 3 phases ❍ Ouverture d’une connexion ❍ Transfert de données ❍ Fermeture de la connexion Process 1 Active OPEN Send SYN, seq=n Process 2 Passive open attend une requête active Receive SYN Send SYN, seq=m, ACK=n+1 Receive SYN+ACK Transport Layer 57 Send ACK=m+1 Transport Layer 58 Etablissement de la connexion TCP Connexion TCP ❒ Trois phases ❍ Etablissement de la connexion ❍ Transfert des informations avec ❒ Procédure à trois échanges ❍ Three way handshake ❒ ISN (Initial Sequence Number) ❍ Numéro de séquence du premier octet d’information transporté ❍ Le premier octet transporté est alors ISN+1 ❍ ISN est généralement dérivé de l’horloge de l’hôte • Contrôle de flux • Contrôle de congestion ❍ 56 Libération de la connexion Transport Layer 59 Transport Layer 60 10 Exemple Libération de la connexion ouverture passive ouverture active attente demande d’ouverture… ❒ Normale ❍ Fin demandée par l’une des extrémités (flag FIN=1) envoi demande d’ouverture SYN , seq= x ouverture à trois phases (‘ three-way handshake ’) SYN + ACK, seq= y, Acknb= x+1 échange d’options : - MSS (max segment size) - numéros de séq. initiaux - extensions... ACK, seq= x+1, Acknb= y+1 ❒ Terminaison brutale • Envoi de la primitive ABORT (flag RST=1) • Toutes les transmissions ou réceptions sont interrompues et les tampons sont vidés <Transfert de données> application effectue close() FIN, seq=i envoi EOF à l’application seq=j, ACKnb= i+1 application effectue close() FIN, seq= j, ACKnb=i+1 seq=i+1, ACKnb= j+1 Attente de 2*MSL Transport Layer Automate TCP CLOSED Listen/- SYN/SYN+ACK ACK/- ❒ Connect/SYN Simultaneous open ESTABLISHED ❍ ❍ ❒ SYN+ACK/ACK ❍ CLOSE WAIT ACK/- FIN+ACK/ACK FIN WAIT 2 FIN/ACK Acquittement positif Protection par temporisateur de retransmission chez l'émetteur uniquement Contrôle de flux (optimisation des ressources disponibles) ❍ ❍ ACK/- Découpage du flux en segments selon la MTU locale Numérotation des octets Gel du numéro de séquence pendant MSL (Maximum Segment Lifetime) Contrôle de perte (fiabilité) ❍ ❒ CLOSING Segmentation ❍ SYN SENT FIN/ACK FIN/ACK FIN WAIT 1 Transfert de données Close/- Send/SYN RST/- CLOSE/FIN CLOSE/FIN 62 Close/- LISTEN SYN/SYN+ACK SYN RCVD Transport Layer 61 fenêtres à taille variable Progression par acquittement et crédit : fenêtres glissantes CLOSE/FIN TIME WAIT Data (Sequence Number) LAST ACK ACTIVE CLOSE PASSIVE CLOSE Timeout/CLOSED Sender ACK/- Transport Layer 63 Fiabilité : stop and wait Réception ACK Envoi paquet 2 Transmis et acquitté Data Réception paquet 1 Envoi ACK 1 Data Transport Layer Transmis non acquitté Non transmis Non transmissible ❒ Basé sur la fenêtre glissante ❍ Pointeur de début de fenêtre ❍ Pointeur indiquant la partie transmise et non acquittée ❍ Pointeur indiquant la fin de la fenêtre ❍ Envoi de données urgentes toujours possible récepteur ACK 64 Fenêtre annoncée d’envoyer un nouveau paquet. ❒ Si timeout, alors retransmission ❒ Fiabilité vs. utilisation de la bande passante Lancer nam ici Envoi du paquet 1 Transport Layer Contrôle de flux TCP ❒ Envoi d’un paquet et attendre un acquittement avant émetteur Receiver Acknowledgement + Advertised Window 65 Transport Layer 66 11 Fenêtre d’émission Fenêtres ❒ F=min (cwnd, W) ❍ Cwnd est une variable maintenue par la source ❒ ❍ Contrôle de flux et contrôle de congestion L’émetteur peut envoyer n paquets dans une fenêtre de taille n sans recevoir d’ACK. ❒ L’émetteur fait glisser la fenêtre sur réception d’un ACK. ❒ Fenêtre effective = Fenêtre annoncée - (octets transmis - octets non acquittés) ❒ Arrêt de la transmission quand fenêtre effective=0 ❒ • Tient compte de la congestion du réseau ❍ But : optimiser les ressources W : fixé par la destination, champ fenêtre annoncé • Tient compte de la capacité du récepteur émetteur récepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 1 2 3 4 5 6 ACK2 Transport Layer 67 Silly window syndrome Fiabilité avec Go-back-N ❒ L’émetteur a beaucoup de données à ❒ Fenêtre d’anticipation transmettre ❒ Petite fenêtre annoncée => émission de petits segments ❒ Solution pour le récepteur ❍ Transport Layer sélective (stockage en désordre) A ❍ Paquet 2 perdu: T • ACK 3 non reçu par S, • W reste en 1 • R aquitte 3, 4, 5 avec un ACK 2 • Timout sur S, retransmission • ACK 6 envoyé par R ❍ DT0 Paquet 2 arrivé et ACK perdu • ACK 3 non reçu mais ACK 4 reçu • ACK 4 acquitte tous les paquets avant 4 • S fait glisser sa fenêtre au paquet 4 B DT1 ACK2 DT2 DT3 DT4 ACK3 DT3 • • • 69 Transport Layer 70 Exemple de reprise sur erreurs émetteur Exemples 68 ❒ Retransmission continue (go-back-n) ou La reprise sur erreurs ❒ 9 ❒ Détection d’erreurs par l’émetteur Annoncer des fenêtres par tranches plus larges (MSS par exemple) ❒ Solution pour l’émetteur ❍ Retarder l’envoi de petits segments ❍ Soit PUSH positionné soit on a au moins ½ de la fenêtre à envoyer 8 fenêtre glissante DATA 6 Transport Layer 7 récepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 Sender Segment 1 (seq. 1000) ACK2 ACK2 ACK2 ACK2 Receiver Receives 1000, send ACK 1500 Segment 2 (seq. 1500) DATA 2 Segment 3 (seq. 2000) Receives ACK 1500 Slide the window ACK6 récepteur émetteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 Waiting for ACK Receives one of the frames and replies with ACK 1500 Receive ACK 1500 which does not slide the window ACK2 ACK3 ACK4 Transport Layer Segment 4 (seq. 2500) 71 Timeout -> retransmission Of segment 2 Transport Layer 72 12 TCP: retransmission scenarios Host A , 8 byte s data A X 100 CK= loss Seq=92 , 8 byte s data ACK time Host B Seq=92 Seq=100 timeout Seq=92 timeout timeout Host A Host B Seq=92 TCP ACK generation , 8 byte s data Seq= 100, 20 byt e s da 0 10 K= 120 A C AC K= Seq=92 , 8 byte s data AC =100 time lost ACK scenario ta 20 K= 1 premature timeout, cumulative ACKs Transport Layer [RFC 1122, RFC 2581] Event TCP Receiver action in-order segment arrival, no gaps, everything else already ACKed delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK in-order segment arrival, no gaps, one delayed ACK pending immediately send single cumulative ACK out-of-order segment arrival higher-than-expect seq. # gap detected send duplicate ACK, indicating seq. # of next expected byte arrival of segment that partially or completely fills gap immediate ACK if segment starts at lower end of gap Transport Layer 73 Conséquences de ces mécanismes Temporisateurs de TCP ❒ Fiabilité des transmissions ❒ Temporisateur de retransmission ❒ Bonne utilisation de la bande passante ❒ Temporisateur de peristence ❍ Pour débloquer la situation après une fenêtre d’émission réduite à zéro et une ouverture perdue ❒ Contrôle de flux orienté récepteur : la taille de la fenêtre varie au cours de la connexion 74 ❒ Temporisateur d’inactivité ❍ Vérifie la présence de l’autre extrémité ❒ Temporisateur de déconnexion ❍ Deux fois la durée de vie des paquets Transport Layer Performance maximum si l’émetteur toujours en activité ❍ Eviter l’épuisement de la numérotation en séquence ❍ Eviter la fermeture de la fenêtre • • • • ❍ ❒ Délais variables sur Internet ❍ Distance ❍ Temps de traversée du réseau (charge, saturation des liens …) durée de rebouclage > MSL Seq number: 32 bits fenêtre annoncée ≥ bande passante * RTT • RTT (Round Trip Time) = temps entre émission d’un segment et réception de l’ACK correspondant • bande passante * RTT = capacité de mémorisation du réseau Window: 16 bits -> soit 64 Ko ❒ Le timeout est calculé en fonction de Cas des Long Fat Networks: nature du réseau Ethernet Canal T1 satellite Gigabit transcontinental 76 Ajustement des timeouts : Contrôle d’erreur TCP et Long Fat Networks ❒ Transport Layer 75 l’estimation du RTT (Round Trip Time) bande passante RTT type ❒ Log du moment où un paquet est envoyé et bande passante * RTT 10 Mbps 3 ms 3,7 ko 1,54 Mbps 500 ms 95 ko 1 Gbps 60 ms 7,5 Mo quand il est acquitté ❒ Moyenne pondérée des RTT mesurés ❒ ❒ Permet de trouver une valeur de timeout Extension TCP pour les LFNs (RFC1323) ❍ ❍ facteur d’échelle sur la fenêtre d’émission ajout d’une estampille temporelle sur 32 bits Transport Layer 77 pour le segment suivant Transport Layer 78 13 Ajustement des timeouts: Contrôle d’erreur TCP Round Trip Time and Timeout ❒ Temporisateur de retransmission adaptatif ❍ Q: how to set TCP timeout value? Mesure de RTT et en déduire une estimation ❒ longer than RTT Algorithme Err = SampleRTT - EstRTT EstRTT = EstRTT + (d x Err) Var = Var + d(|Err| - Var) note: RTT will vary ❒ too short: premature timeout ❍ unnecessary retransmissions ❒ too long: slow reaction to segment loss ❍ Prise en compte de la variance Temporisateur = m x EstRTT + f x Var Où m = 1 et f = 4 ❒ Mesure du RTTémetteur Cas d’erreurs récepteur émetteur Donné e retransmission ACK ❍ récepteur Donn ée RTT mesuré RTT mesuré ❍ retransmission ACK Q: how to estimate RTT? ❒ SampleRTT: measured time from segment transmission until ACK receipt ❍ ignore retransmissions, cumulatively ACKed segments ❒ SampleRTT will vary, want estimated RTT “smoother” ❍ use several recent measurements, not just current SampleRTT Actions: • pas de mesure de RTT quand il y a eu une retransmission • Doublement de la valeur du temporisateur après chaque Transport Layer retransmission Transport Layer 79 TCP Round Trip Time and Timeout 80 TCP congestion control: EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT ❒ ❒ Exponential weighted moving average ❒ influence of given sample decreases exponentially fast “probing” for usable bandwidth: ❍ ❒ typical value of x: 0.1 Setting the timeout ❍ ❒ EstimtedRTT plus “safety margin” ❒ large variation in EstimatedRTT -> larger safety margin ❍ Timeout = EstimatedRTT + 4*Deviation ideally: transmit as fast as possible (Congwin as large as possible) without loss increase Congwin until loss (congestion) loss: decrease Congwin, then begin probing (increasing) again ❒ two “phases” ❍ ❍ ❒ slow start congestion avoidance important variables: ❍ ❍ Congwin threshold: defines threshold between two slow start phase, congestion control phase Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| Transport Layer Transport Layer 81 Contrôle de congestion Causes/costs of congestion: scenario 1 two senders, two receivers ❒ one router, infinite buffers ❒ no retransmission ❒ ❒ Congestion ❍ Goulot d'étranglement Réseau 1 Routeur Réseau 2 82 Datagrammes en attente de relayage routeur Réseau 3 large delays when congested ❒ maximum achievable throughput ❒ temps de transfert • Effondrement des performances Réponses: - niveau réseau: gestion des ressources - niveau transport: adaptation du débit trafic offert Transport Layer 83 Transport Layer 84 14 Causes/costs of congestion: scenario 2 Causes/costs of congestion: scenario 2 ❒ always: one router, finite buffers ❒ sender retransmission of lost packet ❒ l = in lout (goodput) ❒ “perfect” retransmission only when loss: l > lout in l ❒ retransmission of delayed (not lost) packet makes (than perfect case) for same lout in larger “costs” of congestion: ❒ more work (retrans) for given “goodput” ❒ unneeded retransmissions: link carries multiple copies of pkt Transport Layer Causes/costs of congestion: scenario 3 ❒ four senders ❒ multihop paths ❒ timeout/retransmit Transport Layer 85 86 Causes/costs of congestion: scenario 3 Q: what happens as l in and l increase ? in Another “cost” of congestion: ❒ when packet dropped, any “upstream transmission capacity used for that packet was wasted! Transport Layer Transport Layer 87 Approaches towards congestion control Contrôle de congestion TCP Two broad approaches towards congestion control: ❒ End-end congestion control: ❒ no explicit feedback from network ❒ congestion inferred from end-system observed loss, delay ❒ approach taken by TCP Ne pas injecter un nouveau paquet tant qu’un vieux n’est pas sorti du réseau • nombre de paquets en transit constant ❒ routers provide feedback ❍ to end systems ❍ single bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM) ❍ explicit rate sender should send at Transport Layer Conservation des paquets ❍ Network-assisted congestion control: 88 ❒ Trouver le point de synchronisation ❍ Utilisation d’une fenêtre dynamique: fenêtre de contrôle de congestion (cwnd) ❒ Détection de la congestion ❒ Guérison de la congestion ❍ 89 Synchronisation sur les acquittements: autosynchronisation ❍ Pertes généralement dues à la congestion Diminution du débit à la source pour diminuer la Transport Layer congestion 90 15 Algorithmes de contrôle de congestion et gestion des fenêtres Contrôle de congestion Principe ❍ Trouver le point d’équilibre: “additive increase” ❒ Slow Start • Augmenter la fenêtre de contrôle de congestion Détection de la congestion par l’indication de la perte d’un paquet ❍ Suppression de congestion en réduisant la fenêtre ❒ Algorithme ❍ ❍ ❍ ❍ ❍ Source phase 1: slow start • Après une perte détectée par expiration de temporisation phase 2: congestion avoidance En cas de perte: réduction de la taille de la fenêtre et récupération Récupération : fast recovery • Après une perte détectée par retransmission rapide (fast retransmit) Destination ❒ Multiplicative decrease ❒ Fast recovery ❒ RED ❒ Delayed ACK ❒ etc. É ❒ Transport Layer Transport Layer 91 Slow Start Congestion avoidance ❒ Fenêtre glissante et taille variable de la ❒ Pour stopper l’augmentation trop rapide (le fenêtre ❒ Croissance exponentielle de la taille de la fenêtre (x2 à chaque fois que les paquets sont transmis correctement) ❍ 92 slow start est exponentiel) ❒ À partir d’un seuil : augmentation de 1 segment à chaque RTT ❒ Le seuil vaut la moitié de la fenêtre lors de la dernière congestion Augmentation de 1 segment à chaque acquittement ❒ Lancer nam ici Transport Layer Congestion avoidance ❒ ❒ ❒ ❒ ❒ ❍ 94 TCP et grands RTTs Initialisation avec cwnd=1 et ssthresh=65536 TCP envoie moins de min(cwnd, fenêtre de réception) Congestion => ssthresh = max(fenêtre/2, 2). Si timeout (cad perte), alors cwnd=1 Nouvel ACK => grandir cwnd ❍ Transport Layer 93 ❒ Avec Congestion avoidance, la taille de la fenêtre augmente de 1 à chaque RTT ❒ Croissance moins rapide si le RTT est grand ❒ Lancer biais.avi Si cwnd<=ssthresh alors slow start jusque cwnd = cwnd avant congestion /2 Sinon Congestion avoidance (croissance linéaire de la taille de la fenêtre) Avant ces mécanismes : simple-pre-vj.nam Lancer nam (multiplicative decrease) ici ❒ Lancer simple.avi ici ou nam (simple.nam) ❒ ❒ Transport Layer 95 Transport Layer 96 16 Fast recovery Fast retransmit ❒ Empêche le slow start après la congestion ❒ ❒ Slow start utilisé en cas de perte de Modification de congestion avoidance ❍ paquets (expiration de timer) ❍ ❒ Si 3 DUPACKs ❍ ❍ ❍ ❍ ❍ ❒ Transport Layer 3 DUPACKs -> paquet supposé perdu et donc retransmission Après la transmission, tout continue normalement (on attend pas d’ACK) Sshthresh = ½ min(cwnd,fenêtre récepteur) Retransmettre le segment perdu Cwnd+=3 taille de segment Autre DUPACK -> cwnd +=taille de segment et transmet un paquet Acquittement de nouvelles données -> cwnd = ssthresh émetteur récepteur P1 P2 P3 P4 P5 P6 A2 A3 A3 Ack dupliqué A3 A3 Retransmission P3 Lancer nam ici Transport Layer 97 RED (Random Early Detection) Delayed ACKs ❒ Dans les routeurs ❒ Possibilité d’acquitter plusieurs paquets 98 d’un coup ❒ Lancer nam ici ❒ Congestion imminente -> notification à la source en perdant un paquet ❒ La congestion est calculée en mesurant la taille moyenne des queues dans les routeurs ❒ Lancer nam ici ❒ Comparaison avec drop tail Transport Layer 99 Contrôle de congestion 20 réduction fenêtre à 1 segment 12 10 8 croissance exponentielle réduction de moitié du seuil 6 4 2 0 102 /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart 1 perte de segment 14 Transport Layer Congestion avoidance croissance linéaire 18 16 100 TCP Congestion Avoidance ❒ Evolution de cwnd segment Transport Layer temps Transport Layer 1: TCP Reno skips slowstart (fast recovery) after three duplicate ACKs 101 17 Segment TCP 32 bits Segment TCP 0 15 4 bits header length ❒ Port Destination (16 bits) : Le numéro de port du destinataire. 6 bits reserved données par rapport au début de la transmission (sauf si SYN est marqué). Si SYN est marqué, le numéro de séquence est le numéro de séquence initial (ISN) et le premier octet à pour numéro ISN+1. ❒ Accusé de réception (32 bits) : si ACK est marqué ce champ contient le numéro de séquence du prochain octet que le récepteur s'attend à recevoir. Une fois la connexion établie, ce champ est toujours renseigné. 32 bits 15 16 31 destination port number sequence number acknowledgement number 4 bits header length 6 bits reserved U R G A C K P S H R S T S Y N F I N window size urgent pointer checksum options Transport Layer data (optionel) 103 Segment TCP ❒ Taille des segments décidés par TCP ❍ Taille max = max (65535o avec entête TCP, MTU) ❒ Un segment doit tenir dans le MTU ❍ Pour IPv4, la MTU minimale est 556 octets (payload TCP de 536 octets) Transport Layer ❍ increase window by 1 per RTT decrease window by factor of 2 on loss event R S T F I N S Y N window size urgent pointer options data (optionel) ❒ Header length (4 bits): La taille de l'en-tête TCP en nombre de mots de 32 bits. Il indique là ou commence les données. L'en-tête TCP, dans tous les cas à une taille correspondant à un nombre entier de mots de 32 bits. ❒ Réservé (6 bits) : réservés pour usage futur. Doivent nécessairement être à 0. ❒ Bits de contrôle (6 bits - de gauche à droite): - URG: Pointeur de données urgentes significatif - ACK: Accusé de réception significatif - PSH: Fonction Push - RST: Réinitialisation de la connexion - SYN: Synchronisation des numéros de séquence - FIN: Fin de transmission ❒ Fenêtre (16 bit): le nombre d'octets à partir de la position marquée Transport Layer 104 dans l'accusé de réception que le récepteur est capable de recevoir. Two competing sessions: ❒ Additive increase gives slope of 1, as throughout increases Fairness goal: if N TCP sessions share same bottleneck link, each should get 1/N of link capacity ❒ multiplicative decrease decreases throughput proportionally equal bandwidth share R TCP connection 1 bottleneck router capacity R Transport Layer 106 Why is TCP fair? TCP Fairness TCP connection 2 Transport Layer 105 Connection 2 throughput ❍ P S H ❒ Unix ❍ BSD 4.2 (1983) 1ére souche TCP/IP largement disponible ❍ BSD 4.3 Tahoe (1988), slow start, congestion avoidance ❍ BSD 4.3 Reno (1990), fast recovery ❍ BSD 4.3 Vegas (1990), Estimateur de BP ❒ Zéro ou plus octets de données TCP congestion avoidance: ❒ AIMD: additive increase, multiplicative decrease A C K Versions de TCP ❒ En-tête de 20 octets (+ options) = IP AIMD U R G checksum ❒ Numéro de séquence (32 bits) : Le numéro du premier octet de source port number 31 destination port number sequence number acknowledgement number ❒ Port source (16 bits) : le numéro de port de la source. 0 16 source port number loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase Connection 1 throughput R 107 Transport Layer 108 18 TCP latency modeling TCP latency Modeling K:= O/WS Q: How long does it take to Notation, assumptions: receive an object from a ❒ Assume one link between client and server of rate R Web server after sending ❒ Assume: fixed congestion a request? ❒ TCP connection establishment ❒ data transfer delay window, W segments ❒ S: MSS (bits) ❒ O: object size (bits) ❒ no retransmissions (no loss, Two cases to consider: no corruption) ❒ WS/R > RTT + S/R: ACK for first segment in Case 1: latency = 2RTT + O/R window returns before window’s worth of data sent ❒ WS/R < RTT + S/R: wait for ACK after sending Transport Layer window’s worth of data sent Transport Layer 109 TCP Latency Modeling: Slow Start Example: ❒ Will show that the latency of one object of size O is: O/S = 15 segments O Sù S é + P ê RTT + ú - ( 2 P - 1) R Rû R ë initiate TCP connection request object K = 4 windows where P is the number of times TCP stalls at server: first window = S/R RTT second window = 2S/R Q=2 third window = 4S/R P = min{K-1,Q} = 2 P = min{Q, K - 1} Server stalls P=2 times. fourth window = 8S/R - where Q is the number of times the server would stall if the object were of infinite size. - and K is the number of windows that cover the object. complete transmission object delivered time at client Transport Layer TCP Latency Modeling: Slow Start (cont.) + ❒ Protocoles de transport => de bout-en-bout ❍ ❍ ❍ request object éS k -1 S ù êë R + RTT - 2 R úû = stall time after the kth window first window = S/R RTT second window = 2S/R third window = 4S/R latency = P O + 2 RTT + å stallTime p R p =1 P O S S + 2 RTT + å [ + RTT - 2k -1 ] R R k =1 R O S S = + 2 RTT + P[ RTT + ] - (2 P - 1) R R R 112 Conclusion et synthèse initiate TCP connection S = time to transmit the kth window R time at server Transport Layer 111 S + RTT = time from when server starts to send segment R until server receives acknowledgement 2 k -1 110 TCP Latency Modeling: Slow Start (cont.) ❒ Now suppose window grows according to slow start. Latency = 2 RTT + Case 2: latency = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] fourth window = 8S/R ❍ multiplexing/demultiplexing reliable data transfer flow control congestion control ❒ Principalement deux protocoles de transport ❍ ❍ UDP : non fiable, seulement vérification des erreurs TCP : fiable, contrôle de congestion, reprise sur erreurs (ACK + timeout)… ❒ Implémentés partout Cours suivant : = complete transmission object delivered time at client Transport Layer ❒ On quitte la bordure du réseau (couches application et transport)... ❒ ... pour entrer au coeur du réseau. time at server 113 Transport Layer 114 19 Chapter 3: Summary ❒ principles behind transport layer services: ❒ instantiation and implementation in the Internet ❍ UDP ❍ TCP Transport Layer 115 20