Network Simulator NS2 vs NS3 Andrea Valletta 8 gennaio 2010.
-
Upload
nevio-mazza -
Category
Documents
-
view
223 -
download
5
Transcript of Network Simulator NS2 vs NS3 Andrea Valletta 8 gennaio 2010.
Network SimulatorNS2 vs NS3
Andrea Valletta
8 gennaio 2010
Introduzione
• Network Simulator è nato con lo scopo di offrire un supporto per la ricerca in ambito networking– Progettazione di nuovi protocolli, studio del traffico, etc
– Confronto tra varie versioni di un protocollo
• E’ un software open source– Il codice è condiviso, visibile a tutti e liberamente modificabile
per aggiungere nuovi protocolli, nuovi modelli, etc• Questo incrementa l’affidabilità dei risultati
– Molte persone hanno testato i modelli in situazioni differenti
– I modelli sono stati sviluppati da esperti
– Il codice è gratuito
Importanza di NS2
• Numero di papers in cui sono citate simulazioni (fonte ACM Digital Library, 2001-04):
ns-2 OPNET QualNetGlomosim
≥ layer 4 123 (75%) 30 (18%) 11 (7%)
= layer 3 186 (70%) 48 (18%) 31 (12%)
≤ layer 2 114 (43%) 96 (36%) 55 (21%)
Funzionalità incluse in NS2• Reti cablate
– Routing DV, LS, PIM-SM– Emulazione di reti reali
• Wireless– Ad hoc routing e mobile IP– Directed diffusion, sensor-MAC– Reti satellitari (satelliti geostazionari e polari, con o senza
elaborazione a bordo)
• Trasporto: TCP, UDP, SCTP
• Sorgenti di traffico:web, ftp, telnet, cbr, stocastiche• Discipline di coda:drop-tail, RED, FQ, SFQ, DRR• QoS: IntServ and Diffserv• Tracing, animazioni, utilities varie
Componenti di NS2
• Ns, il simulatore vero e proprio
• Nam, il tool network animator– Permette una visualizzazione grafica animata dei risultati
forniti da ns
– Nam editor: interfaccia grafica per generare script per ns
• Pre-processing:– Generatori di traffico e topologie
• Post-processing:– Analisi delle tracce, solitamente mediante script in Awk,
Perl, o Tcl
Modellimoduli, blocchi
• Modelli di traffico e applicazioni:– Web, FTP, telnet, constant-bit rate, real audio
• Protocolli di trasporto:– unicast: TCP (Reno, Vegas, etc.), UDP, SCTP
– Multicast: SRM
• Routing e code:– Wired routing, ad hoc routing e directed diffusion
– Protocolli di coda: RED, drop-tail, etc
• Physical media:– Reti Cablate (point-to-point, LANs), wireless (multiple
propagation models), reti satellitari
Simulatore ad eventi
• Il simulatore vede una sequenza di eventi– Viene gestita una lista di eventi
– Prendi un evento, elaboralo, poi passa all’evento successivo nella lista
– Ciascun evento si verifica in un istante di tempo simulato, ma impiega una quantità arbitraria di tempo reale
• E’ un modello molto semplice– Singolo flusso di controllo
– Facile da gestire
Esempio di simulazione ad eventi
Due nodi su una LAN
A B
t=1.0: A invia un pacchetto all’interfaccia di rete (NIC) che inizia il carrier sensing (CS)
t=1.005: il NIC di A termina il CS, inizia a trasmettere
t=1.006: il NIC di B inizia a ricevere il pacchetto
t=1.01: il NIC di B conclude la ricezione del pacchetto, e lo passa all’applicazione
Struttura del software
• NS è orientato agli oggetti– Un nodo, un link, uno strato dell’architettura protocollare
costituiscono oggetti
– Ciò consente un notevole riuso del codice
• NS2 usa due linguaggi– Maggiore flessibilità, ma occorre imparare due linguaggi di
programmazione
• C++ per l’elaborazione dei pacchetti– Veloce, consente un controllo più fine
• OTcl per il controllo– Preparazione e configurazione della simulazione– Utile per introdurre rapidamente delle modifiche
C++ e OTcl
C++ OTcl
Oggetti C++puri
Oggetti Tclpuri
Oggetti “split” C++/OTcl
ns
Schema generale
Il cuore del simulatore è scritto in C++ ( compilato, veloce)L’interfaccia per la gestione dei parametri di simulazione è scritta in OTcl (estensione di Tcl object oriented) ( interpretato, i parametri possono essere modificati senza dover ricompilare tutto il simulatore)
NAM
File di traccia+ 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610- 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610r 1.84471 2 1 cbr 210 ------- 1 3.0 1.0 195 600r 1.84566 2 0 ack 40 ------- 2 3.2 0.1 82 602+ 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611- 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611r 1.84609 0 2 cbr 210 ------- 0 0.0 3.1 225 610+ 1.84609 2 3 cbr 210 ------- 0 0.0 3.1 225 610d 1.84609 2 3 cbr 210 ------- 0 0.0 3.1 225 610- 1.8461 2 3 cbr 210 ------- 0 0.0 3.1 192 511r 1.84612 3 2 cbr 210 ------- 1 3.0 1.0 196 603+ 1.84612 2 1 cbr 210 ------- 1 3.0 1.0 196 603- 1.84612 2 1 cbr 210 ------- 1 3.0 1.0 196 603+ 1.84625 3 2 cbr 210 ------- 1 3.0 1.0 199 612
Inserimento in coda
Rimozione dalla coda
Ricezione
Pacchetto scartato
Istante in cui è avvenuto l’evento
Nodi coinvolti
Tipo Dimensione
Flags
Flusso
Sorgente
Destinazione
Numero di sequenza
Identificativo univoco del pacchetto
Pregi di NS2
• I pregi principali sono legati alla vasta adozione– Integra molti moduli ai vari livelli della struttura
protocollare
– Sono disponibili molti moduli aggiuntivi (esempio UMTS, WiMAX)
– Molta documentazione disponibile
– E’ un codice maturo e per la maggior parte stabile
– Infine, è gratuito
Difetti di NS2
• Adozione di 2 linguaggi– Poco scalabile, difficoltà di debugging
– Difficile da usare, soprattutto in ambito didattico
• Gli strati di rete ed inferiori, sono molto astratti– Discontinuità nel passaggio da simulazione a
sperimentazione
• Molti modelli non sono più mantenuti, quindi ormai incompatibili
• La documentazione è molta, ma è vecchia
• A parte il TCP, per gli altri modelli non ci sono validazioni documentate
NS2 NS3• NS3 è un nuovo simulatore, scritto quasi da zero
– Alcuni moduli (es wifi) sono stati portati da NS2 a NS3, ma non è un’evoluzione di NS2.
• Due linguaggi di programmazione: C++, Python– A differenza di NS2, tutto è sviluppato in C++
• ns3 è una libreria scritta in C++
• I programmi di simulazione sono eseguibili C++– Non occorre effettuare in contemporanea il debugging di due codici scritti
in due linguaggi differenti
• Il linguaggio di scripting Python è opzionale
• Progetto iniziato a metà del 2006. Prima release ottobre 2008
– Ancora non maturo, in fase di sviluppo
– Una nuova release ogni 3-4 mesi (la prossima 3.7 prevista per il 20 Gennaio)
Attività del progetto NS3
Scopi del progetto NS3
• Sviluppo di un simulatore open license (GPLv2)– Il progetto deve essere scalabile, devono poter essere
inseriti facilmente nuovi modelli
– Il progetto deve sopravvivere una volta che saranno terminati i finanziamenti per il suo sviluppo iniziale
– La validazione dei modelli deve essere a basso costo• I modelli devono essere vicini al mondo reale
– Modelli meno astratti di quelli di NS2, più facili da validare
– Facile esecuzione di codice reale
– L’emulazione semplice e robusta rispetto alla modifica dei modelli
Caratteristiche chiave di NS3
• Modelli meno astratti, più facili da validare. Facile esecuzione di codice reale– Adozione dell’indirizzamento IP
– Più interfacce per nodo
– Bsd-like sockets
• Emulazione semplice e robusta rispetto alla modifica dei modelli– I pacchetti contengono reali stringhe di bytes
Modello base in NS3• Node: scheda madre di un
computer con RAM, CPU e interfacce IO
• Application: generatore/ricevitore di pacchetti eseguito su un nodo. Comunica con un insieme di network stacks
• Socket: interfaccia tra un’applicazione ed un network stack
• NetDevice: scheda di rete che può essere inserita in una delle interfacce IO del nodo
• Channel: collegamento fisico tra un insieme di oggetti NetDevice
Modelli implementati
• Network stacks: arp, ipv4, icmpv4, udp, tcp (ipv6 under review)
• Devices: wifi, csma, point-to-point, bridge
• Error models and queues
• Applications: udp echo, on/off, sink
• Mobility models: random walk, etc.
• Routing: olsr, static global
NS3 ha anche un’interfaccia grafica
• Tramite un’interfaccia grafica è possibile controllare i parametri della simulazione– Facilità d’uso, soprattutto
in ambito didattico
Tracce in NS3
• E’ possibile scegliere cosa tracciare e cosa no, senza modificare il codice del simulatore
• Ciascun file di traccia può essere collegato a più sorgenti di traccia
• 3 livelli di dettaglio delle tracce
• 2 tipi di tracce– Testuali, tipo NS2
– pcap• Interpretabili da Wireshark (ex Ethereal)
• Facilità di passaggio tra simulazione e sperimentazione
Emulazione 1
• Ns3 mette in comunicazione macchine reali o virtuali– Stack reali
– Rete simulata
Emulazione 2
• Una rete reale interconnette degli stack simulati
Prestazioni: tempo
E. Weingärtner, H. Lehn, and K. Wehrle,”A performance comparison of recent network simulators”,IEEE International Conference on Communications 2009.
Prestazioni: memoria
E. Weingärtner, H. Lehn, and K. Wehrle,”A performance comparison of recent network simulators”,IEEE International Conference on Communications 2009.
Conclusioni• Il principale punto di forza di NS2 è il gran numero
di modelli implementati e la sua diffusione
• Il principali punti deboli sono legati alla grande astrazione degli strati bassi della pila protocollare
• NS3 punta ad ottenere lo stesso successo di NS2
• I risultati ottenuti da NS3 saranno più attendibili– Minore astrazione
– Uso dell’emulazione, esecuzione di software reale
• NS3 sarà più semplice da usare– Unico linguaggio
– Supporto di un’interfaccia grafica