Politecnico di Milano Dipartimento di Elettronica e Informazione Laboratorio di Reti di Comunicazione e Internet (MOD1) Prof. Maier – Prof. Tornatore Lezione n° : 2 Simulazioni di sorgenti (1) • Supponiamo che il sistema sia costituito da: – un nodo sorgente; – un buffer di memoria FIFO (First In First Out); – un link di uscita di capacità C [pacchetti/s] verso un altro nodo. 11 nodo sorgente 10 9 8 7 6 5 4 3 Link verso il Nodo destinazione FIFO 2 1 2 Es. 2: il multiplatore statistico • Creare una topologia più interessante di questo tipo: 1 Mb/s 10 ms lunghezza coda 10 Node0 Node1 Node3 Node2 Node4 10 Mb/s 10 ms • Si utilizzi un agent UDP per ogni nodo di sinistra; • Si utilizzino 3 agenti LossMonitor per il nodo di destra; • Si utilizzi una sorgente ExpOnOff per ogni nodo di sinistra. 3 Muxer stat. con NSCRIPT: layer 1-3 • Istruzioni: – – – – – – – – – – selezionare la cartella Topology nel Tool Box; selezionare node; cliccare su cinque punti del Graphical Editor per creare i nodi; selezionare nella cartella Topology SimplexLink; cliccare sul nodo di partenza (Node0) e trascinare fino al nodo di arrivo (Node3); cliccare sul pulsante “select an object” (in alto a sx nel Tool Box); selezionare il link creato (Link0); settare i parametri del link nel Object Browser; ripetere per creare gli altri link … continua 4 Muxer stat. con NSCRIPT: layer 4 – – – – – – – – – – – – – – … continua selezionare un agent UDP nella cartella Transport del Tool Box; cliccare vicino al Node0 per creare un agente UDP (UDP0); ripetere per Node1 e Node2 per creare UDP1 e UDP2; selezionare un agent LossMonitor nella cartella Transport del Tool Box; cliccare vicino al Node4 per creare un agente LossMonitor (LossMonitor0); ripetere altre due volte per creare Loss1 e Loss2; selezionare la funzione AttachToNode(agent, node) nella cartella Transport del ToolBox; cliccare sul UDP0 e trascinare fino a Node0; cliccare su LossMonitor0 e trascinare fino a Node4; ripetere per tutti gli altri agent; selezionare la funzione Connect(agent,agent) nella cartella Transport del ToolBox; cliccare su UDP0 e trascinare fino a LossMonitor0; ripetere per le altre due coppie di agent; 5 Muxer stat. con NSCRIPT: sorgenti VBR C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node0 Node1 Node3 Node2 Node4 Cj-3 = 10 Mb/s 10 ms a) Configurare le sorgenti ExpOnOff: – – – – – – – – Packet size = 210 byte; Rate di picco (rp) = 200 kbit/s; ON time medio (ton) = 0.2s; OFF time medio (toff) = 0.2s; Numero di Sorgenti N = 3; Capacità del link 3-4 C3-4 = 1 Mbit/s; Istante di accensione = 0.1s; Istante di spegnimento = 10.0s; $ExpOnOff($j) set packetSize_ 210 $ExpOnOff($j) set rate_ 200k $ExpOnOff($j) set burst_time_ 0.2s $ExpOnOff($j) set idle_time_ 0.2s 6 Muxer statistico: analisi (senza perdite) C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node0 Node1 Node3 Node4 Cj-3 = 10 Mb/s 10 ms Node2 Rate Medio < r > [bit/s] = rp B [bit/s] = = (rp <ton>) / (<ton> + <toff>) [bit/s] = = (200 0.2) / 0.4 [kbit/s] = 100 kbit/s rp rp ton ton toff t [s] 7 Muxer statistico: analisi (senza perdite) Node0 C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node2 Node4 Cj-3 = 10 Mb/s 10 ms Rate Medio < r > [bit/s] = rp B [bit/s] = = (rp <ton>) / (<ton> + <toff>) [bit/s] = = (200 0.2) / 0.4 [kbit/s] = 100 kbit/s Multiplazione statistica C3-4 = 1 Mbit/s > N <r>= 3 100 kbit/s = 300 kbit/s C3-4 = 1 Mbit/s > N rp = 3 200 kbit/s = 600 kbit/s Non ci aspettiamo perdite 8 Muxer stat. con NSCRIPT: layer app. – … continua – selezionare la sorgente ExpOnOff dalla cartella Applications del ToolBox; – cliccare vicino a UDP0 per creare una nuova application ExpOnOff0; – selezionare la funzione AttachToApp(agent, application) della cartella Transport del ToolBox; – cliccare su UDP0 e trascinare fino a ExpOnOff0; – selezionare il pulsante “select an object”; – selezionare ExpOnOff0; – configurare i parametri di ExpOnOff0; – ripetere per ExpOnOff1 e ExpOnOff2; – continua… 9 Muxer stat. con NSCRIPT: layer app. – – – – – – – – – – … continua selezionare la sorgente ExpOnOff dalla cartella Applications del ToolBox; cliccare vicino a UDP0 per creare una nuova application ExpOnOff0; selezionare la funzione AttachToApp(agent, application) della cartella Transport del ToolBox; cliccare su UDP0 e trascinare fino a ExpOnOff0; selezionare il pulsante “select an object”; selezionare ExpOnOff0; configurare i parametri di ExpOnOff0; ripetere per ExpOnOff1 e ExpOnOff2; continua… 10 Muxer stat. con NSCRIPT: colore flussi UDP C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node0 Node1 Node3 Node2 c) Node4 Cj-3 = 10 Mb/s 10 ms Inserire dei colori per i flussi. 11 Muxer stat. con NSCRIPT: accessori • Inserire un oggetto Colors dalla cartella Utilities; • selezionare l’oggetto Colors e impostare i prime tre valori del campo Values con i colori desiderati; • selezionare uno alla volta i tre oggetti UDP, impostando i valori del campo FlowId, rispettivamente, ad 1, 2 e 3; • in questo modo si saranno associati i primi tre colori di Colors ai tre flussi UDP. 12 Muxer stat. con NSCRIPT: variabili di uscita Node0 C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node2 Node4 Cj-3 = 10 Mb/s 10 ms d) Monitorare i pacchetti in arrivo e i pacchetti persi nei LossMonitor: – – npkts_ (numero di pacchetti arrivati); nlost_ (numero di pacchetti persi). 13 Muxer stat. con NSCRIPT: accessori • Inserire un oggetto Tracer dalla cartella Utilities; • Selezionare l’oggetto Tracer e impostare: – – – – il campo start al valore 0.0; il campo dt al valore 0.1; il campo Object al valore LossMonitor0; il campo Data Member al valore npkts_ ; • Inserire un altro oggetto Tracer e ripetere le operazioni precedenti, inserendo però per il campo Data Member il valore nlost_ . Tracer NomeTracer crea automaticamente un file testo “NomeTracer.trc” dove vengono registrati i campioni della variabile di uscita con gli istanti di campionamento. Utile per tracciare grafici (con xgraph) 14 Muxer stat. con NSCRIPT: eventi espliciti – – – – – – – – – – – – – – – – – – – … continua selezionare Timer nella cartella Utilities del ToolBox; cliccare vicino a ExpOnOff0 per creare un Timer0; cliccare vicino a ExpOnOff0 per creare un Timer1; selezionare il pulsante “select an object”; selezionare Timer0; cambiare nome da “Timer0” in “0.1”; selezionare Timer1; cambiare nome da “Timer1” in “10.0”; selezionare la funzione ApplicationEvent nella cartella Utilities del ToolBox; cliccare sul timer 0.1 e trascinare fino a ExpOnOff0; ripetere per le altre sorgenti; cliccare sul timer 10.0 e trascinare fino a ExpOnOff0 e ripetere per le altre sorg.; selezionare il pulsante “select an object”; cliccare sul collegamento tra 10.0 e ExpOnOff0, ExpOnOff1 and ExpOnOff2; configurare l’Event in “stop”; salvare il file; Al termine della simulazione, esportare il file tcl; visualizzare con nam eseguire ns. 15 Muxer statistico con perdite sul burst (Es. 2b) Node0 C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node2 b) Node4 Cj-3 = 10 Mb/s 10 ms Aumentare la velocità delle sorgenti: – – Rate di picco (rp) 400 kb/s; Quando le tre sorgenti sono attive il traffico offerto al link 3-4 supera la sua capacità e quindi si possono perdere pacchetti. nss-files/esercizio2b.nss nss-files/esercizio2b.tcl 16 Muxer statistico con perdite sul burst (Es. 2b) Node0 C3-4 = 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node2 Node4 Cj-3 = 10 Mb/s 10 ms Rate Medio < r > [bit/s] = rp B [bit/s] = = (rp <ton>) / (<ton> + <toff>) [bit/s] = = (400 0.2) / 0.4 [kbit/s] = 200 kbit/s Multiplazione statistica C3-4 = 1 Mbit/s > N <r> = 3 200 kbit/s = 600 kbit/s C3-4 = 1 Mbit/s < N rp = 3 400 kbit/s = 1.2 Mbit/s Ci aspettiamo perdite: Siccome il nodo 4 ha una coda, ma questa coda é limitata a 10 pacchetti le perdite che si verificano sono “occasionali” 17 Es. 2b: risultati (1) 1600 numero pacchetti arrivati 1400 1200 1000 800 600 400 200 0 0 2 4 6 8 10 12 tempo t [sec] Per tracciare i grafici: xgraph –lf variable nomefile.txt 18 Es. 2b: risultati (2) 60 numero pacchetti persi 50 40 30 20 10 0 0 2 4 6 tempo t [sec] 8 10 12 19 Es. 2c/2d: variazioni molto interessanti E se lo rifacessimo con queue-limit = 100 ? -Eseguire una nuova simulazione cambiando solo la queue-limit. - Come varia il grafico del “Numero di pacchetti persi vs. Tempo” E se lo rifacessimo con sorgenti con Rate di picco (rp) 800 kbit/s? - Eseguire una nuova simulazione cambiando ora la queue-limit = 100 e il Rate di picco delle 3 sorgenti (rp) = 800 kbit/s . Multiplazione statistica C3-4 = 1 Mbit/s ?? N <r> = ___ kbit/s = ___ Mbit/s C3-4 = 1 Mbit/s ?? N rp = ___ kbit/s = ___ Mbit/s Ci aspettiamo perdite? Usare il simulatore per osservare l’entità della perdita, tracciando il grafico del “Numero di pacchetti persi vs. Tempo” 20