Università degli Studi di Modena e Reggio Emilia Dipartimento di Ingegneria dell’Informazione TCP: Algoritmi di Slow Start, Congestion Avoidance, Fast Retransmit, And Fast Recovery y rfc 2001 M.L. Merani TCP algoritmi M LM 1 Premessa Le moderne implementazioni del TCP contengono quattro algoritmi “intertwined” ¾ ¾ ¾ ¾ Slow Start g Avoidance Congestion Fast Retransmit Fast Recovery TCP algoritmi M LM 2 Sl Slow St Startt Condotta con successo a termine la fase di connection establishment, il TCP entra nella fase di slow start ¾ Algoritmo corrispondente è basato sull’introduzione di una nuova finestra lato sender sender, la congestion window, window cwnd ¾ Si aggiunge alla advertized window Vediamo l’algoritmo e l’impiego di cwnd: ¾ cwnd è inizialmente posta pari ad un segmento, o - più precisamente – al segment size espresso in byte pubblicizzato dall’altro estremo della connessione attraverso l’opzione MSS impiegata nel three ways handshake; ¾ per ogni ACK ricevuto, cwnd viene incrementata di 1 segmento; ¾ al sender è consentita la trasmissione di un numero di byte al più pari a min{advertised window, congestion window cwnd} Flow control imposed lato receiver TCP algoritmi congestion control imposed lato sender M LM 3 Ri Ricordiamo di l’h l’header d d dell TCP … TCP algoritmi M LM 4 N l dettaglio Nel d tt li … Il sender TCP invia un primo segmento e si blocca, in attesa dell’ACK corrispondente All’atto della ricezione del primo ACK, il sender porta la finestra di congestione a 2 (segmenti) e può procedere all’invio di due segmenti g Quando perviene l’ACK per questi ultimi, la finestra di congestione è posta pari a 4 La dimensione della finest finestra aa aumenta menta in corrispondenza o isponden a di ogni nuovo ACK ricevuto ¾ Tale crescita non è affatto slow! TCP algoritmi M LM 5 E Esempio i Assunti ¾ ¾ ¾ ¾ Trasferimento di dati di tipo bulk Flusso unidirezionale di tipo successful ACK viaggino alla medesima velocità dei segmenti dati Solo per semplicità descrittiva si numerano i segmenti, piuttosto che i byte 9 Il tempo di trasmissione di un segmento, opportunamente incapsulato, p , è assunto pari p ad una unità temporale. p In altri termini,, nella rappresentazione che segue i tempi in gioco vengono tutti normalizzati al tempo di frame. 9 Il round trip time è pari ad 8 unità di tempo TCP algoritmi M LM 6 C ti Continua TCP algoritmi M LM 7 C ti Continua TCP algoritmi M LM 8 C ti Continua Dall’istante 31 in poi , la pipe tra sender e receiver è piena ¾ Non può contenere altri dati, indipendentemente dalla dimensione della cwnd e della advertised window ¾ Ad ogni segmento rimosso dalla rete corrisponde un nuovo segmento inviato ¾ La connessione ha raggiunto la condizione ideale di steady-state TCP algoritmi M LM 9 O Osservazioni i i interessanti i t ti Nelle condizioni ideali esaminate nell’esempio nell esempio precedente, la spaziatura degli ACK è la medesima presentata dai segmenti dati. ¾ La tempistica con cui gli ACK pervengono al sender identifica la frequenza di arrivo dei dati al receiver! ¾ Il processo di aumento graduale di cwnd può essere dunque i t interpretato t t come un network t k probing bi d l sender, del d che h non immette troppi nuovi segmenti in rete In realtà … ¾ La frequenza di arrivo degli ACK al sender può essere alterata 9 Ritardi nel feedback channel, dovuti ad es. a queueing nei buffer dei router 9 ACK perduti … 9 È tuttavia la ricezione degli ACK a scandire l’apertura della finestra di congestione. Da qui: Comportamento self-clocking del TCP TCP algoritmi M LM 10 C ti Continua … Lo SLOW START garantisce comunque una crescita approssimativamente, e non esattamente, esponenziale d ll fi della finestra t di congestione. ti IInfatti: f tti ¾ Il ricevitore può ritardare l’invio degli ACK, tipicamente inviandone uno ogni due segmenti ricevuti ¾ Si tratta comunque di una velocità di apertura della finestra considerevole! Le prime implementazioni TCP eseguivano lo slow start solo se l’altro estremo si trovava su una rete diversa da quella del trasmettitore Le implementazioni correnti eseguono sempre lo slow start TCP algoritmi M LM 11 I lt Inoltre … La dimensione della finestra di congestione non cresce indefinitamente ¾ La dinamica di crescita rallenta una volta raggiunto un valore prefissato, noto come slow start threshold, ssthres, poiché si entra nella fase di CONGESTION AVOIDANCE*, in cui la congestione risulta maggiormente probabile: In tale fase il sender aumenta la dimensione della finestra di un solo segment size ogni cwnd ACK ricevuti 9 Si tratta di d una crescita lineare l 9 * descritta tra poco! TCP algoritmi M LM 12 R Rappresentazione t i grafica fi Solo per semplicità NB in i questo t tipo ti di rappresentazione t i il tempo t necessario i alla ll ttrasmissione i i d deii segmenti ti è trascurabile, t bil è solo l’RTT che scandisce la dinamica di crescita della finestra! TCP algoritmi M LM 13 I Pacchetti P h tti P Persii Anche se la condizione di steady y state descritta in precedenza p viene raggiunta, è piuttosto improbabile che la connessione TCP la sperimenti per la sua intera durata pacchetti p p persi!! ¾ Due motivi diversi 1. Pacchetti mai giunti a destinazione, in quanto in una porzione della rete attraversata si è verificata una congestione, che ha forzato i router coinvolti a scartare i pacchetti in ingresso 2. Pacchetti scartati in ricezione o da un router intermedio, in quanto non validi. Es: sporcati da errori di natura trasmissiva o da errori introdotti dall’HW di rete 1 Il TCP assume che i pacchetti persi appartenenti alla seconda categoria 1. rappresentino una percentuale piuttosto esigua sul totale, meno dell’1% all’interno della singola connessione ¾ Interpreta la perdita di pacchetti come un indicatore di CONGESTIONE TCP algoritmi M LM 14 E Esempio i di potenziale t i l congestione ti Big gp pipe p in ingresso g ad una smaller p pipe p ((LAN-WAN)) NB La spaziatura degli ACK corrisponde alla banda (velocità trasmissiva) del link più lento!! LAN1 WAN LAN2 R1 9 Il router R1 da un certo punto in poi potrebbe non avere più memoria per i pacchetti che gli arrivano da LAN1 e dunque eseguirne il discarding … TCP algoritmi M LM 15 C Come sii rilevano il i pacchetti h tti persii Attraverso DUE meccanismi: ¾ Lo scadere di un timeout ¾ La ricezione – lato sender – di tre acknowledgment duplicati, i cosidetti triple duplicate ACKs (TDACK) TCP algoritmi M LM 16 Utili Utilizzo dei d i Timeouts Ti t In corrispondenza alla trasmissione di ogni segmento, il TCP sender setta un retransmission timer, detto Retransmission Time Out, RTO ¾ Se l’RTO O raggiunge agg u ge lo o zero e o prima p a della de a ricezione ce o e di d un u ACK C dall’altro estremo TCP, riferito al segmento in questione o ad altri, il timeout scatta ¾ Si tratta di un indicazione di congestione – piuttosto severa - in una qualche porzione della rete attraversata: non arriva nulla sul feedback channel! Il TCP entra in slow-start, riportando a 1 (segment size) la dimensione della cwnd Oss. È immediato comprendere che il settaggio dell’RTO è estremamente delicato ed implica l’impiego di un algoritmo efficiente per la stima del round trip time RTT, che influenzerà in maniera significativa l’RTO TCP algoritmi M LM 17 Utili Utilizzo dei d iT Triple i l Duplicate D li t Acknowledgments A k l d t Quando il TCP riceve un segmento fuori sequenza genera un ACK immediato (duplicate ACK) Esempio: arriva il segmento TCP che contiene i byte 8705:8961, ma l’ultimo byte per il quale era stato inviato l’ACK supponiamo fosse quello con numero 6656. In tal caso il TCP receiver torna ad inviare un ACK con il numero di sequenza atteso, ovvero 6657. ¾ Tale duplicate ACK non dovrebbe venire ritardato ¾ Poichè il processo TCP che lo riceve non sa se 1. Tale duplicate ACK è stato causato da un segmento perso, 1 perso oppure 2. Da un’operazione di reordering dei segmenti al ricevitore si mette in attesa per verificare se ne arrivano degli altri TCP algoritmi M LM 18 Se ll’invio invio del duplicate ACK è stato provocato da 2., saranno verosimilmente inviati uno o al più due duplicate ACK prima del processamento del segmento riordinato, che a sua volta genererà un nuovo ACK ACK, quello che il trasmettitore si aspetta di ricevere Se il trasmettitore si vede invece recapitare tre o più duplicate ACK ¾ Forte indicazione di perdita di un segmento TCP algoritmi M LM 19 C ti Continua … la ricezione di un duplicate ACK non dice semplicemente che, forse, ¾ un segmento è andato perduto, ma anche che ¾ un segmento successivo ha lasciato la rete e si trova nel buffer del ricevitore Ci sono ancora comunque dei dati che fluiscono tra i due estremi Si è dunque in presenza di congestione moderata TCP algoritmi M LM 20 M torniamo Ma t i agli li algoritmi l it i Ed in particolare a quello di CONGESTION AVOIDANCE TCP algoritmi M LM 21 C Congestion ti Avoidance A id Quando si verifica una congestione, il TCP deve ridurre la velocità di invio di segmenti in rete ¾ Slow Start e Congestion Avoidance sono algoritmi indipendenti, con obiettivi diversi, ma entrambi mirano a ridurre/regimare tale velocità ¾ In pratica, tali algoritmi sono implementati insieme ¾ Entrambi richiedono che per ciascuna connessione siano mantenute le due variabili introdotte in precedenza 9 cwnd, la congestion window, e 9 ssthres, la slow start threshold TCP algoritmi M LM 22 L combinazione La bi i d deii due d algoritmi l it i Le operazioni p p previste sono le seguenti g ¾ Per ciascuna connessione, fase di inizializzazione: 9 cwnd = 1 segmento 9 ssthres = 65535 byte ¾ Quando si verifica una congestione, 9 ssthres = min{1/2 * current window size cwnd, 2 segmenti} 9 Se la congestione è indicata da un timeout, cwnd = 1 segmento si entra nella fase di SLOW START! * ¾ Quando l’altro estremo fornisce un acknowledgment per nuovi dati, occorre incrementare cwnd. COME? * Vedremo in seguito, slide 27, il settaggio della cwnd se viene ricevuto un triple duplicate ACK TCP algoritmi M LM 23 C ti Continua … ¾ Supponiamo che il TCP abbia subito un timeout in tal caso cwnd viene incrementata di uno per ogni ACK ricevuto – Si invia un segmento, segmento poi due … Tale fase prosegue fintanto che cwnd = ssthres. – Da quel punto in avanti il TCP entra in CONGESTION AVOIDANCE In che cosa consiste? 9 Si impone che cwnd = cwnd + 1/(cwnd) per ogni ACK ricevuto ¾ Se invece è stato ricevuto un triple duplicate ACK, il TCP esegue subito il CONGESTION AVOIDANCE, ma è qui che scattano anche gli altri due algoritmi, algoritmi FAST RETRANSMIT e FAST RECOVERY TCP algoritmi M LM 24 F tR Fast Retransmit t it Se il trasmettitore si vede recapitare tre o più duplicate ACK ¾ Forte indicazione di perdita di un segmento ¾ Il TCP provvede immediatamente alla ritrasmissione del segmento “missing”, senza attendere lo scadere del retransmission timer corrispondente TCP algoritmi M LM 25 F tR Fast Recovery Ritrasmesso quel segmento che verosimilmente era andato perduto (fase di FAST RETRANSMIT) , Il trasmettitore esegue la fase di congestion avoidance, e non quella ll di slow l start. t t Si tratta t tt dell’algoritmo d ll’ l it di FAST RECOVERY. ¾ Perché non si esegue lo slow start? 9 Poiché la ricezione di un duplicate ACK dice che – ci sono ancora comunque dei dati che fluiscono tra i due estremi – il TCP non ha necessità di ridurre drasticamente la velocità di invio dei segmenti eseguendo lo slow start ¾ Il FAST RECOVERY consente al contrario di ottenere throughput elevati in condizioni di congestione moderata, soprattutto per finestre ampie TCP algoritmi M LM 26 I Implementazione l t i F Fastt R Retransmit t it e Fast F t Recovery R ¾ Fast retransmit e fast recovery sono di solito implementati insieme, nella seguente maniera 1. Arriva il terzo duplicate ACK 9 ssthres ssthres=min{1/2 min{1/2 current cwnd, due segment size} 9 si ritrasmette il segmento missing e 9 si setta cwnd=ssthres+3 segment size. Questo apre la finestra di congestione g di un numero di segmenti g p pari a q quelli che hanno lasciato la rete e che l’altro estremo ha in memoria 2. Per ogni ulteriore duplicate ACK che perviene, 9 si incrementa la congestion window della dimensione del segmento ACKed, così da aprire la finestra per questo segmento addizionale che ha lasciato la rete e 9 si trasmette un pacchetto, se la finestra lo consente TCP algoritmi M LM 27 C ti Continua … 3. Quando finalmente arriva un ACK per dati nuovi, e dovrebbe essere l’acknowledgment per il segmento ritrasmesso al punto 1., pervenuto dopo un round-trip time dalla ritrasmissione, il quale f fornisce i anche h l’ACK per i tuttii i segmentii iintermedi di inviati i i i tra quello ll perduto e la ricezione del primo duplicate ACK 9 Si setta cwnd = ssthres CONGESTION AVOIDANCE! Il TCP è tornato t t ad d inviare i i dati d ti ad d una velocità l ità ttrasmissiva i i che h è pari alla metà del valore rilevato quando il pacchetto era andato perduto TCP algoritmi M LM 28 E Esempio i TCP algoritmi M LM 29 Mi Misura d dell R Round dT Trip i TimeTi Al Algoritmo it di Van V Jacobson J b Per un corretto settaggio del timeout del TCP la misura dell dell’RTT RTT sperimentata sulla connessione è fondamentale ¾ L’RTT varia al variare del tempo. Infatti … 9 Le route p possono cambiare 9 Le condizioni di traffico possono modificarsi ¾ Il TCP deve tenere traccia di tali variazioni e aggiornare di conseguenza il suo timeout Sia M il valore misurato dell’RTT e D la sua deviazione media, che risulta una buona approssimazione della deviazione standard dell’RTT. Ad ogni misura M di RTT si calcolano allora le seguenti equazioni: Err = M − A A ← A + gErr = A + g ( M − A) = (1 − g ) A + gM D ← D + h( Err − D) RTO = A + 4 D dove TCP algoritmi g = 1 / 8 = 0.125 e h = 0.25 M LM 30 Al Algoritmo it di Karn K Si verifica un problema quando un pacchetto viene ritrasmesso ¾ ES: pacchetto trasmesso, si verifica un timeout, l’RTO viene p e il p pacchetto viene ritrasmesso con un RTO p più ricomputato lungo e per questa prima ritrasmissione si riceve un ACK ¾ Q: L’ACK è per il primo o per il secondo pacchetto ricevuto? 9 Retransmission ambiguity problem … 9 Non possiamo eseguire l’update dello stimatore dell’RTT quando arriva l’ACK per i dati che sono stati ritrasmessi, perché – forse la prima trasmissione è stata solo ritardata (e non perduta) o forse è ll’ACK perduta), ACK della prima trasmissione che è stato ritardato – Inoltre, poiché i dati sono stati ritrasmessi e si è applicato il backoff esponenziale all’RTO, impieghiamo questo RTO backed off ff per la l prossima i trasmissione t i i ¾ Conclusione: NON si calcola un nuovo RTO fintanto che non viene ricevuto un acknowledgment per un segmento che non è stato ritrasmesso TCP algoritmi M LM 31