La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Transport Layer1 les protocoles de transport TCP et UDP.

Présentations similaires


Présentation au sujet: "Transport Layer1 les protocoles de transport TCP et UDP."— Transcription de la présentation:

1 Transport Layer1 les protocoles de transport TCP et UDP

2 Transport Layer2 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

3 Transport Layer3 Origine de TCP/IP

4 Transport Layer4 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

5 Transport Layer5 Réseau 1 B A Réseau 2 Réseau 3 Réseau 4 P1 P2 C D E G F Interconnexion de réseaux r Les réseaux d'entreprise r Les passerelles r Les protocoles r Les adresses r Le monde TCP-IP

6 Transport Layer6 Réseau R1 Protocole d'accès à R1 Protocole IP Transport Réseau R2 Protocole d'accès à R2 Protocole IP Transport R1R2 Protocole IP Machine AMachine DPasserelle Architecture TCP-IP Applications standards Applications standards

7 Transport Layer7 Rôle du transport

8 Transport Layer8 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 Protocole IP Hôte Protocole IP Hôte Routeur Bout en bout

9 Transport Layer9 Services et protocoles de transport r Fournissent une communication logique entre des processus applicatifs s’exécutant sur des hôtes différents r transport protocols run in end systems r transport vs network layer services: r network layer: data transfer between end systems r transport layer: data transfer between processes m relies on, enhances, network layer services application transport network data link physical application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical logical end-end transport

10 Transport Layer10 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

11 Transport Layer11 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 m UDP : Vérification des erreurs

12 Transport Layer12 Rôle du Transport r Général m Communication inter-process m Identification des points d‘extrémités m Bout en bout r A la demande de l'application m Contrôle des échanges m Corriger les défauts du service réseau m Compte rendu sur la performance de la communication 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 offert à l’utilisateur

13 Transport Layer13 Ports r Pour identifier une cible plus spécifique que l’adresse IP car les datagrammes sont destinés à des process et pas au système. m PID -> trop dynamique m 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 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 m ephemeral Les clients utilisent des ports spécifiés dans les paquets UDP Entre 1024 et 5000 habituellement doit être unique.

14 Transport Layer14 application transport network M P2 application transport network Multiplexing/demultiplexing Recall: segment - unit of data exchanged between transport layer entities m aka TPDU: transport protocol data unit receiver H t H n Demultiplexing: delivering received segments to correct app layer processes segment M application transport network P1 MMM P3 P4 segment header application-layer data

15 Transport Layer15 Multiplexing/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 gathering data from multiple app processes, enveloping data with header (later used for demultiplexing) source port #dest port # 32 bits application data (message) other header fields TCP/UDP segment format Multiplexing:

16 Transport Layer16 Multiplexing/demultiplexing: examples host A server B source port: x dest. port: 23 source port:23 dest. port: x port use: simple telnet app Web client host A Web server B Web client host C Source IP: C Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: y dest. port: 80 port use: Web server Source IP: A Dest IP: B source port: x dest. port: 80

17 Transport Layer17 TSAP/NSAP Host 1 Host 2 Application Couche transport Couche réseau Couche liaison Couche physique Serveur TSAP m NSAP La connexion transport commence ici La connexion réseau commence ici TSAP n

18 Transport Layer18 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 host2 associé au TSAP n m Client sur host1 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 m Validation

19 Transport Layer19 Problèmes de transport r Etablissement de connexion m Déséquencement entité de transport A entité de transport B TPDU demande de connexion TPDU confirmation de connexion TPDU de données Entité de transport A Entité de transport B TPDU CR TPDU CC TPDU DT ou AK TPDU DT Etablissement en 3 étapes

20 Transport Layer20 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

21 Transport Layer21 Problèmes de transport r Perte m Temporisateur de retransmission Difficulté: dimensionnement

22 Transport Layer22 Problèmes de transport r Etablissement de connexion m Survivance AB ouverture d'une connexion entre A et B TPDU DT 0 TPDU AK 1 T1 TPDU DT 1 TPDU AK 2 fermeture de la connexion établissement d'une nouvelle connexion TPDU DT 1 La TPDU DT 1 est reçue sans erreur mais hors séquence Elle est gardée en attente de reséquencement Duplication Non Détéctée. TPDU DT 0 TPDU AK 2 TPDU DT 1.. La seconde TPDU DT 1 est détectée comme dupliquée Elle est écartée mais acquittée TPDU AK 2 La TPDU DT 0 ayant été reçue, l'acquittement peut se faire Perte Non Détéctée

