What is IPFIX?
The IETF has been working to standardize NetFlow?. The effort is named IPFIX, which stands for IP Flow Information eXport. The IETF considered working implementations as a starting point, and elected to work from Cisco NetFlow? version 9. Version 9 extends classic NetFlow? by using templates to describe the flow records. This provides extensibility.
The IPFIX protocol provides network administrators with access to IP flow information.The protocol is used to transfer IP flow data from IPFIX exporters to collectors.
The IPFIX standard also allows for sampled data, which alleviates the burden on devices of classifying and reporting on each and every packet. Cisco is recommending random sampling (probabilistic sampling) to ensure you don't miss flows, for example when there are recurrent (periodic) data patterns.
IPFIX terminology
An Observation Point is a location in the network where IP packets can be observed. Examples include: a line to which a probe is attached, a shared medium, such as an thernet-based LAN, a single port of a router, or a set of interfaces (physical or logical) of a router. Note that every Observation Point is associated with an Observation Domain (defined below), and that one Observation Point may be a superset of several other Observation Points. For example one Observation Point can be an entire line card. That would be the superset of the individual Observation Points at the line card's interfaces.
An Observation Domain is the largest set of Observation Points for which Flow information can be aggregated by a Metering Process. For example, a router line card may be an observation domain if it is composed of several interfaces, each of which is an Observation Point. Each Observation Domain presents itself to the Collecting Process using an Observation Domain ID to identify the IPFIX Messages it generates. Every Observation Point is associated with an Observation Domain. It is recommended that Observation Domain IDs are also unique per IPFIX Device.
A Flow is defined as a set of IP packets passing an Observation Point in the network during a certain time interval. All packets belonging to a particular Flow have a set of common properties. Each property is defined as the result of applying a function to the values of:
1. One or more packet header fields (e.g. destination IP address), transport header fields (e.g. destination port number), or application header field (e.g. RTP header fields)
2. One or more characteristics of the packet itself (e.g. number of MPLS labels)
3. One or more fields derived from packet treatment (e.g. next hop IP address, output interface)
A packet is said to belong to a Flow if it completely satisfies all the defined properties of the Flow.
Each of the fields which
1. Belong to the packet header (e.g. destination IP address)
2. Are a property of the packet itself (e.g. packet length)
3. Are derived from packet treatment (e.g. AS number)
and which are used to define a Flow are termed Flow Keys.
A Flow Record contains information about a specific Flow that was observed at an Observation Point. A Flow Record contains measured properties of the Flow (e.g. the total number of bytes for all the Flow's packets) and usually characteristic properties of the Flow (e.g. source IP address).
The Metering Process generates Flow Records. Inputs to the process are packet headers and characteristics observed at an Observation Point, and packet treatment at the Observation Point (for example the selected output interface).
The Metering Process consists of a set of functions that includes packet header capturing, timestamping, sampling, classifying, and maintaining Flow Records.
The maintenance of Flow Records may include creating new records, updating existing ones, computing Flow statistics, deriving further Flow properties, detecting Flow expiration, passing Flow Records to the Exporting Process, and deleting Flow Records.
An Exporting Process sends Flow Records to one or more Collecting Processes. The Flow Records are generated by one or more Metering Processes.
A device which hosts one or more Exporting Processes is termed an Exporter.
An IPFIX Device hosts at least one Exporting Process. It may host further Exporting processes and arbitrary numbers of Observation Points and Metering Process.
A Collecting Process receives Flow Records from one or more Exporting Processes. The Collecting Process might process or store received Flow Records, but such actions are out of scope for this document.
A device which hosts one or more Collecting Processes is termed a Collector.
A Template is an ordered sequence of <type, length> pairs, used to completely specify the structure and semantics of a particular set of information that needs to be communicated from an IPFIX Device to a Collector. Each Template is uniquely identifiable by means of a Template ID.
Measurement and evaluation project of QoS? parameters in computer networks.
This project, analyses and evaluates the QoS? parameters in computer networks. It introduces a simple and modular design of meter. We have experimentally measured bandwidth, packet rate one-way delay, jitter and packet loss of multiple data flows. It has been agreed that our meter should be implemented according to requirements of IETF Draft - IPFIX.
Basic Components of the BasicMeter
Modul pre vizualizáciu prevádzky a topológie sieťových infraštruktúr je nástroj, ktorý produkuje esteticky prijateľné schémy sieťových topológií, založený na plne automatickom princípe bez zásahu človeka. Tento programový modul je časťou informačného systému pre centralizovanú správu počítačovej siete - Synets. Synets predstavuje ucelený nástroj umožňujúci získať celkový prehľad o aktuálnom dianí v sieti - pohľad na celkovú topológiu, popis jednotlivých prvkov pripojených do siete, služby poskytované jednotlivými stanicami/servermi.
Analýza algoritmického riešenia
Z troch možných algoritmických riešení:
Tretia možnosť bola najprijateľnejšou voľbou, keďže existuje aplikácia - Graphviz, ktorá umožňuje vykresnelnie grafu, čo je potrebné pre vykreslenie topológie, keďže jej základnou vykresľovacou množinou sú uzly a hrany (sieťové zariadenia a linky).
Analýza dátového modelu
Požiadavkami bola výkonnosť a efektívnosť. Tu taktiež spadali do úvahy 3 riešenia:
Analýza implementácie
Bolo potrebne nájsť prostredie, ktoré by podporovalo www aplikácie a ich tvorbu, kde boli zvažovane: jazyk JAVA alebo skriptovací jazyk PHP. Ako základ takmer každej stránky je použitý jazyk HTML, ktorý nepodporuje tvorbu dynamických stránok, preto bol zvolený jazyk PHP.
Popis funkcie vizualizačného modulu
Tento modul je predstavuje príklad aplikácie, ktorá nadväzuje na výsledky inej aplikácie. Samotný modul pre vizualizaciu totiž generuje vstupný súbor pre aplikáciu Graphviz, ktorá na základe tohto súboru vytvára grafický výstup, ktorý je následne opäť pomocou vizualizačného modulu implementovaný do finálnej aplikácie. Najprv sa načítajú údaje z dátového modelu aplikácie. Tie sa pretransformujú do zdrojového súboru grafu. Z neho sa pomocou aplikácie Graphviz vytvorí grafická forma výstupu, ktorá sa vloží do internetovej stránky. Kedže táto stránka môže obsahovať; aj odkazy na stránky s detailmi, nepriamo tak ovplyvňuje výber dát, ktoré sa následne opäť vyberú z adresárovej štruktúry kvôli vygenerovaniu novej topológie.
Prvú fázu tvorí otvorenie súboru na zápis pomocou funkcií na to určených a zapísanie údajov, ktoré sú vyžadované v úvode súboru reprezentujúceho textovú formu topológie siete. V tejto fáze ide iba o sekvenčné zapisovanie vopred pripravených dát do súboru. V druhej fáze sa algoritmus rozhoduje, ktoré kroky bude potrebné koľkokrát opakovať. Táto časť úlohy pozostáva z prechádzania zoznamu zariadení a ich zapisovaní do súboru. Každé sieťové zariadenie, ktoré je pridané do súboru je následne objektom prehľadávania a do súboru sú pridané všetky ostatné zariadenia, na ktoré sa toto zariadenia odkazuje v rámci atribútov svojich rozhraní. V poslednej fáze generovania zdrojového súboru grafu sa opäť iba sekvenčne zapíšu dáta do súboru, ktorý sa následne uzavrie. Po vygenerovaní súboru sa tento posunie na spracovanie externej aplikácii, ktorá podľa neho vygeneruje prezerateľnú formu výstupu. Tento obrazový výstup je odovzdaný riadeniu modulu a ten ho vloží do pripravenej www stránky.
Implementácia modulu
Obsahuje 4 triedy:
1. GenDot?() - zabezpečuje generovanie textového súboru reprezentujúceho graf siete. Má 4 členské metódy:
Metódy construct() a destruct() primitívne funkcie, ktoré sú použité pri definovaní všetkých tried.
Funkcia GenAct? () má parametre $dn a $name. Parameter $dn predstavuje rozlišovacie meno (Distinguished name), ktoré predstavuje uzol, z ktorého sa začína generovať graf. Parameter $name je definovaný v používateľskom formulári a predstavuje názov vytváraného grafu. V rámci tejto triedy sa vytvárajú inštancie vložených tried ldapf unctions () a UseFile? (). Členské metódy týchto tried sú následne použité.
Na úvod sa volá metóda connect (), ktorá sa pripojí na server, na ktorom je nainštalovaná aplikácia pre adresárové služby. Funkciou bind() sa používateľ autentifikuje na danom serveri. Ďalšia je funkcia open() z triedy UseFile?(). Táto funkcia otvorí súbor s právom zápisu, ktorý je jej daný ako parameter. Za ňou nasleduje funkcia write () z tej istej triedy, ktorá zapíše hlavičku grafu do súboru. Potom sa prehľadá vetva obsahujúce sieťové zariadenia a u každého z nich sa do súboru zapíšu informácie o uzle v grafe a volá sa funkcia findinterfaces() z triedy ldapfunctions(). Podrobný popis tejto metódy bude v rámci jeho triedy. Za touto funkciou sa vykoná už len zápis konca súboru pomocou metódy write () a uzavrie sa súbor a spojenie so serverom prostredníctvom funkcií close () pre zodpovedajúce triedy.
Funkcia GenOf? f icial () je veľmi podobná predchádzajúcej funkcii. V podstate vykonáva tie isté operácie, ale sú v nej pozmenené rozsahy údajov, aby sa anonymní používatelia nedostali k citlivým dátam o sieti.
2. ldap_functions() - zabezpečuje vykonávanie operácií s adresárovou službou LDAP. Obsahuje 9 verejných metód:
3. UseFile?() - obsahuje metódy pre prácu so súborom (otvorenie, zápis, zatvorenie
4. visualization() - základná a povinná trieda pre vizualizačný modul. Má tieto metódy:
V prípade bezproblémového zavedenia modulu dáva metóda initailized() na výstupe návratovú hodnotu typu BOOL. Táto hodnota reprezentuje výsledok správnej inicializácie modulu a slúži pre potreby overenia inicializácie. V tejto metóde môže prebehnúť napr. kontrola závislosti na iných moduloch, ktorá ak zistí, že niektorý modul nie je ini-cializovaný, vráti hodnotu FALSE.
Metódy ActualTopology?() a OfficialTopology?() zobrazia formulár pre nastavenie parametrov vygenerovaného súboru. Potvrdením tohto formulára sa pomocou Javacriptu v novom okne otvorí súbor generate.php, ktorý na základe prijatých parametrov volá metódy triedy GenDot? (), ktoré vygenerujú obrázok a klikaciu mapu schémy.
Modulárny informačný systém tvorí základné komunikačné rozhranie pre správu počítačovej siete založenej na centralizovanom riešení prostredníctvom adresárových služieb LDAP.
Pre programovú realizáciu informačného systému bol zvolený skriptovací jazyk PHP s objektovým prístupom. Definovanie modulov je riešené prostredníctvom tried, ktorých meno sa musí zhodovať s menom modulu informačného systému. Definícia samotnej triedy ako aj jej náväznosti na iné zdrojové kódy príslušného modulu sú uložené v osobitnom adresári pre moduly pod názvom príslušného modulu. Tento osobitný adresár symbolizujúci prvky modulu musí obsahovať súbor definovanej triedy modulu v súbore s rovnakým názvom ako je názov triedy, ktorá definuje modul.
Základný modul base, ktorý zabezpečuje načítanie všetkých modulov má jeden konfiguračný súbor pre nastavenia modulov, ktoré sa majú pri načítaní stránky aktivovať. Nakoľko je každý modul definovaný svojou vlastnou triedou, je možné vytvoriť inštanciu celého modulu (jeho triedy) pri prvotnom prístupe používateľa na stránku informačného systému. Inštanciu modulu je vhodné vytvárať iba raz pri prvotnom prístupe a následne už len zabezpečovať vyvolávanie jednotlivých metód zvoleného modulu z už existujúcej inštancie. Prenos inštancií vytvorených modulov pri opätovnom načítaní stránky a prechode po stránkach je potrebné zabezpečiť prostredníctvom globálnych premenných, ktorých hodnota sa zachováva aj pri tejto akcii. Inicializácie jednotlivých premenných, ktoré sa používajú vo vnútri modulu je možné realizovať v konštruktore triedy. Toto je možné docieliť prostredníctvom relačných premenných (SESSION), ktorých hodnotu si ukladá webový server interne vzhľadom na nadviazané spojenia s klientom. Pre potreby overenia funkčných vlastností modulu je dôležitá inicializácia modulu.
Inicializácia modulu
Moduly informačného systému môžu byť medzi sebou rôznym spôsobom poprepájané a nadväzovať na metódy, ktoré poskytujú. Preto vzniká potreba inicializácie modulu pred vytvorením samotnej inštancie triedy modulu tak, aby bolo možné preveriť funkčnosť samotného modulu. Túto úlohu plní metóda initialized(), ktorá ako návratovú hodnotu uvádza pravdivostnú hodnotu TRUE ak je modul korektne inicializovaný a FALSE v prípade nesprávnej inicializácie alebo nesplnenia podmienok závislostí na iných moduloch.
V prípade správnej inicializácie modulu je jeho inštancia uložená v relačnej premennej SESSION[‘MODULE_INSTANCE_${názov_modulu}‘]. Takýmto spôsobom je možné priamo v ľubovoľnom module vyvolávať jednotlivé metódy iného modulu prostredníctvom relačnej premennej. Z dôvodu overenia závislostí na moduloch v procese inicializácie je potrebné evidovať informáciu o správnych inicializáciách modulov. Ak je modul správne inicializovaný, relačná premenná SESSION[‘INITIALIZED_MODULE_${názov_modulu}’] má hodnotu TRUE.
Každý z modulov môže mať potrebu vykonania niektorých svojich intrerných akcií ešte pred vyvolaním metódy realizujúcej jeho funkciu. V prípade opätovnej inicializácie modulov pri každom prístupe na stránku by túto úlohu mohla plniť metóda initialized(), ktorá by jednak odovzdala informáciu o správnej inicializácii modulu a jednak by umožnila vykonanie základných akcií, ktoré je potrebné vykonať pre správne fungovanie modulu. Nakoľko proces inicializácie nemá zmysel robiť viacnásobne pri každom prístupe na stránku pokiaľ sú už moduly inicializované prvým prístupom používateľa – je vhodné definovať nepovinné metódy modulov, ktoré umožňujú vykonanie potrebných akcií pre fungovanie modulu za každým sprístupnením stránky informačného systému. Túto úlohu plní nepovinná metóda OnPageLoad(). Ak táto metóda existuje, vyvolá sa po inicializáciách jednotlivých modulov, pred zavolaním funkcie modulu gui, ktorá realizuje vizualizáciu prostredia samotného informačného systému.
Vzhľadom na potreby vizualizácie informácií jednotlivých modulov je vhodné definovať nepovinnú metódu, ktorá zabezpečuje vyžiadanie plného názvu modulu v používateľsky zrozumiteľnej podobe. Touto nepovinnou metódou je metóda GetLongName(), ktorej návratovou hodnotou je plné meno modulu v ktorom sa príslušná metóda nachádza.
Modul vizualizácie grafického rozhrania informačného systému (modul gui) sprístupňuje metódy jednotlivých modulov, ktoré reprezentujú ich funkcionalitu prostredníctvom tlačidiel ponuky, ktorá je dostupná používateľovi informačného systému v grafickom rozhraní. Nakoľko informačný systém slúži ako ucelený nástroj pre správu počítačovej siete pre viacerých správcov, ktorí môžu mať rozdielne prístupové práva v rámci správy siete, je potrebné zaviesť metódy, ktorými modul odovzdá informáciu informačnému systému o rozsahu potrebných prístupových práv pre vykonanie zvolenej metódy modulu.
Každý z modulov môže obsahovať nepovinnú metódu GetSecurityObjects(), ktorej návratovou hodnotou je pole možných atribútov vyskytujúcich sa v danom module pre potreby autorizácie používateľa. Štruktúra každého indexovaného prvku poľa "bezpečnostných objektov" je daná atribútmi, ktoré popisuje trieda SecurityObject modulu security.
Jednou zo základných potrieb informačného systému je vzájomná výmena informácií medzi modulmi. Na systémovej úrovni je toto realizované prostredníctvom relačných (SESSION) premenných.
Modul gui umožňuje vizualizáciu funkcií jednotlivých modulov prostredníctvom ponuky. Vzhľadom na to, že každý z modulov poskytuje špecifické metódy, je potrebné vytvoriť globálne definované metódy platné pre všetky moduly, ktoré budú odovzdávať informáciu o zobrazovaných položkách v ponuke. Modul gui definuje pre všetky moduly nepovinnú metódu GetMenuItems?(), ktorá vracia zoznam položiek príslušného modulu zobrazovaných v ponuke s definovaním obsluhy zobrazovanej položky metódou.
Riešenie
Z funkčných blokov informačného systému vyplýva, že celá aplikácia má 3 úrovne. Prvou je LDAP server a jeho adresárová služba. Druhou úrovňou je Apache web server s modulom PHP, ktorý podľa požiadaviek v spracovanom zdrojovom kóde uloženom v súboroch PHP komunikuje s SQL serverom a výsledný vygenerovaný HTML kód (www stránku) odosiela klientskej stanici.
Základný princíp spracovania modulov tvorí ich načítanie, inicializácia a vyvolávanie vzájomne prístupných metód prostredníctvom komunikačného prostredia realizovaného cez relačné premenné.
MODULY, TRIEDY, METÓDY
Modul Base
Trieda Base_functions zabezpečuje základné prostriedky pre inicializáciu a načítanie modulov. Obsahuje následovné metódy:
Trieda AAA, ktorá je súčasťou základného modulu Base umožňuje zaznamenávanie dianí v informačnom systéme. Zaznamenávanie udalostí tvorí základný prvok bezpečnosti informačného systému. Táto trieda poskytuje nasledovné metódy:
Trieda SESSION tohoto modulu zabezpečuje inicializáciu relačných premenných po načítaní definícií tried. Poskytuje nasledovné metódy:
Modul configuration
Modul configuration tvorí základný konfiguračný modul pre prácu s LDAP adresárovou službou. Trieda configuration obsahuje premenné:
Súčasťou tejto triedy sú nasledovné metódy:
Modul gui
Trieda gui zabezpečuje základné funkcie poskytujúce vizualizáciu grafického rozhrania ako aj jeho komponentov horného a ľavého menu. Táto trieda používa jedinú globálnu premennú v rámci triedy (AAA), ktorá zabezpečuje zaznamenávanie diania. Táto trieda poskytuje nasledovné metódy:
Modul ldap
Úlohou modulu LDAP je poskytovanie informácií potrebných pre prístup k LDAP serveru ostatným doplnkovým modulom. Trieda ldap obsahuje premenné:
Trieda ldap poskytuje nasledovné metódy:
Modul login
Modul login zabezpečuje proces autentifikácie pri prihlasovaní sa do informačného systému. Taktiež poskytuje prvky overovania bezpečného prístupu k rozhraniu a sadu dialógov, ktoré sú potrebné pre prihlásenie/odhlásenie zo systému. Trieda login poskytuje nasledovné metódy:
Modul messages
Trieda messages poskytuje priestor pre zobrazovanie chybových hlášok ľubovoľných modulov v jednotnom vzhľade. Táto trieda poskytuje metódy:
Modul menu
Modul menu plní jedinú úlohu, ktorou je definícia triedy MenuItem? pre potreby stanovenia údajovej štruktúry pre zobrazované položky v ponuke. Trieda MenuItem?, ktorá je súčasťou tohoto modulu obsahuje nasledovné premenné:
Trieda MenuItem definuje nasledovné metódy:
Modul security
Modul security pozostáva z dvoch tried a zabezpečuje základné prvky bezpečnosti pri prístupe k informačnému systému a jednak autentifikačné a autorizačné metódy. Trieda security obsahuje nasledovné metódy:
Druhou triedou je trieda _SecurityObject definujúca správanie sa bezpečnostných atribútov pre potreby autorizácie. Táto trieda je používaná ako položka zabezpečovacích prvkov, pričom využíva dve premenné:
Trieda SecurityObject, ktorá je súčasťou modulu security obsahuje nasledovné metódy:
Modul usersmanagement
Trieda usersmanagement obsahuje metódy pre správu používateľov informačného systému. Tieto metódy sú nasledovné:
Modul dostupnost_serverov
Trieda a modul dostupnost_serverov umožňujú sledovanie štatistickej dostupnosti sledovaných zariadení. Táto trieda poskytuje nasledovné metódy:
Modul server_stats
Trieda _server_stats poskytuje metódy, ktoré zabezpečujú sledovanie štatistík vyťaženia jednotlivých serverov. Táto trieda poskytuje nasledovné metódy:
Modul sprava_pouzivatelov
Primárnou úlohou modulu sprava_pouzivatelov je zabezpečiť jednoduché komunikačné dialógy pomocou ktorých je možné pracovať s používateľmi, ktorí využívajú registrované služby. Trieda sprava_pouzivatelov obsahuje nasledovné metódy:
Modul sprava_zariadeni
Trieda sprava_zariadeni poskytuje komunikačné rozhranie prostredníctvom sady dialógov, ktorých primárnym účelom je správa zariadení vyskytujúcich sa v počítačovej sieti. Táto trieda poskytuje metódy:
Modul statistiky_sluzieb
Modul statistiky_sluzieb poskytuje sledovacie nástroje pre kontrolu vyťaženia služieb. Táto trieda statistiky_sluzieb definuje nasledovné metódy: