30
MRC curs 1. Software de modelare a rețelelor de comunicații – 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 funcţii prin intermediul extensiilor. Deşi nu este un simulator de reţele propriu-zis (ci framework), OMNeT++ capătă o popularitate tot mai mare în mediul academic, şi datorită unei comunităţi de utilizatori puternice. Dezvoltat iniţial de Andras Varga la “Technical University of Budapest”, cu ajutorul diverselor proiecte din universităţi 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 obţinută o licenţă de OMNEST, varianta plătită 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.

MRC curs 1

Embed Size (px)

DESCRIPTION

MRC curs 1

Citation preview

Page 1: MRC curs 1

MRC curs 1. Software de modelare a rețelelor de comunicații – 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 funcţii prin intermediul extensiilor.

Deşi nu este un simulator de reţele propriu-zis (ci framework), OMNeT++ capătă o popularitate

tot mai mare în mediul academic, şi datorită unei comunităţi de utilizatori puternice. Dezvoltat

iniţial de Andras Varga la “Technical University of Budapest”, cu ajutorul diverselor proiecte din

universităţi 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 obţinută o

licenţă de OMNEST, varianta plătită 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.

Page 2: MRC curs 1

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, numărul de nivele ierarhice

fiind nelimitat.

Page 3: MRC curs 1

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:

Page 4: MRC curs 1

• 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

Page 5: MRC curs 1

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.

Page 6: MRC curs 1

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

Page 7: MRC curs 1

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 reţele wireless de senzori (WSN) şi în general pentru

reţele între dispozitive embedded cu energie limitată. Se bazează pe platform OMNeT++

şi poate fi folosit de cercetători şi dezvoltatori în vederea testării algoritmilor şi/sau

protocoalelor folosind modele realiste.Este dezvoltat de către NICTA (National ICT

Australia) din 2006, devenind un proiect open source in 2007 sub licenţa APL (Academic

Public License). Crearea acestui simulator a plecat de la necesitatea validării unor

protocoale dezvoltate aici,soluţiile existente neridicându-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 reţelelor de senzori şi

partea de transmisie;

• suportă mobilitatea nodurilor;

• stări cu consum diferit de putere;

• adaptare şi extindere uşoara

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

Page 8: MRC curs 1

• 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 omnetpp-

4.2b1 trebuie sa aveti directoare numite doc, images, include, msys, etc., si fisiere numite

mingwenv.cmd, configure, Makefile, si altele.

Configurarea OMNeT++

Page 9: MRC curs 1

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.

Page 10: MRC curs 1

Cele mai multe elemente de interfata din Eclipse pot fi mutate si pozitionate liber, asa ca va

puteti construi propriul workbench potrivit nevoilor dumneavoastra.

Page 11: MRC curs 1

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.

Page 12: MRC curs 1

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 checkbox-

ul de Support C++ care va dezactiva toate caracteristicile C++ legate de proiect.

Page 13: MRC curs 1

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

Page 14: MRC curs 1

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.

Page 15: MRC curs 1

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 non-

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

Page 16: MRC curs 1

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.

Page 17: MRC curs 1

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.

Page 18: MRC curs 1

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

Page 19: MRC curs 1

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.

Page 20: MRC curs 1

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.

Page 21: MRC curs 1

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

Page 22: MRC curs 1

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++

Page 23: MRC curs 1

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.

Page 24: MRC curs 1

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

Page 25: MRC curs 1

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

Page 26: MRC curs 1

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-masurari-

replicare.

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.

Page 27: MRC curs 1

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.

Page 28: MRC curs 1

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.

Page 29: MRC curs 1

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.

Page 30: MRC curs 1

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.