Toto je vyrovnávacia pamäť Google pre http://wiki.cnl.tuke.sk/QoSProjekt/IpfixAnalyzerAnalyzaNavrh. Je to snímka stránky, ako sa zobrazila dňa 10. mar. 2009 20:43:59 GMT. Aktuálna stránka sa odvtedy mohla zmeniť. Viac informácií

Len textová verzia
 
IpfixAnalyzerAnalyzaNavrh < QoSProjekt < TWiki
r17 - 16 Mar 2008 - 00:53:34 - MarianKeltikaYou are here: TWiki >  QoSProjekt Web  >  IpfixAnalyzator > IpfixAnalyzerAnalyzaNavrh

Analýza súčasného stavu

tato stranka ma nasledujuce nedostatky:

  • chyba diakritika
  • chybaju cisla a nazvy obrazkov a referencie na obrazky v texte
  • na niektorych miestach je vyjadrovanie mierne zovialne. vsetko je sice po technickej stranke zrozumitelne, ale miestami to posobi dojmom pracovnej verzie dokumentacie. predpokladam, ze tieto texty budu neskor pouzite aj v bakalarskej praci, a tam sa to uz nehodi.
  • treba si dat pozor na preklepy a chybajuce ciarky, v bakalarke to bude posobit rusivo
  • pozor na slovo 'uzivatel' - spravny tvar je 'pouzivatel'

po letmom pohlade na dalsie stranky konstatujem, ze nie len tato stranka ma spomenute nedostatky :)

Nastrojov na analyzu dat (nielen IPFIX) je v dnesnej dobe mnoho. Dokonca aj pre rozne implementacie protokolu ipfix existuje niekolko analyzerov ktory vsak narozdiel od tohto boli vyvijany v behovom prostredi java. Konecnym dosledkom tohom moze byt aj spomalenie procesu analyzy vplyvom virtualizacie behoveho prostredia. V dnesnej dobe sa to pri mensich projektoch da zanedbat z dosledku dostatocnej hardverovej vykonnosti, ale v komplexnych projektoch to moze dostatocne ovplyvnit vykonavanie a presnost vypoctov.

Tento projekt sa zameral na nedostatky hore spomenutych problemov a dal si za ulohu navhrnut univerzalny nastroj na spracovanie a prezenciu udajov. Kedze nastroj ma byt univerzalny, dalsim cielom je moznost prisposobit ho roznym podmienkam. To je zarucene modularitou. Ako poslednym nedostatkom ktory si za ulohu berie tento projekt je vylucenie nutnosti virtualneho behoveho prostredia a zarucit rychlost aj pri rozsiahlejsich vypoctoch.

Na realizovanie takejto myslienky boli vybrate nasledujuce technologie:

  • objektovy orientovany navrh - modularita
  • implementacia v c++ - vylucenie virtualneho behoveho prostredia + rychlost
  • ncurses - rychlost uzivatelskeho rozhrania

Povodny navrh (pseudoobjektovy)

Povodny navrh analyzera bol prevazne stukturalne programovany pricom vyuzial iba vyhody oo pristupu (Uzavretost operacii a funkcii). Tento pristup bol sice funkcny, ale poskytoval iba jediny analyzacny proces, ktory dokazal analyzovat data a zobrazovat ich realtimovo. Postupnym nabalovanim systemu v case implementacie doslo ku situacii kedy sa sturkturalny pristup prestal vyhovovat.

dfd.png

Zobrazovacia cast systemu je postavena na kniznici ncurses, ktora rozsiruje moznosti konzolovych aplikacii smerom k interaktivite. Uz povodny navrh predpokladal vyuzitie vlakien pre interaktivne ovladanie aplikacie. Implementacne to nakoniec bolo riesene dvoma paralelnymi vlaknami, pricom jedno vlakno nazyvane tiez manazerske malo na starosti sledovanie udalosti klavesoveho vstupu. Druhe vlakno alebo tiez zobrazovacie sa staralo o vykreslovanie v urcitych casovych intervaloch. Tento pristup bol nakoniec brani v uvahu pri prerabani navrhu na objektovy model. Dalsou crtou ktoru mal povodny strukturalny navrh a bola zaradena aj do objektoveho modelu je rozdelenie systemu na tri samostatne procesy. Proces rodica ktory na seba prebera ulohu riadenia potomkov , pricom jeden potomok sluzi na zobrazovanie a druhy analyzu dat. V objektovom modely sa uloha rodica presunula do hlavnej treidy a obsluhy jednotlivych potomkov na seba prebrali triedy CCui a CIpfix. Datove toky medzi procesmi boli reprezentovane prenosom struktury (sablony) ktora davala datovy zaklad pre vykreslovanie hodnot. Prenos iba jednej struktury sa neskor ukazal, ako nepriatelny lebo pri pridavani novych modulov sa dana stuktura skomplikovala az natolko ze bolo treba riesit iny pristup. OOP pristup nakoniec pomohol plne izolovat sablonu od zavislosti na moduloch.

