Sunteți pe pagina 1din 30

MRC curs 1.

Software de modelare a reelelor de comunicaii OMNeT++

Descriere OMNeT++
OMNeT++ este un framework de simulare, n C++, modular i care suport extensii, cu un IDE
bazat pe Eclipse. Se pot folosi i alte limbaje de programare (cum ar fi Java, C#), comunicare cu
baze de date i alte funcii prin intermediul extensiilor.
Dei nu este un simulator de reele propriu-zis (ci framework), OMNeT++ capt o popularitate
tot mai mare n mediul academic, i datorit unei comuniti de utilizatori puternice. Dezvoltat
iniial de Andras Varga la Technical University of Budapest, cu ajutorul diverselor proiecte din
universiti a ajuns la complexitatea actual. El ofer o librarie de clase n C++, formate dintr-un
kernel i utilitare (pentru generare de numere,statistic, descoperire de topologii, ..).
El ruleaz pe o multitudine de platforme (Linux, Mac OS X, sisteme UNIX, Windows),
folosirea lui fiind gratuit n scopuri necomerciale (pentru uz comercial trebuie obinut o
licen de OMNEST, varianta pltit a OMNeT++). Versiunea actuala este 4.2b.

Ce este OMNeT++?
OMNeT++ este un cadru de simulare pentru evenimente discrete orientate-obiect.Are o
arhitectura generica,de aceea poate fi folosit in mai multe domenii:
Modelarea retelelor de comunicatii cu fir sau wireless
Modelarea protocoalelor
Modelarea retelelor in asteptare
Modelarea multiprocesoarelor sau a altor sisteme hardware distribuite
Validarea arhitecturilor hardware
Evaluarea performantelor pentru sisteme software complexe
In general, modelarea si simularea oricarui sistem ca permite abordarea evenimentelor
discrete si care poate fi convenabil mapata in entitati care comunica prin schimburi de
mesaje
OMNeT++ nu este un simulator pentru un eveniment concret, dar furnizeaza infrastructura si
instrumente necesare pentru a scrie simularea.Una dintre ingredientele fundamentale a acestei
infrastructuri este o componenta arhitecturala pentru simularea modelelor. Modelele sunt
asamblate folosind componente reutilizabile denumite module.Modulele corect construite(scrise)
sunt intr-adevar reutilizabile si pot fi combinate in mai multe moduri ca niste blocuri LEGO.
Modulele pot fi conectate intre ele prin porti si combinate astfel incat sa formeze module
compuse. Adancimea de imbricare a modulelor este nelimitata. Modulele comunica prin mesaje,
care poarta structuri de date arbitrare.

Modulele pot transporta mesaje pe parcursul unor cai predefinite prin porti si conexiuni sau
direct catre destinatie, cea din urma metoda fiind folositoare pentru simulari wireless. Modulele
pot avea parametrii ce pot fi folositi pentru a adapta comportarea modulelor sau pentru a
parametriza topologia modelului. La cel mai jos nivel al ierarhiei modulelor sa gasesc modulele
simple care incapsuleaza comportamentul modelului. Modulele simple sunt programate in C++
si folosesc biblioteca simularii.
Simularile OMNeT++ pot fi rulate sub interfete utilizator variate. Din punct de vedere
grafic,interfetele utilizator animate sunt foarte folositoare in scopul vizualizarii si depanarii
modelelor, insa interfetele utilizator in linie de comanda sunt cele mai bune pentru lotul de
executie.
Simulatorul, interfata utilizator si instrumentele programului sunt portabile.Ele sunt testate pe
sistemele de operare cele mai comune (Linux, Mac OS/X, Windows) si pot fi compilate pe
majoritatea sistemelor de operare Unix, dupa efectuarea unor modificari banale.
OMNeT++ suporta de asemenea si simulari paralele distribuite .OMNeT++ poate utiliza niste
mecanisme pentru comunicatie intre partitiile unei simulari paralele distribuite,de exemplu MPI
(Message Passing Interface) sau conducte. Algortitmul de simulare paralela poate fi foarte usor
extins sau pot fi construiti alti algoritmi noi. Modelele nu au nevoie de nici o instrumentatie
speciala pentru a putea fi rulate in paralel-este doar o chestiune de configurare. OMNeT++
poate fi folosit chiar si pentru o prezentare a algoritmului de simulare paralela deoarece
simularile pot fi rulate in paralel chiar si sub un GUI (Graphical User Interface) care furnizeaza
un feedback detaliat asupra ceea ce se intampla.
OMNEST este versiunea comerciala OMNeT++. OMNeT++ este gratuita doar pentru scop
academic sau non-profit.
Concepte de modelare
Un model Omnet++ este format din module care comunic ntre ele prin schimbul de
mesaje. Modulele simple pot fi grupate n module-compuse, numrul de nivele ierarhice
fiind nelimitat.

Conceptul de modul simplu sau complex este similar cu modelele atomice sau cuplate DEVS
(Discrete Event System Specification).
Modulele comunica intre ele cu mesaje care pot contine date arbitrare,in plus fata de atributele
uzuale de genul etichetelor de timp.Modulele tipice simple trimit mesaje prin porti,dar este
posibil sa fie trimise si direct spre modulele destinatie. Portile sunt intrarea si iesirea interfetelor
modulelor: mesajele sunt trimise prin porti de iesire si ajung prin porti de intrare. Portile de
intrare si iesire pot fi legate printr-o conexiune. Conexiunile sunt create intr-un singur nivel a
ierarhiei de module, intr-un modul combinat, corespunzator portilor a doua submodule sau pot fi
conectate o poarta a unui submodul si o poarta a modulului. Intinderea conexiunilor pe mai
multe niveluri ierarhice nu este permisa, deoarece ar mpiedica reutilizarea modelului.
Datorita structurii ierarhice a modelului, mesajele circula printr-un lant de conexiuni, plecand si
ajungand in module simple. Modulele combinate se comporta ca niste cutii de carton, relocand
transparent mesajele intre partea lor interioara si lumea exterioara.
Parametrii precum intarzierea de propagare, cantitatea de date si rate erorii de bit(BER) pot fi
asignati unei conexiuni. De asemenea se pot defini tipuri de conexiuni cu proprietati specifice
(denumite canale) ce pot fi refolosite si in alte locuri. Modulele pot avea parametri care sunt
folositi in general pentru a transmite datele de configurare modulelor simple si care ajuta la
definirea topologiei modelelor.Acesti parametri pot fi valori de tip string, numeric sau boolean si
contin constante. Deoarece acesti parametrii sunt reprezentati ca obiecte in programe, ei se
comporta ca surse de numere aleatorii ,cu distributia furnizata impreuna cu configuratia
modelului. Modulele combinate pot transfera parametrii sau expresii ale parametrilor la
submodulele lor.
OMNeT++ furnizeaza instrumente eficiente pentru utilizator astfel incat structura sistemului
actual sa poata fi descrisa cat mai bine. Printre cele mai importante trasaturi se regasesc
urmatoarele:

Module imbricate ierarhic


Modulele sunt instante ale tipurilor de module
Modulele comunica prin canale utlizand mesaje
Parametrii flexibili ai modulelor
Limbaj de descriere a topologiei

Ierarhia de module
Un model OMNeT++ consta dintr-o ierarhie de module imbricate care comunica intre ele prin
schimbul de mesaje. Modelele OMNeT++ sunt deseori mentionate ca si retele. Nivelul cel mai
inalt al ierarhiei se numeste modul sistem. Acest modul contine mai multe submodule care la
randul lor pot contine alte submodule. Adancimea ierarhiei este nelimitata, astfel se permite
utilizatorului sa reflecte structura logica a sistemului creat in structura modelului. Aceasta
structura este descrisa cu limbajul NED.
.
Tipuri de module
Atat modulele simple cat si cele compuse sunt exemplificari ale tipurilor de module. In
descrierea unui model utilizatorul defineste tipuri de module. In final, utilizatorul creeaza
modulul sistem ca o exemplificare a unui tip de modul definit anterior; toate modulele retelei
sunt considerate ca submodule sau sub-submodule a modulului sistem.
Cand un tip de modul este utilizat ca un bloc de constructie, nu conteaza daca este un modul
simplu sau compus. Acest lucru permite utilizatorului sa imparta un modul simplu in mai multe
module simple, inglobate intr-un modul compus sau vice-versa, sa asambleze functionalitatea
unui modul compus intr-un singur modul simplu,fara a afecta utilizatorii existenti.
Tipurile de module sunt stocate in fisiere separate de locul in care se face utilizarea lor. Asta
inseamna ca utilizatorul poate grupa tipurile de module existente si sa creeze biblioteci
componente.
Mesaje, porti si legaturi
Modulele comunica prin schimbul de mesaje. Intr-o simulare reala, mesajele reprezinta cadre sau
pachete intr-o retea de calculatoare, joburi sau clienti intr-o retea in asteptare sau alte tipuri de
entitati mobile. Mesajele pot contine structuri de date arbitrare complexe.
Timpul de simulare local a unui modul avanseaza atunci cand un modul primeste un mesaj.
Mesajul poate ajunge de la un alt modul sau de la acelasi modul (mesajele de la acelasi modul
sunt utilizate pentru a implementa timere). Portile sunt intrarile si iesirile interfetelor
modulelelor. Fiecare conexiune (numita de asemenea legatura) este creata intr-un singur nivel a
ierarhiei de module.
Modelarea transmisiei de pachete

Pentru a facilita modelarea retelelor de comunicatii, conexiunile pot fi utilizate pentru a modela
legaturile fizice. Conexiunile suporta urmatorii parametrii: rata de transmisie a datelor;
intarzierea de propagare, BER si rata de eroare a pachetelor(PER) si pot fi dezactivate.
Acesti parametrii si algoritimii de baza sunt incapsulati canalul obiectelor. Utilizatorul poate
parametriza tipurile de canale furnizate de OMNeT++ si, de asemenea, poate construi altele noi.
Cand se folosesc ratele de date, un obiect pachet este livrat implicit la modulul vizat in timpul de
simulare care corespunde sfarsitului receptionarii pachetului. Deoarece acest comportament nu
este potrivit modelarii unor protocoale (de exemplu,half-duplex Ethernet), OMNeT++ furnizeaza
posibilitatea ca modulul tinta sa specifice ca doreste ca un obiect pachet sa fie livrat atunci cand
receptionarea pachetului incepe.
Parametrii
Modulelele pot avea parametrii ce pot fi atribuiti fie in fisierele NED fie in fisierul de
configurare omnetpp.ini.
Parametrii pot avea valori de tip string, numeric sau boolean, sau pot contine arbori de date
XML. Ei pot avea expresii referitoare la alti parametrii. Modulele combinate pot transfera
parametrii sau expresii ale parametrilor catre submodulele lor. Parametrii cu valoare numerica
poate fi folositi pentru a construi topologii intr-o maniera flexibila.
Programarea algoritmilor
Modulele simple a unui model contin algoritmi ca si functii C++. Flexibilitatea si puterea
limbajului de programare poate fi folosita deoarece este suportata de OMNeT++. Programatorul
simularii poate alege intre un eveniment speculat si descrierea procesului, poate utiliza concepte
orientate obiect (mostenire, polimorfism etc.) si poate proiecta modele pentru a extinde
functionalitatea simulatorului.
Obiectele simularii (mesaje, module, cozi, etc.) sunt reprezentate prin clase C++. Sunt proiectate
sa lucreze eficient impreuna, creand un cadru de programare a simularii puternic. Urmatoarele
clase sunt parte din biblioteca clasei de simulare:
Module, porti, parametrii, canale
Mesaje, pachete
Clase container (cozi, siruri)
Clase de colectionare a datelor
Clase de estimare statistica si de distributie (histograme, algoritmi P2 etc. )
Clase de detectare a preciziei rezultatului

Utilizare OMNeT++
Construirea si rularea simularilor
Aceasta sectiune ajuta la intelegerea lucrului cu OMNeT++ in practica. Sunt evidentiate aspecte
privind fisierele modelelor, compilarea si rularea simularii.

Un model OMNeT++ consta din urmatoarele fisiere:

Limbajul NED de descriere a topologiei (fisiere .ned ): descrie structura modulului cu


parametrii, porti, etc. Fisierele .NED pot fi scrise utilizand un editor de text, dar
OMNeT++ IDE furnizeaza support excelent pentru editarea in doua moduri: grafic si
text.
Definirea mesajelor (fisierele .msg ): se pot defini diferite tipuri de mesaje si se pot aduga
campuri de date. OMNeT++ va traduce definitiile de mesaje in clase C++ cu drepturi
depline.
Module simple sursa: sunt fisiere C++ cu sufixul .h/.cc

Sistemul de simulare furnizeaza urmatoarele componente:


Kernelul de simulare: contine codul care se ocupa de simulare si biblioteca clasei de
simulare.Este scris in C++ si compilata intr-o biblioteca statica sau partajata
Interfetele utilizator: sunt folosite in simularea executiei, pentru a facilita depanarea,
demonstrarea sau executia batch-urilor de simulare. Sunt scrise in C++ si compilate in
biblioteci.
Programele de compilare sunt construite cu componentele de mai sus.In primul rand, fisierele
.msg sunt traduse intr-un cod C++ folosind un program numit opp_msgc. Apoi toate sursele
C++ sunt compilate si legate cu kernelul de simulare si o biblioteca a unei interfete utilizator,
pentru a forma o simulare executabila si o biblioteca partajata. Fisierele NED sunt incarcate
dinamic in formurile text originale atunci cand simularea programului incepe.
Rularea simularii si analiza rezultatelor
Simularea poate fi compilata ca un program executabil de sine statator, de aceea poate fi rulat pe
alte masini fara ca OMNeT++ sa fie prezent sau poate fi creat ca o biblioteca partajata. In acest
caz bibliotecile partajate OMNeT++ trebuie sa existe in acel sistem. Cand programul este initiat,
intai citeste toate fisierele NED care contin topologia modelului, apoi citeste un fisier de
configurare ,numit de obicei omnetpp.ini. Acest fisier contine setari care controleaza modul in
care simularea va fi executata, valorile parametrilor modelului,etc. Fisierul de configurare poate
de asemenea programa mai multe rulari ale simularii. In cel mai simplu caz ele vor fi executate
de programul de simulare unul dupa altul.
Output-ul simularii este scris in mai multe fisiere rezultat: fisiere vector de iesire, fisiere scalare
de iesire si , posibil, fisierele proprii ale utilizatorului. OMNeT++ contine un mediu de
dezvoltare integrata IDE (Integrated Development Environment) care furnizeaza un mediu bogat
pentru a analiza aceste fisiere. Fisierele de iesire sunt fisiere text orientate-linie care fac posibila
procesarea lor cu o varietate de instrumente si limbaje de programare, incluzand Matlab, GNU R,
Perl, Python si alte programe spreadsheet.
Interfata utilizator
Principalul scop al interfetei utilizator este de a externaliza modelul utilizatorului, de a controla
executia simularii si de a permite utilizatorului sa intervina, schimband variabile/obiecte din
interiorul programului. Acest lucru este foarte important in faza de desfasurare/depanare a

proiectului simulate. La fel de important, o experienta vasta permite utilizatorului sa simta


comportamentul modelului.
Acelasi model de simulare poate fi executat cu mai multe interfete utilizator fara a schimba
nimic in fisierele modelului.Utilizatorul poate testa si depana simularea cu o interfata grafica
puternica si apoi, in final, sa o ruleze cu o interfata simpla, rapida, care suporta executia batch.

Modele existente

INET Framework contine model IP, TCP, UDP, PPP, Ethernet, MPLS cu LDP si
semnalizare RSVP-TE , si alte protocoale. De asemena, INET Framework include suport
pentru simulari wireless, majoritatea fiind bazate pe cod MF.

MiXiM este un framework de modelare pentru OMNeT++ creat pentru retele mobile si
retele fixe wireless (retele de senzori wireless, retele body area, retele ad-hoc, retele
vehicular, etc.). MiXiM se concentreaza pe partea inferioara a stivei de protocoale si
ofera model detaliate ale propagarii prin unde radio, estimarea interferentelor, consumul
de putere a tranceiverelor radio si protocoalele wireless MAC.

Castalia este un simulator pentru reele wireless de senzori (WSN) i n general pentru
reele ntre dispozitive embedded cu energie limitat. Se bazeaz pe platform OMNeT++
i poate fi folosit de cercettori i dezvoltatori n vederea testrii algoritmilor i/sau
protocoalelor folosind modele realiste.Este dezvoltat de ctre NICTA (National ICT
Australia) din 2006, devenind un proiect open source in 2007 sub licena APL (Academic
Public License). Crearea acestui simulator a plecat de la necesitatea validrii unor
protocoale dezvoltate aici,soluiile existente neridicndu-se la nivelul dorit.
Caracteristici:
foarte bun modelare a canalelor radio i wireless pentru dispozitive cu putere
redus (low-power);
integrare bun ntre partea de monitorizare (sensing) a reelelor de senzori i
partea de transmisie;
suport mobilitatea nodurilor;
stri cu consum diferit de putere;
adaptare i extindere uoara

xMIPv6 este un model de simulare precis si extensibil Mobile IPv6 pentru INET
Framework.

ReaSE este o extensie a INET Framework. ReaSE este capabil sa creeze medii de
simulare realiste tinand cont de impunerile date de topologiile retelelor ierarhice, fiind
capabil sa conditioneze traficul utilizand instrumente reale si,de asemenea, furnizeaza o
interfata utilizator grafica pentru generatia de fisiere NED care includ topologii realiste
si o generatie de entitati de trafic necesare.

OverSim este un cadru de simulare flexibil a retelelor de acoperire.A fost creat pentru a
indeplini niste conditii care au fost neglijate partial de cadrele de simulare peer-to-peer
existente.Prima varianta include o implementare a protocoalelor Chord si GIA.

Mobility Framework (MF) suporta simulari de retele mobile si wireless in OMNeT++.


Userii existenti sunt incurajati sa migreze la MiXiM. MF a fost initial creata la TKN, TU
Berlin si mai tarziu portata la and OMNeT++ 4.0 de Jerome Russelot. Versiunea
compatibila 4.x este acum gazduita de github.com. MF include de asemenea un model
802.11 (doar mode-ul ad-hoc). Mai multe modele (BatteryModule, BMAC, LMAC,
Detailed Multiple Access Interference Model (RadioAccNoise3), Radio power
consumption model (TI CC 1100, TI CC 2420), IEEE 802.15.4 CSMA au fost adaugate
la port-ul 4.0; aceste modele nu au fost portate in MiXiM.

Versiuni Windows suportate


Versiunile de Windows suportate sunt versiunile Intel pe 32 de biti ale Windows XP-ului, si mai
tarziu Vista si Windows 7.
Cerinte preliminare de instalare
Singurul software pe care trebuie sa-l descarcati si sa-l instalati inainte este Java runtime
Environment (JRE).
Toate celelalte soft-uri , inclusiv compilator-ul C++, sunt incluse in pachetul Windows
OMNeT++.
Descarcati Java 5.0 sau o versiune mai noua si instalati-l inaine de a continua. Java se foloseste
pentru Simulare IDE- bazata de Eclipse
Instalare OMNeT++
Descarcati OMNeT++ de pe http://omnetpp.org. Asigurati-va ca ati selectat arhiva pentru
Windows, numita omnetpp-4.2b1-src-windows.zip.
Pachetul este aproape de sine statator: in plus fata de fisierele OMNeT++ include un compilator
C++, un mediu construit in linie de comanda, toate librariile si programele necesare pentru
OMNeT++.
Copiati arhiva OMNeT++ in directorul unde vrei sa-l instalezi. Selectati un director a carui cale
completa nu contine nici un spatiu; de exemplu, nu puneti OMNeT++ in Program Files.
Dezarhivati fisierul zip. Redenumiti directorul rezultat in omnetpp-4.2b1. In directorul omnetpp4.2b1 trebuie sa aveti directoare numite doc, images, include, msys, etc., si fisiere numite
mingwenv.cmd, configure, Makefile, si altele.

Configurarea OMNeT++

Din folder-ul programului, rulati mingwenv.cmd, care va porni un shell de bash, cu path-ul
deja modificat pentru a include si folder-ul curent.
Verificati fisierul configure.user pentru a va asigura ca acesta contine toate setarile pe care le
doriti. In cele mai multe cazuri nu e nevoie sa modificati nimic.
notepad configure.user
Acum urmeaza compilarea propriu-zisa. Introduceti urmatoarele comenzi:
$ ./configure
$ make
Verificarea instalarii
Pentru a verifica instalarea puteti rula exemplele si sa verificati ca acestea ruleaza correct.
Pentru a rula exemplul dyna introduceti urmatoarele comenzi:
$ cd samples/dyna
$ ./dyna
Implicit, exemplele vor rula utilizand mediul grafic Tkenv. Trebuie sa urmariti ferestrele GUI si
dialogurile.

Rularea IDE-ului
Rularea interfetei grafice (IDE) se face prin apelarea comenzii:
$ omnetpp
Cand incercati sa faceti un proiect in IDE, puteti primi urmatorul mesaj de avertizare:
Toolchain "" is not supported on this platform or installation. Please
go to the Project menu, and activate a different build configuration. (You
may need to switch to the C/C++ perspective first, so that the required
menu items appear in the Project menu.)
Daca intalniti acest mesaj, alegeti Project > Properties > C/C++ Build > Tool
Chain Editor > Current toolchain > GCC for OMNeT++.
The Workbench
Fereastra principala a Eclipse-ului consta din diverse editoare si vizulizari. Acestea sunt colectate
in Perspective care definesc care vizualizari si editoare sunt vizibile si modul in care acestea sunt
dimensionate si pozitionate.
Eclipse este un sistem foarte flexibil. Poti muta, redimensiona, ascunde si arata diferite panel-uri,
editoare si navigatoare. Asta va permite sa customizati IDE-ul dupa dorinta dumneavoastra, dar
il face mai greu de descries. In primul rand, sa ne asiguram ca ne uitam la acelasi lucru.
OMNeT++ IDE ofera "Simulation perspective" pentru a lucra cu simularile fisierelor NED, INI
si MSG. Pentru a modifica perspectiva de simulare, selecteaza Window| Open Perspective |
Simulation.

Cele mai multe elemente de interfata din Eclipse pot fi mutate si pozitionate liber, asa ca va
puteti construi propriul workbench potrivit nevoilor dumneavoastra.

Project Explorer, in partea din stanga sus a ecranului afiseaza proiectele si continutul lor in
spatiul vostru de lucru. In exemplul de mai sus, e deschis proiectul demo queueinglib.
Puteti vedea fisierele .ned, .ini si alte fisiere. Un numar de vizualizari sunt pozitionate in partea
de jos a ferestrei.
Screenshot-ul arata fisierul README.txt in zona de editare. Cand un user sa dublu-click pe un
fisir, Eclipse lanseaza automat editorul asociat acelui fisier.
Properties View contine informatii despre un anumit obiect care e selectat in zona de editare.
Problems View face trimitere la liniile de cod unde Eclipse intampina probleme.
Exista mai multe vizualizari specifice OMNeT++, care pot fi folosite in timpul dezvoltarii.
Puteti deschide orice View selectand din meniu Window | Show View
Workspaces
Un workspace este de fapt un director in care se afla toate proiectele. Puteti crea si utiliza mai
multe workspace-uri si sa comutati intre ele, dupa cum e necesar. In timpul primei rulari,
OMNeT++ IDE iti da sa deschizi directorul samples ca workspace, deci vei putea sa
experimentezi cu exemplele disponibile.
Odata ce incepi sa lucrezi la propriul tau proiect, recomandam sa-ti creezi propriul workspace
selectand File | Switch Workspace | Other. Poti comuta intre workspace-uri, dupa cum e necesar.

Dar sa stiti ca OMNeT++ IDE se restarteaza la fiecare switch intre workspace-uri. Acest lucru e
normal. Poti cauta continutul workspace-ului in Project Explorer, Navigator, C/C
++ Projects.
Perspectiva de simulare
OMNeT++ IDE defineste Simulation Perspective, astfel ca este special orientata spre proiectarea
unor simulari.
Simulation Perspective este pur i simplu un set de opinii convenabil selectate, aranajat pentru a
face mai usoara crearea fisierelor NED, INI si MSG. Daca lucrati mult cu fisierele INI si NED,
va recomandam sa selectati aceasta perspectiva. Alte perspective sunt optimizate pentru diferite
task-uri cum ar fi dezvoltarea sau depanarea C++

Preferintele de configurare OMNeT++


Fereastra de preferinte OMNeT++ IDE e disponibila in meniul standard de preferinte, care este
in meniul principal. Aceste setari sunt globale si partajate intre toate proiectele. Locatiile de
instalare OMNeT++ sunt completate automat, dupa instalare. Setarile implicite pentru generarea
documentatiei NED presupune ca variabila de mediu PATH este deja setata, astfel incat
instrumentele de terta parte pot fi gasite. Setarile de configurare a licentei specifica tipul de
licenta preferat. IDE va copia licenta in fisierele si proiectele noi. Licenta va fi de asemenea
afisata in documentatia NED generata.
Folositi butoanele de Browsepentru a gasi mai usor fisiere sau foldere. Specificati calea completa
pentru executabile, daca nu doriti sa se extinda variabila de mediu PATH.

Crearea Proiectelor OMNeT++


In Eclipse, toate fisierele sunt in proiecte, deci veti avea nevoie mai intai de un proiect adecvat.
Proiectul trebuie sa fie desemnat ca Proiect OMNeT++. Cea mai simpla metoda sa creati un
astfel de proiect este sa folositi un wizard.
Alegeti den meniu File|New|OMNeT++ Project, specificati numele proiectului si apoi dati click
pe butonul de Finish. Daca nu aveti de gand sa scrieti module simple, puteti deselecta checkboxul de Support C++ care va dezactiva toate caracteristicile C++ legate de proiect.

Help-ul
Puteti accesa help-ul online din meniu Help | Help Contents. OMNeT++ IDE e construit pe baza
Eclipse-ului, asa ca daca nu sunteti familiar cu Eclipse, va recomandam sa cititi Workbench User
Guide si C/C++ Development User Guide inainte de a incepe sa folositi caracteristicile specifice
OMNeT++.

OMNeT++ IDE
Urmatoarele screenshot-uri introduc principalele componente ale OMNeT++ IDE.

Editorul NED
Editorul NED permite editarea in doua moduri: grafic si text, user-ul poate face switch oricand
intre cele doua moduri, folosind tab-urile din partea de jos a ferestrei de editare.

In modul grafic, se pot crea module combinate, canale si alte tipuri de componente. Submodulele
pot fi create folosind paleta de tipuri de module disponibile. Proprietatile vizuale si non-vizuale
pot fi modificate din Properties View. Editor-ul ofera multe caracterisici cum ar fi numar
nelimitat de undo/redo, clonarea obiectelor, redimensionarea si mutarea constransa, alinierea
obiectelor si zoom-are.
Submodulele pot fi pinned (avand o pozitie fixa) sau unpinned (auto-layout).
Caracteristicile grafice ce pot fi editate sunt imaginea de background, grila de background,
icoanele implicite, dimensionarea si colorarea icoanelor implicite, distanta de transmisie si multe
altele.

Properties View permite user-ului sa editeze proprietatile obiectelor in mod grafic sau nongrafic. Editoarele de celula speciale faciliteaza selectare culorilor, icoanelor, etc. Undo si redo
sunt valabile si pentru modificarile proprietatilor. Properties View e de asemenea folosit si cu
alte editoare ca Result Analysis, care permite user-ului sa personalizeze diagrame si alte obiecte.

Modul text permite user-ului sa lucreze direct cu sursa NED. Cand se apasa Ctrl
+Space, editorul ofera completare in functie de context a cuvintelor cheie si a tipului de modul,
parametru, gate si numele submodulelor. Documentatia tipurilor de module de referinta pot fi
vizualizate prin pozitionarea cursorului pe numele fisierului NED. Sursa NED este analizata si
validata continuu pe masura ce user-ul scrie si erorile sunt afisate in timp real pe marginea din
stanga.
Sublinierea sintaxelor,spatierea automata si conversia automata de la sintaxa NED OMNeT++
3.x e de asemenea disponibila.

Outline View afiseara structura fisierelor NED atat in modul grafic cat si in modul de editare
text si permite si navigarea.
Module Hierarchy View si NED Parameters View pot de asemenea fi folosite cu editorul NED
(acestea vor afisa ierarhia submodulelor si parametrii modulului sau submodulului selectat)
aceste aspecte vor fi descrise cu editorul INI. Alte aspecte sunt legate de Problems View (care
afiseaza erorile si avertismentelele in fisierele NED si in alte fisiere) si Tasks View (care afiseaza
o lista a tuturor comentariilor FIXME si TODO gasite in fisierele NED si in alte fisiere sursa).
Editorul de fisiere INI
Acest editor permite utilizatorului sa configureze simularea modelelor pentru executie. Poate fi
folosit in doua moduri:grafic si in limbaj de programare.

Editorul de fisiere Ini ia in considerare toate optiunile de configurare suportate si le ofera in mai
multe forme,organizate dupa subiect.Descrierile si valorile implicite sunt afisate sub forma de
ferestre de ajutor,care pot fi active pentru mai mult timp pentru a usura citirea lor. Structura unui
fisier ini (sectiuni si arbore de mostenire) pot fi vizualizate si editate prin dialoguri sau ferestre
drag&drop.Unde este nevoie, pot fi gasite si ferestre de validare sau de asistenta a continutului
(Ctrl+Space).
Editorul suporta actiuni undo/redo nelimitate si conversii automate de la fisierele OMNeT++ ini
3.x

Editorul de text permite utilizatorului sa lucreze cu fisierul ini direct,ceea ce ofera eficienta mai
mare pentru utilizatorii avansati decat utilizarea form-urilor.Sunt furnizate actiuni undo/redo
nelimitate, asistenta pentru sintaxa si finalizarea cheilor de configurare,valori,si structura
parametrilor modelelelor (Ctrl+Space).Fisierul este analizat continuu si erorile sau
avertismentele sunt afisate in timp real.
Editorul ia in considerare toate declaratiile NED (module simple,module compuse,canale,etc.) si
poate exploata pe deplin aceste informatii pentru a putea oferi utilizatorului diagnostic si
asistenta.La citirea cheii de configurare din sintaxa network= ,se cunoaste tipul NED de modul
compus de nivel inalt si astfel se construieste intern un desen static al retelei prin enumerarea
recursiva a submodulelelor,a sub-submodulelor,etc si asociaza continuu aceste informatii la
continutul fisierul ini.Asrfel,editorul stie intotdeauna ce cheie a fisierului ini se potriveste cu
parametrii modulelelor,care sunt cheile nefolosite (care nu se potrivesc cu nimic),si care
parametrii ai modulelor sunt inca deschisi (nu au atribuita nici o valoare).Aceste informatii sunt
afisate sub forma de tooltips,avertismente si in multe alte moduri.

Pentru a accelera procesul de creare a fisierelor ini de la inceput,editorul ofera o fereastra de


dialog Add Missing Keys.Dupa ce s-a apasat OK,editorul va insera cheia fisierului ini pentru toti
parametrii NED deschisi.Utilizatorul va fi nevoit doar sa furnizeze valorile.
Fereastra Module Hierarchy View afiseaza ierarhia submodulelelor din reteaua de configurare
curenta,impreuna cu parametrii modulelor.Arata cum parametrii modulelor obtin valori (de la
NED,prin aplicarea unei valori implicite NED sau de la fisierul ini).Este capabila sa rezolve
cazuri simple in care un tip de submodul prvinde de la un parametru string (cuvantul cheie NED
like).Prin utilizarea meniului contextului,utilzatorul poate merge la declaratia NED a unui
modul,submodul,parametru,poarta sau intr-un loc in care parametrul isi primeste valoarea (in
fisierele NED sau ini).
Fereastra View poate fi legata de un editor particular pentru a preveni schimbarea continutului
atunci cand utilizatorul schimba editoarele de fisier NED si ini.

Implicit, NED Parameters View afiseaza tabelul cu parametrii NED neatribuiti in reteaua de
configurare curenta si poate fi schimbat astfel incat sa se afiseze toti parametrii,atribuiti si
neatribuiti.Pentru parametrii atribuiti se arata cum au obtinut valoare (din NED,prin aplicarea
unei valori implicite NED sau din fisierul ini).utilizatorul poate deschide locurile relevante din
fisierele NED sau ini.

Fereastra Problems View prezinta erorile,avertismentele si mesajele de informare in fisierele


NED,si alte fisiere sursa intr-o maniera unificata. Daca facem dublu click pe un item,acesta se
deschide intr-un fisier corespunzator ,in care se localizeaza eroarea.Continuturile pot fi filtrate in
mai multe moduri(fisiere curente,proiecte curente,toate proiectele,pe grad de gravitate,etc.) .

Lansarea simularii
Interfata OMNeT++ IDE face posibila rularea simularii direct din mediul integrat.Este posibil sa
rulam o simulare ca o aplicatie normala C/C++ si sa efectuam o depanare la nivele de cod sursa
C++.De asemenea,utilizatorul poate rula o simulare ca o aplicatoe de sine statatoare (sub Tkenv
sau Cmdenv) sau sa ruleze serii de simulari in cazul in care setarile parametrilor sunt diferite.

In Eclipse IDE,modurile variate de lansare a unui program aflat in desfasurare este descris de
configurarile de rulare.Sunt diferite tipuri de configurare a lansarii (C/ C++ Application, Java
Application, etc.).Pentru a lansa un program in executie pentru prima data,utilizatorul creeaza un
exemplu de configuratie,completeaza un formular (numele programului,argumentele liniei de
comanda,etc.) si apasa butonul Run. OMNeT++ furnizeaza tipuri de configurare a executiei:unul
dintre ele extinde tipul normal de rulare C/C++ Local Application cu un tab Simulation (pentru
a putea edita convenabil optiunile simularii) si alt tip de simulare de sine statatoare pentru a
putea rula serii de simulari.Ultimul,poate fi folosit de asemenea si pentru depanarea C++

Fereastra Progress View raporteaza pozitia in care se afla executia simularii atunci cand se
ruleaza o simulare sau atunci cand se executa mai multe rulari dintr-o data.Se pot anula toate
operatiile printr-un singur clic atunci cand este necesar.Simularile ruleaza in procese separate
astfel incat IDE nu este blocata si utilzatorii pot lucra in continuare,in timp ce simularea ruleaza
in fundal.In figura de mai sus se ruleaza 2 procese in paralele,procesul #1 fiind terminat.

Fiecare proces care ruleaza trimite outputul intr-o consola buffer separata continuta de Console
View, astfel incat uitilizatorul sa poata analiza outputul dupa ce simularea este finalizata. Putem
comuta intre bufferele consola utilizand meniul Console View sau apasand dublu clic pe un
proces din Debug View.

Fereastra Debug View este una dintre optiunile standard ale Eclipse,insa nu este folositoare doar
pentru depanare.Atata timp cat Progress View arata doar procesele curente care sunt executate,
Debug View afiseaza si procesele terminate impreuna cu codurile lor de iesire.Procesele sunt
marcate cu numere de rulare si ora lansarii pentru a putea identificate mai usor.
Sequence Chart
Kernelul de simulare este capabil sa logheze diferite evenimente in timpul simularii:
programarea si anualarea mesajelor automate,trimiterea mesajelor,afisarea modificarilor,creearea
si stergerea modulelelor si a conexiunilor,etc..Rezultatul este un fisier jurnal al evenimentelor
care contine informatii detaliate ale simularii care pot fi folosite mai tarziu pentru diferite
scopuri,cum ar fi vizualizarea schimbului de mesaje pe parcursul modulului intr-o
diagram.Formatul fisierului este un text care faciliteaza procesarea datelor.

Un jurnal de evenimente poate fi vizualizat utilizand Sequence Chart din IDE.In aceasta
diagrama,evenimentele sunt reprezentate prin noduri si mesajele trimise/planificate/refolosite

sunt reprezentate cu sa geti.Diagrama poate fi filtrata in concordanta cu modulele,tipurile de


mesaje si alte criterii.Diagrama mai poate fi filtrate in functie de cauzele/consecintele unui
eveniment particular (aceasta functioneaza urmarind mesajele inainte si inapoi in timpul de
simulare).Linia timpului a graficului poate fi afisata in mai multe moduri,cum ar fi liniar (timpul
de simulare),compact(non-liniar) si bazat pe numarul evenimentelor.Alte caracteristici includ
sortarea axului modulului,afisarea vectorului de stare (utilizand fisiere de iesire vector) si
optiuni speciale de navigare (bookmark,urmarirea mesajelor trimise),si exportarea diagramei in
format SVG.
Event Log Table si Sequence Chart sunt capabile sa ofere o afisare eficienta a fisierelor de
evenimente de cativa GB fara a fi necesara o cantitate mare de memorie.

Event Log Table afiseaza continutul unui fisier event log inregistrat in timpul unei simulari.
Suporta linii si notatii descriptive, filtrare bazata pe linie a evenimentelor si a parametrilor,
bookmark-uri si optiuni de navigare speciala cum ar fi "go to simulation time" sau sosirea
mesajelor.
Scave (Result Analysis)
Scave este instrumentul OMNeT++ de anliza a rezulatatelor si sarcina lui este de ajuta procesul
utilizator sa vizualizeze rezultatele simularii salvate in fisiere scalarec sau vectoriale.Navigarea
ad-hoc a datelor este suportata in aditie cu procesarea sistematica si repetabila.Toate procesarile
si diagaramele sunt stocate ca retete.De exemplu,daca simularile au nevoie sa fie re-rulate
datorita unei erori de model sau configurare gresita,diagramele existente nu trebuie refacute de

fiecare data.Inlocuirea fisierelor vechi de rezultate cu cele noi va duce la afisarea automata a
noilor date in diagrama.
Scave este implementat ca un editor multi-pagina.Editorul scrie in reteta urmatoarele: ce
fisiere sa ia ca intrari,ce date sa selecteze din ele,ce procesare sa aplice si ce fel de grafice sa
creeze din ele.Paginile editorului corespund riguros cu acesti pasi.

Prima pagina afiseaza fisierele rezultate care servesc ca intrare pentru analiza.Jumatatea de sus
specific ace fisiere sa fie selectate,folosind nume explicite de fisiere.Jumatatea de jos arata ce
fisiere se potrivesc cu specificatiile intrarii si ce rulari contin.Fisierele rezultat vor contine un ID
de rulare unic si cateva adnotari despre metadate in aditie la datele curente inregistrate.Cel de-al
treilea arbore organizeaza simularile rulate in functie de etichete legate de experiment-masurarireplicare.
Presupunerea care sta la baza este ca utilizatorii isi vor organiza simularea bazata pe cercetare in
diferite experimente.Un experiment consta in diferite masuratori,care sunt simulari tipice
(dar nu necesare) facute cu acelasi model,dar cu setari diferite ale parametrilor;utilizatorul va
explora spatiul parametrilor ci diferite executii ale simularilor.Pentru a castiga incredere statistica
in rezultate ,fiecare masuratoare va putea fi repetata de cateva ori cu diferite valori aleatorii. Este
usor sa aplici un asemenea scenariu cu varianat imbunatatita a fisierelor ini 4.x.

A doua pagina afiseaza rezultate (vectori,scalar si histograme) din toate fisierele in tabele si
permite utilizatorului sa le exploreze.Rezultatele pot fi sortate si filtrate.Filtrarea simpla este
posibila cu casete combo,sau daca nu este sufficient,utilizatorul poate scrie filtre arbitrare
complexe folosind un model generic care se potriveste cu limbajul expresiilor.Datele filtrate si
selectate pot fi afisate imediat sau retinute in seturi de date pentru o procesare ulterioara.

Este posibil sa definim seturi de date reutilizabile care au retete fundamentale despre modul de
selectare si procesare a datelor primite din simulate.Putem adauga selectia si procesarea
nodurilor de date intr-un set de date.Desenarea graficului este posibila in orice punct al arborelui
de procesare.

Graficele liniare sunt desenate cu ajutorul seriilor cronologice de date stocate in fisierele
vector.Preprocesarea datelor este posibila in setul de date.Componenta diagramei liniare poate fi
configurata astfel incat sa afiseze datele vectoriale in functie de necesitatile utilizatorului.

Graficele de tip bara sunt create din rezultatele scalare si histograme.Datele relevante pot fi
grupate si afisate prin componenta Bar a graficului.Culorile,tipul graficului si alte atribute de
afisare pot fi setate din aceasta component.

Output Vector View poate fi folosit pentru a inspecta randul de date numerice cand este
nevoie.Poate arata datele originale din fisierul vector sau rezultatul unui calcul.Utilizatorul poate
selecta un punct din diagrama linie sau un vector din Dataset View si continutul sau va fi afisat.

Dataset View este utilizat pentru a arata elementele continute in setul de date.Continutul
corespunde starii setului de date dup ace procesarea selectata a fost efectuata.

S-ar putea să vă placă și