23 Transport Layer23 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)

24 Transport Layer24 Pipelined protocols Pipelining: sender allows multiple, “in-flight”, yet-to- be-acknowledged pkts m range of sequence numbers must be increased m buffering at sender and/or receiver r Two generic forms of pipelined protocols: go-Back-N, selective repeat

25 Transport Layer25 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” m 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

26 Transport Layer26 GBN in action

27 Transport Layer27 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 unACKed pkt r sender window m N consecutive seq #’s m again limits seq #s of sent, unACKed pkts

28 Transport Layer28 Selective repeat: sender, receiver windows

29 Transport Layer29 Selective repeat data from above : r if next available seq # in window, send pkt timeout(n): r resend pkt n, restart timer ACK(n) in [sendbase,sendbase+N]: r mark pkt n as received r if n smallest unACKed pkt, advance window base to next unACKed seq # sender pkt n in [rcvbase, rcvbase+N-1] r send ACK(n) r out-of-order: buffer r in-order: deliver (also deliver buffered, in-order pkts), advance window to next not-yet-received pkt pkt n in [rcvbase-N,rcvbase-1] r ACK(n) otherwise: r ignore receiver

30 Transport Layer30 Selective repeat in action

31 Transport Layer31 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?

32 Transport Layer32 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 machine

33 Transport Layer33 Problèmes de transport r Contrôle de flux m Adaptatif: fenêtre à taille variable r Dissociation du rôle des ACK: m Contrôle d’erreur m Contrôle de flux Numérotation séquentielle (modulo 2 7 ou 2 31 ) CDT AB ACK2, CDT=3 DT2 DT3 DT4 ACK5, CDT=0 DT0 DT1 ACK5, CDT=1 DT5 Dernier octet acquité Fenêtre Limite supérieure de fenêtre

34 Transport Layer34 Problèmes de transport r Libération m Brutale m Ordonnée Temporisateur d’effacement effacement de connexion DR DC AK temporisateur de retransmission effacement de connexion utilisateur fournisseur T_DATA.ind T_DISC.req T_DATA.req absence de T_DATA.ind après le T_DISC.req Action synchronisée sur réseau non fiable AB DT3 AK6 DT8 AK10 DT4 CR5 T_CLOSE.request T_CLOSE.indication Fermeture effective de la demi-conexion CR9 T_CLOSE.request T_CLOSE.indication T_DATA.indication T_DATA.request

35 Transport Layer35 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

36 Transport Layer36 Automate d’état IDLE Passive establishment pending Active establishment Pending Establishment Connection request TPDU received Connection primitive executed Connection accepted TPDU received Connection primitive executed Passive disconnect pending Active disconnect pending IDLE Disconnect primitive executed Disconnect request TPDU received Disconnect primitive executedDisconnection request TPDU received Transitions déclenchées par des primitives locales ou des arrivées de TPDU

37 Transport Layer37 UDP

38 Transport Layer38 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 sur erreur. r Aucun contrôle sur le flot -> simplicité r Peu d’overhead, mécanisme minimaliste r Mode datagramme, non connecté (orienté message) r “multiplexer/demultiplexer'' pour envoyer/recevoir des datagrammes, en utilisant des ports pour diriger ces datagrammes. r Qualité “best effort” r création d’un paquet et transmission immédiate au niveau IP r Attention : pas de contrôle de congestion

39 Transport Layer39 UDP: User Datagram Protocol [RFC 768] 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 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

40 Transport Layer40 Communication entre les couches process 1process nprocess 2 UDP : démultiplexage de ports port xport yport z IP

41 Transport Layer41 Datagrammes UDP (1) r Port Source m indique le numéro de port du processus émetteur, m toute réponse y est dirigée.  Port Destinataire r Longueur : m nombre d'octets dans le datagramme entier (avec en-tête). m >8

42 Transport Layer42 Datagrammes UDP (2) r Contrôle d’erreur m Optionnel en IPv4, obligatoire en IPv6 m Pseudo-header + en-tête + données m IP IP destination protocole

43 Transport Layer43 UDP checksum 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 …. Goal: detect “errors” (e.g., flipped bits) in transmitted segment

