NS-2 Basic. Sommario. Sommario. Cos è NS2



Documenti analoghi
Network Simulator 2: Simulazione di reti wireless

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Simulatore di rete NS2. Versione base delle slide fornite da: Prof.ssa Gaia Maselli

NS-2. Ing. Alessandro Leonardi. Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università degli Studi di Catania

Simulatore di rete NS2

Introduzione al simulatore NS2 e valutazione del TCP in ambiente wireless. Gaia Maselli

NS-2. Laboratorio di Reti. Ing. Telematica - Università Kore Enna A.A. 2008/2009 Ing. A. Leonardi

Seminario su Network Simulator (NS-2) Siena, 26 Giugno 2008

Università di Bergamo Laboratorio di Reti Prof. Fabio Martignon

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Il simulatore di rete ns2

Agenda. Introduzione al simulatore di rete ns2 (Network Simulator vers. 2) Come installare ns2 su Windows. il linguaggio OTCL

INFOCOM Dept. Software Router

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Network Simulator 1. ns c. LBNL s Network Simulator. Salvatore Serrano 14 marzo Network Simulator 2. ns v.2

Network Simulator (NS)

Dipartimento di Ingegneria dell Informazione e Metodi Matematici Laboratorio di Reti Prof. Fabio Martignon

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

LABORATORIO DI RETI. 02 La Multiplazione Statistica nelle Reti a Paccchetto

Intel One Boot Flash Update Utility Guida dell utente

Esercizio 2. Client e server comunicano attraverso socket TCP

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

1) GESTIONE DELLE POSTAZIONI REMOTE

Introduzione alle applicazioni di rete

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Registratori di Cassa

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

Esercitazione 5 Firewall

- 2 - Introduzione a Network Simulator (NS)

Le command line di Java

Il Web Server e il protocollo HTTP

- 2 - Introduzione a Network Simulator (NS)

Technical Support Bulletin No.17 ModemOverIP

Il web server Apache Lezione n. 3. Introduzione

RICEZIONE AUTOMATICA DEI CERTIFICATI DI MALATTIA 1.1. MALATTIE GESTIONE IMPORT AUTOMATICO 1.2. ATTIVAZIONE DELLA RICEZIONE DEL FILE CON L INPS

- 1 - Introduzione a Network Simulator (NS)

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

BACKUP APPLIANCE. User guide Rev 1.0

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

Rapporto tecnico sulle tipologie di agenti software definiti e implementati nell ambito del progetto

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Do-Dots Protocollo di comunicazione

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Java: Compilatore e Interprete

Abilitazione e uso del protocollo EtherTalk

Z3 B1 Message Addon Invio Massivo Documenti via e Fax per SAP Business One

Introduzione allo sniffing

Database e reti. Piero Gallo Pasquale Sirsi

MANUALE CONFIGURAZIONE ED UTILIZZO GATEWAY MBUS-MODBUS (RTU/TCP) MODELLO PiiGAB M900

Cenni di programmazione distribuita in C++ Mauro Piccolo

Capitolo 3. Sviluppo del simulatore

SOMMARIO... 3 INTRODUZIONE...

Web 4164ETH Rel Lug 2010

La struttura dati ad albero binario

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Firewall e Abilitazioni porte (Port Forwarding)

Siti web centrati sui dati (Data-centric web applications)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Installazione & Configurazione Php e MySQL su Mac Os X. Php

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Manuale d'uso. Manuale d'uso Primo utilizzo Generale Gestione conti Indici di fatturazione Aliquote...

Mac Application Manager 1.3 (SOLO PER TIGER)

Introduzione al Python


Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Il Sistema Operativo (1)

Esercitazione 4 JDBC

19. LA PROGRAMMAZIONE LATO SERVER

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

MANUALE PARCELLA FACILE PLUS INDICE

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Studi di Settore. Nota Operativa 22/4/2013

FPf per Windows 3.1. Guida all uso

Altro esempio di HTML

Guida all impostazione. Eureka Web

Object Oriented Programming

SIEMENS GIGASET S450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Access. P a r t e p r i m a

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

LaCie Ethernet Disk mini Domande frequenti (FAQ)

Reti e Sistemi per l Automazione MODBUS. Stefano Panzieri Modbus - 1

