Hálózati statisztikák mérése xDarkstat programrendszerrel


Stefán Péter

tudományos segédmunkatárs

NIIFI

H-1132, Budapest, Victor Hugo 18-22

E-mail: stefan@iif.hu, Telefon: +36 30 3836265



1. Bevezetés


A hálózati adminisztráció egyik meghatározó területe a hálózati statisztika készítése, mely segítségével a hálózati adminisztrátor tájékozódik az általa felügyelt rendszerben zajló folyamatokról. A megfelelõen elkészített statisztikák segítségével válasz kapható például olyan kérdésekre, hogy kik és milyen intenzitással használják a hálózatot, mely hálózati elemek, kapacitásuk hány százalékában terheltek, stb. E statisztikák kiindulópontul szolgálnak a hálózat lehetséges fejlesztéséhez: általában ott érdemes a rendszert bõvíteni, ahol szûk keresztmetszeteket mérünk.

A hálózati statisztikai eszközök tárháza jelentõs: akadnak kényelmesen konfigurálható, jól dokumentált kereskedelmi termékek, de az Interneten is ingyenesen hozzáférhetõ eszközökbõl, némi tájékozódás és script-programozási erõfeszítés után éppoly kielégítõ statisztikai információs rendszert lehet felépíteni, mint a kereskedelmi termékekbõl.

Ebben a cikkben a hálózati statisztikai programok rövid áttekintése után szó lesz egy, az MTA-SZTAKI-ban továbbfejlesztett hálózati alkalmazásból, melynek neve Extended Darkstat, vagy röviden csak xDarkstat. E program elsõsorban nem pontos a pontos accounting célját szolgálja, hanem a hálózati adminisztrátor tájékoztatására a hálózat aktuális igénybevételérõl.



2. Hálózati statisztikai programok áttekintése


A hálózati statisztikai alkalmazások túlnyomó többsége kihasználja a CISCO NetFlow koncepciót. E koncepció rövid lényege az alábbi: a router a csomagokat a forrás illetve a cél IP-címe, portszáma, illetve protokollja alapján logikai csoportokba szervezi; e csoportok a flow-k. Ezután a forgalomirányítás jellegzetes mûveletei (hozzáférési listák vizsgálata, csomagok továbbítása) nem az egyes csomagokra, hanem az egyes flow-kra hajtódnak végre. Ezáltal jelentõs processzoridõ megtakarítás, illetve a forgalomirányító eszközök gazdaságosabb kihasználása érhetõ el. Egy flow-ba tartozó csomagok ún. flow cache-ben tárolódnak, és amennyiben „elavulnak” úgy átmeneti tárolón keresztül (aggregation cache), egy meghatározott host, meghatározott portjára irányíthatók.

E megoldás több szempontból is kedvezõ a statisztikai programok számára: egyrészt mintavételi alapelemek aggregált módon, szabványos interfészen keresztül érhetõk el, másrészt a „kiexportált flow-k”, mint a fogalomirányítás melléktermékei érhetõk el, minimális erõforrás többletet igényelve.

Az 1. ábrán a flow-alapú statisztikai rendszerek elvi felépítése látható. A router dedikált hálózati interfészén keresztül továbbítja az inaktív flow-kat a host megadott portjára, ami azokat fogadja, feldolgozza, és „emberi fogyasztásra alkalmas” formára alakítja (grafikonok, toplisták).



1. ábra: A CISCO NetFlow „export” koncepció. A router exportálja a már inaktívvá vált flow-kat a feldolgozó host adott portja felé.



A flow-kat az adott host, adott portjára „ülõ” folyamat fogadja. Attól függõen, hogy ugyanez a folyamat végzi a statisztika elkészítését, vagy sem, beszélhetünk monolitikus, illetve moduláris rendszerekrõl. A monolitikus rendszerek általában kisebb, egyszerûbb rendszerek, mint például a késõbbiekben bemutatásra kerülõ xDarkstat. Jellemzõjük, hogy a flow-k fogadását, feldolgozását, illetve a statisztika biztosítását egyetlen folyamat végzi. Elõnyük a kis méret, egyszerû használat, illetve az egyszerû konfigurálhatóság. Hátrányuk, hogy kevésbé bõvíthetõk, növelhetõk, kevésbé kényelmesen fejleszthetõk.

A moduláris rendszerek ezzel szemben több folyamatból állnak, melyek valamilyen folyamatok közötti kommunikációs technikával cserélnek információt. Moduláris rendszerek esetén külön folyamat végzi a flow-k fogadását, elõfeldolgozását, a statisztikai formába öntését, illetve megjelenítését. Ilyen rendszerek például a CISCO NetFlow Collector, illetve Analyzer, valamint a CAIDA által fejlesztett eszközök, mint például a Cflowd, illetve a FlowScan. A moduláris eszközök elõnye, hogy fejleszthetõk, könnyen (modulonként) upgrade-elhetõk, hátrányuk a nehézkes beállítás, ami rendszerint több szoftver, gyakran renundáns adatokkal való konfigurálását jelenti.


Tekintsük át az ismertebb hálózati eszközöket!

CISCO Flow Collector: Moduláris eszköz. A Collector modul adat-transzformációt végez, fogadja, feldolgozza a beérkezõ flow-kat, majd a feldolgozott adatokat, aggregált formában belsõ adatbázisba helyezi. Az Analyzer az adatbázisban található adatokat feldolgozza és, egy Java-alapú grafikus eszköz segítségével, megjeleníti. Az eszköz elsõsorban akkor használható hatékonyan, ha tudjuk mit (mely gépek, mely portjait) szeretnénk mérni.

Cflowd: Mindössze adat-transzformációt végez a flow-formátum és egy hatékony, belsõ adatbázis-formátum között. Egyszerû, hatékony eszköz, de konkrét grafikonok, listák kinyeréséhez járulékos scriptekre van szükség.

FlowScan: A Cflowd , vagy a NetFlow Collector által feldolgozott aggregált adatokat helyezi el RRD adatbázisba. Az RRD adatbázis tartalmának megjelenítése további feladat, tehát ez is lényegében transzformációt végzõ eszköz.

MHTG: Az MRTG-hez hasonló e program. Feladata a Cflowd által biztosított adatok feldolgozása és a feldolgozott adatokból grafikonok, toplisták készítése, melyek HTML lapok, és amelyek egy web-szerver segítségével jeleníthetõk meg.

Flow Tools: A Cflowd-hez hasonló funkcióval bíró eszköz, mely azonban nem konkrét transzformációs feladatot végez, hanem inkább egy eszköz-gyûjtemény, mely segítségével saját flow-feldolgozási mechanizmust építhetünk. Grafikonok kinyeréséhez további eszközök szükségesek.



3. Darkstat, xDarkstat


Az elõzõ eszközök segítségével látványos, precíz statisztikák nyerhetõk, de a túlnyomó többségük konfigurálásához a hálózatról való „a priori” ismeretekre van szükség. Ilyen ismeret például, hogy melyik host bonyolítja a legnagyobb forgalmat, aminek meghatározására éppen statisztikai programot szeretnénk használni.

Az xDarkstat rendszer kialakításánál éppen az volt a célkitûzés, hogy minimális szintû elõzetes információra legyen szükség; a program adjon tájékoztatást a hálózaton bonyolódó forgalomról, illetve annak vélhetõen releváns részérõl. A fejlesztés célkitûzései az alábbiak:


Az igények persze egy másik oldalról is megfogalmazódtak: mit szeretnénk látni? A fejlesztés oldaláról nézve a cél az alábbi módon fogalmazható meg: „olyan eszközt szeretnénk látni, amely az NTOP programhoz hasonlóan hálózat használati top-listákat készít, a forgalmi adatokat grafikonokkal alátámasztva”.

Az NTOP rendszer eredetileg hálózati interfészek forgalmának figyelésére, és abból különféle statisztikák készítésére készült. Az NTOP Packet Capturing szabványos könyvtár (libpcap) segítségével tetszõleges interfészen megforduló adatcsomagokból képes statisztikát készíteni, on-line módon, beépített SSL támogatással.

Az NTOP-hoz hasonló, de annál jóval egyszerûbb felépítésû program a Darkstat rendszer. E rendszer, hasonlóan, a libpcap könyvtár segítségével figyeli a hálózati interfész forgalmát és az adatokat egy mini web-szerver segítségével megjeleníti.

Az xDarkstat rendszer a Darkstat kiterjesztett változata. Képes nemcsak hálózati interfészek figyelésére, hanem egy adott porton „hallgatva” tud flow adatokat is fogadni, illetve feldolgozni. A feldolgozott flow-ból aztán ugyanazokat a statisztikákat építi fel, mint hálózati interfészek esetén: toplistákat, grafikonokat.

Az NTOP-pal szemben azért esett a Darkstat rendszerre a választás, mert felépítése egyszerûbb, így a flow-feldolgozás mint egy beleilleszthetõ. A rendszer elvi felépítése a 2. ábrán látható. A különálló funkciókat önálló POSIX fonalak végzik. A többszálú felépítés ellenére a rendszer monolit, hiszen a több fonál egyetlen UNIX folyamaton belül fut, így indítása, leállítása egyetlen parancs segítségével végezhetõ. Az ábrán az is látszik, hogy az eredeti Darkstat funkció is megmaradt: lehetõség van host-ok hálózati interfészének megfigyelésére is.





















2. ábra: Az xDarkstat program elvi felépítése. Jelenleg a MySQL kiterjesztés fejlesztés alatt áll.



4. A rendszer mûködése


A rendszer kétféle üzemmódban használható: hálózati interfész esetén, illetve flow adatok figyelése esetén. E két üzemmód egyszerre nem használható. Mivel a program mérete kicsi, a kétféle igény párhuzamosan futó példányokkal kényelmesen megoldható.


Hálózati interfész üzemmód: A libpcap könyvtár segítségével a Darkstat main thread figyeli a megadott hálózati interfészt, meghatározza a csomagok fontosabb jellemzõit (forrás, cél, méret), és elhelyezi egy belsõ adatbázisba. Ebbõl az adatbázisból építi fel a statisztikát a WWW thread, ami egy HTML mini web-szerver. A mini-web szerver egy adott porton figyeli a web-kérelmeket, és ha egy kliens browser-rõl http kérelem érkezik, felépíti az adatbázis pillanatnyi képét grafikus formában (3. ábra). Mindezekkel párhuzamosan fut a DNS feloldás, amelyet a DNS thread végez, és ami valójában két párhuzamos fonál: az egyik a helyi, a másik a távoli gépek rezolúcióját végzi (a hatékonyság növelése céljából). A Cleanup thread egy olyan funkció, mely nincs benne az eredeti Darkstat rendszerben. Feladata az, hogy kiválogassa azokat az adatokat, melyek fontosak, illetve azokat, amelyek a hálózati forgalomra nem gyakorolnak jelentõs hatást, és ez utóbbiakat kitörölje. A program képes többféle törlési stratégiát is megvalósítani: alacsony forgalmú bejegyzések törlése, régen nem használt bejegyzések törlése, illetve a kettõ intelligens tanulóalgoritmussal kombinált változatát.

Bár a rendszer jelenlegi verziójában még nincs benne a MySQL támogatás, a következõ verzióba mindenképp bekerül felváltva a jelenlegi szöveges file-ban tárolt adatbázis dump-ot. A MySQL kiterjesztés lehetõséget ad arra is, hogy a Cleanup thread által törölt adatok ne törlõdjenek, hanem adatbázisba kerüljenek. Ezzel a statisztikák valamivel pontosabbá is válnak.

Flow-k feldolgozása: Folyamatában hasonlít a hálózati interfész figyeléséhez annyi különbséggel, hogy az információk nem önálló csomagokból készülnek, hanem flow-kból.

A 3., 4., 5. ábrákon az xDarkstat mûködésének jellegzetes screenshot-jai táthatók. A forgalmi adatok az MTA-SZTAKI router-ének adataiból készültek.





3. ábra: Az xDarkstat „bejelentkezõ” képernyõje. Az alhálózat forgalmára vonatkozó általános statisztikákat (összes csomag, összes adatmennyiség) tartalmazza.



Az xDarkstat alapvetõen kétféle módon használható: az egyik az állandó futtatás, mely esetben a program démon módban indul el, és a háttérben fut.



4. ábra: Host-ok toplistája teljes (bemenõ plusz kimenõ) adatok szerint csökkenõ sorba rendezve. (A két kis nyíl segítségével a lista bõvíthetõ, szûkíthetõ.)



5. ábra: Port-ok szerinti statisztika.

Állandó statisztikákat készít a rendszer használatáról, melyek host-oknénti, portonkénti, illetve protokollonkénti lebontásban vizsgálhatók.

A másik üzemmód a beszédes (verbose) üzemmód, ami akkor hasznos, ha arra gyanakszunk, hogy az alhálózat valamelyik host-ját nagy mennyiségû adattal bombázzák, de szeretnénk tudni, hogy pontosan melyik host melyik portja a célpont. Ekkor speciális módon indítjuk az alkalmazást, és vagy kihasználjuk annak idõintervallumokra vonatkozó automatikus reset-elési lehetõségét, vagy kézzel reset-eljük annak belsõ számlálóit. Ezáltal a forgalmi változások adatait kapjuk meg.

A 6. ábrán a protokollok szerinti forgalmi adatok, a 7. ábrán pedig a percenkénti, óránkénti, napi, illetve havi kimenõ és bemenõ forgalmi adatok grafikonjai láthatók.






6. ábra: Protokollokra lebontott statisztikák.



Az xDarkstat egyik kényelmes tulajdonsága, hogy képes a forgalmi adatokat percenkénti, óránkénti, napi bontásban tárolni. Így például lehetõség van arra, hogy, ha a rendszerben visszamenõleg (például éjszaka) látunk forgalmi változásokat, vissza tudjuk keresni, melyik host, melyik portja produkálta azt! Az idõre lebontott statisztika a main menüpont Statistics almenüpontja alatt érhetõ el.

Az MTA-SZTAKI alhálózatán jelenleg napi log-olás van beállítva, melyrõl szemelvény a 9. ábrán látható.




7. ábra: A percenkénti, óránkénti, napi, illetve havi ki és bemenõ forgalom grafikonjai.



5. A rendszer beüzemelése


Az xDarkstat, ahogy az eredeti Darkstat rendszer is, ingyenesen letölthetõ alkalmazás. A legutóbbi forrás a http://evil.ki.iif.hu/~stefan/darkstat-1.1.tar.gz címen található. A rendszer telepítésérõl a README, illetve a doc/README állományokban találhatók további információk.

A program indításához szükséges néhány parancssori argumentum a 8. ábrán látható.







8. ábra: Az xDarkstat parancssori argumentumai




9. ábra: Napokra lebontott forgalmi adatok.


A 8. ábrán látható parancs elindítja a statisztika készítését. A kapcsolók rövid jelentése az alábbi:



6. Tapasztalatok, konklúzió


Az xDarkstat rendszert a HBONE akadémiai hálózat meghatározott regionális központjaiban telepítettük. Tapasztalatok azt mutatják, hogy a program kényelmesen használható, célkitûzésének megfelel. A jelenlegi verzió tartalmaz még néhány javításra szoruló apró hibát, melyet folyamatosan javítunk.

Az 1.1-es verzió egyik korlátja, hogy a forgalmi adatok rekordjait szöveges állományokban tárolja. Ez a funkció az eredeti rendszerrel való kompatibilitás miatt maradt meg. A következõ verzióban ezt az egyszerû backend-mechanizmust felváltja majd a relációs adatbázis-kezelõ, amely jóval erre a célra jóval stabilabb, áttekinthetõbb megoldást nyújt.



7. Felhasznált irodalom


[1] CISCO NetFlow dokumentációi http://www.cisco.com

[2] CAIDA hálózati adminisztrációs rendszerek http://www.caida.org