• Rezultati Niso Bili Najdeni

Krmilnik sistema za nadzor eksperimentov

4.3 Sistem za spremljanje in nadzor eksperimentov

4.3.3 Krmilnik sistema za nadzor eksperimentov

Entiteta krmilnikdeluje kot posrednik sporoˇcil med uporabnikom in napravami v testnem omreˇzju, hkrati pa kot baza podatkov, kjer so shranjena realno ˇcasovna stanja vseh vozliˇsˇc, ki sodelujejo v eksperimentu.

4.3.3.1 Izmenjevanje sporoˇcil s pomoˇcjo knjiˇznice ZeroMQ

Za vzpostavitev komunikacijskih kanalov med napravami smo uporabili pred-pripravljene ZeroMQ vtiˇcnike, ki omogoˇcajo razliˇcne strategije izmenjevanja sporoˇcil. S kombinacijo vtiˇcnikov request - response (slo. zahteva - odziv), si lahko napravi izmenjujeta sporoˇcila sinhrono, z vtiˇcniki router - dealer (slo.

usmerjevalnik - delitelj) pa povsem asinhrono. Vtiˇcnik publish (slo. objavi) po-nuja moˇznost poˇsiljanja enega sporoˇcila veˇc napravam hkrati, ki so prijavljene na objavo preko vtiˇcnikasubscribe (slo. prijavi). Podobno funkcionalnost ponuja tudi par vtiˇcnikov push - pull (slo. porini - povleci). Orodje ZeroMQ lahko ko-munikacijske kanale vzpostavi preko razliˇcnih transportnih protokolov (TCP ali UDP, IPC ali INPROC, PGM ali EPGM [38]). Vse operacije za poˇsiljanje in prejemanje sporoˇcil izvaja v ozadju delovanja programa s pomoˇcjo nitenja, zato ne prihaja do zastojev, zaklepov ali mrtvih objemov [38].

Slika 4.10: Naˇcin izmenjevanja sporoˇcil s knjiˇznico ZeroMQ v sistemu za spre-mljanje in nadzor eksperimentov.

Izmenjevanje sporoˇcil v sistemu za spremljanje in nadzor prikazuje slike 4.10.

Entitetistreˇzniˇska aplikacijainkrmilnikza izmenjevanje sporoˇcil uporabljata kombinacijo vtiˇcnikovrouter - dealer. Krmilnikbo za posredovanje istega ukaza veˇc napravam hkrati (ang. multicast) uporabil vtiˇcnik publish. Tako bodo vo-zliˇsˇca v eksperimentu, ki so preko vtiˇcnika subscribe prijavljena na prejemanje objav, prejela ukaz. Ta scenarij omogoˇca soˇcasno poˇsiljanje istega ukaza veˇc na-pravam hkrati, vendar deluje samo v eno smer. Vozliˇsˇca morajo za odgovor na ukaz uporabiti vtiˇcnikdealer, ki je preko vtiˇcnika router povezan skrmilnikom.

Isti komunikacijski kanal se uporablja tudi v primeru, ko je ukaz od uporabnika namenjen samo eni izmed naprav v eksperimentu.

4.3.3.2 Veˇc delna sporoˇcila z ZeroMQ

Knjiˇznica ZeroMQ veˇcdelna sporoˇcila strukturira s pomoˇcjo ovojnice (ang. enve-lope) [38]. Privzeto se uporablja za shranjevanje identitete naprave, ki je sporoˇcilo poslala, dodatno pa smo jo nadgradili za uporabo v sistemu za nadzor eksperi-mentov. Ovojnica paketov v sistemu je tako sestavljena iz 3 delov, kot prikazuje slika 4.11.

Slika 4.11: Sestava veˇcdelnega sporoˇcila v sistemu za nadzor eksperimentov.

Tip sporoˇcila napravam v sistemu za nadzor eksperimentov nakazuje vrsto sporoˇcila in kaj morajo z njim narediti. Naslov naprave pove, od kod sporoˇcilo prihaja oz. komu je namenjeno, medtem ko se v delupodatkinahajajo dejanski podatki (na primer ukazi, odgovori, opravljene meritve itd). Tipe sporoˇcil in njihov opis prikazuje tabela 4.3.

Kot primer: krmilnik iz streˇzniˇske aplikacije dobi sporoˇcilo command = ["15", "LGTC51", "START"], kar mu pove, da je prejel ukaz s sekvenˇcno ˇstevilko 15 namenjeno vozliˇsˇcu LGTC51. Skripta krmilnika nato iz sporoˇcila izvzame naslov in ga posreduje ciljnemu vozliˇsˇcu, kjer ima sporoˇcilo obliko: command = ["15", "START"]. Iz strani vozliˇsˇcnih naprav lahko