44 Transport Layer44 Applications d’UDP  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

45 Transport Layer45 UDP: more r often used for streaming multimedia apps m loss tolerant m rate sensitive r other UDP uses (why?): m DNS m SNMP r reliable transfer over UDP: add reliability at application layer m application-specific error recover! source port # dest port # 32 bits Application data (message) UDP segment format length checksum Length, in bytes of UDP segment, including header

46 Transport Layer46 TCP

47 Transport Layer47 TCP r RFC Transmission Control Protocol r 90% du trafic r Principes m Bonne utilisation des ressources du réseau 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 Mode connecté et commutation de paquets m Orienté flux d’octets: application écrit des octets TCP émet des segments application lit des octets m Récepteur le plus simple possible -> complexité chez l’émetteur interopérabilité maximum recherchée r Utilisé parTELNET, FTP, HTTP …

48 Transport Layer48 Caractéristiques de TCP r Flot d’octets m Séquencés m Segmentation des données au niveau TCP r Circuit virtuel en mode connecté m La connexion est établie et considérée comme un circuit physique m 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 TCP Buffer émission Segment TSegments transmis Application process Octets lus TCP Buffer réception … ……

49 Transport Layer49 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

50 Transport Layer50 Caractéristiques de TCP r Fiabilité m Num é ro de s é quence m D é tection des pertes : Aquittements positifs (ACK) du r é cepteur -> OK Pas d ’ ACK -> timeout (temporisation) -> retransmission ACK dupliqu é m R é ordonnancement des paquets au r é cepteur m Elimination des paquets dupliqu é s m Checksum m Retransmissions : Selective repeat Go back N r Contrôle de flux par annonce de fenêtres m Fenêtre modulée par le récepteur m 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

51 Transport Layer51 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.  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.

52 Transport Layer52 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 TCP IP Buffer d’émission TCP header IP header

53 Transport Layer53 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 Valeur locale m 0 à 255 : well-known m 0 à 1023 : ports système m 1024 à : ports utilisateurs r Une socket TCP : m Triplet. r Une connexion TCP : m 2 sockets.

54 Transport Layer54 BSD Sockets r Primitives pour TCP utilisées par les UNIX BSD m 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) r Serveur : SOCKET -> BIND -> LISTEN -> ACCEPT … [SEND, RECEIVE]… -> CLOSE r Client : SOCKET –> BIND -> CONNECT … [SEND, RECEIVE]…-> CLOSE

55 Transport Layer55 Communication entre applications process 1 TCP port x IP Hôte 1 TCP port y IP Hôte 2 connexion socket Adresse IP connexion TCP fiable paquets IP non fiable process 2 TCP header port:x Données

56 Transport Layer56 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 m Ajuster le débit d’émission à la bande passante

57 Transport Layer57 Vie d’une Connexion r Si deux processus désirent communiquer, établissement d’une connexion TCP r Internet => best effort  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

58 Transport Layer58 É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 Process 2 Passive open attend une requête active Active OPEN Send SYN, seq=n Receive SYN Send SYN, seq=m, ACK=n+1 Receive SYN+ACK Send ACK=m+1

59 Transport Layer59 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

60 Transport Layer60 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

61 Transport Layer61 Exemple

62 Transport Layer62 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

63 Transport Layer63 Automate TCP CLOSED LISTEN Listen/- Close/- RST/- SYN/SYN+ACKSimultaneous open ESTABLISHED ACK/- SYN+ACK/ACK CLOSE/FIN FIN WAIT 1 FIN WAIT 2 CLOSING TIME WAIT ACTIVE CLOSE FIN/ACK FIN+ACK/ACK ACK/- FIN/ACK ACK/- CLOSE WAIT LAST ACK PASSIVE CLOSE CLOSE/FIN FIN/ACK SYN RCVDSYN SENT Connect/SYN Close/- Send/SYN SYN/SYN+ACK ACK/- CLOSED Timeout/-

64 Transport Layer64 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) Acknowledgement + Advertised Window SenderReceiver

65 Transport Layer65 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 Lancer nam ici Data récepteurémetteur Data Envoi du paquet 1 Réception ACK Envoi paquet 2 ACK Réception paquet 1 Envoi ACK 1

66 Transport Layer66 Contrôle de flux TCP 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 Transmis et acquitté Transmis non acquitté Non transmisNon transmissible Fenêtre annoncée

67 Transport Layer67 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

68 Transport Layer68 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 émetteurrécepteur DATA 6 DATA 1 DATA 2 DATA 3 DATA 4 DATA fenêtre glissante ACK2

69 Transport Layer69 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

70 Transport Layer70 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) AB ACK2 DT2 DT3 DT4 ACK3 DT0 DT1 DT3

71 Transport Layer71 La reprise sur erreurs r Exemples m Paquet 2 perdu: 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 émetteurrécepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 ACK2 T DATA 2 ACK6 émetteur récepteur DATA 1 DATA 2 DATA 3 DATA 4 DATA 5 ACK2 ACK3 ACK4

72 Transport Layer72 SenderReceiver Segment 1 (seq. 1000) 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 Receive ACK 1500 which does not slide the window Timeout -> retransmission Of segment 2 Receives one of the frames and replies with ACK 1500 Exemple de reprise sur erreurs

73 Transport Layer73 TCP: retransmission scenarios Host A Seq=92, 8 bytes data ACK=100 loss timeout time lost ACK scenario Host B X Seq=92, 8 bytes data ACK=100 Host A Seq=100, 20 bytes data ACK=100 Seq=92 timeout time premature timeout, cumulative ACKs Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=100 timeout ACK=120

74 Transport Layer74 TCP ACK generation [RFC 1122, RFC 2581] Event in-order segment arrival, no gaps, everything else already ACKed in-order segment arrival, no gaps, one delayed ACK pending out-of-order segment arrival higher-than-expect seq. # gap detected arrival of segment that partially or completely fills gap TCP Receiver action delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK immediately send single cumulative ACK send duplicate ACK, indicating seq. # of next expected byte immediate ACK if segment starts at lower end of gap

75 Transport Layer75 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

76 Transport Layer76 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

77 Transport Layer77 TCP et Long Fat Networks  Performance maximum si l’émetteur toujours en activité m Eviter l’épuisement de la numérotation en séquence durée de rebouclage > MSL Seq number: 32 bits m Eviter la fermeture de la fenêtre 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 m Cas des Long Fat Networks: r Extension TCP pour les LFNs (RFC1323) m facteur d’échelle sur la fenêtre d’émission m ajout d’une estampille temporelle sur 32 bits

78 Transport Layer78 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

79 Transport Layer79 Ajustement des timeouts: Contrôle d’erreur r Temporisateur de retransmission adaptatif m Mesure de RTT et en déduire une estimation 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 retransmission Algorithme Err = SampleRTT - EstRTT EstRTT = EstRTT + (  x Err) Var = Var +  (|Err| - Var) Prise en compte de la variance Temporisateur =  x EstRTT +  x Var Où  = 1 et  = 4

80 Transport Layer80 TCP Round Trip Time and Timeout Q: how to set TCP timeout value? r longer than RTT m note: RTT will vary r too short: premature timeout m unnecessary retransmissions r too long: slow reaction to segment loss Q: how to estimate RTT?  SampleRTT : measured time from segment transmission until ACK receipt m ignore retransmissions, cumulatively ACKed segments  SampleRTT will vary, want estimated RTT “smoother”  use several recent measurements, not just current SampleRTT

81 Transport Layer81 TCP Round Trip Time and Timeout EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT r Exponential weighted moving average r influence of given sample decreases exponentially fast r typical value of x: 0.1 Setting the timeout  EstimtedRTT plus “safety margin”  large variation in EstimatedRTT -> larger safety margin Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT|

82 Transport Layer82 TCP congestion control: r two “phases” m slow start m congestion avoidance r important variables:  Congwin  threshold: defines threshold between two slow start phase, congestion control phase r “probing” for usable bandwidth:  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

83 Transport Layer83 r Congestion m Goulot d'étranglement Contrôle de congestion Réponses: - niveau réseau: gestion des ressources - niveau transport: adaptation du débit temps de transfert trafic offert Routeur Réseau 1 Réseau 3 Réseau 2 routeur Datagrammes en attente de relayage Effondrement des performances

84 Transport Layer84 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

85 Transport Layer85 Causes/costs of congestion: scenario 2 r one router, finite buffers r sender retransmission of lost packet

86 Transport Layer86 Causes/costs of congestion: scenario 2 r always: (goodput) r “perfect” retransmission only when loss: r retransmission of delayed (not lost) packet makes larger (than perfect case) for same in out = in out > in out “costs” of congestion: r more work (retrans) for given “goodput” r unneeded retransmissions: link carries multiple copies of pkt

87 Transport Layer87 Causes/costs of congestion: scenario 3 r four senders r multihop paths r timeout/retransmit in Q: what happens as and increase ? in

88 Transport Layer88 Causes/costs of congestion: scenario 3 Another “cost” of congestion: r when packet dropped, any “upstream transmission capacity used for that packet was wasted!

89 Transport Layer89 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 Two broad approaches towards congestion control:

90 Transport Layer90 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: auto- synchronisation 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 congestion

91 Transport Layer91 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 phase 1: slow start Après une perte détectée par expiration de temporisation m phase 2: congestion avoidance m En cas de perte: réduction de la taille de la fenêtre et récupération m Récupération : fast recovery Après une perte détectée par retransmission rapide (fast retransmit)

92 Transport Layer92 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.

93 Transport Layer93 Slow Start r Fenêtre glissante et taille variable de la fenêtre r Croissance exponentielle de la taille de la fenêtre (x2 à chaque fois que les paquets sont transmis correctement) m Augmentation de 1 segment à chaque acquittement r Lancer nam ici Lancer nam ici

94 Transport Layer94 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

95 Transport Layer95 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 m 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) r Avant ces mécanismes : simple-pre-vj.nam r Lancer nam (multiplicative decrease) ici Lancer nam (multiplicative decrease) ici r Lancer simple.avi ici ou nam (simple.nam) Lancer simple.avi ici

96 Transport Layer96 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 Lancer biais.avi

97 Transport Layer97 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)

98 Transport Layer98 Fast retransmit r Modification de congestion avoidance m 3 DUPACKs -> paquet supposé perdu et donc retransmission m 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 Lancer nam ici

99 Transport Layer99 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 Lancer nam ici r Comparaison avec drop tail

100 Transport Layer100 Delayed ACKs r Possibilité d’acquitter plusieurs paquets d’un coup r Lancer nam ici Lancer nam ici

101 Transport Layer101 Contrôle de congestion r Evolution de cwnd

102 Transport Layer102 TCP Congestion Avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Congestion avoidance 1 1: TCP Reno skips slowstart (fast recovery) after three duplicate ACKs

103 Transport Layer103 Segment TCP  Port source (16 bits) : le numéro de port de la source.  Port Destination (16 bits) : Le numéro de port du destinataire.  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.  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é.

104 Transport Layer104 Segment TCP  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 dans l'accusé de réception que le récepteur est capable de recevoir.

105 Transport Layer105 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 (65535o avec entête TCP, MTU) r Un segment doit tenir dans le MTU m Pour IPv4, la MTU minimale est 556 octets (payload TCP de 536 octets)

106 Transport Layer106 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

107 Transport Layer107 TCP Fairness Fairness goal: if N TCP sessions share same bottleneck link, each should get 1/N of link capacity TCP congestion avoidance: r AIMD: additive increase, multiplicative decrease m increase window by 1 per RTT m decrease window by factor of 2 on loss event AIMD TCP connection 1 bottleneck router capacity R TCP connection 2

108 Transport Layer108 Why is TCP fair? Two competing sessions: r Additive increase gives slope of 1, as throughout increases r multiplicative decrease decreases throughput proportionally R R equal bandwidth share Connection 1 throughput Connection 2 throughput congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2

109 Transport Layer109 TCP latency modeling Q: How long does it take to receive an object from a Web server after sending a request? r TCP connection establishment r data transfer delay Notation, assumptions: r Assume one link between client and server of rate R r Assume: fixed congestion 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 window’s worth of data sent

110 Transport Layer110 TCP latency Modeling Case 1: latency = 2RTT + O/R Case 2: latency = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] K:= O/WS

111 Transport Layer111 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.

112 Transport Layer112 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.

113 Transport Layer113 TCP Latency Modeling: Slow Start (cont.)

114 Transport Layer114 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.

115 Transport Layer115 Chapter 3: Summary r principles behind transport layer services: r instantiation and implementation in the Internet m UDP m TCP


Télécharger ppt "Transport Layer1 les protocoles de transport TCP et UDP."

Présentations similaires


Annonces Google