Mérési útmutató a Mobil infokommunikáció laboratórium 1. (VIHIA319) méréseihez. Szenzorhálózati szimuláció OMNeT++ környezetben



Hasonló dokumentumok
Kommunikációs rendszerek teljesítőképesség-vizsgálata

Occam 1. Készítette: Szabó Éva

Hálózati réteg. WSN topológia. Útvonalválasztás.

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Tudnivalók az NYMESEK vezeték nélküli hálózatáról. Beállítási útmutató WIFI felhasználóink számára

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Mérési útmutató a Mobil infokommunikáció laboratórium 1. méréseihez

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Autóipari beágyazott rendszerek. Local Interconnection Network

Hálózati ismeretek. Az együttműködés szükségessége:

Számítógépes Hálózatok GY 7.hét

Számítógépes Hálózatok GY 6.hét

III. Felzárkóztató mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Modell alapú tesztelés mobil környezetben

Számítógépes Hálózatok. 5. gyakorlat

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

TERC V.I.P. hardverkulcs regisztráció

A virtuális környezetet menedzselő program. Első lépésként egy új virtuális gépet hozzunk létre a Create a New Virtual Machine menüponttal.

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

AWK programozás, minták, vezérlési szerkezetek

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

HASZNÁLATI ÚTMUTATÓ DOLGOZÓK IMPORTÁLÁSA KULCS BÉR PROGRAMBA AZ ONLINE MUNKAIDŐ NYILVÁNTARTÓ RENDSZERBŐL. Budapest, november 08.

Viczián István IP Systems JUM XIX szeptember 18.

A Fóti Élhető Jövő Park kisfeszültségű hálózati szimulátora. MEE Vándorgyűlés Kertész Dávid ELMŰ Nyrt. Sasvári Gergely ELMŰ Nyrt.

Operációs rendszerek. Az X Window rendszer

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Java programozási nyelv 6. rész Java a gyakorlatban

Tájékoztató. Használható segédeszköz: -

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ


Iman 3.0 szoftverdokumentáció

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

KIRA. KIRA rendszer. Telepítési útmutató v1

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

A DNS64 és NAT64 IPv6 áttérési technikák egyes implementációinak teljesítőképesség- és stabilitás-vizsgálata. Répás Sándor

A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan

III. Alapfogalmak és tervezési módszertan SystemC-ben

Számítógépes munkakörnyezet II. Szoftver

Az ErdaGIS térinformatikai keretrendszer

Számítógépes Hálózatok. 4. gyakorlat


API tervezése mobil környezetbe. gyakorlat

Beágyazott információs rendszerek 4. házi feladat

MARCONI (Ericsson) SDH felügyeleti rendszerének mérése

Programozó- készülék Kezelőkozol RT óra (pl. PC) Digitális bemenetek ROM memória Digitális kimenetek RAM memória Analóg bemenet Analóg kimenet

1. Alapok. #!/bin/bash

PKN CONTROLS. AMPControl Software. Használati utasítás

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

AWK programozás, minták, vezérlési szerkezetek

Mérési jegyzőkönyv. az ötödik méréshez

Hálózati architektúrák és Protokollok PTI 6. Kocsis Gergely

Operációs rendszerek gyak.

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Alacsony fogyasztású IoT rádiós technológiák

Két típusú összeköttetés PVC Permanent Virtual Circuits Szolgáltató hozza létre Operátor manuálisan hozza létre a végpontok között (PVI,PCI)

Multiprotocol encapsulation (RFC1483) - IETF Classical IP over ATM (RFC1577) - IETF LAN Emulation (LANE) - ATM Forum Multiprotocol over ATM (MPOA) -

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

A szerzõrõl... xi Bevezetés... xiii

Autóipari beágyazott rendszerek. A kommunikáció alapjai

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

IoT alapú mezőgazdasági adatgyűjtő prototípus fejlesztési tapasztalatok

Operációs rendszerek gyak.

Irányítástechnikai alapok. Zalotay Péter főiskolai docens KKMF

Soros felépítésű folytonos PID szabályozó

Operációs rendszerek. Az NT folyamatok kezelése

