CAPITOLO 4 RISULTATI DELLE SIMULAZIONI 4.1 Visualizzazione dei risultati Per la visualizzazione dei risultati è stato utilizzato il blocco Simulink chiamato To Workspace, reperibile dalla libreria di Simulink nella sezione Sinks: Fig. 4.1: sezione Sinks Tale blocco permette di plottare in Matlab l andamento di una particolare variabile. Per far ciò, è sufficiente porre in ingresso al blocco la variabile desiderata e impostare le seguenti opzioni del blocco cliccando due volte su esso: 59
Fig. 4.2: opzioni del blocco To Workspace Nella prima riga va inserito il nome della variabile. La seconda riga indica il numero massimo di punti che possono essere memorizzati per tracciare l andamento desiderato ed è stato impostato ad infinito per tutte le simulazioni. La decimazione è stata lasciata ad 1 e il Sample Time a -1 in modo da ereditare il passo di campionamento scelto per le simulazioni. Per poter visualizzare la variabile in funzione del tempo, sono state modificate alcune opzioni dal menu Simulation selezionando Configuration Parameters e cliccando su Data Import/Export ottenendo la seguente mascherina: 60
Fig. 4.3: impostazioni dei parametri Data Import/Export Come si può notare dalla Fig. 4.3, è stata selezionata l opzione Time in cui è stato definito il nome della variabile tempo come t. Per poter visualizzare l andamento della variabile, bisogna inserire, nella finestra dei comandi di Matab, l istruzione: plot(t,<nome_variabile>), Prima di far partire la simulazione, bisogna impostare altri parametri di configurazione accessibili con la stessa procedura su scritta, ma selezionando la voce Solver come segue: 61
Fig. 4.4: impostazioni dei parametri Solver Prima di tutto bisogna stabilire il tempo di inizio ed il tempo di fine della simulazione in maniera tale da avere l intervallo di simulazione desiderato. Nel nostro caso si è voluto un intervallo di simulazione pari a 300s e quindi il tempo di inizio (Start time) è zero mentre quello di fine (Stop time) è 300. La simulazione non dura in genere un tempo pari a quello inserito nella pagina Solver: la quantità di tempo necessario a compiere una simulazione dipende da molti fattori, inclusa la complessità del modello, lo step size del solver e la velocità del clock del computer. La simulazione dei modelli Simulink include l integrazione numerica di insiemi di equazioni differenziali ordinarie (ODEs). Simulink fornisce una serie di risolutori per la simulazione di tali equazioni. A causa della diversità del comportamento dinamico del sistema, alcuni risolutori possono essere più efficienti di altri nella risoluzione di particolari problemi. Si può scegliere tra risolutori a passo variabile o a passo fisso. I risolutori a passo variabile possono modificare la dimensione del loro passo durante la simulazione, mentre quelli a passo fisso mantengono sempre la stessa dimensione del passo. Effettuando diverse simulazioni, è risultato più efficiente, nel nostro caso, il risolutore a passo fisso ode4(runge-kutta). 62
4.2 Simulazioni a singola connessione Iniziamo con le simulazioni a singolo flusso, in cui l intervallo di simulazione è pari a 300s e i ritardi di propagazione sono stati impostati come: T fw=t fb =0. 1s RTT p =0. 2s Chiaramente RTTp è solo la somma dei due ritardi di propagazione, ma in realtà a questo si aggiunge il tempo di smaltimento della coda dato dal rapporto tra q t come visto nel d t capitolo precedente. Per impostare i ritardi basta cliccare due volte sul blocco del ritardo ed appare la seguente finestra: Fig. 4.5: impostazione del tempo del tempo di propagazione Inoltre la banda è stata impostata ad un valore costante pari a 1000 pacchetti/s, cioè 12Mbps, ipotizzando che la grandezza di un pacchetto sia di circa 1500 byte. Successivamente è stata impostata la capacità massima del buffer pari al prodotto tra il tempo totale di propagazione ( T fw T fb ) ed il valore della banda data. Grazie al comando plot(t,coda, b,t,cwnd, r ) è possibile visualizzare l andamento della coda e della congestion window rispettivamente con colore blu e rosso: 63
Fig. 4.6: andamento della cwnd e della coda con Tp=200ms Si nota che l andamento del livello di coda segue quello della congestion window. Visto che l RTT è variabile poiché dipende anche dal tempo di svuotamento della coda, si può avere un andamento più chiaro dal grafico dell input rate: Fig. 4.7: andamento dell input rate Dall andamento dell input rate, si nota che inizialmente si ha un incremento drastico tale da avere una sovraelongazione di 200 pacchetti/s per qualche frazione di secondo, e 64
successivamente, a circa 0.7s, l input rate si stabilizza intorno alla banda data e rimane costante per tutto il tempo della simulazione. Vediamo l andamento della banda utilizzata: Fig. 4.8: confronto tra la banda data e la banda utilizzata con Tp=200ms La banda utilizzata si sovrappone esattamente alla banda disponibile, il che vuol dire che si sfrutta totalmente la capacità del link. Chiaramente l overflow rate è nullo poiché non si supera il livello massimo della capacità del buffer pari a 200 pacchetti (banda * RTTp). Vediamo ora cosa accade se raddoppiamo il tempo di propagazione Tp. L input rate è il seguente: 65
Fig. 4.9: andamento dell input rate con Tp=400ms Si nota che si ha una sovraelongazione di 1000 pacchetti/s, molto più ampia rispetto a quella ottenuta con Tp=200ms. Inoltre la convergenza alla stabilità si ottiene dopo circa 2.3s contro ai 0.7s ottenuti nel caso precedente. Anche in questo caso non si ha overflow rate e la banda viene sfruttata totalmente. Fig. 4.10: confronto tra la banda data e la banda utilizzata con Tp=400ms 66
Aumentando il ritardo di propagazione a Tp=500ms si ottengono i seguenti grafici: Fig. 4.11: confronto tra la banda data e la banda utilizzata con Tp=500ms Fig. 4.12: andamento dell input rate con Tp=500ms 67
Fig. 4.13: andamento dell overflow rate della coda con Tp=500ms Fig. 4.14: andamento dell integrale dell overflow rate con Tp=500ms Dall andamento visto nei grafici, si nota che l andamento dell input rate raggiunge il regime dopo circa 65s. In questo intervallo di tempo si ha overflow rate poiché si supera il 68
livello massimo della capacità del buffer di 500 pacchetti, e si ottiene una perdita totale di circa 5400 pacchetti ed infine la banda utilizzata, nei primi 2s, è ancora zero. Passiamo ora al caso in cui la banda disponibile non è costante, ma variabile nel tempo. Si può attribuire, alla banda disponibile, l andamento desiderato grazie al blocco Simulink chiamato Signal Builder accessibile dalla libreria di Simulink alla voce Sources: Fig. 4.15: blocco Signal Builder In particolare si vuole vedere cosa succede nel caso in cui la banda abbia un decremento drastico e, successivamente, un incremento. L andamento della banda è stato così costruito: Figura 4.16: Costruzione del segnale che rappresenta l andamento della banda disponibile 69
Effettuando la simulazione con gli stessi parametri impostati inizialmente con Tp=200ms, si ottengono i seguenti risultati: Fig. 4.17: confronto tra banda variabile data e banda utilizzata con Tp=200ms Fig. 4.18: andamento della cwnd e della coda a banda variabile e Tp=200ms 70
Fig. 4.19: andamento dell input rate a banda variabile con Tp=200ms Dai grafici visti, si vede che l andamento della cwnd segue quello della coda, però l andamento dell input rate non reagisce molto velocemente, soprattutto quando si ha la seconda variazione della banda. In questo caso non si ottiene overflow poiché la capacità massima del buffer è pari al prodotto tra il massimo valore della banda e il massimo ritardo di propagazione per cui si ha 200 pacchetti, soglia che non viene superata. Portando il ritardo di propagazione a Tp=500ms, si ottengono i seguenti risultati: 71
Fig. 4.20: andamento dell input rate a banda variabile e Tp=500ms Fig. 4.21: andamento dell overflow rate a banda variabile e Tp=500ms 72
Fig. 4.22: andamento dell integrale dell overflow rate a banda variabile e Tp=500ms Si nota che l andamento dell input rate è ancora più instabile e, inoltre, si hanno anche delle perdite di pacchetti pari a 5400, nella prima parte dell andamento della banda, e di ulteriori 2000, nella seconda parte. Vediamo ora come si comporta il sistema utilizzando una banda sinusoidale con in aggiunta una leggera quantità di rumore gaussiano. In particolare si è utilizzato un blocco sommatore con tre ingressi i quali sono una costante posta a 1000 pacchetti/s, una funzione sinusoidale di ampiezza pari a 500 e un generatore di rumore gaussiano con varianza pari a 50, come in figura seguente: Fig. 4.23: costruzione della banda sinusoidale con l aggiunta di rumore gaussiano 73
Impostando inizialmente un ritardo di propagazione pari a Tp=200ms, si sono ottenuti i seguenti grafici: Fig. 4.24: confronto tra banda sinusoidale data e banda utilizzata con Tp=200ms Fig. 4.25: andamento della cwnd e della coda a banda sinusoidale e Tp=200ms 74
Fig. 4.26: andamento dell input rate a banda sinusoidale e Tp=200ms Dai grafici si nota che si ha un andamento dell input rate che non segue esattamente l andamento della banda ed inoltre essa non viene sfruttata al massimo come da Fig.4.24; non si ha overflow poiché il livello massimo della capacità del buffer, che in questo caso è 200 pacchetti (bandamax * RTTp_max). Vediamo ora cosa accade se il Tp=500ms e la banda data è uguale a quella vista precedentemente, cioè sinusoidale con rumore gaussiano. 75
Fig. 4.27: confronto tra banda sinusoidale data e banda utilizzata con Tp=500ms Fig. 4.28: andamento dell input rate a banda sinusoidale e Tp=500ms 76
Fig. 4.29: andamento della coda a banda sinusoidale e Tp=500ms Fig. 4.30: andamento dell overflow rate a banda sinusoidale e Tp=500ms 77
Fig. 4.31: andamento dell integrale dell overflow rate a banda sinusoidale e Tp=500ms Dai grafici su visti, si nota che l andamento dell input rate all inizio è più instabile, difatti si ha un elevato picco in partenza; inoltre il livello di coda è molto instabile tale da superare il livello massimo della capacità del buffer pari a 500 pacchetti (banda * RTTp) provocando una perdita totale di 9000 pacchetti. 4.2 Simulazioni a doppia connessione Vediamo ora le simulazioni effettuate nel caso in cui sono presenti due sorgenti. Si è utilizzato lo stesso risolutore utilizzato per la singola connessione, ode4(runge-kutta) con step size pari a 0.005. Come prima simulazione si è partiti utilizzando una banda costante di 1000 pacchetti/s e ritardi di propagazione pari a Tp1=200ms e Tp2=100ms, rispettivi al primo ed al secondo sender. I grafici ottenuti sono i seguenti: 78
Fig. 4.32: confronto tra banda data e banda utilizzata con Tp1=200ms e Tp2=100ms Fig. 4.33: andamento dell input rate di due flussi a banda costante con Tp1=200ms e Tp2=100ms 79
Fig. 4.34: andamento della coda a banda costante con Tp1=200ms e Tp2=100ms Si nota che il flusso che ha un maggior ritardo di propagazione ha un ampia sovraelongazione nei primi 15s circa, stabilizzandosi successivamente fino ad arrivare alla convergenza col secondo flusso a circa 33s (tempo molto più grande rispetto alla singola connessione) in cui viene sfruttata la stessa porzione di banda che è leggermente inferiore alla metà della banda data (lo si nota maggiormente in Fig. 4.32). Inoltre, l andamento della coda segue quello della cwnd relativa al primo flusso per i primi 4s, abbassandosi successivamente e non superando la capacità massima del buffer che in questo caso è pari a 200 pacchetti (banda*tpmax). Di conseguenza non si ha overflow. E possibile calcolare un indice di fairness detto Jain s Fairness Index [EECS 122] dato dalla formula: n x i 2 f x 1, x 2,...., x n = i=1 n n x i=1 => 0 f... 1 i2 dove xi è il goodput (pacchetti ricevuti dal receiver) dell i-esimo flusso, ed n è il numero di flussi. Se l indice è uguale ad 1 vuol dire che si ha un equa suddivisione di banda. In questo caso l indice è 0.99.Vediamo cosa accade se si raddoppiano entrambi i tempi di propagazione, cioè Tp1 = 400ms e Tp2 = 200ms : 80
Fig. 4.35: confronto tra banda data e banda utilizzata con Tp1=400ms e Tp2=200ms Fig. 4.36: andamento dell input rate di due flussi a banda costante con Tp1=400ms e Tp2=200ms 81
Fig. 4.37: andamento della coda a banda costante con Tp1=400ms e Tp2=200ms Fig. 4.38: andamento dell overflow rate a banda costante con Tp1=400ms e Tp2=200ms 82
Fig. 4.39: andamento dell integrale dell overflow rate a banda costante con Tp1=400ms e Tp2=200ms In questo caso si nota che la convergenza alla fairness dei due flussi si ottiene solo a circa 70s, cioè il doppio del tempo che si è ottenuto nel caso precedente. Inoltre il riempimento della coda supera la capacità massima del buffer (400 pacchetti) nei primi 7s e quindi si ha una perdita di circa 3300 pacchetti; il Jain s Fairness Index è 0.98. Trattiamo ora il caso in cui la banda è variabile, cioè ha delle brusche variazioni come visto nel caso della singola connessione; i tempi di propagazione sono rispettivamente Tp1 = 200ms e Tp2 = 100ms ottenendo i seguenti grafici: 83
Fig. 4.40: confronto tra banda data variabile e banda utilizzata con Tp1=200ms e Tp2=100ms Fig. 4.41: andamento delle cwnd e della coda a banda variabile con Tp1=200ms e Tp2=100ms 84
Fig. 4.42: andamento dell input rate dei due flussi a banda variabile con Tp1=200ms e Tp2=100ms Dagli andamenti su visti si nota che, nei punti in cui la banda ha le variazioni, si hanno delle irregolarità degli input rate (Fig. 4.42) e inoltre la coda ha dei picchi di riempimento non superando comunque il livello massimo della capacità del buffer. Infine la banda utilizzata non corrisponde esattamente alla banda data (Fig. 4.40), cioè non viene sfruttata a pieno la capacità del link e il Jain s Fairness Index è 0.99. Vediamo ora cosa accade portando i tempi di propagazione a Tp1 = 600ms e Tp2 = 300ms, utilizzando lo stesso andamento di banda appena visto. 85
Fig. 4.43: confronto tra banda variabile data e banda utilizzata con Tp1=600ms e Tp2=300ms Fig. 4.44: andamento delle cwnd e della coda a banda variabile con Tp1=600ms e Tp2=300ms 86
Fig. 4.45: andamento dell input rate dei due flussi a banda variabile con Tp1=600ms e Tp2=300ms Dai grafici si notano delle oscillazioni ancora più accentuate degli input rate (Fig. 4.45) e inoltre la coda ha dei picchi di riempimento molto più ampi rispetto al caso precedente non superando comunque il livello massimo della capacità del buffer. Infine la banda utilizzata si scosta maggiormente dalla banda data (Fig. 4.43), non sfruttando a pieno la capacità del link. Come nel caso precedente, il Jain s Fairness Index è 0.99. Ora vediamo il comportamento di XCP nel caso in cui la banda sia sinusoidale, come nel paragrafo precedente. Per prima sono stati impostati Tp1 = 200ms e Tp2 = 100ms ottenendo: 87
Fig. 4.46: confronto tra banda sinusoidale data e banda utilizzata con Tp1=200ms e Tp2=100ms Fig. 4.47: andamento della cwnd e della coda a banda sinusoidale con Tp1=200ms e Tp2=100ms 88
Fig. 4.48: andamento dell input rate a banda sinusoidale con Tp1=200ms e Tp2=100ms Dagli andamenti su visti, si nota che la banda utilizzata si scosta leggermente rispetto alla banda data e non si sfrutta il massimo della capacità (Fig. 4.46); la convergenza alla fairness si ottiene dopo circa 35s e la coda si riempie solo nei primi secondi seguendo il picco iniziale delle cwnd, andando poi a zero. Non si ha overflow poiché non si supera la capacità massima del buffer (200 pacchetti) ed anche in questo caso il Jain s Fairness Index è 0.99. Nel caso in cui i tempi di propagazione sono rispettivamente Tp1 = 600ms e Tp2 = 300ms, si ottiene: 89
Fig. 4.49: confronto tra banda sinusoidale data e banda utilizzata con Tp1=600ms e Tp2=300ms Fig. 4.50: andamento della cwnd e della coda a banda sinusoidale con Tp1=600ms e Tp2=300ms 90
Fig. 4.51: andamento dell input rate a banda sinusoidale con Tp1=600ms e Tp2=300ms Fig. 4.52: andamento dell overflow rate a banda sinusoidale con Tp1=600ms e Tp2=300ms 91
Fig. 4.53: andamento dell integrale dell overflow rate a banda sinusoidale con Tp1=600ms e Tp2=300ms Si nota che l andamento degli input rate sono molto irregolari nei primi 120s circa (Fig. 4.51) in cui si ottiene la fairness dei due flussi; la coda si riempie di circa 605 pacchetti per i primi 30s (Fig. 4.50) superando la soglia massima della capacità del buffer (600 pacchetti) e andando a zero a circa 55s. Di conseguenza si ha una perdita di 12700 pacchetti ed il Jain s Fairness Index scende a 0.95. 4.3 Simulazioni a tripla connessione Le ultime simulazioni effettuate riguardano il caso in cui sono presenti tre sender; anche in questo caso si è utilizzato lo stesso risolutore utilizzato precedentemente, cioè ode4(runge-kutta) con step size pari a 0.005. Come prima simulazione si è partiti utilizzando una banda costante di 1000 pacchetti/s e ritardi di propagazione pari a Tp1=100ms, Tp2=200ms Tp3=300ms, rispettivi al primo, al secondo e al terzo sender. I grafici ottenuti sono i seguenti: 92
Fig. 4.54: confronto tra banda data e banda utilizzata con Tp1=100ms e Tp2=200ms Tp3=300ms Fig. 4.55: andamento dell input rate di tre flussi a banda costante con Tp1=100ms, Tp2=200ms e Tp3=300ms 93
Fig. 4.56: andamento della coda a banda costante con Tp1=100ms, Tp2=200ms e Tp3=300ms Dagli andamenti su visti, si nota che la banda utilizzata è più bassa rispetto alla banda data (Fig. 4.54) e che la convergenza alla fairness degli input rate si ha dopo circa 48s (Fig. 4.55), maggiore rispetto al tempo della fairness ottenuto nella doppia connessione. La coda ha un picco di riempimento solo nei primi 3s (Fig.4.56) senza superare la capacità massima del buffer (300 pacchetti), andando poi a stabilizzarsi a zero. Inoltre il Jain s Fairness Index è 0.99. Raddoppiando i tempi di propagazione, Tp1=200ms, Tp2=400ms e Tp3=600ms, si ottengono i seguenti andamenti: 94
Fig. 4.57: confronto tra banda data e banda utilizzata con Tp1=200ms e Tp2=400ms Tp3=600ms Fig. 4.58: andamento dell input rate di tre flussi a banda costante con Tp1=200ms, Tp2=400ms e Tp3=600ms 95
Fig. 4.59: andamento della coda a banda costante con Tp1=200ms, Tp2=400ms e Tp3=600ms Fig. 4.60: andamento dell overflow rate a banda costante con Tp1=200ms, Tp2=400ms e Tp3=600ms 96
Fig. 4.61: andamento dell integrale dell overflow rate a banda costante con Tp1=200ms, Tp2=400ms e Tp3=600ms Dalla figura si nota che il tempo di convergenza alla fairness relativo agli input rate raddoppia (Fig.4.58) ed inoltre si ha una perdita di circa 260 pacchetti, dato dal fatto che il livello massimo di riempimento della coda (600 pacchetti) viene superato per circa 2 secondi. Infine la banda utilizzata ha una maggiore instabilità nei primi 50s circa, cosa che prima avveniva per 25s circa ed il Jain s Fairness Index è 0.98. Verranno ora mostrate le simulazioni ottenute inserendo la banda variabile vista nel caso della singola e doppia connessione, partendo da Tp1=100ms, Tp2=200ms e Tp3=300ms: 97
Fig. 4.62: confronto tra banda data variabile e banda utilizzata con Tp1=100ms, Tp2=200ms e Tp3=300ms Fig. 4.63: andamento delle cwnd e della coda a banda variabile con Tp1=100ms, Tp2=200ms e Tp3=300ms 98
Fig. 4.64: andamento dell input rate dei due flussi a banda variabile con Tp1=100ms, Tp2=200ms e Tp3=300ms Dai grafici appena visti, si nota che la banda utilizzata è ancora più bassa rispetto a quella vista per la doppia connessione (Fig. 4.62); inoltre in corrispondenza delle variazioni di banda si hanno delle irregolarità più accentuate degli input rate (Fig.4.64) e dei picchi di riempimento di coda (Fig.4.63) che comunque non supera la capacità massima del buffer (300 pacchetti). Infine il Jain s Fairness Index è 0.99. Raddoppiando i tempi di propagazione, Tp1=200ms, Tp2=400ms e Tp3=600ms, si ottengono i seguenti risultati: 99
Fig. 4.65: confronto tra banda data variabile e banda utilizzata con Tp1=200ms, Tp2=400ms e Tp3=600ms Fig. 4.66: andamento delle cwnd e della coda a banda variabile con Tp1=200ms, Tp2=400ms e Tp3=600ms 100
Fig. 4.67: andamento dell input rate dei due flussi a banda variabile con Tp1=200ms, Tp2=400ms e Tp3=600ms Come ci si poteva aspettare, i tempi di convergenza alla fairness degli input rate sono raddoppiati ed inoltre si hanno maggiori instabilità nei punti di variazione della banda (Fig.4.67) con una crescita del riempimento della coda che comunque non supera il livello massimo della capacità del buffer (600 pacchetti); anche in questo caso il Jain s Fairness Index è 0.99. Per concludere verranno mostrate le simulazioni ottenute utilizzando una banda sinusoidale con l aggiunta di rumore gaussiano, come visto per la singola e la doppia connessione, partendo con Tp1=100ms, Tp2=200ms e Tp3=300ms: 101
Fig. 4.68: confronto tra banda sinusoidale data e banda utilizzata con Tp1=100ms, Tp2=200ms e Tp3=300ms Fig. 4.69: andamento della cwnd e della coda a banda sinusoidale con Tp1=100ms, Tp2=200ms e Tp3=300ms 102
Fig. 4.70: andamento dell input rate a banda sinusoidale con Tp1=100ms, Tp2=200ms e Tp3=300ms Come appena visto, la banda utilizzata è inferiore rispetto a quella data (Fig. 4.68); il tempo di convergenza alla fairness degli input rate è di circa 48s (Fig. 4.70), maggiore rispetto alla doppia connessione. La coda ha un riempimento brusco nei primi secondi (Fig. 4.69) senza, però, superare la capacità massima del buffer (300 pacchetti). Infine il Jain s Fairness Index si mantiene a 0.99. Vediamo ora cosa accade raddoppiando i tempi di propagazione, cioè Tp1=200ms, Tp2=400ms e Tp3=600ms, mantenendo lo stesso andamento di banda: 103
Fig. 4.71: confronto tra banda sinusoidale data e banda utilizzata con Tp1=200ms, Tp2=400ms e Tp3=600ms Fig. 4.72: andamento della cwnd e della coda a banda sinusoidale con Tp1=200ms, Tp2=400ms e Tp3=600ms 104
Fig. 4.73: andamento dell input rate a banda sinusoidale con Tp1=200ms, Tp2=400ms e Tp3=600ms Fig. 4.74: andamento dell overflow rate a banda sinusoidale con Tp1=200ms, Tp2=400ms e Tp3=600ms 105
Fig. 4.75: andamento dell integrale dell overflow rate a banda sinusoidale con Tp1=200ms, Tp2=400ms e Tp3=600ms Dagli ultimi andamenti visti, la banda utilizzata si discosta maggiormente da quella data soprattutto nei primi 50s (Fig. 4.71); inoltre, come ci si poteva aspettare, il tempo di convergenza alla fairness degli input rate è circa il doppio rispetto a quello ottenuto nel caso precedente (Fig. 4.73), cioè è di circa 90s. Infine si ha un riempimento della coda che nei primi secondi supera la capacità massima del buffer (Fig. 4.72) portando ad una perdita di poco più di 200 pacchetti (Fig. 4.75); il Jain s Fairness Index è 0.98. 106