krmil-4.3 Sistem za spremljanje in nadzor eksperimentov 49

Tip Opis Moˇzni podatki

STATE Sporoˇcila za prenos stanja vozliˇsˇca.

ONLINE, RUNNING, STOPPED,...

SQN

Sporoˇcila za prenos ukazov in START, odgovorov, kjer SQN predstavlja STOP,

sekvenˇcno ˇstevilko ukaza. RESET, ...

INFO

Sporoˇcila za prenos dodatnih

Opravljena meritev.

informacij - odgovor brez sekvenˇcne ˇstevilke.

ACK Uporablja se za Sekvenˇcna ˇstevilka potrditev prejetih sporoˇcil. sporoˇcila.

SYSTEM Sporoˇcilo namenjeno komunikaciji EXIT,

med krmilnikom in streˇznikom. TestbedUpdate, ...

Tabela 4.3: Primeri podprtih tipov sporoˇcil v nadzornem sistemu.

nik dobi sporoˇcilo response = ["STATE", "RUNNING"]. Tip sporoˇcila oznaˇcuje posodobitev stanja vozliˇsˇca, kar si krmilnik shrani v podatkovno bazo in o tem nato obvesti uporabnika. Pred posredovanjem sporoˇcila vanj vstavi naslov naprave, ki mu je sporoˇcilo poslala, tako da streˇzniˇska aplikacija ve izvor novega stanja in ima obliko: response = ["STATE", "LGTC51", "RUNNING"].

4.3.3.3 Delovanje krmilnika

Ob priˇcetku delovanjakrmilniknajprej sporoˇcistreˇzniˇski aplikaciji, da je zaˇcel z delovanjem, kar uporabniku sporoˇca priˇcetek novega eksperimenta v testnem omreˇzju. Nato v neskonˇcni cikliˇcni zanki preverja vse tri vtiˇcnike, ki jih prika-zuje slika 4.12. ˇCe je sporoˇcilo priˇslo iz strani streˇzniˇske aplikacije, program iz ovojnice paketa ugotovi, komu je ukaz namenjen. ˇCe se v predalˇcku naslova naprave nahaja nizALL, bokrmilnikuporabil vtiˇcnikpublish in ukaz posredoval vsem napravam hkrati. ˇCe je v tem predalˇcku dejanski naslov naprave, krmil-nik najprej preveri, ali je naprava v podatkovni bazi. V slednjem primeru ji ukaz posreduje preko vtiˇcnikarouter, drugaˇce sporoˇcilo zavrˇze. Na vsako prejeto sporoˇcilo s strani vozliˇsˇca bo krmilnik najprej pritrdil s tipom sporoˇcila ACK,

odgovore na poslane ukaze pa posredoval streˇzniˇski aplikaciji.

Slika 4.12: Komunikacija med krmilnikom in streˇzniˇsko aplikacijo.

4.3.3.4 Podatkovna baza

Bazo podatkov bi lahko realizirali s pogosto uporabljenimi orodji npr. Postgre-SQL14, MongoDB15, Redis16, in podobnimi. Zaradi preprostosti shranjenih po-datkov smo se odloˇcili narediti lastno verzijo podatkovne baze, ki je preprostejˇsa za uporabo in porabi manj pomnilniˇskega prostora. Sestavljena je kot slovar (ang. dictionary) v obliki objektnega JavaScript zapisa (ang. JavaScript object notation, JSON17). Baza vsebuje zbirko parov kljuˇcev s pripadajoˇcimi vrednostmi (ang. key-value pairs). Kot kaˇze slika 4.13 ima vsak element dva para kljuˇcev, s katerima shranjujemo trenutno stanje vozliˇsˇca, in sicer: kljuˇc naslov in kljuˇc stanje.

14https://www.postgresql.org/

15https://www.mongodb.com/

16https://redis.io/

17https://www.json.org

4.3 Sistem za spremljanje in nadzor eksperimentov 51

Slika 4.13: Primer baze podatkov s stanji vozliˇsˇc.

Bazo podatkov smo zapakirali v knjiˇznico, ki jo uporabnik vkljuˇci v program.

Za dostop do podatkov smo izpostavili metode za odstranjevanje in dodajanje naprav v bazo, metodo za preverjanje in posodabljanje stanja iskane naprave in metode za vrnitev stanja vseh vozliˇsˇc v testnem omreˇzju v razliˇcnih oblikah (znakovni niz podatkov ali struktura JSON).