Politecnico di Milano
Dipartimento di Elettronica e Informazione
Laboratorio di Fondamenti di Reti di Laboratorio di Fondamenti di Reti di TelecomunicazioniTelecomunicazioni
Corso Fratta – Pattavina – Maier
Lezione n° : 2
22
Responsabili Laboratorio e Contatti
Sito Internet di riferimento del corso–– http://http://home.dei.polimi.ithome.dei.polimi.it//maiermaier//materiale.htmlmateriale.html
Contatti
– Prof Fratta• Jocelyne Elias ([email protected])
• Diego Lucerna ([email protected])
– Prof Maier• Guido Maier ([email protected])
• Diego Lucerna ([email protected])
– Prof Pattavina• Massimo Tornatore ([email protected])
• Diego Lucerna ([email protected])
3
Sorgenti di pacchetti
• 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
4
Sorgente di pacchetti - Statistica VBR
• 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)
5
Sorgente di pacchetti - Statistica VBR
• Definiamo:– ritmo di trasmissione di picco pari a:
– ritmo di trasmissione medio pari a:
– fattore di burstiness (adimensionale) pari a:
Trp
1====
[pacchetti / s]1 on
on off
rT
τ
τ τ
< >< >=
< > + < >
[pacchetti / s]
on
p on off
rB
r
τ
τ τ
< >< >= =
< > + < >
6
Sorgente di pacchetti - Statistica VBR
• Scegliamo un fattore di burstiness B = 0.98, e quindi il ritmo di trasmissione medio è pari a:
< r > = rp ⋅ B = 12.5 ⋅ 0.98 pkt/s = 12.24 pkt/s
0.08 s
ττττ’on ττττ’off ττττ’’on ττττ’’off
tempo
ON OFF
spegnimento
accensione
rp = 12.5 pkt/s ⇒ 1 pkt ogni 0.08 s
7
Sorgente di pacchetti - Statistica VBR
y = 27.40 t
0
50
100
150
200
250
0 2 4 6 8 10
Sorgente On-Off
Interpolazione Lineare
(stima di < r >)
tempo [s]
numero di p
acch
etti trasm
essi
8
y = 13.00 t
0
100
200
300
400
500
600
700
800
900
1000
1100
1200
1300
1400
0 20 40 60 80 100
Sorgente On-Off
Interpolazione Lineare
tempo [s]
numero di p
acch
etti trasm
essi
(stima di < r >)
Sorgente di pacchetti - Statistica VBR
9
y = 12.24 t
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
0 200 400 600 800 1000
Sorgente On-Off
Interpolazione Lineare
tempo [s]
numero di p
acch
etti trasm
essi
Il tasso medio di trasmissione su tempi lunghi tende al tasso ditrasmissione della sorgente (12.5*B pkt/s con B≅0.98)
(stima di < r >)
Sorgente di pacchetti - Statistica VBR
10
Multiplazione Statistica
• Simulazione della multiplazione statistica di pacchetti in un nodo di rete con buffer d’uscita
– Modello:• nodo di trasmissione con buffer e linea di uscita di capacità C
• variabili di ingresso:
– tempi di interarrivo dei pacchetti;
– lunghezza dei pacchetti;
• variabile di stato:
– numero dei pacchetti nel nodo;
• stato iniziale:
– nessun pacchetto nel nodo;
• variabile di uscita:
– ritardo di ogni pacchetto (oppure ritardo medio).
11
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.
FIFO 12
11
3
5
nodo
sorgente
678910
4
Link verso il
Nodo destinazione
12
Simulazioni di sorgenti (2)
• Ipotesi:
– il tasso medio di trasmissione della sorgente non superi la capacità del link di uscita;
• 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.
13
NSCRIPT
•• NSCRIPTNSCRIPT è un tool per creare in modo grafico gli script OTcl per la simulazione con NS;
• in questo corso useremo NSCRIPTNSCRIPT perché è un tool modificabile mediante semplici funzioni di libreria.
15
passare ad passare ad NSCRIPTNSCRIPT
• 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 dell’Es. 1 con NSCRIPT
16
Es. 2: il multiplatore statistico
• Creare una topologia più interessante di questo tipo:
• 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.
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
Node3
Node0
Node1
Node2
Node4
17
• 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
Muxer stat. con NSCRIPT: layer 1-3
18
– … 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;
Muxer stat. con NSCRIPT: layer 4
19
Muxer stat. con NSCRIPT: sorgenti VBR
a) 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;
– continua …
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
Node3
Node0
Node1
Node2
Node4
$ExpOnOff($j) set packetSize_ 210
$ExpOnOff($j) set rate_ 200k
$ExpOnOff($j) set burst_time_ 0.2s
$ExpOnOff($j) set idle_time_ 0.2s
Sorgente j-esima
rp [pkt/s] = rate_ [bit/s] / (packetSize_ ⋅ 8) [bit/pkt] == 119 pkt/s
20
Muxer statistico: analisi (senza perdite)
a) 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;
– continua …
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
Node3
Node0
Node1
Node2
Node4
Sorgente j-esima
< r > [bit/s] = rp ⋅ B [bit/s] =
= (rp ⋅ < τON >) / (< τON > + < τOFF >) [bit/s] =
= (rate_ ⋅ burst_time_) / (burst_time_ + idle_time_) [bit/s] =
= (200 ⋅ 0.2) / 0.4 [kbit/s] = 100 kbit/s
3 Sorgenti
Multiplazione statistica
Rf = 1 Mbit/s > N ⋅ rp = 3 ⋅ 200 kbit/s
Rf » N ⋅ < r > = 3 ⋅ 100 kbit/sNon ci aspettiamo perdite
21
Muxer stat. con NSCRIPT: layer app.
– … continua
– selezionare la sorgente ExpOnOff dalla cartella Applicationsdel ToolBox;
– cliccare vicino a UDP0 per creare una nuova applicationExpOnOff0;
– 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…
22
– … 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…
Muxer stat. con NSCRIPT: layer app.
23
Muxer stat. con NSCRIPT: colore flussi UDP
c) Inserire dei colori per i flussi.
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
24
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.
25
Muxer stat. con NSCRIPT: variabili di uscita
d) Monitorare i pacchetti in arrivo e i pacchetti persi nei LossMonitor:
–– npkts_npkts_ (numero di pacchetti arrivati);
–– nlostnlost__ (numero di pacchetti persi).
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
26
• 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_npkts_ ;
• Inserire un altro oggetto Tracer e ripetere le operazioni precedenti, inserendo però per il campo Data Member il valore nlost_nlost_ .
Muxer stat. con NSCRIPT: accessori
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)
27
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;– esportare il file tcl;– eseguire ns.
nss-files/esercizio2a.nss
nss-files/esercizio2a.tcl
Al termine della simulazione,
visualizzare con nam
28
Muxer statistico con perdite sul burst (Es. 2b)
b) Aumentare la velocità delle sorgenti:– rate 400 kb/s;
– quando le tre sorgenti sono attive il traffico offerto al link supera la sua capacità e si possono perdere pacchetti.
nss-files/esercizio2b.nss
nss-files/esercizio2b.tcl
10 Mb/s
10 ms
1 Mb/s
10 ms
lunghezza coda 10
Multiplazione statistica
Rf = 1 Mbit/s < N ⋅ rp = 3 ⋅ 400 kbit/s
Rf > N ⋅ < r > = 3 ⋅ 200 kbit/sCi aspettiamo perdite “occasionali”
(in quanto la coda è limitata a 10)
29
0
200
400
600
800
1000
1200
1400
1600
0 2 4 6 8 10 12
tempo t [sec]
nu
mero
pacch
ett
i arr
ivati
Per tracciare i grafici:xgraph nomefile
Es. 2b: risultati (1)
30
0
10
20
30
40
50
60
0 2 4 6 8 10 12tempo t [sec]
nu
mero
pacch
ett
i p
ers
i
Es. 2b: risultati (2)