left.gif (284 bytes)  up.gif (289 bytes)  right.gif (280 bytes)

Il simulatore di reti NS, versione 2 - Introduzione
 
 

ns è un simulatore di reti scritto in C++ . Lo scenario di una simulazione viene definito da uno script OTcl, che è una versione object oriented di Tcl - Tool Command Language. In breve, utilizzando il linguaggio Otcl si gestiscono delle classi di oggetti, implementate in C++ e organizzate in maniera gerarchica, che costituiscono la base del simulatore. In queste pagine non approfondiamo i vastissimi argomenti della programmazione in Otcl e in C++, ma riportiamo solo quelle nozioni che servono per imparare ad utilizzare il simulatore ns. Proponiamo inoltre numerosi utili esempi commentati di script Tcl da fornire in input a ns.
 
 

ns è nato nel 1989 come variante del simulatore REAL. Negli ultimi anni ns è cambiato molto ed è migliorato notevolmente, tuttavia non è un prodotto finito e perfettamente funzionante: diversi bugs del software devono ancora essere scoperti e corretti. Quindi è importante che chi usa ns sappia che deve verificare la correttezza e la attendibilità delle proprie simulazioni, perché esse potrebbero essere affette da errori. Dello sviluppo di ns si occupano i ricercatori del VINT Project, un progetto che vede la collaborazione di UC Berkeley, LBL, USC/ISI, e Xerox PARC, e che è supportato da DARPA (Defense Advanced Research Projects Agency) .
 
 

ns, a seconda di quanto viene specificato nello script Otcl di input, può produrre in output diversi tipi di trace files, che possono a loro volta essere forniti in input ai programmi xgraph e nam. I trace files contengono informazioni che riguardano la tipologia della rete (nodi e collegamenti), gli eventi della simulazione, i pacchetti che hanno viaggiato nella rete.

Il nam è nato nel 1990. E' un Network Animator che legge un nam trace file prodotto da ns e apre una finestra nella quale dà vita ad un'animazione della simulazione: mostra la topologia della rete, i flussi di pacchetti, i pacchetti in coda nei buffer e quelli dropped, i link che si guastano o che si aggiustano, e così via; attraverso una comoda interfaccia utente è possibile controllare diversi aspetti della simulazione.

Xgraph è un programma che disegna grafici bidimensionali: legge i trace files prodotti da ns ed apre una finestra nella quale visualizza alcuni risultati della simulazione (come ad esempio lo sfruttamento della banda nel tempo).
 
 

E' possibile scaricare gratuitamente da Internet i programmi ns, nam, xgraph, ed il software necessario per far funzionare il simulatore. Una versione per Linux di tutto ciò ed alcuni manuali sono disponibili nella nostra directory /afs/vn.uniroma3.it/group/proto/protoman/ns/.
 
 
 
 

Cosa deve fare uno studente di Impianti per usare ns
 
 

1) E' necessario avere un account AFS e loggarsi su una piattaforma Linux.
 
 

2) E' necessario inserire la seguente linea nel file .cshrc che si trova nella home di ogni studente:

if(`uname` == "Linux") then setenv LD_LIBRARY_PATH "/afs/vn.uniroma3.it/group/proto/protoman/ns/otcl:$LD_LIBRARY_PATH" endif

Tutto ciò va scritto su una riga e va inserito sotto la scritta:

"#add anything you wish below...".

Poi bisogna eseguire "source ~ /.cshrc" per far rileggere il file. Il messaggio di errore

"biff: Command not found" va ignorato.
 
 

3) Siccome sotto l'utenza protoman è possibile leggere i file ma non è possibile modificarli o scriverne di nuovi, bisogna ricreare sotto il proprio account un ambiente per lavorare con il simulatore. In realtà basta realizzare i seguenti link simbolici agli eseguibili di ns, nam e xgraph:

link a ns: ln -s /afs/vn.uniroma3.it/group/proto/protoman/ns/ns/ns

link a nam: ln -s /afs/vn.uniroma3.it/group/proto/protoman/ns/nam/nam &

link a xgraph: ln -s /afs/vn.uniroma3.it/group/proto/protoman/ns/xgraph/xgraph &
 
 

4) Per far partire ns si deve eseguire il comando "ns <tclscript>" dove <tclscript> è il nome di uno script OTcl (con estensione .tcl). Se si esegue il comando "ns", non seguito dal nome di un script, si apre una shell OTcl dove è possibile immettere i comandi Tcl. E' tuttavia molto più comodo preparare il proprio script OTcl su un editor di testi, come ad esempio emacs.
 
 

5) A seconda di come è fatto lo script Tcl , l'esecuzione di ns può creare degli output sullo standard output e/o produrre diversi trace files e/o far partire automaticamente nam e/o xgraph. Si può anche far partire nam eseguendo il comando "nam <nam_file>" dove <nam_file> è il nome di un name trace file (con estensione .nam) generato da una precedente esecuzione di ns. Analogamente si può far partire xgraph eseguendo il comando "xgraph <trace_file>" dove <trace_file> è il nome di un trace file (con estensione .tr) generato da una precedente esecuzione di ns.
 
 

Si ricordi che uno script Tcl inizia sempre con la acquisizione di un oggetto della classe Simulator ovvero con:
 

 

set ns [new Simulator]
 


Lo script termina sempre con il comando di inizio simulazione, ovvero con:
 

$ns run
 



Contenuto della directory afs/vn.uniroma3.it/group/proto/protoman/ns/.
 
 

Nella directory /afs/vn.uniroma3.it/group/proto/protoman/ns/ si trovano le seguenti sottodirectory:

1) doc/  contiene alcuni file postscript e html tra i quali il file nsDoc_ps.ps che è un manuale di ns di circa 180 pagine.

2) download/  contiene tutti i pacchetti che abbiamo scaricato da Internet relativi al simulatore ns

3) gt/  contiene "GT Internetwork Topology Models - GT-ITM", un software per una generazione user-friendly di ampie topologie di rete, che però non possiamo utilizzare perché viene fornito con due librerie per Sun (e non per Linux) in formato binario, mentre non vengono distribuite sorgenti.

4) nam@  è un link alla sottodirectory nam-1.0a6/

5) nam-1.0a6/  contiene il nam

6) ns@  è un link alla sottodirectory ns-2.lb4/

7) ns-2.lb4/  contiene ns

8) otcl@  è un link alla sottodirectory otcl-1.0a3/

9) otcl-1.0a3/  contiene otcl

10) scen-gen/  contiene un generatore di scenari legato a GT-ITM e che quindi non ci serve

11) sgb2ns/  contiene un traduttore dal formato GT-ITM al formato nam, non ci serve

12) tclc@  è un link alla sottodirectory tclc-1.0b7/

13) tclc-1.0b7/  contiene tcl

14) tiers@  è un link alla sottodirectory tiers1.0/

15) tiers1.0/ contiene un generatore di reti random

16) xgraph/  contiene xgraph
 
 

Un primo semplicissimo esempio di animazione è prova1.tcl : visualizza o scarica questo file.

left.gif (284 bytes)  up.gif (289 bytes)  right.gif (280 bytes)