Politecnico di Milano Dipar0mento di Ele3ronica e Informazione 2. Sorgenti di Traffico
Informazioni organizzative 2 Responsabile di Laboratorio: Luca Gianoli Contatti E-mail: gianoli@elet.polimi.it Ufficio: stanza 344 Terzo Piano DEI Ricevimento: su appuntamento Sito web del corso: home.dei.polimi.it/gianoli Date previste: 26 Ott 2011 2 Nov 2011 9 Nov 2011 30 Nov 2011 14 Dic 2011 Aule: D.3.1 Orario: Mercoledì 16.15-18.15
Agenda della lezione 3 Sorgenti CBR e VBR NSCRIPT Analisi, Tracer e grafici
4 Agenda Sorgenti CBR e VBR
Sorgenti di pacchetti 5 Le sorgenti di pacchetti si caratterizzano dal grado di regolarità con cui emettono pacchetti nel tempo Sorgente Deterministica; per es. CBR (Constant Bit Rate): invia un pacchetto ogni T secondi (T = cost.) Sorgente Casuale; per es. ON-OFF: CBR per un tempo On spente per un tempo Off On e Off variabili aleatorie o deterministiche
Sorgente di pacchetti - Statistica VBR 6 Consideriamo una sorgente di tipo On-Off : è accesa per un tempo aleatorio con durata media < On > è spenta per un tempo aleatorio con durata media < Off > È un buon modello per vari tipi di segnale (es. il segnale vocale, costituito dall alternanza di parole e pause)
Sorgente di pacchetti - Statistica VBR 7 Definiamo: ritmo di trasmissione di picco pari a: [pacche' / s] ritmo di trasmissione medio pari a: [pacche' / s] fattore di burstiness (adimensionale) pari a:
Sorgente di pacchetti - Statistica VBR 8 0.08 s tempo τ on τ off τ on τ off r p = 12.5 pkt/s 1 pkt ogni 0.08 s Scegliamo un fattore di burstiness B = 0.98, e quindi il ritmo di trasmissione medio è pari a: ON accensione OFF < r > = r p B = 12.5 0.98 pkt/s = 12.24 pkt/s spegnimento
Sorgente di pacchetti - Statistica VBR 9 numero di pacchetti trasmessi (stima di < r >) tempo [s]
Sorgente di pacche/ - Sta1s1ca VBR 10 numero di pacchetti trasmessi (stima di < r >) tempo [s]
Sorgente di pacchetti - Statistica VBR 11 numero di pacchetti trasmessi (stima di < r >) tempo [s] Il tasso medio di trasmissione su tempi lunghi tende al tasso di trasmissione della sorgente (12.5*B pkt/s con B 0.98)
12 Agenda NSCRIPT
Simulazioni di sorgenti 13 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 Sorgente 10 9 8 7 6 5 4 3 Nodo sorgente FIFO 2 1 Link verso il Nodo destinazione
Simulazione di sorgenti 14 Modello: nodo di trasmissione con buffer e linea di uscita di capacità C variabili di ingresso: n tempi di interarrivo dei pacchetti n lunghezza dei pacchetti variabile di stato: n numero dei pacchetti nel nodo stato iniziale: n nessun pacchetto nel nodo variabile di uscita: n ritardo di ogni pacchetto (oppure ritardo medio)
Simulazioni di sorgenti 15 Ipotesi: il tasso medio di trasmissione della sorgente non superi la capacità del link di uscita Cosa accade quando l ipotesi non viene rispettata? Il livello di riempimento della coda: si mantiene praticamente costante nel caso di Sorgenti CBR ha una variabilità crescente col fattore di burstiness nel caso di Sorgenti On-Off
16 NSCRIPT
GUI di NSCRIPT 17 Tool Bar Tool Box Graphical Editor Object Browser
Esercizio 2 con NSCRIPT 18 2 nodi con un link monodirezionale che li collega (capacità 1 Mb/ s, ritardo prop. 10 ms) livello di trasporto UDP 1 sorgente di traffico CBR (pacchetti 100 bytes, interarrivo 5 ms) la sorgente CBR inizia a trasmettere al tempo 0.5s e finisce al tempo 4.5s la simulazione termina al tempo 5s
Scenario con NSCRIPT: layer 1-3 19 Istruzioni: selezionare la cartella Topology nel Tool Box selezionare Node cliccare su due 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 (Node1) cliccare sul pulsante select an object (in alto a sx nel Tool Box) selezionare il link creato (Link0) impostare i parametri del link nel Object Browser continua
Scenario con NSCRIPT: layer 4 20 selezionare un agent UDP nella cartella Transport del Tool Box cliccare vicino al Node0 per creare un agente UDP (UDP0) selezionare un agent LossMonitor nella cartella Transport del Tool Box cliccare vicino al Node1 per creare un agente LossMonitor (LossMonitor0) 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 Node1 selezionare la funzione Connect(agent,agent) nella cartella Transport del ToolBox cliccare su UDP0 e trascinare fino a LossMonitor0 continua
Scenario con NSCRIPT: Sorgenti 21 selezionare la sorgente CBR dalla cartella Applications del ToolBox cliccare vicino a UDP0 per creare una nuova application CBR0 selezionare la funzione AttachToApp(agent, application) della cartella Transport del ToolBox cliccare su UDP0 e trascinare fino a CBR0 selezionare il pulsante select an object selezionare la sorgente creata (CBR0) impostare i parametri della sorgente nel Object Browser continua
Scenario con NSCRIPT: eventi espliciti 22 selezionare Timer nella cartella Utilities del ToolBox cliccare vicino a CBR0 per creare un Timer0 cliccare vicino a CBR0 per creare un Timer1 selezionare il pulsante select an object selezionare Timer0 cambiare nome da Timer0 in 0.5 selezionare Timer1 cambiare nome da Timer1 in 4.5 selezionare la funzione ApplicationEvent nella cartella Utilities del ToolBox cliccare sul timer 0.5 e trascinare fino a CBR0 cliccare sul timer 4.5 e trascinare fino a CBR0 selezionare il pulsante select an object cliccare sul collegamento tra 4.5 CBR0 configurare l Event in stop
Scenario con NSCRIPT 23 Operazioni finali salvare il file NSCRIPT n file esercizio2.nss esportare il file tcl n File esercizio2.tcl Eseguire la simulazione con ns n ns esercizio2.tcl Al termine della simulazione, eseguire nam per visualizzare il comportamento della simulazione n nam esercizio2.nam
Esercizio 3: il multiplatore statistico 24 Creare una topologia più interessante di questo tipo: Node0 Node1 Node2 10 Mb/s 10 ms 1 Mb/s 10 ms lunghezza coda 10 Node3 Node4 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
Esercizio 3: sorgenti VBR 25 Node0 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node4 Node2 10 Mb/s 10 ms Configurare le sorgenti ExpOnOff: packet size = 210 byte rate di picco = 200 kbit/s ON time medio = 0.2s OFF time medio = 0.2s istante di accensione = 0.1s istante di spegnimento = 10.0s
Esercizio 3: sorgenti VBR 26 Node0 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node4 Node2 Configurare le sorgenti ExpOnOff: packet size = 210 byte rate di picco = 200 kbit/s ON time medio = 0.2s OFF time medio = 0.2s istante di accensione = 0.1s istante di spegnimento = 10.0s 10 Mb/s 10 ms Codice tcl: $ExpOnOff{X} set packetsize_ 210 $ExpOnOff{X} set rate_ 200k $ExpOnOff{X} set burst_time_ 0.2s $ExpOnOff{X} set idle_time_ 0.2s $ns at 0.1 "$CBR{X} start" $ns at 10.0 "$CBR{X} stop" {X} è il numero progressivo della sorgente, f.i., 0, 1, 2,
Esercizio 3: sorgenti VBR 27 Node0 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node4 Qualche conto: Node2 10 Mb/s 10 ms Codice tcl: r p [pkt/s] = rate_ [bit/s] / (packetsize_ 8) [bit/pkt] = = 119 pkt/s < r > [bit/s] = r p B [bit/s] = = (r p < τ ON >) / (< τ ON > + < τ OFF >) [bit/s] = = (rate_ burst_time_) / (burst_time_ + idle_time_) [bit/s] = = (200 0.2) / 0.4 [kbit/s] = 100 kbit/s Multiplazione statistica R l = 1 Mbit/s > N r p = 3 200 kbit/s R l = 1 Mbit/s >> N < r > = 3 100 kbit/s $ExpOnOff{X} set packetsize_ 210 $ExpOnOff{X} set rate_ 200k $ExpOnOff{X} set burst_time_ 0.2s $ExpOnOff{X} set idle_time_ 0.2s $ns at 0.1 "$CBR{X} start" $ns at 10.0 "$CBR{X} stop" {X} è il numero progressivo della sorgente, f.i., 0, 1, 2,
Esercizio 3: sorgenti VBR 28 Node0 1 Mb/s 10 ms lunghezza coda 10 Node1 Node3 Node4 Qualche conto: Node2 10 Mb/s 10 ms Codice tcl: r p [pkt/s] = rate_ [bit/s] / (packetsize_ 8) [bit/pkt] = = 119 pkt/s < r > [bit/s] = r p B [bit/s] = = (r p < τ ON >) / (< τ ON > + < τ OFF >) [bit/s] = = (rate_ burst_time_) / (burst_time_ + idle_time_) [bit/s] = = (200 0.2) / 0.4 [kbit/s] = 100 kbit/s Multiplazione statistica R l = 1 Mbit/s > N r p = 3 200 kbit/s R l = 1 Mbit/s >> N < r > = 3 100 kbit/s Non ci aspettiamo perdite $ExpOnOff{X} set packetsize_ 210 $ExpOnOff{X} set rate_ 200k $ExpOnOff{X} set burst_time_ 0.2s $ExpOnOff{X} set idle_time_ 0.2s $ns at 0.1 "$CBR{X} start" $ns at 10.0 "$CBR{X} stop" {X} è il numero progressivo della sorgente, f.i., 0, 1, 2,
29 Agenda Analisi, Tracer e grafici
Esercizio 3a: colore flussi UDP 30 NSCRIPT Codice tcl: 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. $ns color 1 black $ns color 2 white $ns color 3 red $ns color 4 green $ns color 5 blue $ns color 6 yellow $ns color 7 pink $ns color 8 orange $ns color 9 cyan $ns color 10 magenta $UDP0 set fid_ 1 $UDP1 set fid_ 2 $UDP2 set fid_ 3
Esercizio 3b: variabili di uscita 31 1 Mb/s 10 ms lunghezza coda 10 10 Mb/s 10 ms
Esercizio 3b: variabili di uscita 32 Codice tcl: $ns at 0.0 "Tracer0_trace" set Tracer0 [open Tracer0.trc w] close $Tracer0 proc Tracer0_trace {} { global ns LossMonitor0 set Tracer0 [open Tracer0.trc a] puts $Tracer0 "[$ns now] [$LossMonitor0 set npkts_]" close $Tracer0 $ns after 0.1 "Tracer0_trace" } Ripetere sostituendo: npkts_ con nlost_ Tracer0 con Tracer1(OVUNQUE!)
Esercizio 3b: variabili di uscita 33 Codice tcl: $ns at 0.0 "Tracer0_trace" set Tracer0 [open Tracer0.trc w] close $Tracer0 proc Tracer0_trace {} { global ns LossMonitor0 set Tracer0 [open Tracer0.trc a] puts $Tracer0 "[$ns now] [$LossMonitor0 set npkts_]" close $Tracer0 $ns after 0.1 "Tracer0_trace" } Ripetere sostituendo: npkts_ con nlost_ Tracer0 con Tracer1(OVUNQUE!) Viene creato 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)
Esercizio 3c: perdite sul buffer 34 1 Mb/s 10 ms lunghezza coda 10 10 Mb/s 10 ms Aumentare la velocità delle sorgenti: rate 500 kb/s quando le tre sorgenti sono attive il traffico offerto al link supera la sua capacità e si possono perdere pacchetti.
Esercizio 3c: perdite sul buffer 35 1 Mb/s 10 ms lunghezza coda 10 10 Mb/s 10 ms Aumentare la velocità delle sorgenti: rate 500 kb/s quando le tre sorgenti sono attive il traffico offerto al link supera la sua capacità e si possono perdere pacchetti. Multiplazione statistica R l = 1 Mbit/s < N r p = 3 500 kbit/s R l = 1 Mbit/s > N < r > = 3 250 kbit/s Ci aspettiamo perdite occasionali (in quanto la coda è limitata a 10)
Esercizio 3c: pacchetti arrivati 36 Per tracciare i grafici: xgraph nomefile.trc
37 Esercizio 3c: pacchetti persi
Esercizio 3c: variazioni interessanti 38 E se lo rifacessimo con queue-limit = 100??? E se lo rifacessimo poi con rate_ = 800 kbit/s???
Esercizio 3c: variazioni interessanti 39 E se lo rifacessimo con queue-limit = 100??? E se lo rifacessimo poi con rate_ = 800 kbit/s??? R f = 1 Mbit/s << N r p = 3 800 kbit/s R f = 1 Mbit/s < N < r > = 3 400 kbit/s