Teljesítményprognosztizáló program FELHASZNÁLÓI KÉZIKÖNYV

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Neurális hálózatok bemutató

Grafikus folyamatmonitorizálás

Hálózati architektúrák és Protokollok GI 7. Kocsis Gergely

SzIP kompatibilis sávszélesség mérések

Konkurens TCP Szerver

TestLine - GINOP teszt Minta feladatsor

Hálózati architektúrák laborgyakorlat

Java Programozás 11. Ea: MVC modell

Programozási nyelvek Java

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Java programozási nyelv

Mobil Peer-to-peer rendszerek

Java-s Nyomtatványkitöltő Program Súgó

BASH script programozás II. Vezérlési szerkezetek

Bevezetés a párhuzamos programozási koncepciókba

Mesh generálás. IványiPéter

Mérési útmutató a Mobil kommunikációs laboratórium méréseihez. IV.sz.mérés. Ad Hoc OMNeT++ szimulációs mérés

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Tartalom jegyzék 1 BEVEZETŐ SZOFTVER ÉS HARDVER KÖVETELMÉNYEK 2 2 TELEPÍTÉS 2 3 KEZELÉS 5

Átírás:

Mérési útmutató a Mobil infokommunikáció laboratórium 1. (VIHIA319) méréseihez Szenzorhálózati szimuláció OMNeT++ környezetben Mérés helye: Hálózati Rendszerek és Szolgáltatások Tanszék Mobil Távközlési és Informatikai Laboratórium (MCL) I.B.113. Összeállította: Milánkovich Ákos, PhD hallgató Ill Gergely, PhD hallgató Utolsó módosítás: 2013. október 21.

Bevezetés Jelen mérés célja, hogy egy egyszerű példaprogram segítségével megismerkedjünk az OMNeT++ szimulációs környezetel és annak programozásával, valamint a vezetéknélküli szenzorhálózatok egy implementációjával. Távközlési és számítógép hálózatok vizsgálatát sok esetben költséghatékony módon vizsgálhatjuk számítógépre megírt szimulációk segítségével. Ekkor a költséges fizikai megvalósítás helyett, egy számítógépes program segítségével vizsgáljuk az adott hálózat működését és teljesítőképességét. Számos szimulációs környezet áll rendelkezésre, mint pl.: NS (Network Simulator), OPNET, OMNeT++. Az OMNeT++ rendszert egyetemünkön fejlesztették ki, nyílt forráskódú és szabadon felhasználható (http://www.omnetpp.org/). Szenzorhálózatok Már napjainkban sem ritkák a több száz, a jövőben pedig tipikusak lesznek a több ezer olcsó, intelligens (limitált számítási kapacitással és szerény kommunikációs képességgel rendelkező) érzékelőből álló, egy közös cél érdekében összehangolt működést (érzékelést, számítást, beavatkozást) végző szenzorhálózatok, amelyek az egészségügy, a gyártás-monitorozás, a környezetvédelem, a honvédelem és a mindennapi élet számos területén helyet követelnek maguknak. A szenzorhálózatokban használt csomópontok általában négy részből épülnek fel: feldolgozó és tároló modul (mikrokontroller), rádiós modul, szenzor és beavatkozó modul, energia modul. A csomópontok számítási kapacitása alacsony, energiaforrásuk is korlátos (általában akkumulátorról üzemelnek, használhatnak megújuló energiaforrásokat). A csomópontok az energiahatékony működés érdekében az idő nagy részében alvó állapotban vannak, csak akkor ébrednek fel, ha csomagok kell fogadniuk vagy küldeniük. A vezetéknélküli szenzorhálózatok általában alacsony bitsebességen továbbítják az általuk mért adatokat. A szenzorhálózatokban felmerülő problémák, amelyekre megoldást kell adni, a következők: - energiahatékonyság: az eszközök fogyasztása és a kommunikációs protokollból származó overhead minimalizálása - megbízható adatátvitel: ha a csomagok átvitele nem sikeres, nő a késleltetés és a csomagok átküldésére fordított energia is, ha meg kell a csomagkoat ismételni - vezetéknélküli kommunikációból fakadó problémák: interferencia, rejtett terminál, routing, Az OMNeT++-ről általánosan

Az OMNeT++ egy objektum orientált, moduláris, diszkrét szimulációs környezet. Egy OMNeT++ hálózat hierarchikus modulokból épül fel. A modell mélysége nincs meghatározva. A modulok üzenetek segítségével kommunikálnak egymással, mely üzenetek komplex adatstruktúrákat is tartalmazhatnak. Az üzeneteket a modulok között előre definiált kapukon és csatornákon keresztül, vagy akár közvetlenül is el lehet küldeni. A fejlesztőnek a hierarchia legalsó szintjén található modul viselkedését kell megírni C++ nyelven. A szimuláció futtatása során ezen modulok párhuzamosan (korutinként) futnak. A környezet különböző felhasználói felületeket (hibakeresés, bemutató, batch futtatás) biztosít, mely nagyban elősegíti a fejlesztést. A modulok összeköttetését, szerkezetét egy speciális leírónyelven, a NED (NEtwork Description) nyelven kell megírni, melyet a környezet szintén C++ nyelvre fordít le. Így a teljes szimuláció C++ nyelven áll rendelkezésre, mely jó hordozhatóságot biztosít, így a szimuláció Windows, Mac, Linux operációs rendszeren is módosítások nélkül fut. A környezet a grafikus megjelenítéshez a Tcl/Tk könyvtárakat használja, mely szintén segíti a hordozhatóságot. Egy OMNeT++ szimulátor megvalósítása Első lépésként a hálózatot kell megtervezni. A megtervezett hálózatot NED nyelvre kell átírnunk. A részegységeket moduloknak feleltetjük meg, melyből két féle van. Az egyszerű (simple), mely tovább nem bontható, azaz atomi és az összetett (module), mely egyszerű modulokból épül fel. A hálózat (network) pedig ezen modulok összességét jelenti (Ábra 1.). A NED file elkészítése során az egyszerű modulok megadása után következnek az összetett modulok, majd a végén megadjuk a hálózatot is. A modulokat kapuk segítségével kötjük össze (Ábra 2.). Ábra 1.: Modell struktúra

Az egyszerű modul felépítése: simple Típusnév { } parameters : //paraméterek megadása paraméter_név : paraméter_típus; //típus lehet numeric, input, boolean, gates : // a modul be- és kimeneti kapujai out : ki_kapu neve[]; //kimeneti kapu, [] esetén egynél több kimeneti kapu van in : be_kapu neve[]; //bemeneti kapu, [] esetén egynél több bemeneti kapu van Ábra 2.: Kapuk összekötése Az összetett modul felépítése: module Név // modul neve { gates : // a modul kapui in : be_kapu neve[]; out : ki_kapu neve[]; submodules : // almodulok megadása almodul_neve : almodul_típusa; // az előbb definiált egyszerű modulra hivatkozhatunk parameters : // az egyszerű modul paramétereinek itt lehet értéket adni

} paraméter_név = paraméter_érték; gatesizes : // vektoros kapuk esetén itt kell megadni a vektor méretét out[5]; display : "p=130,259;b=40,24"; // modul helye a képernyőn connections : // kapuk összeköttetései egyszerű_modul_ki_kapu --> összetett_modul_ki_kapu; egyszerű_modul_be_kapu <-- összetett_modul_be_kapu; A hálózat felépítése: network hálózat_neve : összetett_modul endnetwork A paramétereknek a hierarchia tetszőleges szintjén adhatunk értéket. Ha a paraméterek az egyszerű modulban nem kapnak értéket, akkor az összetett modulban, vagy a hálózatban kell megadnunk az értékeket. Lehetőségünk van még paraméterek megadásásra az omnetpp.ini állományban is. Második lépésként megírjuk az egyszerű modulok viselkedését: class egyszerű_modul_típusa : public csimplemodule { virtual void initialize(); // a viselkedést leíró függvény virtual void handlemessage(cmessage* m); // a viselkedést leíró függvény virtual void processselfmessage(cmessage* m); // a viselkedést leíró függvény }; Define_Module (egyszerű_modul_típusa); //a NED-ben lévő típus megfeleltetése a C++ kódban megírt osztálynak Activity() függvény: Korutinokként futnak, vagyis ezek párhuzamosan futó szálak, így lehetővé válik a multitasking feldolgozás. Állandóan futnak, ezért van bennük egy végtelen ciklus. Ha egy esemény érkezett, akkor a főprogram futása felfüggesztődik, és annak a modulnak az activity() vagy handlemessage() függvényére adódik a vezérlés, amelyik az üzenetet kapta. Ha lekezelte, visszatér a főprogramba.

