Anteprima
Vedrai una selezione di 3 pagine su 7
Appunti di Informatica Pag. 1 Appunti di Informatica Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Appunti di Informatica Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

ACK(A).

Timeout e stima del tempo di ritrasmissione: sicuramente timeout>RTT. Si indica

con SampleRTT il tempo che intercorre fra l’invio del segmento e la ricezione del

relativo ack (non calcolato per segmenti ritrasmessi). Questo valore può essere

estremamente variabile e quindi inopportuno come timeoutsi usa EstimatedRTT,

combinazione ponderata di SampleRTT e del precedente valore dello stesso

EstimatedRTT.

EstimatedRTT=0.875*EstimatedRTT + 0.125*SampleRTT. Il timeout viene impostato

quindi a EstimatedRTT più un certo margine che varia in base all’entità della

fluttuazione di SampleRTT.

Ritrasmissione rapida (Triplice ACK): normalmente bisogna aspettare la scadenza

del timeout per ritrasmettere i pacchetti, ma questo tempo potrebbe essere lungo. Il

mittente può in molti casi rilevare la perdita del pacchetto prima della scadenza del

timeout e ritrasmetterlo subito. Quando un destinatario TCP riceve un segmento con

numero di sequenza maggiore al numero di sequenza atteso, rileva un buco nel flusso

dati. Questo viene notificato al mittente inviando nuovamente un ACK relativo

all’ultimo byte di dati ricevuto in ordine: una sorta di ‘sollecitazione’. Il mittente quindi

vedrà recapitarsi più volte lo stesso ACK (ACK duplicato): se ne riceve tre, si considera

che il segmento che segue è stato perduto e viene ritrasmesso prima dello scadere del

timeout.

Controllo di flusso: quando TCP riceve byte corretti e in sequenza, li posizione nel

buffer di ricezione (rcvbuffer). L’applicativo associato leggerà i dati da questo buffer,

ma non necessariamente nel momento in cui arrivano. Per processi molto lenti il buffer

potrebbe riempirsi prima di essere letto e svuotato.

Il controllo di flusso permette di evitare la saturazione del buffer di ricezione. Il

mittente mantiene una variabile chiamata Receive Window (rwnd) che fornisce

un’indicazione sul suo spazio disponibile nel buffer.

Definendo LastByteRead come ultimo byte che l’applicativo ha letto dal buffer e

LastByteRcvd l’ultimo byte ricevuto e salvato nel buffer si ha che LastByteRcvd-

LastByteRead ≤ RcvBuffer, e che rwnd = RcvBuffer – [LastByteRcvd-LastByteRead].

Altri due parametri sono LastByteSent e LastByteAcked, che tengono conto dell’ultimo

byte inviato e dell’ultimo byte di cui si ha ricevuto l’ACK. Mantenendo la quantità di

dati non ancora ACKed (quindi LastByteSent-LastByteAcked) al di sotto del valore rwnd

si evita la saturazione.

Problema tecnico: se A riempie il buffer deve mandare un messaggio a B con rcwn=0.

In tal caso B ferma l’invio e aspetta che A mandi un nuovo messaggio con rwnd non

nulla. Ma se A non avesse più niente da inviare come fa B a sapere che il buffer si è

liberato? Anche se è pieno quindi A deve continuare a mandare messaggi con parte

dati di un byte per informare B sullo stato di rwnd.

Controllo della congestione

Per controllare la congestione si aggiunge un parametro di controllo della velocità in

uscita: cwnd. Questo parametro indica quanti pacchetti posso inviare in sequenza

prima che arrivi l’ack del primo della sequenza. La condizione perché non ci sia

congestione si aggiorna a: LastByteSent-LastByteAcked ≤ min(rwnd, cwnd).

Se non c’è congestione TCP incrementa il tasso trasmissivo, altrimenti lo rallenta.

L’algoritmo che regola questi cambiamenti si compone di tre fasi:

Slow start.

 Quando si stabilisce una connessione TCP, cwnd è inizializzato a 1 (MSS). Il suo

valore è incrementato di 1 ogni volta che un segmento trasmesso riceve

ACKraddoppio della velocità trasmissiva (1,2,4,8,16 etc) ad ogni RTT.

Se c’è un evento di perdita indicato dallo scadere di un timeout, cwnd torna a 1

e pone il parametro ssthresh=cwnd/2, cioè metà del valore che aveva la

finestra quando si è verificata la congestione.

La finestra riparte da 1 e sale in slow start fino al raggiungimento di ssthresh,

quando entra in C.A.

Congestion Avoidance.

 Dalla soglia in su cwnd aumenta in modo lineare: +1 ad ogni RTT.

Se scade un timeout C.A. si comporta come S.S. Invece se la notifica di

congestione è data dall’arrivo di un triplice ACK la risposta varia a seconda del

Dettagli
Publisher
A.A. 2021-2022
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Yasm23 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Massari Luisa.