Laboratorio di Reti di Comunicazione e Internet (MOD1) · 2016-11-09 · Descrizione della rete di...
Transcript of Laboratorio di Reti di Comunicazione e Internet (MOD1) · 2016-11-09 · Descrizione della rete di...
Politecnico di MilanoDipartimento di Elettronica e Informazione
Laboratorio di Reti di Comunicazione e Internet (MOD1)
Prof. Maier – Prof. Musumeci – Prof. Tornatore
Lezione n° : 1
2
Responsabili Laboratorio e Contatti
Sito Internet di riferimento del corso (Anna Buttaboni)– http://home.deib.polimi.it/buttaboni/index.html
Contatti– Prof. Musumeci ([email protected])– Prof. Tornatore ([email protected])
• Responsabile: Prof. Guido MAIER ([email protected])
5 lezioni da due ore tutti i lunedì del primo emisemestre– 10/10; 17/10; 24/10; 7/11; 14/11
3
Indice
• Accessori utili
• Concetti base di simulazione ed emulazione
• Introduzione a Network Simulator (NS)
4
Indice
• Accessori utili
• Concetti base di simulazione ed emulazione
• Introduzione a Network Simulator (NS)
Accessori utili – How To…
• Utilizzare NX Client da un PC (connesso wired alla rete del Politecnico):– http://www.smartpc.polimi.it/virtual‐desktop/– Dalla pagina scaricare il programma Citrix Receiver
• Come salvare i file:– http://www.smartpc.polimi.it/virtual‐desktop/salvare‐i‐file/
• Si può rendere visibile un driver USB o il proprio disco da NX (complicato)• Si può usare il portale BEEP tramite interfaccia web• Si può usare "cut‐and‐paste" (soluzione più semplice)
5
6
Indice
• Accessori utili
• Concetti base di simulazione ed emulazione
• Introduzione a Network Simulator (NS)
7
Sistema & Modelli (1)
• Sistema– è una collezione di componenti interagenti:
• interazione spontanea; • interazione organizzata in modo da soddisfare certe specifiche.
• Modello– è una rappresentazione del sistema;– può assumere varie forme (ad esempio la replica fisica);
– ci baseremo sui Modelli Matematici
8
Sistema & Modelli (2)
• Stato del Sistema:– descrive la condizione istantanea di tutti i suoi componenti– ha corrispondenza con uno stato del modello del sistema– il modello è l’evoluzione del sistema mediante la storia dei passaggi di stato
– è semplificato rispetto allo stato del sistema.• Livello di astrazione:
– indica che alcune caratteristiche dello stato del sistema sono omesse
– è strettamente funzionale alle misure che si vogliono effettuare sul modello
Il miglior modello è quello più semplice che consente di ottenere le misure desiderate
9
Sistema & Modelli (3)
• Variabili– sono comunemente utilizzate nei modelli matematici;– relazioni o funzioni tra variabili sono fondamentali per descrivere il modello
– variabili di stato: definiscono completamente lo stato del modello e permettono di seguirne l’evoluzione
– variabili di ingresso: indicano le sollecitazioni esterne sul sistema
– variabili di uscita:• dipendono dalle variabili di ingresso e dalle variabili di stato• rappresentano le grandezze che si intende misurare (sonde di misura)
10
Sistema & Modelli (4)
• Soluzione del Modello– consiste nell’ottenere i valori delle variabili di uscita;– soluzione analitica: coinvolge metodi matematici di risoluzione delle equazioni che descrivono le relazioni tra le variabili;
– soluzione simulata: riproduce l’evoluzione del sistema mediante • l’evoluzione delle variabili di stato • la “misurazione” diretta delle variabili d’uscita
11
Simulazione ed emulazione
• La simulazione ricostruisce un sistema che evolve come il sistema reale (modello) per alcuni importanti aspetti– La simulazione deve fornire indicazioni sul comportamento del sistema dati alcuni parametri iniziali;
– Esempi: gallerie del vento, simulatori di volo, previsioni del tempo, simulatore di reti.
• Un emulatore duplica le funzioni di un sistema usandone un altro differente, di modo che quest’ultimo si comporti a tutti gli effetti come se fosse il primo sistema– Un emulatore può essere hardware e software;– Esempi: emulatori per console (MAME) o O.S. (QEMU), PacketTracer per reti (MOD 2)
12
Introduzione alla simulazione
• Simulazioni di sistemi deterministici:– completamente definite dal modello; – l’evoluzione è funzione dei parametri d’ingresso.– Esempio: descrizione del moto delle bocce sul tavolo di biliardo.
• Simulazioni di sistemi casuali:– basate su modelli stocastici;
• includono variabili/processi aleatori, ottenuti con la generazione di numeri “casuali”;
– riavviando la simulazione con gli stessi parametri iniziali si ottiene un’evoluzione diversa;
– non interessa studiare la singola simulazione nel dettaglio;– si studia il comportamento medio del sistema e le sue altre caratteristiche
statistiche.
13
Simulazione ad eventi discreti (1)
• In alcuni modelli le variabili di stato cambiano valore solo ad istanti discreti di tempo;
• Il cambiamento di stato del sistema prende il nome di evento;
• Un evento non ha durata ed è caratterizzato da un istante di occorrenza;
• L’attività rappresenta una condizione del sistema che è solitamente caratterizzata da un eventi di inizio e fine;– Ad esempio l’inizio e la fine della trasmissione di un pacchetto sono eventi, mentre la trasmissione stessa è un’attività;
La simulazione ad eventi discreti è di fondamentale importanza per le reti di telecomunicazione.
Simulazione ad eventi discreti (2)
• Un simulatore ad eventi discreti effettuato al calcolatore necessita:– dei tipi di eventi che possono verificarsi;– delle modifiche da apportare allo stato del sistema per ogni evento;– di una variabile temporale t che consenta ordinare gli eventi in un
calendario sulla base dell’istante di occorrenza;– della definizione dello stato iniziale
• La simulazione ( = esecuzione del simulatore/programma) consiste:– nello scorrere il calendario (scheduler) e quando si trova un evento
eseguire le modifiche alle variabili di stato corrispondenti;– nell’effettuare misure sulle variabili di uscita.
• Esempio di simulazione casuale ad eventi discreti:– Simulazione di concentratore telefonico: l’arrivo delle chiamate dai
tributari e la loro durata sono variabili casuali (tempi di inter‐arrivo e durate casuali);
– noto il numero di linee telefoniche di ingresso e di uscita del concentratore si determinano le prestazioni del sistema (percentuale di chiamate perse ovvero probabilità di non trovare la linea)
•14
15
Come fare una simulazione?
• Un simulatore è quindi un software:– un simulatore “ad‐hoc” è scritto con i normali linguaggi di programmazione (C, C++, Java, ecc.);
– si possono usare dei simulatori che descrivono il modello simulativo con strumenti grafici o linguaggi ad alto livello;
– esistono simulatori di reti di telecomunicazione commerciali molto sofisticati (OPNET è il più noto);
• In questo corso si fa uso di uno strumento freeware: Network Simulator (NS)– Molto adatto per le reti a commutazione di pacchetto– Livello di astrazione: IL PACCHETTO– Eventi: inizio/fine trasmissione/ricezione di pacchetti– Attività: trasmissione di pacchetti
16
Indice
• Accessori utili
• Concetti base di simulazione ed emulazione
• Introduzione a Network Simulator (NS)
17
Network Simulator (NS‐2)
• Si tratta di un simulatore di reti a pacchetto ad eventi discreti;
• È adottato molto spesso per la simulazione di reti IP, ma è utile per lo studio di molti aspetti di base delle reti dati;
• È un software FREEWARE;• “non è finito”: è un software in continua evoluzione continuamente aggiornato e modificato da ricercatori e studenti di moltissime università– Oggi c'è ns‐3, molto diverso, ma hanno promesso di mantenere anche ns‐2
• Sito di riferimento da cui è possibile scaricarlo: http://www.isi.edu/nsnam/ns/ [al momento, inattivo]
18
Simulare con NS‐2
• Per effettuare una simulazione con NS occorre:
– descrivere lo scenario simulativo (nodi, link, sorgenti di traffico, ecc.);
– eseguire la simulazione;
– visualizzare i risultati.
19
Network Simulator ns‐2
Imparare ad utilizzare NS‐2 equivale dunque ad imparare a descrivere gli scenari simulativi mediante OTcl
20
Il nostro percorso
• A rigore dovremmo:– imparare a programmare OTcl;– conoscere gli oggetti definiti da NS, le loro variabili e funzioni accessibili tramite script;
– costruire gli strumenti per l’analisi statistica dei risultati.
• Noi però: – adotteremo un approccio semplificato basato su esempi; – ci serviremo di uno strumento grafico per la descrizione dello scenario che genera lo script OTcl.
21
Visualizzazione dei risultati (1)
• La visualizzazione dei risultati può essere ottenuta in molti modi in base allo scopo che ci si prefigge.
• File di trace:– è possibile chiedere al simulatore di generare dei “file di trace” in cui si registrano tutti gli eventi che si verificano;
– risultati statistici si possono ottenere elaborando offline il file.
22
Visualizzazione dei risultati (2)
• Animazione:– un particolare file di trace generato da NS permette di visualizzare una animazione della simulazione mediante Network Animator Module (NAM)
23
Visualizzazione dei risultati (3)
• Variabili statistiche:– È infine possibile inserire nello script Tcl alcuni comandi che consentono di registrare in un file alcuni valori specifici che descrivono le variabili d’uscita desiderate;
– Non sono purtroppo forniti strumenti generali per questo tipo di approccio (occorre prima prendere familiarità con NS e con OTcl).
24
Virtual Desktop
• Come accedere a Virtual Desktop:– Dal browser Internet accedere al link: https://virtualdesktop.polimi.it/
– Effettuare il login con il proprio codice persona e password (credenziali del Politecnico)
28
Descrizione della rete di ns
• La descrizione della rete in ns è strutturata a strati, sul modello dell’architetture di protocolli TCP/IP…– … anche se in modo molto semplificato, per cogliere solo gli aspetti essenziali
• Si identificano tre livelli– Application– Transport– Livelli inferiori( comprendenti: network, data‐link e fisico opp. IP, NetAcc)
Generatore di traffico(Applicazione)
Livello di Trasporto
Livelli inferiori(non creati/gestiti in modo esplicito)
29
Oggetti base di NS
• Il primo oggetto base è Simulator;• Ogni script OTcl inizia con la creazione di una variabile di tipo Simulator:
• una volta creata la variabile viene utilizzata facendo precedere il nome il simbolo $:
set ns [new Simulator]
$ns
30
Nodi
• I nodi sono oggetti gestiti da Simulator e sono creati in questo modo:
• la funzione node di Simulator crea il nuovo oggetto e gli associa un indirizzo interno;
• le variabili $n0 e $n1 consentono di manipolare i due nodi nello script.
set n0 [$ns node]
set n1 [$ns node]
n0
n1
Applicazione
Trasporto
Livelli inferiori
31
Link (1)
• I nodi possono essere collegati da link;• Sono definiti due tipi di link:
– simplex‐link (link monodirezionale);– duplex‐link (link bi‐direzionale);
$ns duplex‐link $n0 $n1 1Mb 10ms DropTail
$ns simplex‐link $n0 $n1 1Mb 10ms DropTail
n0 n1 n0 n1
Applicazione
Trasporto
Livelli inferiori
32
Link (2)
• Sintassi:
• <link_type> indica il tipo di link (simplex o duplex)• <bandwidth> indica la capacità del link
– 10Mb (10 Mb/s), 1.2kb (1.2 kb/s), 1.5e6 (1.5 Mb/s);• <delay> indica il ritardo di propagazione del link
– 13s (13 secondi), 1.34ms (1.34 ms);• <queue_type> indica il metodo di gestione della coda • DropTail indica una gestione FIFO (First In First Out).
– Esistono anche altre discipline; – È possibile stabilire le dimensioni della coda (in pacchetti):
$ns <link_type> <node0> <node1> <bandwidth> <delay> <queue_type>
$ns queue‐limit $n0 $n1 10
Applicazione
Trasporto
Livelli inferiori
33
Agenti e Applicazioni
• Dopo aver creato la topologia occorre aggiungere allo scenario simulativo la parte attiva che gestisce il traffico di pacchetti;
• in NS questo compito è assegnato agli Agent e alla Application;
Generatore di traffico(Applicazione)
Livello di Trasporto
Livelli inferiori(non creati/gestiti in modo esplicito)
• di tipo Agent sono le entità che rappresentano il livello di trasporto;
• di tipo Applicationsono le entità che generano il traffico.
34
Agenti (1)
• Essendo nato come strumento per il mondo IP i livelli di trasporto definiti in NS sono di tipo UDP e di tipo TCP;
• l’ Agent più semplice è Agent/UDP che modella un livello di trasporto datagram puro lato sender:
• l’ Agent deve essere collegato ad un nodo mediante la funzione attach‐agent di Simulator:
set UDP0 [new Agent/UDP]
$ns attach‐agent $n0 $UDP0
n0 n1
UDP0
Applicazione
Trasporto
Livelli inferiori
35
Agenti (2)
• Ogni agente deve essere collegato con un altro agente con cui scambia i dati;• Nel caso del sender UDP abbiamo bisogno di un receiver• Allo scopo possiamo utilizzare un Agent/Null che semplicemente riceve i
pacchetti e li distrugge;• Oppure un Agent/LossMonitor che in più tiene alcune statistiche sui
pacchetti ricevuti:
• infine occorre effettuare il collegamento:
set Null0 [new Agent/Null]$ns attach‐agent $n1 $Null0
$ns connect $UDP0 $Null0
n0 n1
UDP0 Null0
Applicazione
Trasporto
Livelli inferiori
36
Agenti (3)
• L’agente UDP svolge funzioni di multiplazione e di segmentazione/riassemblamento;
• È possibile configurare la dimensione massima del pacchetto (in byte!!!):
• e l’identificativo del flusso di pacchetti trasmessi:$UDP0 set packetSize_ 100
$UDP0 set fid_ 10
Applicazione
Trasporto
Livelli inferiori
37
Applicazioni (1)
• La classe Application definisce delle sorgenti di traffico;• La più semplice sorgente di traffico è la
Application/Traffic/CBR che genera pacchetti di lunghezza fissa a ritmo costante:
• la sorgente deve essere collegata ad un Agentmediante la funzione attach‐agent:
set CBR0 [new Application/Traffic/CBR]
$CBR0 attach‐agent $UDP0
n0 n1
UDP0 Null0CBR0
Applicazione
Trasporto
Livelli inferiori
38
Applicazioni (2)
• La Application/Traffic/CBR può essere configurata:
• o in alternativa:
$CBR0 set rate_ 160Kb$CBR0 set packetSize_ 100 (in byte)
(medio)
$CBR0 set interval_ 0.005$CBR0 set packetSize_ 100
rate_ = packetSize_ * 8 / interval_
Applicazione
Trasporto
Livelli inferiori
39
Eventi (1)
• Con nodi, link, agenti e applicazioni abbiamo costruito lo scenario simulativo;
• Ora occorre “animare” lo scenario legandolo alla variabile temporale mediante degli Eventi;
• Anche se la maggior parte degli eventi sono nascosti all’utilizzatore, occorre comunque inserire dei comandi nello script OTcl;
• La riga finale di ogni script OTcl che fa partire la simulazione deve essere:
$ns run
40
Eventi (2)
• E’ poi necessario, in generale, inserire degli eventi legati alla generazione di traffico;
• Tutte le sorgenti di traffico supportano i comandi (funzioni) di start e stop;
• Per fissare lo start e lo stop in determinati istanti di tempo occorre inserire degli eventi:
• Per fermare la simulazione:
$ns at 0.5 "$CBR0 start"$ns at 5.0 "$CBR0 stop"
$ns at 5.5 "exit 0"
41
Trace e NAM
• Per poter ottenere un file di trace utile per l’animazione con NAM basta inserire i comandi:
• Il file aperto deve essere chiuso alla fine della simulazione; è conveniente inserire le procedure di fine in una funzione:
set nf [open file‐animazione.nam w]$ns namtrace‐all $nf
proc finish {} {global ns nf$ns flush‐traceclose $nfexit 0}
• modificando l’evento di chiusura così:
$ns at 5.5 "finish"
42
Esecuzione della simulazione
• L’esecuzione della simulazione avviene facendo interpretare lo script OTcl ad NS:
ns mia‐simulazione.tcl
43
Esercizio 1a
• Scrivere lo script OTcl per il seguente scenario simulativo:– 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.
esercizio1a.tcl
44
Esercizio 1a – Soluzione (1)
• # crea l'oggetto simulator• set ns [new Simulator]
• # crea i due nodi della topologia• set n0 [$ns node]• set n1 [$ns node]
• # crea il link tra i due nodi• $ns simplex‐link $n0 $n1 1Mb 10ms DropTail
45
Esercizio 1a – Soluzione (2)
• # crea l'agente UDP e setta la massima dimensione del segmento• set udp0 [new Agent/UDP]
• # attacca l'agente al nodo n0• $ns attach‐agent $n0 $udp0
• # crea un agente Null per la ricezione• set null0 [new Agent/Null]
• # attacca l'agente null0 al nodo n1• $ns attach‐agent $n1 $null0
• # collega gli agenti udp0 e null0• $ns connect $null0 $udp0
• # configura un parametro (dimensione max dei pacchetti) di udp0 • $udp0 set packetSize_ 100
46
Esercizio 1a – Soluzione (3)
• # crea la sorgente di traffico CBR e setta i parametri• set cbr0 [new Application/Traffic/CBR]
• # attacca la sorgente cbr0 all'agente udp0• $cbr0 attach‐agent $udp0
• # configura i parametri di cbr0• $cbr0 set packetSize_ 100• $cbr0 set interval_ 0.005
47
Esercizio 1a ‐ Eventi
• # inserisce gli eventi di start e stop della sorgente• $ns at 0.5 "$cbr0 start"• $ns at 4.5 "$cbr0 stop"
48
Esercizio 1a – Procedure accessorie
• # apre un file e lo associa al trace di ns per nam da inserire subito dopo l’oggetto Simulator
• set nf [open esercizio1a.nam w]• $ns namtrace‐all $nf
• # procedura di fine simulazione• proc finish {} {• global ns nf• $ns flush‐trace• close $nf• #exec nam esercizio1a.nam & • exit 0• }
49
Esercizio 1a ‐ Fine
• # inserisce l’evento che richiama la procedura di fine simulazione
• $ns at 5.0 "finish"
• # lancia la simulazione• $ns run
50
Esercizio 1b
• Vedi impostazione Esercizio 1(a);• Utilizzare la funzione di segmentazione di UDP settando la massima dimensione del segmento a 50 bytes.
esercizio1b.tcl
51
Esercizio 1b ‐ Soluzione
• set ns [new Simulator]• set nf [open
esercizio1b.nam w]• $ns namtrace‐all $nf • set n0 [$ns node]• set n1 [$ns node]• $ns simplex‐link $n0 $n1
1Mb 10ms DropTail• set udp0 [new Agent/UDP]
• $udp0 set packetSize_ 50
• $ns attach‐agent $n0 $udp0• set null0 [new Agent/Null] • $ns attach‐agent $n1
$null0• $ns connect $null0 $udp0
• set cbr0 [new Application/Traffic/CBR]
• $cbr0 set packetSize_ 100• $cbr0 set interval_ 0.005• $cbr0 attach‐agent $udp0• $ns at 0.5 "$cbr0 start"• $ns at 4.5 "$cbr0 stop"• $ns at 5.0 "finish“• proc finish {} {• global ns nf• $ns flush‐trace• close $nf• #exec nam
#esercizio1b.nam• exit 0• }• $ns run
52
Osservazioni con nam
• Il ritardo di propagazione è legato alla lunghezza fisica del link (l) è alla velocità di propagazione del segnale sul canale (v), ovvero il tempo necessario affinché il segnale copra una certa distanza ad una certa velocità
• Il tempo di trasmissione dipende dal sistema di comunicazione e dalla lunghezza in bit del pacchetto– Nei sistemi più semplici (come nel nostro caso) il tempo di trasmissione
dipende dal rate del canale (C) e dalla lunghezza in bit del pacchetto (Lb)
delayvlTprop
bandwidthpacketSize
CLT b
trasm_8
• Noto l’intervallo tra due pacchetti successivi t, Il numero di pacchetti in “volo” si può trovare come
_interval
delayt
Tprop Verificate con i seguenti esempi
53
Variazioni Es. 1a
• 1a_2: ritardo di propagazione 100ms• 1a_3: rate CBR 160Kb/s• 1a_4: capacità link 10Kb/s• Cosa succede nei vari casi?• Confrontare i risultati con nam
– Cosa accade ai pacchetti in transito?– Come si potrebbe calcolare il numero di pacchetti in volo?
55
Accessori utili – How To…
• Aprire un terminale– Applica ons → System Tools →
Terminal• Editor di testo (x .tcl)
– Applica ons → Accessories → Text Editor
– opp. doppio click su icona di file testo in File Browser
– opp. (da term.) “gedit”• Web Browser
– Applica ons → Internet → Firefox– opp. (da term.) “firefox”
• File manager– Applica ons → System Tools → File
Browser– opp. (da term.) “nautilus”
• Pdf reader– Doppio click su icona di file pdf in
File Browser– opp. (da term.) “evince”
• Un‐packing, da terminale: 1. gunzip nomefile.tgz2. tar –xvf nomefile.tarOppure: 1. tar xvfz esercizio1.tgz