OOP navrh

Pohlad na cely system
mainview.png

Pohlad na UI subsystem
ui_nadhlad.png

Pohlad na IPC subsystem
nadhlad_ipc.png

Pohlad na INPUT subsystem
nadhlad_input.png

Na obrazku je novy objektovy navrh systemu. System je tvoreny triedamy, ktore sa daju zaclenit do troch skupin. Skupina CUI (console user interface) ma nastarosti prezenciu analyzy nad ipfix protokolom. Skupina IPFIX ktora analyzuje protokol ipfix a skupina na medziprocesnu komunikaciu IPC (inter proces comunication).

CAnalyzer
canalyzer.png

Hlavna trieda spravujuca chod vsetkych casti ipfix analyzera. Jej ulohou je rozdelenie vykonavania programu do samostatnych procesov, ktore si sleduje a nasledne aj riadi. Po korektonom skonceni vykonavania vytvorenych procesov sa tato trieda postara o uvolneni prostriedkov ktore si rezervovala.

UI (User Interface)

Pri navrhu sa pocitalo s rosirenim uzivatelskeho rozhrania v buducnosti aj na graficke uzivatelske rohranie (GUI). Z toho dovodu je rohranim (interface) diktovane riadenie uzivatelskeho rozhrania z pohladu triedy CAnalyzer.

IUi
iui.png

Interface (abstraktna trieda), ktore je abstrakciou funkcnosti uzivatelskej interakcie s programom.

CUI (Console user interface)

CUI podsystem ako uz bolo sponemute ma nastarosti prezentovanie analyzovanych dat. Momentalne navrh pocita len s konzolovym uzivatelskym rozhranim. Vyhody tohto rozhrania vyplivaju z vyhod konzolovych aplikacii. Rychlost ktora sa dosahuje pri pouzity konzolovej aplikacie je neporovnatelna s rychlostou grafickej aplikacie. Priamim dosledkom toho je aj nizsie vytazenie sieti pri prenose takychto informacii.

CCui
ccui.png

Tato trieda je konzolovou implementaciou uivatelskeho rozhrania. Trieda zohrava ulohu manazera ncurses okien, pricom okna ktore su pod jej spravou bezia nezavisle na sebe a su touto triedou len sychronizovane. V povodnom navrhu sa v tejto casti systemu vytvorili dva posixove vlakna pricom jedno bolo vlakno ktore sa staralo o interakciu uzivatela sa programom a jedno sluzilo na vykreslovanie okien. To ze vykreslovanie bolo umiestnene do jeneho vlakna a samotne ncurses okna mali moznost variabilnej obnovovacej frekvencie sposobovalo nutnost zaokruhlovania co sa ukazalo v niektorych pripadoch za nepriatelne. Pri objektovom navrhu sa takyto pristup vylucil a pocitalo sa s moznostou behu kazdeho okna , presnejsie funkcie ktora sa stara o vykreslovanie obsahu okna v samostatnom vlakne. V konecnom dosledku to umoznuje neviazane obnovovacie frekvencie okien. Na takyto navrh uz klasicke systemove funkcie pre vytvorenie posixoveho vlakna nestacili, preto bola navrhnuta trieda (CThread), ktora moze obalit inu triedu moznostou spustenia clenskej funkcie v posixovom vlakne. CThread bola zaradena do jadra koli viditelnosti pre kazdy subsystem.

CNcursesWin?
cncurseswin.png

Kniznica ncurses umoznuje vytvarat takzvane WINDOWS co je zakladna struktura s ktorou pracuje a ktora reprezentuje samostatne vykreslovanu cast obrazovky. Obalenim tejto stuktury o potrebne metody a atributy vznikla trieda CNcursesWin?. Tato trieda je vseobecnejsim predpisom, ktory je sice pouzitelny, ale vyznam ziskava az pri generalizacii na specifickejsie okno. Pri generalizacii sa k tejto triede pridava aj datova zlozka ktora je zobrazovacou funkciou prezentovana pouzivatelovi. Koli behu tejto triedy (aj jej potomkov) v samostatnych vlaknach, je nutne dedenie aj od treidy CThread. Moduly z ktorych je subsystem vystavany su prave potomkami tejto triedy.

