TCP: Panoramica RFC: 793, 1122, 1323, 2018, 2581

Documenti analoghi
TCP: Panoramica RFC: 793, 1122, 1323, 2018, 2581

URG: dati urgenti (solitam. non usato) ACK: ACK # valido PSH: push data now (solitam. non usato)

Telematica di Base. IL Livello di Trasporto TCP

TCP: rassegna RFCs: 793, 1122, 1323, 2018, 2581

Reti di Calcolatori:

TCP: generalità RFCs: 793, 1122, 1323, 2018, 2581

Livello trasporto. Controllo del flusso e della congestione

Controllo della congestione

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Programmazione in Rete

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Il livello trasporto: controllo di congestione in TCP

Livello di trasporto: TCP, controllo flusso, controllo congestione

Reti di Calcolatori:

TCP: apertura della connessione. Apertura connessione (handshake)

Transport Layer & TCP/UDP

Controllo di congestione

Telematica di Base. Il livello di trasporto

Transmission Control Protocol: TCP

Reti di Calcolatori in Tecnologia IP

Reti di Calcolatori I. Prof. Roberto Canonico Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Livello di trasporto: meccanismi trasferimento dati affidabile (2), TCP

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Parte II: Reti di calcolatori Lezione 14 (38)

PARTE 5 LIVELLO TRASPORTO. - Protocolli UDP e TCP. Parte 5. Modulo 1: Servizi del livello trasporto

Controllo di congestione

Controllo di congestione

Architetture di Internet esercizi livello di Trasporto

I protocolli UDP e TCP

Parte II: Reti di calcolatori Lezione 15 (39)

Livello di trasporto: TCP

Strato di Trasporto TCP

Reti di calcolatori TCP/IP. Slide a cura di Simon Pietro Romano

Marco Listanti. Telecomunicazioni e Telerilevamento - Prof. Marco Listanti - A.A. 2010/2011. INFOCOM Dept

Il livello Trasporto si occupa di come avviene lo scambio dei dati tra mittente e destinatario, gestisce quindi l invio e la ricezione dei dati.

Il Livello Trasporto III 3. Corso di RETI DI CALCOLATORI (9 CFU) a.a II anno / II semestre. Il Livello Trasporto. Il Livello Trasporto

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

Parte II: Reti di calcolatori Lezione 13 (37)

Reti di Calcolatori:

Argomenti: ! Servizi dello strato di trasporto! multiplexing/demultiplexing! Servizio senza connessione: UDP

Riferimenti. I protocolli TCP e UDP. Sorgente TCP. Principi Fondamentali. TCP header. Ricevitore TCP

Livello di trasporto e TSAP

Strato di Trasporto Multiplazione a livello di trasporto

Capitolo 3 Livello di trasporto

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

Lo sniffer. questo sconosciuto! Corso di Reti di Calcolatori Architetture e Servizi A.A. 2010/11. Introduzione allo sniffing TCP

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Reti e Protocolli rassegna (II)

DNS: Domain Name System

Livello trasporto. Servizi del livello trasporto

Modelli analitici per l analisi delle prestazioni del protocollo TCP

Lezione n.3 LIVELLO TRASPORTO

Implementazioni tipiche del protocollo TCP

Parte II: Reti di calcolatori Lezione 14 (38)

Chapter 3 Transport Layer

Reti di Comunicazione e Internet

Capitolo 3 Livello di trasporto

Il Livello Trasporto. Multiplexing/demultiplexing. Multiplexing/demultiplexing. Multiplexing/demultiplexing: esempi. Servizi e protocolli di Trasporto

Recupero I Prova in itinere - Rete Internet (ing. Giovanni Neglia) Lunedì 25 Giugno 2007

Il livello trasporto: Introduzione e protocollo UDP

Commutazione di circuito

Il livello 4: TCP, UDP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Reti di Calcolatori e Laboratorio - Compito del 15 Gennaio 2013

Capitolo 3 - parte 3. Corso Reti ed Applicazioni Mauro Campanella

Esercitazione. Livello di Trasporto [Capitolo 3]

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

Parte II: Reti di calcolatori Lezione 13

Controllo di Congestione in Reti Internet Docente: Vincenzo Eramo

Capitolo 10 Lo Strato di Trasporto in Internet. Baccarelli, Cordeschi, Patriarca, Polli

Livello di Trasporto

Il livello trasporto: controllo di flusso in TCP

Livello trasporto in Internet

Parte II: Reti di calcolatori Lezione 12 (36)

TCP: Panoramica RFC: 793, 1122, 1323, 2018, 2581

Reti di Calcolatori e Laboratorio - Compito del 12 Gennaio 2012

Corso di Reti di Telecomunicazioni

Il Livello Trasporto. Multiplexing/demultiplexing. Multiplexing/demultiplexing. Multiplexing/demultiplexing: esempi. Servizi e protocolli di Trasporto

Lo strato di Trasporto

Parte II: Reti di calcolatori Lezione 14 (38)

1) (commutazione pacchetto, prodotto banda-ritardo) 2) (frammentazione, commutazione di pacchetto) 3) (Selective Repeat)

Livello trasporto in Internet

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Lunedì 20 Febbraio 2006

Capitolo 3 - parte 4. Corso Reti ed Applicazioni Mauro Campanella

Soluzione dell esercizio 2 (TCP) dell esame del 16 giugno 2015

Protocolli di Trasporto in reti IP

Parte II: Reti di calcolatori Lezione 12

TCP/IP: summary. Lorenzo Cavallaro, Andrea Lanzi

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 6 Luglio 2005

Gestione della Connessione in TCP

KR_3. Strato di Trasporto

Analisi dell avvio del TCP su canali satellitari a larga banda. Candidato Giovanni Verrecchia

Il livello di trasporto

Prestazioni. aumentare l intervallo dei numeri di sequenza dotare sender e receiver di buffer per memorizzare i pacchetti non riscontrati

Prestazioni stop-and-wait. Prestazioni

Transcript:

socket door : Panoramica FC: 793, 1122, 1323, 2018, 2581 punto-punto: un mittente, un destinatario flusso di byte affidabile e ordinato protocollo pipeline: il controllo di flusso e di congestione definisce la dimensione della window buffer send & receive application writes data send buffer segment application reads data receive buffer dati full duplex : Flusso bi-direzionale nella stessa connessione MSS: maximum segment size connection-oriented: handshaking per inizializzarelo stato del mittente e destinatario flusso controllato: Il mittente non sovraccarica il door destinatario socket Il LivelloTrasporto 3b-1 : struttura del segmento UG: dati urgenti (solitam. non usato) : # valido PSH: push data now (solitam. non usato) ST, SYN, : connessione stabilita (comandi di setup, tear down) Internet checksum (come in UDP) 32 bits source port # dest port # sequence number acknowledgement number head UAP len used not S F rcvr window size checksum ptr urgent data ptions (variable length) application data (variable length) counteggio dei byte di dati (non segmenti!) # bytes che dest. vuole accettare Il LivelloTrasporto 3b-2 : Connessione icordate: nel si stabilisce una connessione prima di scambiare segmenti dati inizializzarevariabili : seq. # info buffers, controllo flusso (es., cvwindow) : avvia connessione Socket Socket = new Socket("hostname","port number"); :contattato da Socket connectionsocket = welcomesocket.accept(); Three way handshake: Passo 1: il invia un SYN al SYN=1, specifica il seq # iniziale Passo 2: il riceve SYN, risponde SYN alloca buffers del SYN, specifica -> seq. # iniziale Passo 3: ric. SYN alloca buffers invia riscontro (SYN = 0, seq# =iniziale1, del seq# 1) : Connessione (cont.) Chiusura connessione: closes socket: Socket.close(); Passo 1: il invia al Passo 2: il riceve, replica con. Chiudela connessione, invia. close timed wait closed close Il LivelloTrasporto 3b-3 Il LivelloTrasporto 3b-4 : Connessione (cont.) : Connessione (cont) Passo 3: il riceve, replica con. Entra in attesa risponde con ai ricevuti Passo 4:, riceve. chiudela connessione Nota: con poche modifiche, può gestire simultanei closing timed wait closed closing closed Ciclo di vita Ciclo di vita Il LivelloTrasporto 3b-5 Il LivelloTrasporto 3b-6

seq. # e 0 999, 1.000 1.999, 2.000 499.999 : fornisce riscontri cumulativi : non ci sono regole fisse nello standard per i segmenti fuori ordine. Il LivelloTrasporto 3b-7 seq. # e Seq. #: numero del primo byte neidati del segmento (primo # scelto a caso) : seq # del prossimo byte atteso cumulativi D:come ildestin tratta segm. fuori ordine? : le specifichedel non lo dicono, dipende dalla implementazione L utente digita C L host riscontra l eco Host A Host B Seq=42, =79, data = C Seq=79, =43, data = C Seq=43, =80 L host riscontra C, fa eco Di C tempo Un semplice scenario telnet Il LivelloTrasporto 3b-8 : trasferimentoaffidabile evento: ricezione dati dall applicazione crea e invia un segmento wait attesa for evento evento: ricevuto con # y Esamina evento: timeout per il segmento con seq # y ritrasmette segmento mittente semplice, assumendo trasferimento one way nessun controllo di flusso o congestione Il LivelloTrasporto 3b-9 : trasferim affidabile mittente semplificato 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: data received from application above 06 create segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compue new timeout interval for segment y 13 restart timer for sequence number y 14 event: received, with field value of y 15 if (y > sendbase) { /* cumulative of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate for already ed segment */ 20 increment number of duplicate s received for y 21 if (number of duplicate S received for y == 3) { 22 /* fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ Il LivelloTrasporto 3b-10 : generaz. [FC 1122, FC 2581] : ritrasmissione Evento arrivo ordinato segmenti, non ci sono buchi, tutto il resto già riscontrato arrivo ordinato segmenti, non ci sono buchi, un ritardato sospeso azioni del destinatario ritardato. Attendi 500ms per prossimo segmento. Se non arriva, Invia Invia immediatamente un singolo cumulativo timeout Host A Host B X loss =100 Seq=100 timeout Seq=92 timeout Host A Host B Seq=100, 20 bytes data =100 =120 arrivo segmento fuori ordine seq. # maggiore di quello atteso rilevato un buco (gap) invia duplicato che indica il seq. # del prossimo byte atteso =100 =120 arrivo di un segmento che colma partialmente o completamente il gap immediato se il segmento inizia all estremo inferiore del gap tempo Scenario di perso tempo timeout prematuro, cumulativi Il LivelloTrasporto 3b-11 Il LivelloTrasporto 3b-12

