les protocoles de transport TCP et UDP Transport
- Slides: 115
les protocoles de transport TCP et UDP Transport Layer 1
PLAN r Origines de TCP-IP r Les protocoles de transport m Fonctions m Ports r UDP r TCP m Éléments de base de TCP m Fiabilité m Fenêtres m Reprise sur erreurs m Algorithmes de contrôle de congestion Transport Layer 2
Origine de TCP/IP Transport Layer 3
TCP-IP: origine r Commutation de paquets r Approche « informatique » vs « télécom » r Expérimentations de chercheurs r Approche intégrée : des applications aux outils techniques r Approche de complémentarité par rapport à l’existant r Déploiement rapide r Devient standard de fait r Internet r Le Web Transport Layer 4
Interconnexion de réseaux r Les réseaux r r d'entreprise Les passerelles Les protocoles Les adresses Le monde TCP-IP A B C Réseau 1 Réseau 3 P 1 P 2 Réseau 4 D E F Transport Layer G 5
Architecture TCP-IP Machine A Passerelle Machine D Applications standards Transport Protocole IP Protocole d'accès à R 1 Réseau R 1 Protocole IP R 1 R 2 Protocole IP Protocole d'accès à R 2 Réseau Transport R 2 Layer 6
Rôle du transport Transport Layer 7
Le principe du bout en bout r Pas d’intelligence dans le réseau m Traitement simple dans le réseau -> haut débit m Réseau généraliste -> évolution de l’utilisation du réseau m Pas de redondance de contrôle r Séparation des fonctions m Contrôle -> hôte m Acheminement -> routeur Bout en bout Hôte Protocole IP Hôte Routeur Protocole IP Transport Layer 8
Services et protocoles de transport r Fournissent une d en d- network data link physical po s an tr rt m en r al r network data link physical ic r network data link physical g lo r 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 application transport network data link physical relies on, enhances, network layer services Transport Layer 9
Principe du bout en bout r Service réseau m Modes d’acheminement • Circuit virtuel • Datagramme m Mode non connecté et sans garantie r Robustesse m Indépendance du fonctionnement • Le fonctionnement du système d’extrémité n’est pas lié à celui du réseau Transport Layer 10
Fonction des protocoles de transport r Protocoles de bout en bout (pas comme à la couche réseau par exemple) m Service connecté ou non m fiabilité m performance r Transport d’un message d’un émetteur au récepteur m Indépendamment des réseaux qui véhiculent l’information • Pas de connaissance sur les réseaux traversés r « Interface » entre les applications et le réseau r S’appuie sur des protocoles (des couches basses) pour l’acheminement des données. r Deux protocoles principaux : m TCP : fiabilité, contrôle d’erreur, de flux, d’ordre Transport Layer m UDP : Vérification des erreurs 11
Rôle du Transport r Général Communication inter-process m Identification des points d‘extrémités m Bout en bout m r A la demande de l'application Contrôle des échanges m Corriger les défauts du service réseau m Compte rendu sur la performance de la communication m r Construction du service attendu par les applications distinct de celui fourni par la couche réseau m Mode connecté fiable, sur un réseau datagramme non fiable r Séparation du service fourni par l’opérateur et Transport Layer offert à l’utilisateur 12
Ports r Pour identifier une cible plus spécifique l’adresse IP car les datagrammes sont destinés à des process et pas au système. m m PID -> trop dynamique par un point d’extrémité: • le port • n° de port sur 2 octets r Ceci est réalisé avec les ports m 16 -bits qui identifient quel process est associé à quel datagramme. m Attachement du processus au port m Identification: (@ IP, n° port) r Deux types de ports : m well-known : appartiennent aux serveurs standards • • m 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 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 13
Multiplexing/demultiplexing Recall: segment - unit of data exchanged between transport layer entities m aka TPDU: transport protocol data unit application-layer data segment header segment Ht M Hn segment P 1 M application transport network P 3 Demultiplexing: delivering received segments to correct app layer processes receiver M M application transport network P 4 M P 2 application transport network Transport Layer 14
Multiplexing/demultiplexing Multiplexing: gathering data from multiple app processes, enveloping data with header (later used for demultiplexing) multiplexing/demultiplexing: r based on sender, receiver port numbers, IP addresses m source, dest port #s in each segment m recall: well-known port numbers for specific applications 32 bits source port # dest port # other header fields application data (message) TCP/UDP segment format Transport Layer 15
Multiplexing/demultiplexing: examples host A source port: x dest. port: 23 server B source port: 23 dest. port: x Source IP: C Dest IP: B source port: y dest. port: 80 port use: simple telnet app Web client host A Web client host C 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 16
TSAP/NSAP Host 1 Host 2 Application TSAP n La connexion transport commence ici La connexion réseau commence ici Couche transport Couche réseau Serveur TSAP m NSAP Couche liaison Couche physique Transport Layer 17
Adressage TSAP r Transport Service Access Point m Identification des applications en communication m Ex : adresse IP + Port r Scénario de connexion m Serveur sur host 2 associé au TSAP n m Client sur host 1 s’associe localement au TSAP m (source) et demande le TSAP n sur host 2 (destination) m Établissement de la connexion réseau entre la source (host 1) et la destination (host 2) m Demande d’établissement d’une connexion au niveau transport entre TSAP n et TSAP m Transport Layer m Validation 18
Problèmes de transport r Etablissement de connexion m Déséquencement Etablissement en 3 étapes entité de transport B entité de transport A TPDU demande de connexion Entité de transport B Entité de transport A TPDU CR CC TPDU de données TPDU confirmation de connexion TPDU DT o u AK DT TPDU Transport Layer 19
Three Way handshake r Etablissement d’une connexion bidirectionnelle avec des numéros de séquence indépendants r Utilisation d’un échange de 3 TPDU m 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 Transport Layer 20
Problèmes de transport r Perte m Temporisateur de retransmission • Difficulté: dimensionnement Transport Layer 21
Problèmes de transport r Etablissement de connexion Survivance TPDU DT 0 TPDU AK 1 TPDU DT 1 TPDU AK 2 établissement d'une nouvelle connexion TPDU DT 1 TPDU DT 0 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 Duplication Non Détéctée fermeture de la connexion Perte Non Détéctée m A B ouverture d'une connexion entre A et B 22
Etablissement d’une connexion : bilan r Envoi d’un CONNECTION_REQUEST TPDU, avec possibilité de m Perte m Mémorisation m Duplication r Eviter la duplication avec m Génération d’un nouveau TSAP à chaque connexion m Utilisation d’identificateurs uniques de connexion (état) m Élimination des anciens (=TTL mais circulaire) Transport Layer 23
Pipelined protocols Pipelining: sender allows multiple, “in-flight”, yet-tobe-acknowledged pkts m m range of sequence numbers must be increased buffering at sender and/or receiver r Two generic forms of pipelined protocols: go-Back-N, selective repeat Transport Layer 24
Go-Back-N Sender: r k-bit seq # in pkt header r “window” of up to N, consecutive unack’ed pkts allowed r ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” may deceive duplicate ACKs (see receiver) r timer for each in-flight pkt r timeout(n): retransmit pkt n and all higher seq # pkts in window m Transport Layer 25
GBN in action Transport Layer 26
Selective Repeat r receiver individually acknowledges all correctly received pkts m buffers pkts, as needed, for eventual in-order delivery to upper layer r sender only resends pkts for which ACK not received m sender timer for each un. ACKed pkt r sender window m N consecutive seq #’s m again limits seq #s of sent, un. ACKed pkts Transport Layer 27
Selective repeat: sender, receiver windows Transport Layer 28
Selective repeat sender data from above : receiver pkt n in [rcvbase, rcvbase+N-1] r if next available seq # in r send ACK(n) timeout(n): r in-order: deliver (also window, send pkt r resend pkt n, restart timer ACK(n) in [sendbase, sendbase+N]: r mark pkt n as received r if n smallest un. ACKed pkt, advance window base to next un. ACKed seq # r out-of-order: buffer deliver buffered, in-order pkts), advance window to next not-yet-received pkt n in [rcvbase-N, rcvbase-1] r ACK(n) otherwise: r ignore Transport Layer 29
Selective repeat in action Transport Layer 30
Selective repeat: dilemma Example: r seq #’s: 0, 1, 2, 3 r window size=3 r receiver sees no difference in two scenarios! r incorrectly passes duplicate data as new in (a) Q: what relationship between seq # size and window size? Transport Layer 31
Protocoles de bout en bout : bilan r Réseau “best effort” sous jacent m Perte de paquets m Dé-séquencement m Limite la taille des paquets m Temps de transfert aléatoire r Services courants de bout en bout m Remise garantie des messages m Séquencement m Taille des messages quelconque m Synchronisation récepteur - émetteur m Plusieurs processus applicatif sur une même Transport Layer machine 32
Problèmes de transport r Contrôle de flux m Adaptatif: fenêtre à taille variable A Numérotation séquentielle (modulo 2 7 ou 231) DT 0 B DT 1 Dernier octet acquité CDT Fenêtre ACK 2, CDT=3 DT 2 DT 3 DT 4 Limite supérieure de fenêtre ACK 5, CDT=0 ACK 5, CDT=1 DT 5 r Dissociation du rôle des ACK: m Contrôle d’erreur m Contrôle de flux • • • Transport Layer 33
Problèmes de transport r Libération m Brutale utilisateur fournisseur Action synchronisée sur réseau non fiable utilisateur temporisateur de retransmission T_DATA. req T_DATA. ind T_DATA. req DC effacement de connexion T_DISC. req absence de T_DATA. ind après le T_DISC. req m Ordonnée DR A AK Temporisateur d’effacement de connexion B DT 3 T_CLOSE. request Fermeture effective de la demi-conexion T_DATA. indication T_CLOSE. indication DT 4 CR 5 T_CLOSE. indication AK 6 DT 8 CR 9 T_DATA. request T_CLOSE. request AK 10 Transport Layer 34
Terminaison de connexion r Symétrique m Terminaison indépendante des deux directions m Fin de connexion lorsque chaque extrémité à terminé r Asymétrique m Fin de connexion dès qu’une des extrémités le demande • Petres possibles car plus de données acceptées après le DR Transport Layer 35
Automate d’état Connection request TPDU received Connection primitive executed IDLE Passive establishment pending Active establishment Pending Transitions déclenchées par des primitives locales ou des arrivées de TPDU Connection accepted TPDU received Connection primitive executed Establishment Disconnect request TPDU received Disconnect primitive executed Passive disconnect pending Active disconnect pending Disconnect primitive executed IDLE Disconnection request TPDU received Transport Layer 36
UDP Transport Layer 37
UDP r RFC 768 r Numéro de protocole 17 quand transporté par IP. r Interface d’application pour IP r Pas de fiabilité, contrôle de flux ou récupération r r r r 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 38
UDP: User Datagram Protocol r “no frills, ” “bare bones” Internet transport protocol r “best effort” service, UDP segments may be: m lost m delivered out of order to app r connectionless: m no handshaking between UDP sender, receiver m each UDP segment handled independently of others [RFC 768] Why is there a UDP? r no connection establishment (which can add delay) r simple: no connection state at sender, receiver r small segment header r no congestion control: UDP can blast away as fast as desired Transport Layer 39
Communication entre les couches process 1 port x process 2 process n port y port z UDP : démultiplexage de ports IP Transport Layer 40
Datagrammes UDP (1) r Port Source m indique le numéro de port du processus émetteur, m toute réponse y est dirigée. r Port Destinataire r Longueur : m nombre d'octets dans le datagramme entier (avec en-tête). m >8 Transport Layer 41
Datagrammes UDP (2) r Contrôle d’erreur m Optionnel en IPv 4, obligatoire en IPv 6 m Pseudo-header + en-tête + données m Pseudo-header: • @ IP source • @ IP destination • protocole Transport Layer 42
UDP checksum Goal: detect “errors” (e. g. , flipped bits) in transmitted segment Sender: r treat segment contents as sequence of 16 -bit integers r checksum: addition (1’s complement sum) of segment contents r sender puts checksum value into UDP checksum field Receiver: r compute checksum of received segment r check if computed checksum equals checksum field value: m NO - error detected m YES - no error detected. But maybe errors nonethless? More later …. Transport Layer 43
Applications d’UDP r la signalisation de certains protocoles r Trivial File Transfer Protocol (TFTP) r Domain Name System (DNS) name server r Remote Procedure Call (RPC), utilisé par Network File System (NFS) r Network Computing System (NCS) r Simple Network Management Protocol (SNMP) r applications temps réel, visio et audio conférences r applications nécessitant transmission multipoint (multicast) exemple : applications du MBONE, sdr, tableau blanc, etc Transport Layer 44
UDP: more r often used for streaming multimedia apps m loss tolerant m rate sensitive Length, in bytes of UDP segment, (why? ): including header r other UDP uses m DNS m SNMP r reliable transfer over UDP: add reliability at application layer m application-specific error recover! 32 bits source port # dest port # length checksum Application data (message) UDP segment format Transport Layer 45
TCP Transport Layer 46
TCP r RFC 793 - Transmission Control Protocol r 90% du trafic r Principes m Bonne utilisation des ressources du réseau m m Couche de transport des systèmes d’extrémités (i. e. utilisateurs des données) • Communication bidirectionnelle et point à point sur des réseaux hétérogènes Transfert fiable de données ( UDP) • 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. m m m Mode connecté et commutation de paquets Orienté flux d’octets: • application écrit des octets • TCP émet des segments • application lit des octets Récepteur le plus simple possible -> complexité chez l’émetteur • interopérabilité maximum recherchée r Utilisé par. TELNET, FTP, HTTP … Transport Layer 47
Caractéristiques de TCP m m La connexion est établie et considérée comme un circuit physique fiabilité r Transfert bufferisé m Attendre d’avoir assez de données pour émettre (performance) r Full duplex m Pour les ACKs Application process Octets écrits … connecté Application process … r Flot d’octets m Séquencés m Segmentation des données au niveau TCP r Circuit virtuel en mode TCP Octets lus TCP Buffer émission Buffer réception Segment… Segment TSegments transmis Transport Layer 48
Caractéristiques de TCP r Numéros de séquence indépendants dans les 2 directions m Associés à chaque octets • Indique le numéro du premier octet transmis m Mots de 32 bits • Bouclage théorique en moins de 6 minutes à 100 Mbps mais en pratique, c’est beaucoup plus long ! m 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) m Piggybacking • Les deux numéros sont présents dans les mêmes paquets Transport Layer 49
Caractéristiques de TCP r Fiabilité m m m 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 : • Selective repeat • Go back N r Contrôle de flux par annonce de fenêtres m m 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 r Contrôle de congestion : adaptation à l’état d’occupation du réseau m Sans signalisation réseau r Orienté connexion Transport Layer 50
Caractéristiques de TCP r Multiplexage m 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. m 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. m L'affectation des ports aux processus est établie par chaque ordinateur. Transport Layer 51
Segments r Les octets de données sont accumulés jusqu’au moment où TCP décide d’envoyer un segment r Découpage en segment indépendant du découpage au niveau application r MSS = longueur maximale d’un segment Application Buffer d’émission TCP header IP header TCP IP Transport Layer 52
Sockets r Deux process communiquent par des sockets TCP qui fournissent aux process un flux de données full duplex. r Ports éphémères r Port = TCP TSAP = numéro sur 16 bits m m Valeur locale 0 à 255 : well-known 0 à 1023 : ports système 1024 à 65536 : ports utilisateurs r Une socket TCP : m Triplet <TCP, IP address, port number>. r Une connexion TCP : m 2 sockets <TCP, local IP address, local port, remote IP address, remote port>. Transport Layer 53
BSD Sockets r Primitives pour TCP utilisées par les UNIX BSD SOCKET (création d’un nouveau point terminal) m BIND (attache une adresse à la socket) m LISTEN (acceptation des connexions avec file d’attente) m ACCEPT (acceptation bloquante) m CONNECT (établissement actif de connexion) m SEND (envoi de données sur une connexion) m RECEIVE (réception de données d’une connexion) m CLOSE (terminaison d’une connexion) m r Serveur : SOCKET -> BIND -> LISTEN -> ACCEPT … [SEND, RECEIVE]… -> CLOSE r Client : SOCKET –> BIND -> CONNECT … [SEND, Transport Layer RECEIVE]…-> CLOSE 54
Communication entre applications process 1 port x Données TCP header port: x Données process 2 connexion port y socket TCP connexion TCP fiable IP TCP Adresse IP IP paquets IP non fiable Hôte 1 Transport Layer Hôte 2 55
Problèmes pour TCP r Connexion avec des hôtes différents m Établissement et libération de connexion r RTT variable m adaptation de la temporisation r Survivance de paquets (très long délai de transfert) m Attention aux arrivées de très vieux paquets r Capacité de stockage dynamique des extrémités m “Apprendre” les ressources disponibles r Capacité de la route varie dans le réseau Transport Layer m Ajuster le débit d’émission à la bande passante 56
Vie d’une Connexion r Si deux processus désirent communiquer, établissement d’une connexion TCP r Internet => best effort m 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. r A la fin de la connexion m Fermeture qui libère les ressources r 3 phases m Ouverture d’une connexion m Transfert de données m Fermeture de la connexion Transport Layer 57
Établissement d’une connexion r Appel OPEN passif (serveur)/actif (client) r Fermeture d’une connexion avec le bit FIN (à faire dans les deux sens) 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 Send ACK=m+1 Transport Layer 58
Connexion TCP r Trois phases m Etablissement de la connexion m Transfert des informations avec • Contrôle de flux • Contrôle de congestion m Libération de la connexion Transport Layer 59
Etablissement de la connexion TCP r Procédure à trois échanges m Three way handshake r ISN (Initial Sequence Number) m Numéro de séquence du premier octet d’information transporté m Le premier octet transporté est alors ISN+1 m ISN est généralement dérivé de l’horloge de l’hôte Transport Layer 60
Exemple Transport Layer 61
Libération de la connexion r Normale m Fin demandée par l’une des extrémités (flag FIN=1) r Terminaison brutale • Envoi de la primitive ABORT (flag RST=1) • Toutes les transmissions ou réceptions sont interrompues et les tampons sont vidés Transport Layer 62
Automate TCP CLOSED Listen/- Close/- LISTEN SYN/SYN+ACK Send/SYN RST/SYN RCVD SYN/SYN+ACK CLOSE/FIN FIN WAIT 1 ACK/FIN WAIT 2 Close/- ACK/- Connect/SYN Simultaneous open ESTABLISHED SYN SENT SYN+ACK/ACK FIN/ACK FIN+ACK/ACK FIN/ACK CLOSING CLOSE WAIT ACK/- CLOSE/FIN LAST ACK TIME WAIT ACTIVE CLOSE PASSIVE CLOSE Timeout/CLOSED ACK/- Transport Layer 63
Transfert de données r Segmentation m Découpage du flux en segments selon la MTU locale m Numérotation des octets m Gel du numéro de séquence pendant MSL (Maximum Segment Lifetime) r Contrôle de perte (fiabilité) m Acquittement positif m Protection par temporisateur de retransmission chez l'émetteur uniquement r Contrôle de flux (optimisation des ressources disponibles) m fenêtres à taille variable m Progression par acquittement et crédit : fenêtres glissantes Data (Sequence Number) Sender Receiver Acknowledgement + Advertised Window Transport Layer 64
Fiabilité : stop and wait r Envoi d’un paquet et attendre un acquittement avant d’envoyer un nouveau paquet. r Si timeout, alors retransmission r Fiabilité vs. utilisation de la bande passante Lancer nam ici émetteur Envoi du paquet 1 récepteur Data ACK Réception ACK Envoi paquet 2 Réception paquet 1 Envoi ACK 1 Data Transport Layer 65
Contrôle de flux TCP Fenêtre annoncée Transmis et acquitté Transmis non acquitté Non transmissible r Basé sur la fenêtre glissante m Pointeur de début de fenêtre m Pointeur indiquant la partie transmise et non acquittée m Pointeur indiquant la fin de la fenêtre m Envoi de données urgentes toujours possible Transport Layer 66
Fenêtre d’émission r F=min (cwnd, W) m Cwnd est une variable maintenue par la source • Tient compte de la congestion du réseau m. W : fixé par la destination, champ fenêtre annoncé • Tient compte de la capacité du récepteur Transport Layer 67
Fenêtres r But : optimiser les ressources m Contrôle de flux et contrôle de congestion r L’émetteur peut envoyer n paquets dans une fenêtre de taille n sans recevoir d’ACK. r L’émetteur fait glisser la fenêtre sur réception d’un ACK. r Fenêtre effective = Fenêtre annoncée - (octets transmis - octets non acquittés) r Arrêt de la transmission quand fenêtre effective=0 émetteur récepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 ACK 2 DATA 6 1 2 3 4 5 6 7 8 9 fenêtre glissante Transport Layer 68
Silly window syndrome r L’émetteur a beaucoup de données à transmettre r Petite fenêtre annoncée => émission de petits segments r Solution pour le récepteur m Annoncer des fenêtres par tranches plus larges (MSS par exemple) r Solution pour l’émetteur m Retarder l’envoi de petits segments m Soit PUSH positionné soit on a au moins ½ de la fenêtre à envoyer Transport Layer 69
Fiabilité avec Go-back-N r Fenêtre d’anticipation r Détection d’erreurs par l’émetteur r Retransmission continue (go-back-n) ou sélective (stockage en désordre) A DT 0 B DT 1 ACK 2 DT 3 DT 4 ACK 3 DT 3 • • • Transport Layer 70
La reprise sur erreurs émetteur r Exemples m 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 m 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 récepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 ACK 2 DATA 2 ACK 6 récepteur émetteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 ACK 2 ACK 3 ACK 4 Transport Layer 71
Exemple de reprise sur erreurs Sender Segment 1 (seq. 1000) Receiver Receives 1000, send ACK 1500 Segment 2 (seq. 1500) Segment 3 (seq. 2000) Receives ACK 1500 Slide the window Segment 4 (seq. 2500) Waiting for ACK Receives one of the frames and replies with ACK 1500 Receive ACK 1500 which does not slide the window Timeout -> retransmission Of segment 2 Transport Layer 72
TCP: retransmission scenarios Host A , 8 byt e s data ACK X =100 loss Seq=9 2 , 8 byt e s data Seq= 100, 2 tes da ta 0 byte s data 0 10 = K 120 = C K A AC Seq=9 2, 8 by tes da ta 20 100 lost ACK scenario 2, 8 by K=1 AC = ACK time Host B Seq=9 Seq=100 timeout Seq=92 timeout Seq=9 2 timeout Host A Host B time premature timeout, cumulative ACKs Transport Layer 73
TCP ACK generation [RFC 1122, RFC 2581] Event TCP Receiver action in-order segment arrival, no gaps, everything else already ACKed delayed ACK. Wait up to 500 ms 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 74
Conséquences de ces mécanismes r Fiabilité des transmissions r Bonne utilisation de la bande passante r Contrôle de flux orienté récepteur : la taille de la fenêtre varie au cours de la connexion Transport Layer 75
Temporisateurs de TCP r Temporisateur de retransmission r Temporisateur de peristence m Pour débloquer la situation après une fenêtre d’émission réduite à zéro et une ouverture perdue r Temporisateur d’inactivité m Vérifie la présence de l’autre extrémité r Temporisateur de déconnexion m Deux fois la durée de vie des paquets Transport Layer 76
TCP et Long Fat Networks r Performance maximum si l’émetteur toujours en activité m Eviter l’épuisement de la numérotation en séquence m Eviter la fermeture de la fenêtre m • • durée de rebouclage > MSL Seq number: 32 bits • fenêtre annoncée ≥ bande passante * RTT • Window: 16 bits -> soit 64 Ko • 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 Cas des Long Fat Networks: r Extension TCP pour les LFNs m m facteur d’échelle sur la fenêtre d’émission ajout d’une estampille temporelle sur 32 bits (RFC 1323) Transport Layer 77
Ajustement des timeouts : Contrôle d’erreur r Délais variables sur Internet m Distance m Temps de traversée du réseau (charge, saturation des liens …) r Le timeout est calculé en fonction de l’estimation du RTT (Round Trip Time) r Log du moment où un paquet est envoyé et quand il est acquitté r Moyenne pondérée des RTT mesurés r Permet de trouver une valeur de timeout pour le segment suivant Transport Layer 78
Ajustement des timeouts: Contrôle d’erreur r Temporisateur de retransmission adaptatif m Mesure de RTT et en déduire une estimation Algorithme Err = Sample. RTT - Est. RTT = Est. RTT + (d x Err) Var = Var + d(|Err| - Var) Prise en compte de la variance Temporisateur = m x Est. RTT + f x Var Où m = 1 et f = 4 r Mesure du RTT m Cas d’erreurs m 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 79
TCP Round Trip Time and Timeout Q: how to set TCP timeout value? r longer than RTT note: RTT will vary r too short: premature timeout m unnecessary retransmissions r too long: slow reaction to segment loss m Q: how to estimate RTT? r Sample. RTT: measured time from segment transmission until ACK receipt m ignore retransmissions, cumulatively ACKed segments r Sample. RTT will vary, want estimated RTT “smoother” m use several recent measurements, not just current Sample. RTT Transport Layer 80
TCP Round Trip Time and Timeout Estimated. RTT = (1 -x)*Estimated. RTT + x*Sample. RTT r Exponential weighted moving average r influence of given sample decreases exponentially fast r typical value of x: 0. 1 Setting the timeout r Estimted. RTT plus “safety margin” r large variation in Estimated. RTT -> larger safety margin Timeout = Estimated. RTT + 4*Deviation = (1 -x)*Deviation + x*|Sample. RTT-Estimated. RTT| Transport Layer 81
TCP congestion control: r “probing” for usable bandwidth: m m m 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 r two “phases” m slow start m congestion avoidance r important variables: m Congwin m threshold: defines threshold between two slow start phase, congestion control phase Transport Layer 82
Contrôle de congestion r Congestion m Goulot d'étranglement Réseau 1 Routeur Réseau 2 Datagrammes en attente de relayage routeur Réseau 3 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
Causes/costs of congestion: scenario 1 r two senders, two receivers r one router, infinite buffers r no retransmission r large delays when congested r maximum achievable throughput Transport Layer 84
Causes/costs of congestion: scenario 2 r one router, finite buffers r sender retransmission of lost packet Transport Layer 85
Causes/costs of congestion: scenario 2 = l (goodput) out in r “perfect” retransmission only when loss: r always: r l l > lout in retransmission of delayed (not lost) packet makes l in l (than perfect case) for same out larger “costs” of congestion: r more work (retrans) for given “goodput” r unneeded retransmissions: link carries multiple copies of pkt Transport Layer 86
Causes/costs of congestion: scenario 3 r four senders r multihop paths r timeout/retransmit Q: what happens as l in and l increase ? in Transport Layer 87
Causes/costs of congestion: scenario 3 Another “cost” of congestion: r when packet dropped, any “upstream transmission capacity used for that packet wasted! Transport Layer 88
Approaches towards congestion control Two broad approaches towards congestion control: End-end congestion control: r no explicit feedback from network r congestion inferred from end-system observed loss, delay r approach taken by TCP Network-assisted congestion control: r routers provide feedback to end systems m single bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM) m explicit rate sender should send at Transport Layer 89
Contrôle de congestion TCP r Conservation des paquets m Ne pas injecter un nouveau paquet tant qu’un vieux n’est pas sorti du réseau • nombre de paquets en transit constant m Synchronisation sur les acquittements: autosynchronisation r Trouver le point de synchronisation m Utilisation d’une fenêtre dynamique: fenêtre de contrôle de congestion (cwnd) r Détection de la congestion m Pertes généralement dues à la congestion r Guérison de la congestion m Diminution du débit à la source pour diminuer la Transport Layer congestion 90
Contrôle de congestion r Principe m Trouver le point d’équilibre: “additive increase” • Augmenter la fenêtre de contrôle de congestion m Détection de la congestion par l’indication de la perte d’un paquet m Suppression de congestion en réduisant la fenêtre r Algorithme m m 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) Transport Layer 91
Algorithmes de contrôle de congestion et gestion des fenêtres r Slow Start r Multiplicative decrease r Fast recovery r RED r Delayed ACK r etc. Transport Layer 92
Slow Start r Fenêtre glissante et taille variable de la fenêtre r Croissance exponentielle de la taille de la fenêtre (x 2 à chaque fois que les paquets sont transmis correctement) m Augmentation acquittement de 1 segment à chaque r Lancer nam ici Transport Layer 93
Congestion avoidance r Pour stopper l’augmentation trop rapide (le slow start est exponentiel) r À partir d’un seuil : augmentation de 1 segment à chaque RTT r Le seuil vaut la moitié de la fenêtre lors de la dernière congestion Transport Layer 94
Congestion avoidance r Initialisation avec cwnd=1 et ssthresh=65536 r TCP envoie moins de min(cwnd, fenêtre de réception) r Congestion => ssthresh = max(fenêtre/2, 2). r Si timeout (cad perte), alors cwnd=1 r Nouvel ACK => grandir cwnd Si cwnd<=ssthresh alors slow start jusque cwnd = cwnd avant congestion /2 m Sinon Congestion avoidance (croissance linéaire de la taille de la fenêtre) m r Avant ces mécanismes : simple-pre-vj. nam r Lancer nam (multiplicative decrease) ici r Lancer simple. avi ici ou nam (simple. nam) Transport Layer 95
TCP et grands RTTs r Avec Congestion avoidance, la taille de la fenêtre augmente de 1 à chaque RTT r Croissance moins rapide si le RTT est grand r Lancer biais. avi Transport Layer 96
Fast recovery r Empêche le slow start après la congestion r Slow start utilisé en cas de perte de paquets (expiration de timer) Transport Layer 97
Fast retransmit r Modification de congestion avoidance m m 3 DUPACKs -> paquet supposé perdu et donc retransmission Après la transmission, tout continue normalement (on attend pas d’ACK) r Si 3 DUPACKs m Sshthresh = ½ min(cwnd, fenêtre récepteur) m Retransmettre le segment perdu m Cwnd+=3 taille de segment m Autre DUPACK -> cwnd +=taille de segment et transmet un paquet m Acquittement de nouvelles données -> cwnd = ssthresh r Lancer nam ici Transport Layer 98
RED (Random Early Detection) r Dans les routeurs r Congestion imminente -> notification à la source en perdant un paquet r La congestion est calculée en mesurant la taille moyenne des queues dans les routeurs r Lancer nam ici r Comparaison avec drop tail Transport Layer 99
Delayed ACKs r Possibilité d’acquitter plusieurs paquets d’un coup r Lancer nam ici Transport Layer 100
Contrôle de congestion r Evolution de cwnd Transport Layer 101
TCP Congestion Avoidance Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 1 perform slowstart 1: TCP Reno skips slowstart (fast recovery) after three duplicate ACKs Transport Layer 102
Segment TCP r Port source (16 bits) : le numéro de port de la source. r Port Destination (16 bits) : Le numéro de port du destinataire. r Numéro de séquence (32 bits) : Le numéro du premier octet de 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. r 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é. Transport Layer 103
Segment TCP r 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 Réservé (6 bits) : réservés pour usage futur. Doivent nécessairement être à 0. r 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 r 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.
Segment TCP r En-tête de 20 octets (+ options) = IP r Zéro ou plus octets de données r Taille des segments décidés par TCP m Taille max = max (65535 o avec entête TCP, MTU) r Un segment doit tenir dans le MTU m Pour IPv 4, la MTU minimale est 556 octets (payload TCP de 536 octets) Transport Layer 105
Versions de TCP r Unix m BSD 4. 2 (1983) 1ére souche TCP/IP largement disponible m BSD 4. 3 Tahoe (1988), slow start, congestion avoidance m BSD 4. 3 Reno (1990), fast recovery m BSD 4. 3 Vegas (1990), Estimateur de BP Transport Layer 106
AIMD TCP congestion avoidance: r AIMD: additive increase, multiplicative decrease m m increase window by 1 per RTT decrease window by factor of 2 on loss event TCP Fairness goal: if N TCP sessions share same bottleneck link, each should get 1/N of link capacity TCP connection 1 TCP connection 2 bottleneck router capacity R Transport Layer 107
Why is TCP fair? Two competing sessions: r Additive increase gives slope of 1, as throughout increases r multiplicative decreases throughput proportionally equal bandwidth share Connection 2 throughput R loss: decrease window by factor of 2 congestion avoidance: additive increase Connection 1 throughput R Transport Layer 108
TCP latency modeling Q: How long does it take to Notation, assumptions: receive an object from a r Assume one link between client and server of rate R Web server after sending r Assume: fixed congestion a request? r TCP connection establishment r data transfer delay window, W segments r S: MSS (bits) r O: object size (bits) r no retransmissions (no loss, no corruption) Two cases to consider: r WS/R > RTT + S/R: ACK for first segment in window returns before window’s worth of data sent r WS/R < RTT + S/R: wait for ACK after sending Transport Layer window’s worth of data sent 109
TCP latency Modeling Case 1: latency = 2 RTT + O/R K: = O/WS Case 2: latency = 2 RTT + O/R + (K-1)[S/R + RTT - WS/R] Transport Layer 110
TCP Latency Modeling: Slow Start r Now suppose window grows according to slow start. r Will show that the latency of one object of size O is: where P is the number of times TCP stalls at server: - 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. Transport Layer 111
TCP Latency Modeling: Slow Start (cont. ) Example: O/S = 15 segments K = 4 windows Q=2 P = min{K-1, Q} = 2 Server stalls P=2 times. Transport Layer 112
TCP Latency Modeling: Slow Start (cont. ) Transport Layer 113
Conclusion et synthèse r Protocoles de transport => de bout-en-bout m multiplexing/demultiplexing m reliable data transfer m flow control m congestion control r Principalement deux protocoles de transport m UDP : non fiable, seulement vérification des erreurs m TCP : fiable, contrôle de congestion, reprise sur erreurs (ACK + timeout)… r Implémentés partout Cours suivant : r On quitte la bordure du réseau (couches application et transport). . . r. . . pour entrer au coeur du réseau. Transport Layer 114
Chapter 3: Summary r principles behind transport layer services: r instantiation and implementation in the Internet m UDP m TCP Transport Layer 115
- Snmp uses two other protocols
- Tcp udp socket programming in java
- Tcp udp icmp
- Tcp udp
- Fair queuing
- Tcp vs udp
- Getresponse snmp
- Socketpair vs pipe
- Tcp dan udp
- Exemple de protocole de soins infirmiers
- Rappel des protocoles
- Transport udp
- To achieve reliable transport in tcp
- Maximum segment size
- Primary transport and secondary transport
- Primary vs secondary active transport
- Now answer the following questions
- Active transport vs passive transport venn diagram
- Unlike passive transport, active transport requires *
- Primary active transport vs secondary active transport
- Bioflix activity membrane transport active transport
- Active transport diagram
- Bioflix membrane transport
- Udp-based data transfer protocol
- Udp
- Udp
- Flow control udp
- Udp demultiplexing
- Synteza hemu
- Characteristics of inter process communication
- Udp
- Glicogeno
- Mpls over udp
- Udp flooder
- Udp header
- Glukoril
- Udp glukuronát
- Anabolick
- Glycosidic bond in glycogen
- Udp protocol rfc
- Sendto udp
- Trinoo
- Udp
- Udp checksum error detection
- Elementary udp sockets
- Udp glukuronát
- Udp congestion control
- User datagram protocol diagram
- Udp broadcast c
- Udp glukuronil transferaz eksikliği
- Glukoril
- Udp logo
- C++ udp socket
- Puerto tftp
- Symmetric nat
- Sulfonamides classification
- Ue4 concurrency
- Udp uses to handle outgoing
- Udp header in hexadecimal format
- Udp glucosa
- Udp glucosa
- Udp glucosa
- Udp header
- Lengyel zsolt
- Bilirubin uptake
- Glucogenesis
- Udp socket timeout
- Udp
- Udp ip header
- Udp
- Udp hole punching
- Udp segment structure
- Struktur header udp
- Udp ftp
- Datalink header
- Udp header in hexadecimal format
- Udp protocol
- Lösin aminopeptidaz testi
- Vokorokos
- Spring udp
- Which timer is used for "designed to prevent deadlock"
- 888dport
- Quick udp
- Udp to data warehouses
- Les conventions du transport maritime
- Uld aérien
- Parts de una flor
- Les lettres en français
- Les 10 volcans les plus dangereux du monde
- La ficelle introduction
- Les constellations les plus connues
- Remplacez les mots soulignes par les pronoms convenable
- Parts de les fulles
- Vous mot variable ou invariable
- Les mots variables
- Trouvez les réponses. écrivez-les en chiffres (numbers).
- Grand corps malade histoire d'amour
- Allez vous en sur les places et sur les parvis
- Preactionneurs
- Les trois obstacles et les quatre démons
- Dieu veut des soldats fideles
- L'horloge stratégique
- Tu aimes manger
- Les mots qu'on ne dit pas sont les fleurs du silence
- Idée d'organisateur textuel
- Composition dragibus
- Texte expressif caractéristiques
- Fonctions techniques et solutions techniques
- Les voitures les plus rapides du monde
- Server radius packet tracer
- Paradox cat hmi
- Tcp 101
- Tcp rfc 793
- Tcp ip sockets in c
- Tcp/ip sockets in java: practical guide for programmers
- Tcp stereo