|
@@ -0,0 +1,125 @@
|
|
|
|
+# Piattaforme e Software per la rete - lezione 9
|
|
|
|
+#### Giacomo Verticale
|
|
|
|
+###### 12 April 2016
|
|
|
|
+## Router pt.2
|
|
|
|
+
|
|
|
|
+Dei pacchetti che arrivano nel router viene separata l'intestazione che viene inviata al meccanismo di lookup.
|
|
|
|
+Le code nell'algoritmo take-a-ticket sono negli ingressi, le uscite sono molto semplici.
|
|
|
|
+Negli algoritmi tipo *pim* in cui si usano meccanismi di speedup interni, alzando la velocità della
|
|
|
|
+matrice di commutazione rispetto alla velocità degli ingressi/uscite
|
|
|
|
+
|
|
|
|
+### Gestione delle code in uscita
|
|
|
|
+#### Gestione del buffer
|
|
|
|
+I buffer sono di capacità finita quindi prima o poi si riempono e serve scartare i pacchetti.
|
|
|
|
+La politica di __scheduling__ determina quale pacchetto viene spedito sull'interfaccia di uscita
|
|
|
|
+che può essere quello più vecchio ma non necessariamente.
|
|
|
|
+
|
|
|
|
+__Soluzione base__
|
|
|
|
+- Gestione buffer __tail drop__: accetto pacchetti finchè il buffer è pieno
|
|
|
|
+- Scheduling fifo
|
|
|
|
+Questa soluzione base va bene per carichi leggeri.
|
|
|
|
+Il caso di test tipico è una connessione TCP perchè sono molto diffuse in internet.
|
|
|
|
+```
|
|
|
|
+|
|
|
|
|
+|
|
|
|
|
+| -
|
|
|
|
+| -
|
|
|
|
+| -
|
|
|
|
+| /
|
|
|
|
+| /
|
|
|
|
+|-
|
|
|
|
+|
|
|
|
|
+---------------------->
|
|
|
|
+slow
|
|
|
|
+start
|
|
|
|
+```
|
|
|
|
+La crescita è esponenziale durante slow start e lineare una volta superata SSTHRESH
|
|
|
|
+- Fase esplorativa: congestion avoidance
|
|
|
|
+La differenza fra TCP Tahoe e TCP Rhyno è che a seguito di una perdita di un pacchetto
|
|
|
|
+in Tahoe si aspetta il TimeOut e si va a velocità 1, Rhyno usa un meccanismo di __fast recovery__
|
|
|
|
+che controlla il pacchetto perso nella sequenza e dimezza la velocità e abbassando SSTHRESH
|
|
|
|
+si riparte con crescita lineare.
|
|
|
|
+
|
|
|
|
+Il meccanismo di __crescita additiva__ e __decrescita moltiplicativa__ raggiunge
|
|
|
|
+un buon compromesso tra aggressività ed efficienza.
|
|
|
|
+
|
|
|
|
+I pacchetti TCP vengono inviati a burst, e arrivati ad una cerca velocità il nodo inizia a *scartare pacchetti*
|
|
|
|
+Il buffer impiega del tempo per svuotarsi, e c'è un alta possibilità che i pacchetti persi siano della stessa
|
|
|
|
+connessione, questo crea problemi al meccanismo di fast retrasmit che riesce a recuperare solo buchi di pochi pacchetti.
|
|
|
|
+Il risultato è che avendo perdite multiple si disattiva __fast recovery__, scatta Timeout e si va a velocità 1.
|
|
|
|
+
|
|
|
|
+Quindi la gestione __taildrop__ porta a perdite multiple di una stessa connessione, inoltre una volta
|
|
|
|
+che avviene un *buffer overflow* vengono penalizzate anche le sorgenti che non hanno causato la perdita
|
|
|
|
+di pacchetti.
|
|
|
|
+Inoltre ho sincronizzato la forma del throughput delle sorgenti, quindi le sorgenti si sommano nei picchi
|
|
|
|
+e negli avvallamenti e quindi non posso raggiungere una velocità elevata.
|
|
|
|
+L'ultimo problema è che la notifica della perdita di pacchetti avviene dopo quest'ultima,
|
|
|
|
+in questo modo è impossibile evitare la perdita riducendo la velocità.
|
|
|
|
+
|
|
|
|
+__Obiettivi__ per un buffer scheduling
|
|
|
|
+- Segnalare una congestione immminente alle sorgenti tcp più attive.
|
|
|
|
+- Garantire *fairness* tra sorgenti anziane e giovani (anziane hanno priorità)
|
|
|
|
+- Fornire garanzie di banda e ritardo per flusso (QoS)
|
|
|
|
+
|
|
|
|
+ ### Random Early Detection (RED)
|
|
|
|
+è un algoritmo di gestione del buffer, decide quali pacchetti ammettere nel buffer.
|
|
|
|
+- Scarto pacchetto con probabilità p
|
|
|
|
+THR equilibrio TCP è proporzionale a MSS/(RTT* sqrt(p))*
|
|
|
|
+Se il nodo è il collo di bottiglia, il punto di lavoro rimane sulla retta lineare della threshold.
|
|
|
|
+```
|
|
|
|
+|
|
|
|
|
+|
|
|
|
|
+|
|
|
|
|
+|
|
|
|
|
+| /
|
|
|
|
+| /
|
|
|
|
+| /
|
|
|
|
+|_____/
|
|
|
|
+|-----------------------
|
|
|
|
+ min max
|
|
|
|
+ thresh thresh
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+Il problema è che tutte le connessioni piccole, ad esempio quelle per richiedere una pagina web
|
|
|
|
+non sfruttano il meccanismo di congestion window TCP
|
|
|
|
+
|
|
|
|
+#### Varianti
|
|
|
|
+- Stimatori autoreferenti
|
|
|
|
+occupazione media(t)
|
|
|
|
+(1-alpha)*occupazione media(t-1)
|
|
|
|
++ alpha*occupazione attuale
|
|
|
|
+
|
|
|
|
+- Una variante di questo modello è un meccanismo che utilizza curve diverse per ogni classe di applicazioni
|
|
|
|
+e si chiama __Weighted RED__
|
|
|
|
+- __RED for in and out__
|
|
|
|
+
|
|
|
|
+### Politiche per allocazione di banda
|
|
|
|
+__FIFO__
|
|
|
|
+- Allocazione proporzionale alla richiesta di banda
|
|
|
|
+- Nessuna protezione da sorgenti greedy
|
|
|
|
+- Semplice da implementare
|
|
|
|
+
|
|
|
|
+__Priorità semplice__
|
|
|
|
+- Richiede code multiple
|
|
|
|
+- Richiede un classificatore
|
|
|
|
+- Serve in ordine di priorità
|
|
|
|
+- Servizio può essere interrompibile o non interrompibile
|
|
|
|
+Nel caso di collegamenti lenti (~10Kbit/s) ha senso distinguere tra trasmissioni interrompibili o non.
|
|
|
|
+Nelle reti moderne non viene effettuato il blocco della trasmissione di un pacchetto per trasmetterne
|
|
|
|
+un altro perchè il tempo richiesto a trasmettere il pacchetto è poco.
|
|
|
|
+
|
|
|
|
+Funziona abbastanza male se le priorità sono tante perchè i pacchetti a priorità bassa
|
|
|
|
+soffrono di starvation.
|
|
|
|
+Per risolvere questo problema, alla alta priorità viene associato un limite sulla banda utilizzata
|
|
|
|
+
|
|
|
|
+__Round Robin__
|
|
|
|
+- Necessita di un classificatore
|
|
|
|
+- Una coda per classe
|
|
|
|
+- Servo un pacchetto per ogni coda.
|
|
|
|
+- Se i pacchetti hanno lunghezza variabile funziona molto male.
|
|
|
|
+Per rendere fair round robin con dimensioni variabili si cerca di di simulare il round robin bitwise che
|
|
|
|
+è fair per definizione, ad esempio si effettua un round robin bitwise e quando viene selezionato il bit finale
|
|
|
|
+di una coda, viene inviato il pacchetto corrispondente, in questo modo si ottiene una distribuzione uniforme.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|