Contenuto del pacchetto

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

monitoraggio dei locomotori via Internet

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

I file di dati. Unità didattica D1 1

Capitolo 4 Pianificazione e Sviluppo di Web Part

Sicurezza nelle reti

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Lezione 10: Librerie e compilazione separata

Applicazioni web centrati sui dati (Data-centric web applications)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Reti di Telecomunicazione Lezione 6

Transcript:

Sommario NS-2 Basic Alessio Mura Luca Pastorino Architettura Oggetti in ns Simulazioni Generazione traffico Generazione scenari Analisi dei risultati 1 2 Sommario Architettura Oggetti in ns Simulazioni Generazione traffico Generazione scenari Analisi dei risultati Cos è NS2 NS sta per Network Simulator Dal sito degli sviluppatori http://www.isi.edu/nsnam/ns/ Ns is a discrete event simulator targeted at networking research. Ns provides substantial support for simulation of TCP, routing, and multicast protocols over wired and wireless (local and satellite) networks. 3 4

Caratteristiche tecniche Alcuni numeri: Versione corrente 2.27 27000 linee di codice C++ 12000 linee di codice OTcl 18000 linee di esempi 5000 linee di documentazione Piattaforme supportate Unix e Unix like (Linux, FreeBSD, ) Solaris Windows MAC Più di 10000 utenti nel Mondo! Storia 1989: ns una variante di REAL network simulator (University of California) 1992: Estensioni wireless da CMU Monarch project, UCB Daedelus e Sun Microsystems 1995: DARPA VINT project (UC Berkeley, USC/ISI, LBL, Xerox PARC) Oggi: DARPA SAMAN project e NSF CONSER project 5 6 Obiettivi di NS2 Ricerca e didattica sul networking Protocol design, analisi del traffico Confronti tra diversi protocolli Ambiente collaborativo Distribuito gratuitamente e open source Visualizzazione semplice dei risultati Diversi livelli di dettaglio nello stesso simulatore Funzionalità Wired Routing: DV, LS, PIM-SM Trasporto: TCP and UDP Sorgenti di traffico: web, ftp, telnet, cbr, Politiche per le code: drop-tail, RED, FQ, SFQ, DRR QoS: IntServ e Diffserv Emulazione Wireless Ad hoc routing e mobile IP Directed diffusion, sensor-mac Tracing, visualizzazione e varie utility 7 8

Utility Nam (wired) Nam (Network animator) permette la visualizzazione di: Flusso dei pachetti Code Movimento dei nodi nelle reti wireless Generazione di scenari setdest adhockey Generazione di traffico cbrgen 9 10 Nam (wireless) Sommario Architettura Oggetti in ns Simulazioni Generazione traffico Generazione scenari Analisi dei risultati 11 12

Architettura di ns OTcl (1) Object-oriented Oggetti implementati in C++ e OTcl (Object Tool Command Language) Approccio modulare Decomposizione degli oggetti in modo fine-grained Separazione della parte di controllo da quella dei dati Operazioni di controllo in OTcl Operazioni sugli oggetti C++ 13 OTcl è l abbreviazione di MIT Object Tcl. E un linguaggio di scripting Estensione di Tcl/Tk (Tool Command Language/Tool Kit) per la programmazione object oriented Sviluppato per essere estendibile dinamicamente Costruito seguendo la sintassi di Tcl Potente linguaggio per la programmazione ad oggetti Portabile Non tipato 14 OTcl (2) OTcl (3) Uso di variabili set a 44 set b [expr $a*4] Dichiarazione di funzioni proc power {base p { set result 1 while {$p > 0 { set result [expr $result * $base] set p [expr $p - 1] return $result 15 Commenti con (#) Costrutto if if {$c == "Hell" { puts "Oh god!" else { puts "Peace!" 16

OTcl (file) NS-2 visto dall utente Apertura set f [open out.dat <perm>] <perm> = w (write), r (read) Scrittura puts $f $time $val Lettura while {![eof $f] { gets $f line Chiusura close $f 17 18 Due linguaggi: C++ e OTcl Due linguaggi: interazione C++ Esecuzione veloce Difficile da modificare (richiede la ricompilazione di ns-2) Usato per implementare protocolli e algoritmi e manipolare i dati OTcl Esecuzione lenta Facilmente modificabile (senza bisogno di ricompilare) Usato per implementare lo scenario, effettuare azioni in determinati istanti e manipolare oggetti C++ esistenti OTcl (variante ad oggetti di Tcl) e C++ condividono la gerarchia delle classi TclCL permettere di interagire fra i due mondi (condividere funzioni e variabili) 19 20

Relazione OTcl/C++ Sommario set ns_ [new Simulator] set node_(0) [$ns_ node] set node_(1) [$ns_ node] class MobileNode : public Node { friend class PositionHandler; public: MobileNode(); Architettura Oggetti in ns Simulazioni Generazione traffico Generazione scenari Analisi dei risultati 21 22 Oggetti in NS (1) Oggetti in NS (2) Applicazioni Generatori di traffico Exponential On/Off Pareto On/Off CBR Simulazioni di applicazioni Telnet FTP User-defined 23 24

Oggetti in NS (3) Agent (entità a livello trasporto) Node TCP UDP RTP User-defined Oggetti in NS (4) Link Wired Simplex Duplex Wireless Wired Wireless 25 26 Sommario Schema generale (1) Architettura Oggetti in ns Simulazione Generazione traffico Generazione scenari Analisi dei risultati 27 28

Schema generale (2) Sequenza di azioni Descrivere lo scenario di rete mediante uno script OTcl Eseguire la simulazione Dalla shell di Linux, digitare ns <nomescript> Analizzare i risultati A seconda di quanto viene specificato nello script Otcl in input, ns può produrre in output diversi tipi di trace file Output trace di ns Output per nam Output per visualizzatori grafici Creazione di un event scheduler Impostazioni del tracing Creazione dello scenario Setup del routing Inserimento delle probabilità d errore di trasmissione Creazione di connessioni a livello trasporto Creazione del traffico Operazioni per la terminazione File creati ad-hoc 29 30 Creazione di un event scheduler Creazione dell event scheduler set ns_ [new Simulator] Schedulare gli eventi $ns_ at <time> <event> <event>: ogni comando ns/tcl valido Es. $ns_ at 0.0 power 2 5 Partenza dello scheduler $ns_ run Terminazione dello scheduler $ns_ halt 31 Tracing Tracing dei pacchetti su tutti i link (sul file test.out) $ns trace-all [open test.out w] <event> <time> <from> <to> <pkt> <size> -- <fid> <src> <dst> <seq> <attr> + 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0-1 0 2 cbr 210 ------- 0 0.0 3.1 0 0 r 1.00234 0 2 cbr 210 ------- 0 0.0 3.1 0 0 Tracing dei pacchetti su tutti i link per il visualizzatore nam $ns namtrace-all [open test.nam w] Questi comandi devono apparire subito dopo la creazione dello scheduler 32

Creazione dello scenario (wired) Nodi set n0 [$ns node] set n1 [$ns node] Link e code $ns <link_type> $n0 $n1 <bandwidth> <delay> <queue_type> <link_type>: duplex-link, simplex-link <queue_type>: DropTail, RED, CBQ, FQ, SFQ, DRR, diffserv RED queues Setup del routing Unicast $ns rtproto <type> <type>: Static, Session, DV, cost, multi-path Multicast $ns multicast (da mettere dopo [new Simulator]) $ns mrtproto <type> <type>: CtrMcast, DM, ST, BST Altri tipi di routing supportati: source routing, hierarchical routing Es. $ns duplex-link $n0 $n1 10Mb 20ms DropTail33 34 Probabilità d errore di trasmissione Creazione dell Error Module set loss_module [new ErrorModel] $loss_module set rate_ 0.01 $loss_module unit pkt $loss_module ranvar [new RandomVariable/Uniform] $loss_module drop-target [new Agent/Null] Inserimento dell Error Module $ns_ lossmodel $loss_module $n0 $n1 Connessioni (Agent) UDP set udp [new Agent/UDP] set null [new Agent/Null] $ns attach-agent $n0 $udp $ns attach-agent $n1 $null $ns connect $udp $null TCP set tcp [new Agent/TCP] set tcpsink [new Agent/TCPSink] $ns attach-agent $n0 $tcp $ns attach-agent $n1 $tcpsink $ns connect $tcp $tcpsink 35 36

Traffico (Application) (1) Generatori di traffico CBR set src [new Application/Traffic/CBR] Exponential or Pareto on-off set src [new Application/Traffic/Exponential] Pareto on-off set src [new Application/Traffic/Pareto] Traffico (Application) (2) Applicazioni (simulazioni) FTP set ftp [new Application/FTP] Telnet set telnet [new Application/Telnet] Per legare l applicazione ad un agente $application attach-agent $agent 37 38 Termine della simulazione Reset dei nodi set finesim 100 $ns_ at $finesim $nodo reset Chiusura dei file Esempio di procedura di pulizia $ns_ at $finesim "stop" proc stop { { global ns_ tracefd close $tracefd Simulazione wireless: variabili per la configurazione set opt(chan) Channel/WirelessChannel set opt(prop) Propagation/TwoRayGround set opt(netif) Phy/WirelessPhy set opt(mac) Mac/802_11 set opt(ifq) Queue/DropTail/PriQueue set opt(ll) LL set opt(ant) Antenna/OmniAntenna set opt(ifqlen) 50 set opt(nn) 100 set opt(adhocrouting) DSDV set opt(sc) "scene-100" set opt(x) 1000 set opt(y) 1000 set opt(seed) 0.0 set opt(stop) 100 39 40

Configurazione nodi wireless Creazione dei nodi wireless Prima della creazione dei nodi usare Creazione dei nodi $ns_ node-config \ -adhocrouting $val(rp) \ -lltype $val(ll) \ -mactype $val(mac) \ -ifqtype $val(ifq) \ -ifqlen $val(ifqlen) \ -anttype $val(ant) \ -proptype $val(prop) \ -phytype $val(netif) \ -channeltype $val(chan) \ -agenttrace ON \ -routertrace ON \ -mactrace OFF \ -movementtrace ON 41 set nodo [$ns_ node ] $nodo random-motion 0; Setting della posizione iniziale $nodo set X_ 5.0 $nodo set Y_ 2.0 $nodo set Z_ 0.0 Spostamento del nodo $ns_ at 50.0 "$nodo setdest 5.0 5.0 5.0" Posizione iniziale per nam $ns_ initial_node_pos <nodo> <size> 42 Sommario Generazione traffico Architettura Oggetti in ns Simulazione Generazione traffico Generazione scenari Analisi dei risultati Per generare traffico con connessioni TCP o CBR : sintassi: ns cbrgen.tcl [-type cbr tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] > [outfile] esempio: ns cbrgen.tcl type cbr nn 50 seed 5 mc 6 rate 4 > cbr-50-4 Lo script si trova <ns-dir>/indep-utils/cmuscen-gen/ 43 44

Sommario Creazione scenari (1) Architettura Oggetti in ns Simulazione Generazione traffico Generazione scenari Analisi dei risultati 45 Comando per la creazione di nodi con movimenti casuali: Sintassi:./setdest [-n num_of_nodes] [-p pausetime] [-s maxspeed] [-t simtime] [-x maxx] [-y maxy] > [outdir/movement-file] Esempio:./setdest -n 20 -p 2.0 -s 10.0 -t 200 -x 500 -y 500 > scen-20-test Il comando si trova nella directory: <ns-dir>/indep-utils/cmu-scengen/setdest/ 46 Creazione di scenari (2) Sommario Caricamento di un file di scenario source $val(cp) dove val(cp) è la variabile che contiene il nome del file Nota: nei file di scenario le variabili dei nodi vengono chiamate per default node_(<num_nodo>)!! Architettura Oggetti in ns Simulazione Generazione traffico Generazione scenari Analisi dei risultati 47 48

GNUPlot Esempi Programma per il disegno di grafici 2D e 3D Al prompt di Linux lanciare gnuplot Due modi di funzionamento Grafici di funzioni (es. plot 3*x+1) Grafici di dati contenuti in un file (es. plot file.dat ) Link utili www.csi.uni.edu/help/gnuplot/ www.gnuplot.info 49 Rete wired <ns-dir>/tcl/ex/simple.tcl Rete wireless <ns-dir>/tcl/ex/simple-wireless.tcl 50 NS-2 Advanced Alessio Mura Luca Pastorino Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Compilazione di ns 51 52

Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Compilazione di ns Finora abbiamo visto ns-2 come una blackbox (uso esclusivo di OTcl) E possibile personalizzare il comportamento dei nodi implementando nuovi Protocolli (formati di pacchetti) Agenti Applicazioni Occorre manipolare file di ns-2 o inserirne di nuovi (intervento sul codice C++) 53 54 NS-2 visto dall utente Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Compilazione di ns 55 56

Gerarchia delle cartelle Gerarchia delle classi ns-allinone tcl tk otcl ns-2 tclcl nam-1 man indep-utils tcl common bin ex lib 57 58 Relazione C++/OTcl: costruttore Per costruire un oggetto C++ quando viene creato un oggetto Otcl occorre definire una classe simile alla seguente: static class MyAgentClass: public TclClass { public MyAgentClass() : TclClass( Agent/MyAgent ){ Relazione C++/OTcl: campi I campi di un oggetto C++ normalmente non sono visibili da Otcl Per accedere ad una variabile da Otcl occorre effettuare un bind: TclObject* create(int, const char*const*){ return (new MyAgent()); 59 MyAgent::MyAgent() : Agent(PT_UDP){ bind( my_var1_otcl, &my_var1); bind( my_var2_otcl, &my_var2); Per ulteriori info cercare Otcl Linkage 60

Relazione C++/OTcl: campi(2) Le variabili di cui si è fatto il bind DEVONO essere inizializzate nel file <ns-dir>/tcl/lib/ns-default.tcl Da OTcl i campi di un oggetto saranno accessibili nel seguente modo: impostare un valore: $my_agent set my_var1_otcl 10 prendere un valore set my_var [$my_agent set my_var1_otcl] 61 Relazione C++/OTcl: metodi I metodi di una classe C++ non sono accessibili da Otcl Per definire dei metodi utilizzabili da Otcl occorre usare il metodo command int MyAgent::command(int argc, const char* argv){ if (argc==2){ if (strcmp(argv[1], my-priv-function )==0){ MyPrivFunc(); return(tcl_ok); 62 Sommario 2 Nodo unicast Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Raggio di comunicazione! # " Compilazione di ns 63 64

Composizione di un nodo Sommario 2 Nodo Agent collezione di agent e classifier punto terminale di una connessione entità associata ad una porta spedisce/riceve pacchetti sul canale Classifier demultiplexer per i pacchetti in arrivo sull interfaccia 65 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Raggio di comunicazione Compilazione di ns 66 Pacchetti in ns2 Esempio nuovo pacchetto I pacchetti sono eventi Sono composti da una parte header e alcune volte anche da una parte dati Sono incapsulati all'interno di pacchetti ns Contengono un common header Dimensione,Timestamp, type, uid, interface label Per gestire i propri dati bisogna implementare nuovi header Formato del pacchetto: bbcast-packet.h bbcast-packet.cc code tokens 67 68

Modifiche ad NS2 (1) File <ns-dir>/common/packet.h enum packet_t { PT_TCP, PT_UDP, Nuovo pacchetto, // insert new packet types here PT_BROADCASTBASE, PT_NTYPE // This MUST be the LAST one ; class p_info { public: p_info() { name_[pt_tcp]= "tcp"; name[pt_broadcastbase]= Broadcastbase ; name[pt_ntype]= undefined ; 69 Modifiche ad NS2 (2) File <ns-dir>/common/ns-process.h enum AppDataType { // Illegal type ADU_ILLEGAL, BBCAST_DATA, // Last ADU ADU_LAST ; Nuovo pacchetto 70 Modifiche ad NS2 (3) Sommario 2 File <ns-dir>/tcl/lib/ns-packet.tcl foreach prot { AODV ARP Nuovo pacchetto asrm Broadcastbase { add-packet-header $prot 71 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Raggio di comunicazione Compilazione di ns 72

Creazione di un nuovo agente Il nuovo agente sara` derivato dalla classe Agent o da una derivata da essa Udp Tcp Rtp E` necessario implementarlo se si vogliono gestire pacchetti creati ad-hoc E` l intermediario tra l applicazione ed il canale di trasmissione Esempio nuovo agente BroadcastbaseAgent Spedisce e riceve pacchetti del formato da me definito, sia broadcast che unicast File sorgente BroadcastbaseAgent.h BroadcastbaseAgent.cc 73 74 Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Raggio di comunicazione Esempio nuova applicazione BroadcatbaseApp Schedula l'invio dei pacchetti, mantiene le info sui token e gestisce i pacchetti ricevuti File sorgente BroadcastbaseApp.h BroadcastbaseApp.cc Compilazione di ns 75 76

Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Invio dei pacchetti: Broadcast Raggio di comunicazione Invio dei pacchetti Unicast Un agente invia i pacchetti sempre all'agente a cui e' connesso tramite la funzione connect $ns connect $agent1 $agent2 Per mandare pacchetti ad un nodo diverso occorre creare ad-hoc i pacchetti Gli indirizzi di ns sono specificati dalla struttura ns_addr_t Compilazione di ns 77 78 Broadcast Creazione del pacchetto Packet *pkt = allocpkt(2); struct hdr_cmn *ch = HDR_CMN(pkt); struct hdr_ip *ih = HDR_IP(pkt); ch->ptype() = PT_BROADCASTBASE; ch->next_hop_ = IP_BROADCAST; ih->saddr() = Agent::addr(); ih->daddr() = IP_BROADCAST; ih->sport() = 250; ih->dport() = 250; ih->ttl_ = 1; Agent::send(pkt, 0); Costanti per il broadcast 79 Sommario 2 Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Broadcast Raggio di comunicazione Compilazione di ns 80

Raggio di comunicazione Sommario 2 Si cambia nello script con il comando Phy/WirelessPhy set RXThresh_ <nuovo_valore> Per ottenere il valore serve il comando threshhold che si trova nella directory <ns-dir>/indep-utils/propagation/ Nel caso in cui l'eseguibile non fosse presente compilare il file threshold.cc con g++ Eseguire il comando threshold -m <propag_model> distanza Struttura di ns Struttura di un nodo Creazione di un nuovo pacchetto Creazione di un nuovo agente Creazione di una nuova applicazione Invio pacchetti: Broadcast Raggio di comunicazione Compilazione di ns Es.: threshold -m TwoRayGround 100 81 82 Installazione di ns2 Ricompilazione (1) Per installare la versione 2.27 di ns2 all-in-one Estrarre i file dall archivio ns-allinone in una vostra directory sotto /home/local/ (ad es. / home/local/gruppoxx/) comando: tar -zxvf ns-allinone-2.27.tar.gz Entrare nella cartella ns-allinone-2.27 e eseguiro lo script install Incrociare le dita affinchè vada tutto per il meglio!! I file user-defined devono essere compilati. Per farlo occorre modificare il makefile nella cartella ns-2.27 OBJ_CC = \ tools/random.o tools/rng.o tools/ranvar.o \ common/misc.o common/timer-handler.o \ common/scheduler.o common/object.o \ broadcast/bbcast-packet.o \ broadcast/broadcastbaseagent.o \ broadcast/broadcastbaseapp.o Nuovi \ file $(OBJ_STL) 83 84

Ricompilazione (2) Dalla cartella di ns-2.27 eseguire make clean make depend make Nel caso in cui son siano aggiunti nuovi file basta make Note per l'esercitazione Utilizzare la shell bash (é un consiglio...) Aggiungere nel proprio pathname la cartella <ns-dir>/bin/ 85 86 Come trovarci Riferimenti (1) Per domande, dubbi e perplessità su NS2 (NON sull'esercitazione) Alessio Mura Home Page di NS versione 2 http://www.isi.edu/nsnam/ns/ Manuale generale 2000s033@educ.disi.unige.it http://www.isi.edu/nsnam/ns/ns-documentation.html Luca Pastorino Manuale di Marc Greis 2000s002@educ.disi.unige.it Oppure Sealab al piano zero http://www.isi.edu/nsnam/ns/tutorial/ 87 88

Riferimenti (2) NS by examples http://nile.wpi.edu/ns/ NS Simulator for beginners http://wwwsop.inria.fr/mistral/personnel/eitan.altman/ns.htm OTcl http://bmrc.berkeley.edu/research/cmt/cmtdoc/otcl/ 89