Laboratorio di Reti di Comunicazione e Internet (MOD1) · 2016-11-09 · Descrizione della rete di...

56
Politecnico di Milano Dipartimento di Elettronica e Informazione Laboratorio di Reti di Comunicazione e Internet (MOD1) Prof. Maier – Prof. Musumeci – Prof. Tornatore Lezione n° :1

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)

25

Virtual Desktop ‐ 2

• Aprire NX Client

26

NX Client

• Aprire un terminale

NX Client

• Con il comando “cd ..” nella directory [guest0086@vlnmnx02 /]$ 

27

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?

54

How to …

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

56

Directory di nscript

• Posizionarsi nella directory di nscript:– “cd opt” – “cd nscript”– “cd bin”

• Aprire nscript usando il comando:– java ‐jar nscript.jar