Az handlemessage()-ben alkalmazott fontosabb függvények: send (üzenet küldése) ScheduleAt (esemény ütemezése) cancelevent (ütemezett esemény törlése) Egy példa activity() függvény: void Source::activity() { char mit[30]; int gs= par("gs"); //a NED fájlban megadott paraméter beolvasása cmessage *smsg = new cmessage; // új üzenet konstruálása scheduleat(simtime()+exponential(5),smsg); // ütemezés, timer megvalósítása önüzenettel 5 másodperces várhatóértékű exponenciális eloszlás szerint do { cmessage *msgin = receive(); // üzenet fogadása if (msgin->isscheduled()) delete cancelevent(smsg); // önüzenet törlése int out = intrand(gs); //véletlenszám generálás if (out%2) strcpy(mit,"message (to HOLE)"); else strcpy(mit,"message"); cmessage *msg = new cmessage(mit); if (out%2) msg->setkind(7); else msg->setkind(2); ev.printf("[source]: Sending message on gate %d\n",out); send(msg,"out",out); //üzenet elküldése az out vektorkapu out sorszámú kimenetén cmessage *smsg = new cmessage; scheduleat(simtime()+exponential(5),s msg); } while (1); }

A szimulációk többségében érdemesebb a handlemessage() függvényt alkalmazni az activity() helyett, mert kevesebb memóriát fogyaszt és nem korutinként fut, így nincs a korutinok közötti váltásnak overheadje, hanem csak függvényhívások fordulnak elő, ami gyorsabb végrehajtást tesz lehetővé. A szimulációs környezet használatáról A szenzorhálózat szimulációja az omnetsim.exe fájl futtatásával inditható el. Két ablak jelenik meg (Ábra 3.), egyiken a hálózat felépítése, a másikon a szimuláció futása alatt fellépő események láthatók. A grafikus ablakon látszanak az üzenetek, valamint a kívánt modulra kattintva nézhetjük meg annak belső felépítését. A szöveges ablakon találjuk a főbb vezérlő gombokat, melyek a következők: Step: Egy lépést hajt végre, az esemény bekövetkezése után megállítja a szimulátor futását. Run: Ezzel a gombbal indíthatjuk el a szimulátort. Stop: Ezzel a gombbal állíthatjuk le a szimulátort. A szimuláció egyéb esetben akkor áll le, ha vagy elfogynak az események, vagy lejár a szimuláció előre megadott futási ideje. Az események értelmezése a következő: Ábra 3.: Szimulációs futtatása

Event #37 T=17 Node,id=4 ack esemény azonosítója bekövetkezés ideje modul azonosítója üzenet leíró Szenzorhálózati szimuláció felépítése A feladatok során használt OMNeT++ szimuláció a következő osztályokból épül fel: AckBuffer DiscoverRoutePacket FoundNodesPacket Gateway Log LowerLayerPacket Node Packet PacketType Radio.ned RoutingTable omnetpp.ini omnetsim.exe package.ned A csomópontok minden vett üzenetre nyugtát küldenek, ez az osztály felel ezért a funkcióért Csomagtípus az útvonalkeresés indításához Csomagtípus a megtalált szomszédok jelentésére A hálózati csomópont osztályból származó koordinátor csomópont Logolást menedzselő osztály Hálózati rétegbeli csomagtípus, payloadja a Packet Hálózati csomópont osztálya A csomag alaptípusa, ebből származnak a konkrét csomagtípusok Csomagtípusok menedzselő osztálya Leírja a teszt hálózat elrendezését és a modulok közötti kapcsolatokat, valamint azok paramétereit A csomópont routing tábláját menedzselő osztály Konfugurációs fájl a közös paraméterekre Futtatható szimulátor állomány Deklarálja a projekt csomagnevét, ne módosítsd Mérési feladatok Indítsa el az OMNeT++ futtatási környezetet a C:/omnetpp/omnetpp-4.3.1/mingenv.exe -vel, amjd írja be a megnyílt parancssorba: omnetpp. 1. Szimuláció lefordítása, futtatása. Az ElsoFeladat nevű topológián szimuláció futtatása segítségével állapítsa meg milyen csomagokat küldenek az egyes csomópontok! Írja le az egyes, megfigyelt üzenettípusok forrás és cél csomópontját, valamint a csomag típusát! Ehhez vizsgálja meg a szimuláció futtatása során létrejött logot.

Sorszám Forrás Cél Típus 1. 2. 3. 4. 5. Milyen információkat tartalmaznak az egyes csomagok a hálózat viselkedésére nézve? Mutassa be hogyan működik a megfigyelt protokoll, részletesen kitérve az egyes csomagok sorrendjére, azok protokollban betöltött szerepére és a csomópontok felderítésére! Mutassa be egy példán keresztül hogyan töltődik fel egy csomópont routing táblája! 2. Új topológia létrehozása Hozzon létre egy új hálózati topológiát a Radio.ned állományban! A létrehozandó topológia tartalmazzon legalább 6 darab csomópontot és egy gateway elemet. A hálózat egyes csomópontjai közötti összeköttetéséket úgy állítsa be, hogy a kapott hálózati szerkezet tartalmazzon legalább egy kört és a topológia által kifeszített gráf összefüggő legyen. 3. Csomagvesztés szimulációja A 2. feladatban létrehozott már működő topológián idézzen elő csomagvesztés X=0,2 valószínűséggel. Figyelje meg ebben az esetben a hálózat működését és írja le mi történik! A, Figyelje meg, hogy a második feladatban lévő események számához képest, most hány esemény kell, hogy a felderítési fázis sikeresen lefusson! B, Változtassa meg a csomagok újraküldésének lehetséges számát Y=3-ra és vizsgálja meg ennek hatására milyen változások mennek végbe a hálózaton.

C, Állítsa be, hogy az egyes csomópontok figyeljenek a kapott csomagok CRC-hibájára is! Mintának keresse meg a kódban a csomagvesztés implementációját! 4. Ping üzenetek küldése Implementálja a Ping csomag küldést a gateway-en a discover fázis lezárulása után a 2. feladatban létrehozott topológián! A Ping üzenetet a Gateway-től két hopra lévő egyik node-nak küldje! A Ping csomagok és a rájuk válaszul jövő Pong csomagok kezelésére fel van készítve a szimulátor. A feladat, hogy a megfelelő helyen indítsuk el a folyamatot! Figyelje meg a hálózat viselkedését! 5. Rádiós link kiesésének szimulációja Implementálja egyetlen rádiós link kiesését a 2. feladatban kialakított hálózati topológián! A hibás link legyen a Ping-et küldő csomópontok között között, és csak a discover fázis lejárta után hibásodjon meg! Csomagvesztés és CRC hiba ne legyen! Figyelje meg a hálózat működését és részletesen mutassa be mi történt, kitérve a routing táblák alakulására is! Miben különbözött a 4. feladatban tapasztaltakhoz képest? Ellenőrző kérdések 1. Mit kell implementálnia a fejlesztőnek OMNeT++ környezetben? 2. Hogyan épül fel a modul hierarchia? Hogyan lehet a paramétereknek értéket adni? 3. Soroljon fel három alakalmazási területet a szenzorhálózatokra! 4. Milyen kihívásokra kell megoldást taláni szenzorhálózatok esetén? 5. Milyen részegyságekből épülnek fel a szenzorhálózati csomópontok?

Irodalomjegyzék Mérési útmutató a Mobil Távközlési és Informatikai Laboratórium méréseihez, OMNET++ bevezető mérés, Schulcz Róbert, 2005. TDK dolgozat: Vezetéknélküli smart metering rendszer kidolgozása Milánkovich Ákos, Ill Gergely, Varga Norbert, 2011.