CMultiPasik? informacie
Objektovym obalenim zdrojoveho kodu aplikacie "Pasik" vznikol komplexny modul vhodny pre zobrazovanie viacerych hodnot v roznych skupinach. Zaujimavym spojenim sa dosiahlo obrovske vyuzitie pri zobrazovani analyzovanych dat. Za zmienku stoji aj to ze pri migracii kodu, ktory bol strukturalny cisty C-eckovsky na kod ktory je prevazne objektovy (C++) bolo nutne pozmenit iba nazvy niektorych premennych, bez nejakeho velkeho zasahu do povodnej verzie. smile.jpg

CKeyboard (keyboarder)
Tato trieda vznikla pri implementacii ako nutnost spravovat vstup z klavesnice. Bez pouzitia tejto triedy v cui systeme je mozne spacovat klavesovy vstup iba v jednom okne. Kedze sa jedna o paralelny beh okien spolu s klavesnicou, vytvorilo sa v sprave triedy CCui nove vlakno ktore v ktorom objekt triedy CKeyboard spravuje vstup z klavesnice. Okno ktore sa zavazuje zakazdym spracovat dany znak, hned potom co sa objavi v cui sa musi najpr volanim metody CCui zaregistrovat pre keyboardera. CCui pri poziadavke na registraciu kavesoveho eventu prida "ziadatela" do svojho zasobnika. Keyboarder si uchovava strukturu o registrovanych znakoch pricom pri odchyteni klavesoveho vstupu vola klavesove prerusenie ziadatelskeho okna.

CRefresh (refresher)
CRefresh je trieda ktora spravuje systemove vlakno starajuce sa o vykreslovanie okien. Zdovodu nestability cui systemu pri volani kniznicnej funkcie pre vykreslenie okna vo viacerych vlaknach naraz, bolo nutne eliminovat tuto situaciu. Instancia triedy CRefresher je pod spravou cui pricom ona samotna spravuje poziadavky od okien na prekreslenie. Poziadavky su spracovavane sekvencne pricom je vyuzita fronta poziadaviek. Refresher pracuje s danou frekvenciou. Tato frekvenicia je volitelna, by default je nastavena na frekvenciu obnovovania 25Hz. Takyto postup ma za nasledok spracovanie stale len jednej poziadavky v dostatocnej interakcii.

CIpfix

Jeden z objektov riadeny analyzerom je aj objekt, ktory zbiera informacie a analyzuje ich.

CIpfix
Je implementaciou manazera objektov, ktore maju nastarosti ziskavanie informacii. V tejto problematike su to informacie ziskavane z protokal IPFIX.

CIpcManager?
Je nastroj na riadenie a pracu s ipc objektami.
toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
pngpng classDiagram.png manage 42.5 K 18 Oct 2007 - 22:21 MarianKeltika  
jpgjpg smile.jpg manage 28.7 K 30 Oct 2007 - 22:04 MarianKeltika  
pngpng main_view.png manage 71.2 K 24 Nov 2007 - 22:48 MarianKeltika subsystem cui
pngpng dfd.png manage 18.3 K 30 Dec 2007 - 23:58 MarianKeltika  
pngpng iui.png manage 3.7 K 17 Jan 2008 - 23:09 MarianKeltika  
pngpng ccui.png manage 10.2 K 17 Jan 2008 - 23:09 MarianKeltika  
pngpng cncurseswin.png manage 11.3 K 17 Jan 2008 - 23:09 MarianKeltika  
pngpng canalyzer.png manage 2.3 K 17 Jan 2008 - 23:17 MarianKeltika  
pngpng mainview.png manage 15.7 K 16 Mar 2008 - 00:48 MarianKeltika  
pngpng ui_nadhlad.png manage 27.5 K 16 Mar 2008 - 00:49 MarianKeltika  
pngpng nadhlad_ipc.png manage 32.6 K 16 Mar 2008 - 00:49 MarianKeltika  
pngpng nadhlad_input.png manage 23.9 K 16 Mar 2008 - 00:49 MarianKeltika  
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r17 < r16 < r15 < r14 < r13 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback