slides - Home page docenti

Download Report

Transcript slides - Home page docenti

Politecnico di Milano

Dipartimento di Elettronica e Informazione

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Prof. Musumeci – Prof. Tornatore Lezione n ° : 1

Responsabili Laboratorio e Contatti

Sito Internet di riferimento del corso – http://home.deib.polimi.it/buttaboni/index.html

Contatti – Prof. Musumeci ([email protected]) – Prof. Tornatore ([email protected]) • Responsabile: Anna Buttaboni ([email protected]) 2

Indice

Accessori utili

Concetti base di simulazione ed emulazione

Introduzione a

Network Simulator

(NS) 3

Indice

Accessori utili

Concetti base di simulazione ed emulazione

Introduzione a

Network Simulator

(NS) 4

Accessori utili – How To…

• • • • Aprire un terminale – Applications → System Tools → Terminal Editor di testo (x .tcl) – Applications → Accessories → Text Editor – opp. doppio click su icona di file testo in File Browser – opp. (da term.) “ gedit ” Web Browser – Applications → Internet → Firefox – opp. (da term.) “ firefox ” File manager – Applications → 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.tgz

2. tar –xvf nomefile .tar

Oppure: 1. tar xvfz esercizio1.tgz

5

Accessori utili – How To…

• •

Utilizzare (connesso wired alla rete del Politecnico): –

NX Client

da un PC 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/ 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

passaggi di stato : – 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 – è semplificato rispetto allo stato del sistema.

Livello di astrazione

omesse : – indica che alcune caratteristiche dello stato del sistema sono – è 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

risoluzione delle equazioni che descrivono le relazioni tra le variabili; : coinvolge metodi matematici di –

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).

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.

14

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 ( modifiche alle variabili di stato corrispondenti; – nell’effettuare

misure scheduler

) e quando si trova un evento eseguire le 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).

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)

• • • • • 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à.

Sito di riferimento da cui è possibile scaricarlo: http://www.isi.edu/nsnam/ns/ 18

Simulare con NS

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

Imparare ad utilizzare NS 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

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) 22

Oggetti base di NS

• •

Il primo oggetto base è Simulator ; Ogni script OTcl inizia con la creazione di una variabile di tipo Simulator :

set ns [new Simulator]

una volta creata la variabile viene utilizzata facendo precedere il nome il simbolo $ :

$ns

23

Applicazione Trasporto Livelli inferiori

Nodi

I nodi sono oggetti gestiti da Simulator creati in questo modo: e sono

n0 set n0 [$ns node] set n1 [$ns node] n1

• •

la funzione node di Simulator crea il nuovo oggetto e gli associa un indirizzo interno; le variabili $n0 e $n1 due nodi nello script.

consentono di manipolare i 24

Applicazione Trasporto Livelli inferiori

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 25

Applicazione Trasporto Livelli inferiori

Link (2)

• Sintassi:

$ns

• • • • • – – 10Mb 13s indica il tipo di link (simplex o duplex) indica la capacità del link (10 Mb/s), 1.2kb

(1.2 kb/s), 1.5e6

indica il ritardo di propagazione del link (13 secondi), 1.34ms

(1.34 ms); (1.5 Mb/s); 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 queue-limit $n0 $n1 10

26

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 ; • • di tipo Agent sono le entità che rappresentano il livello di trasporto; di tipo Application sono le entità che generano il traffico.

Generatore di traffico (Applicazione) Livello di Trasporto Livelli inferiori (non creati/gestiti in modo esplicito) 27

Applicazione Trasporto Livelli inferiori

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:

set UDP0 [new Agent/UDP]

• l’ Agent deve essere collegato ad un nodo mediante la funzione attach-agent di Simulator :

$ns attach-agent $n0 $UDP0 UDP0

n0 n1 28

Applicazione Trasporto Livelli inferiori

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 pacchetti e li distrugge; Oppure un Agent/LossMonitor pacchetti ricevuti: che semplicemente riceve i che in più tiene alcune statistiche sui •

set Null0 [new Agent/Null] $ns attach-agent $n1 $Null0

infine occorre effettuare il collegamento:

$ns connect $UDP0 $Null0 UDP0 Null0

n0 n1 29

Applicazione Trasporto Livelli inferiori

Agenti (3)

• •

L’agente UDP svolge funzioni di multiplazione e di segmentazione/riassemblamento; È possibile configurare la dimensione massima del pacchetto (

in byte

!!!):

$UDP0 set packetSize_ 100

e l’identificativo del flusso di pacchetti trasmessi:

$UDP0 set fid_ 10

30

Applicazione Trasporto Livelli inferiori

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:

set CBR0 [new Application/Traffic/CBR]

• la sorgente deve essere collegata ad un Agent funzione attach-agent : mediante la

$CBR0 attach-agent $UDP0 CBR0 UDP0 Null0

n0 n1 31

Applicazione Trasporto Livelli inferiori

Applicazioni (2)

• La Application/Traffic/CBR può essere configurata: •

$CBR0 set rate_ 128Kb $CBR0 set packetSize_ 100

o in alternativa: (medio) (in byte)

$CBR0 set interval_ 6.25ms

$CBR0 set packetSize_ 100

rate_ = packetSize_ * 8 / interval_ 32

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

33

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:

$ns at 0.5 "$CBR0 start" $ns at 5.0 "$CBR0 stop"

• Per fermare la simulazione:

$ns at 5.5 "exit 0"

34

Trace e NAM

• • Per poter ottenere un file di

trace

basta inserire i comandi: utile per l’animazione con NAM

set nf [open file-animazione.nam w] $ns namtrace-all $nf

Il file aperto deve essere chiuso alla fine della simulazione; è conveniente inserire le procedure di fine in una funzione:

proc finish {} { global ns nf $ns flush-trace close $nf exit 0 }

• modificando l’evento di chiusura così:

$ns at 5.5 "finish"

35

Esecuzione della simulazione

L’esecuzione della simulazione avviene facendo interpretare lo script OTcl ad NS: ns mia-simulazione.tcl

36

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.

37

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) 38

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).

39

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 password

(credenziali del Politecnico) e 40

Virtual Desktop - 2

Aprire

NX Client

41

NX Client

Aprire un

terminale

42

NX Client

Con il comando

“cd ..”

nella directory

[guest0086@vlnmnx02 /]$

43

Directory di nscript

• Posizionarsi nella directory di

nscript

: – “cd opt” – “cd nscript” – “cd bin”

Aprire nscript usando il comando: –

java -jar nscript.jar

44

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

45

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

46

Esercizio 1a – Soluzione (2)

• • •

# crea l'agente UDP e setta la massima dimensione del segmento set udp0 [new Agent/UDP] $udp0 set packetSize_ 100

• •

# 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

47

Esercizio 1a – Soluzione (3)

• • • •

# crea la sorgente di traffico CBR e setta i parametri set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 100 $cbr0 set interval_ 0.005

• •

# attacca la sorgente cbr0 all'agente udp0 $cbr0 attach-agent $udp0

48

Esercizio 1a – Procedure accessorie

• • •

# apre un file e lo associa al trace di

ns

subito dopo l’oggetto Simulator per set nf [open esercizio1a.nam w] $ns namtrace-all $nf

nam

da inserire

• • • • • • • •

# procedura di fine simulazione proc finish {} { global ns nf $ns flush-trace close $nf #exec nam esercizio1a.nam & exit 0 }

49

Esercizio 1a - Eventi e Fine

• • •

# inserisce gli eventi di start e stop della sorgente $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop"

• •

# inserisce l’evento che richiama la procedura di fine simulazione $ns at 5.0 "finish"

• •

# lancia la simulazione $ns run

50

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?

51

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

52

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

53

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 (L b )

T prop

=

l v

= <

delay

>

T trasm

=

L

Noto l’intervallo tra due pacchetti successivi

pacchetti in “volo”

si può trovare come

C b

= 8 < ⋅

packetSize bandwidth

t

, Il

numero di

_ >  

T prop

t

  =   <

delay interval

> _  

Verificate con i seguenti esempi

54

BACUK-UP SLIDES

55