: ControlloFlusso ound Trip Time e Timeout flow control il mittentenon sovrac. il buffer del destin. transmettendotroppo, troppo in fretta Destinat.: informa esplicitam. mittente dello spazio disponibile (cambia dinamicam.) campo cvwindow nel segmento cvbuffer = dimensione eceive Buffer LastBytecvd LastByteead <= cvbuffer cvwindow = quantitàdi spazio rimasto nel Buffer Mittente: fa si che i dati trasmessi ma non riscontrati < del più recente cvwindow ricevuto D: come si stabilisce il valoredel timeout? Maggioredi nota: varia Troppo breve: timeout prematuro itrasmissioni inutili Troppo lungo: reazione lenta allo smarrimento di segmenti D: Come stimare? Sample: misura del tempo dalla trasmissione del segmento fino alla ricezionedell ignora ritrasmissioni, cumulativi Sample varia, occorre stimare in maniera opportuna media di moltemisurerecenti e non solo del Sample corrente Buffer destinatario LastByteSent LastByteAcked <= cvwindow Il LivelloTrasporto 3b-13 Il LivelloTrasporto 3b-14 ound Trip Time e Timeout Principi di Controllo Congestione Estimated = (1-x)*Estimated x*sample media variabile pesata esponenzialmente influenza di un dato campione diminuisce esponenzialm. Valore tipicodi x: 0.1 Impostazione del timeout Estimated più margine di sicurezza Ampie variazioni Estimated -> margine di sicurezza maggiore Timeout = Estimated 4*Deviation Deviation = (1-x)*Deviation x* Sample-Estimated Il LivelloTrasporto 3b-15 Congestione: informalmente: troppe sorgenti che inviano troppi dati troppo in fretta perché la rete siain grado di gestirli È diverso dal controllo di flusso! effetti : Pacchetti persi (a causa dell overflow del buffer ai router) itardi lunghi (a causa delle code nei buffer dei router) Un problema nella top-10! Il LivelloTrasporto 3b-16 Cause/costi congestione: scenario 1 Due mittenti, due destinatari un router, buffer infinito No ritrasmissioni Cause/costi congestione: scenario 2 un router, buffer finito itrasmissione dei pacchetti persi grossi ritardi in caso congestione massimo throughput ottenibile Il LivelloTrasporto 3b-17 Il LivelloTrasporto 3b-18

Cause/costi congestione: scenario 2 sempre: λ = (goodput) in λ out ritrasmissione perfetta solo quando: λ > in λ out ritrasmissione dei pacchetti ritardati (non persi) rende λ più in lungo (del caso perfetto) per alcuni λ out Cause/costi congestione: scenario 3 quattro mittenti Percorsi multihop timeout/retransmit D: cosa succedese λ in e aumentano? λ in costi della congestione: più lavoro (ritrasm) per un dato goodput ritrasmissioni non necessarie: più copiedel pkt sul link Il LivelloTrasporto 3b-19 Il LivelloTrasporto 3b-20 Cause/costi congestione: scenario 3 Approcci per il controllo congestione Due approcci principali: Un altro costo della congestione: Quando un pacchetto viene scartato, ogni capacità di trasmissione upstream usata per il pacchetto viene sprecata! Il LivelloTrasporto 3b-21 Controllo end-to-end : Non c è feedback esplicito dalla rete stato congestione ricavato dai livelli di perdita e ritardoosservati agli endsystem L approcciodel Controllo network-assisted: I router forniscono feedback agli end system Un bit indicala congestione (SNA, DECbit, /IP ECN, ATM) Vienespecificato esplicitamentea quale velocità il mittente deve trasmettere Il LivelloTrasporto 3b-22 Studio di un Caso: controllo congestione dell ATM (AB) Studio di un Caso: controllo congestione dell ATM (AB) AB: available bit rate: servizio elastico se il percorso del mittente è scarico : Il mittendedeve usarela banda disponibile se il percorso mittente è congestionato : Il mittenteviene riportata ad una velocità minima garantita celle di M (resource management) : Il mittente le mischia con le celle dati bits nella cella M scritti dagli switch ( network-assisted ) NI bit: non aumentare la velocità (mild congestion) CI bit:congestion indication Le cellem vengono restituite dal destinatario con i bit inalterati Il LivelloTrasporto 3b-23 campo di due-byte E (explicit rate) nella cella M uno switch in congestione può diminuireilvaloredi E nelle celle dati c èil bit EFCI: posto a 1 negli switch congestionati se la cella dati cheprecede la cella M ha EFCI, il mittente pone il bit CI a 1 nella cella M di ritorno Il LivelloTrasporto 3b-24

Controllo Congestione del Controllo Congestione del : controllo end-to-end (nientefeedback da network) La velocità transmissiva è limitata dalla dimensione della finestra di congestione, Congwin, suisegmenti: Congwin w segmenti, ciascuno inviamss bytes in un : throughput = w * MSS Bytes/sec sondando la disponibilità di banda: idealmente: trasmetti il più velocmente possibile (Congwin il più ampia possibile) senza perdite incrementa Congwin finché iniziano le perdite(congestione) congestione: decrementacongwin, poi inizia a sondare di nuovo due fasi slow start congestion avoidance variabili importanti: Congwin threshold: definisce la soglia tra le due fasi di slow start e congestion control Il LivelloTrasporto 3b-25 Il LivelloTrasporto 3b-26 Slowstart algoritmo Slowstart initialize: Congwin = 1 for (each segment ed) Congwin until (loss event CongWin > threshold) Incremento esponenziale (per ) nel window size (non è poi così lento!) evento loss : timeout (Tahoe ) and/or tre duplicati (eno ) Host A Host B one segment two segments four segments time Il LivelloTrasporto 3b-27 Congestion Avoidance Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ed: Congwin } threshold = Congwin/2 Congwin = 1 1 perform slowstart 1: eno salta lo slowstart (fast recovery) dopo tre duplicati Il LivelloTrasporto 3b-28 AIMD congestion avoidance: AIMD: additive increase, multiplicative decrease Aumenta la window di 1 per Decrementa la window di un fattore 2 se c è congestione : Equità (Fairness) obiettivi della Fairness: se N sessioni condividono lo stesso link, ciascuna deve ottenere 1/N della capacità del link connection 1 connection 2 bottleneck router capacity Il LivelloTrasporto 3b-29 Perchè il è equo? Due sessioni in competizione: L additive increase da pendenza1, se il throughput cresce Il multiplicative decreaseriduceilthroughput proporzionalmente throughput Connessione 2 Equa condivisione della banda throughput Connessione 1 loss: riduce la window di un fattore 2 congestion avoidance: additive increase loss: riduce la window di un fattore 2 congestion avoidance: additive increase Il LivelloTrasporto 3b-30

: modello di latenza latency Modeling K:= /WS D: Quanto tempo occorre per ricevereun oggetto da un Web dopo aver inviato una richiesta? Stabilireuna connessione itardotrasferimento dati Notazioni, assunzioni : Un solo link tra e di velocità Window di congestione fissa, W segmenti S: MSS (bits) : size (bits) no ritrasmissioni (no loss, no corruption) due casi da considerare: WS/ > S/: del primo segmento nella window torna prima WS/ < S/: aspetta dopo aver spedito ilvaloredella finestra dati inviata Il LivelloTrasporto 3b-31 Case 1:latency = 2 / Case 2: latency = 2 / (K-1)[S/ - WS/] Il LivelloTrasporto 3b-32 Latency Modeling: Slow Start Latency Modeling: Slow Start (cont.) Now suppose window grows according to slow start. Will show that the latency of one of size is: Example: initiate connection S P S Latency = 2 P (2 1) where P is the number of times stalls at : /S = 15 segments K = 4 windows Q = 2 request first window = S/ second window = 2S/ P = min{ Q, K 1} - where Q is the number of times the would stall if the were of infinite size. P = min{k-1,q} = 2 Server stalls P=2 times. third window = 4S/ fourth window = 8S/ - and K is the number of windows that cover the. delivered complete transmission Il LivelloTrasporto 3b-33 Il LivelloTrasporto 3b-34 S Latency Modeling: Slow Start (cont.) = time from when starts tosendsegment S k 2 1 S = stall timeafter thekth window latency = 2 until receives acknowledgement k 2 1 S = time to transmit thekth window = 2 p P = 1 P k= 1 stalltime S k [ 2 S ] S P S = 2 P[ ] (2 1) p 1 initiate connection request delivered first window = S/ Il LivelloTrasporto 3b-35 second window = 2S/ third window = 4S/ fourth window = 8S/ complete transmission Chapter 3: Summary principles behind transport layer services: multiplexing/demultiplexing reliable data transfer flow control congestion control instantiation and implementation in the Internet UDP Next: leaving the network edge (application transport layer) into the network core Il LivelloTrasporto 3b-36