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 socket door dati full duplex : Flusso bi-direzionale nella stessa connessione M: maximum segment size connection-oriented: handshaking per inizializzare lo stato del mittente e destinatario flusso controllato: Il mittente non sovraccarica il destinatario Il Livello Trasporto 3b-1 : struttura del segmento UG: dati urgenti (solitam. non usato) : # valido PH: push data now (solitam. non usato) T, YN, : connessione stabilita (comandi di setup, tear down) Internet checksum (come in UDP) 32 bits source port # dest port # sequence number acknowledgement number head not UA P rcvr window size len used F checksum ptr urgent data ptions (variable length) application data (variable length) counteggio dei byte di dati (non segmenti!) # bytes che dest. vuole accettare Il Livello Trasporto 3b-2 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 Livello Trasporto 3b-3 seq. # e eq. #: numero del primo byte nei dati del segmento (primo # scelto a caso) : seq # del prossimo byte atteso cumulativi D: come il destin tratta segm. fuori ordine? : le specifiche del non lo dicono, dipende dalla implementazione L utente digita C L host riscontra l eco Host A eq=42, =79, data = C Host B eq=79, =43, data = C eq=43, =80 L host riscontra C, fa eco Di C tempo Un semplice scenario telnet Il Livello Trasporto 3b-4 : trasferimento affidabile 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 Livello Trasporto 3b-5 : 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 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 Livello Trasporto 3b-6 1
: 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. e non arriva, Invia Invia immediatamente un singolo cumulativo t imeout Host A Host B eq=92, 8 bytes data X loss =100 eq=92, 8 bytes data eq=100 t imeout eq=92 t imeout Host A Host B eq=92, 8 bytes data eq=100, 20 bytes data =100 =120 eq=92, 8 bytes data 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 cenario di perso tempo timeout prematuro, cumulativi Il Livello Trasporto 3b-7 Il Livello Trasporto 3b-8 : Controllo Flusso ound Trip Time e Timeout flow control il mittente non sovrac. il buffer del destin. transmettendo troppo, troppo in fretta cvbuffer = dimensione eceive Buffer cvwindow = quantità di spazio rimasto nel Buffer LastBytecvd Destinat.: informa esplicitam. mittente dello spazio disponibile (cambia dinamicam.) campo cvwindow nel segmento LastByteead <= cvbuffer Mittente: fa si che i dati trasmessi ma non riscontrati < del più recente cvwindow ricevuto D: come si stabilisce il valore del timeout? Maggiore di TT nota: TT varia Troppo breve: timeout prematuro itrasmissioni inutili Troppo lungo: reazione lenta allo smarrimento di segmenti D: Come stimare TT? amplett: misura del tempo dalla trasmissione del segmento fino alla ricezione dell ignora ritrasmissioni, cumulativi amplett varia, occorre stimare TT in maniera opportuna media di molte misure recenti e non solo del amplett corrente Buffer destinatario LastByteent LastByteAcked <= cvwindow Il Livello Trasporto 3b-9 Il Livello Trasporto 3b-10 ound Trip Time e Timeout EstimatedTT = (1-x)*EstimatedTT + x*amplett media variabile pesata esponenzialmente influenza di un dato campione diminuisce esponenzialm. Valore tipico di x: 0.1 Impostazione del timeout EstimatedTT più margine di sicurezza Ampie variazioni EstimatedTT -> margine di sicurezza maggiore Timeout = EstimatedTT + 4*Deviation Deviation = (1-x)*Deviation + x* amplett-estimatedtt Il Livello Trasporto 3b-11 : Connessione icordate: nel si stabilisce una connessione prima di scambiare segmenti dati initializzare variabili : seq. # info buffers, controllo flusso (es., cvwindow) : avvia connessione ocket ocket = new ocket("hostname","port number"); : contattato da ocket connectionocket = welcomeocket.accept(); Three way handshake: Passo 1: il invia un YN al YN=1, specifica il seq # iniziale Passo 2: il riceve YN, risponde YN alloca buffers del YN, specifica -> seq. # iniziale Passo 3: ric. YN alloca buffers invia riscontro (YN = 0, seq# =iniziale+1, del seq# +1) Il Livello Trasporto 3b-12 2
: Connessione (cont.) : Connessione (cont.) Chiusura connessione: closes socket: ocket.close(); Passo 1: il invia al Passo 2: il riceve, replica con. Chiude la connessione, invia. close t imed wait closed close Passo 3: il riceve, replica con. Entra in attesa risponde con ai ricevuti Passo 4:, riceve. chiude la connessione Nota: con poche modifiche, può gestire simultanei closing t imed wait closed closing closed Il Livello Trasporto 3b-13 Il Livello Trasporto 3b-14 : Connessione (cont) Principi di Controllo Congestione Ciclo di vita Ciclo di vita Il Livello Trasporto 3b-15 Congestione: informalmente: troppe sorgenti che inviano troppi dati troppo in fretta perché la rete sia in 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 Livello Trasporto 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 Livello Trasporto 3b-17 Il Livello Trasporto 3b-18 3
Cause/costi congestione: scenario 2 Cause/costi congestione: scenario 3 sempre: = (goodput) in out ritrasmissione perfetta solo quando: > in out ritrasmissione dei pacchetti ritardati (non persi) rende lungo (del caso perfetto) per alcuni out più in quattro mittenti Percorsi multihop timeout/retransmit D: cosa succede se e in aumentano? in costi della congestione: più lavoro (ritrasm) per un dato goodput ritrasmissioni non necessarie: più copie del pkt sul link Il Livello Trasporto 3b-19 Il Livello Trasporto 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 Livello Trasporto 3b-21 Controllo end-to-end : Non c è feedback esplicito dalla rete stato congestione ricavato dai livelli di perdita e ritardo osservati agli endsystem L approccio del Controllo network-assisted: I router forniscono feedback agli end system Un bit indica la congestione (NA, DECbit, /IP ECN, ATM) Viene specificato esplicitamente a quale velocità il mittente deve trasmettere Il Livello Trasporto 3b-22 tudio di un Caso: controllo congestione dell ATM (AB) tudio di un Caso: controllo congestione dell ATM (AB) AB: available bit rate: servizio elastico se il percorso del mittente è scarico : Il mittende deve usare la banda disponibile se il percorso mittente è congestionato : Il mittente viene 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 celle M vengono restituite dal destinatario con i bit inalterati Il Livello Trasporto 3b-23 campo di due-byte E (explicit rate) nella cella M uno switch in congestione può diminuire il valore di E nelle celle dati c è il bit EFCI: posto a 1 negli switch congestionati se la cella dati che precede la cella M ha EFCI, il mittente pone il bit CI a 1 nella cella M di ritorno Il Livello Trasporto 3b-24 4
Controllo Congestione del Controllo Congestione del : controllo end-to-end (niente feedback da network) La velocità transmissiva è limitata dalla dimensione della finestra di congestione, Congwin, sui segmenti: Congwin w segmenti, ciascuno invia M bytes in un TT: throughput = w * M TT 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: decrementa Congwin, 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 Livello Trasporto 3b-25 Il Livello Trasporto 3b-26 lowstart algoritmo lowstart initialize: Congwin = 1 for (each segment ed) Congwin++ until (loss event CongWin > threshold) Incremento esponenziale (per TT) nel window size (non è poi così lento!) evento loss : timeout (Tahoe ) and/or tre duplicati (eno ) TT Host A Host B one segment two segments four segments time Il Livello Trasporto 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 Livello Trasporto 3b-28 AIMD congestion avoidance: AIMD: additive increase, multiplicative decrease Aumenta la window di 1 per TT 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 Livello Trasporto 3b-29 Perchè il è equo? Due sessioni in competizione: L additive increase da pendenza 1, se il throughput cresce Il multiplicative decrease riduce il throughput proporzionalmente t hr oughput 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 Livello Trasporto 3b-30 5
: modello di latenza latency Modeling K:= /W D: Quanto tempo occorre per ricevere un oggetto da un Web dopo aver inviato una richiesta? Notazioni, assunzioni: Un solo link tra e di velocità Window di congestione fissa, W segmenti : M (bits) : size (bits) no ritrasmissioni (no loss, no corruption) due casi da considerare: W/ > TT + /: del primo segmento nella window torna prima W/ < TT + /: aspetta dopo aver tabilire una connessione itardo trasferimento dati spedito il valore della finestra dati inviata Il Livello Trasporto 3b-31 Case 1: latency = 2TT + / Case 2: latency = 2TT + / + (K-1)[/ + TT - W/] Il Livello Trasporto 3b-32 Latency Modeling: low tart Now suppose window grows according to slow start. Will show that the latency of one of size is: Latency 2TT P TT (2 P 1) where P is the number of times stalls at : P min{ Q, K 1} - where Q is the number of times the would stall if the were of infinite size. Latency Modeling: low tart (cont.) Example: / = 15 segments K = 4 windows Q = 2 P = min{k-1,q} = 2 erver stalls P=2 times. initiate connection request first window = / TT second window = 2/ third window = 4/ fourth window = 8/ - and K is the number of windows that cover the. delivered complete transmission Il Livello Trasporto 3b-33 Il Livello Trasporto 3b-34 latency Latency Modeling: low tart (cont.) TT k 2 1 TT k 2 1 stall time after the kth window time from when starts to send segment until receives acknowledg ement time to transmit the kth window 2TT p P 1 stalltime 2TT k 1 [ TT 2 ] P k 1 2TT P[ TT P ] (2 1) p initiate connection request delivered TT first window = / second window = 2/ third window = 4/ fourth window = 8/ complete transmission Il Livello Trasporto 3b-35 Chapter 3: ummary 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 Livello Trasporto 3b-36 6
This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.