3.6 KiB
Complementi di Reti
Controllo di Congestione
Due approcci:
- End-to-End: i terminali / host gestiscono tutto, la rete (link/router) non fa nulla a parte scartare pacchetti in eccesso. TCP
- Assistito: I router comunicano agli endpoint e gli altri router di congestione, (settando un bit, calcolando il rate ottimale e includendolo nei pacchetti). ATM (esempi su slides)
TCP - Controllo di Congestione
- End-to-End
- Window protocol: il trasmettitore utilizza una sliding window che scorre sui dati da trasmettere, identificando una finestra chiamata congestion window (congwin).
**congwin**
|||||||||||||||||||||||||||-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||-||||||||||||||||||
*gia' inviati con successo* ^base (paccetti inviati, no feedback yet) ^nextseqnum (da inviare) *pacchetti futuri*
La dimensione della finestra di congestione e' regolata dinamicamente da TCP, che la regola alla massima banda possibile senza congestione.
Regolazione di congwin: algoritmo e procedura
Pe identificare la dimensione ottimale della finestra, TCP usa un algoritmo chiamato basato su due procedure:
- Slow Start: all'inizio, congwin e' aumentata esponenzialmente fino a che non si verifica una congestione. Per fare cio', TCP duplica il numero di pacchetti inviati a ogni ricezione di ACK (con successo). Quindi invia 1,2,4,8,16... pacchetti, fino a congestionare la rete. TCP identifica una congestione tramite timeout expiration (Tahoe TCP) o ricezione di 3 ACK duplicati (Reno TCP).
- Congestion Avoidance: Appena una congestione e' rilevata, TCP diminuisce il numero di pacchetti (Tahoe: inizia da 1, Reno: dimezza) e setta il threshold tra Slow Start e Congestion Avoidance alla meta` del numero di pacchetti che ha causato la congestione (congestione a 16 -> threshold a 8). Durante la fase di congestion avoidance, TCP incrementa il numero di pacchetti inviati linearmente, seguendo l'equazione:
congwin = congwin(old) + 1/congwin(old)
questo viene fatto per ogni pacchetto, di modo che se congwin(old) e' 4, l'incremento sara':
4 -> 4+1/4 -> 4+2/4 -> 4+3/4 -> 5
per questo motivo, e' possibile approssimare l'incremento dato dalla congestion avoidance di 1 pacchetto per ogni invio simultaneo con successo.
Per questo motivo, l'algoritmo utilizzato da TCP e' detto anche Additive Increase, Multiplicative Decrease durante la congestion avoidance.
TCP square root formula
E' possibile descrivere la dimensione media della finestra di congestione data la probabilita' di packet loss su una rete. Questo si ottiene eguagliando le formule di additive increase, multiplicative decrease in congestion avoidance:
E[w] = avg window size
p = loss probability
(1-p) * 1/E[w] = p * E[w]/2
Da cui, isolando E[w]:
E[w] = sqrt((2 (1-p))/p)
Che, assumendo p molto piccolo (caso reale):
E[w] = sqrt(2/p)
Dato il RTT (round trip time), e' possibile ottenere il throughput della rete:
B = throughput
Rtt = round trip time
B = E[w] / Rtt -> B = sqrt(2/p) * 1/Rtt
Dall'equazione del throughput e' possibile notare come esso sia inversamente proporzionale alla loss probability e al RTT.
TCP fairness
TCP e' un protocollo fair, che quindi vuole rispettare determinate condizioni di equita':
Date K connessioni TCP sulla stessa rete, Data una banda totale R da condividere tra le connessioni,
-> Connessioni identiche dovrebbero ottenere R / K banda totale.
Questo e' possibile perche' il multiplicative decrease della congestion avoidance influisce piu' sulle connessioni favorite (che quindi hanno una finestra di congestione piu' ampia).