4   Programovatelný hardware

Aktivita Programovatelný hardware pokračovala v roce 2005 bez významných změn ve svém zaměření oproti předchozímu roku. Naší snahou bylo zkoncentrovat vývojové kapacity na hlavní úkoly, ale přitom zcela neztratit ze zřetele další možné aplikace programovatelného hardwaru.

V roce 2005 byly úspěšně zakončeny dva projekty 5. rámcového programu IST EU s naší účastí: SCAMPI a 6NET. Při závěrečném hodnocení projektu SCAMPI, které se konalo v lednu 2005 v Brně, doporučili oponenti prozkoumat možnosti komerčního využití výsledků projektu, především tedy námi vyvinutého monitorovacího adaptéru SCAMPI. CESNET pak v průběhu roku vyvinul v tomto směru značné úsilí, jehož některé výsledky se již rýsují, ačkoli jednání ještě nejsou dokončena a definitivní rozhodnutí zatím nepadlo.

Řešitelský tým aktivity se dále rozšířil a na konci roku 2005 čítal 74 aktivních členů. Největší nárůst byl ve skupině vývojářů VHDL, neboť se ukázalo, že efektivní zapojení studentů do náročných vývojových prací se neobejde bez předchozího získávání zkušeností na jednodušších úkolech a následné selekce těch nejlepších. Snažíme se proto podchycovat zájemce o spolupráci v oblasti vývoje VHDL z řad studentů v raných fázích jejich studia, ponechat jim zhruba rok na aklimatizaci a osvědčení svých schopností a teprve poté je zařazujeme na zodpovědná místa ve vývojových týmech.

Na obrázku je vidět roční průběh růstu počtu řádků v našem úložišti CVS, kde se přechovávají zdrojové kódy veškerého firmwaru a softwaru a také dokumentace. I při vědomí problematičnosti takové statistiky se domníváme, že tento graf poskytuje jistou představu o rozsahu vývojových prací v rámci aktivity.

[Obrázek]

Obrázek 4.1: Graf růstu počtu řádků v CVS během roku 2005

Ve vnitřní organizaci týmu došlo v roce 2005 k poměrně významné změně: Zatímco dříve byli spoluřešitelé zařazeni a vedeni především v rámci tématicky orientovaných skupin (VHDL, systémový software, atd.), v polovině roku 2005 jsme zavedli hierarchii řízení založenou primárně na projektech. Projektové skupiny zahrnují všechny vývojáře a podpůrné spolupracovníky, kteří se mají podílet na výsledcích daného projektu. Od této změny si slibujeme zkvalitnění řízení, především ve smyslu lepšího plnění stanovených termínů. V běhu je nyní následujících pět projektů:

  1. Netflow - vývoj monitorovací sondy Netflow, vedoucím projektu je Martin Žádník (VUT Brno).
  2. Liberouter - vývoj směrovače IPv6/IPv4, vedoucím projektu je Jiří Tobola (VUT Brno).
  3. SCAMPI - vývoj monitorovacího adaptéru SCAMPI, vedoucím projektu je Tomáš Martínek (VUT Brno).
  4. IDS - příprava vývoje zařízení pro monitoring obsahu paketů, vedoucím projektu je Petr Kobierský (VUT Brno).
  5. PAGEN - příprava vývoje generátoru paketů, vedoucím projektu je Jan Pazdera (VUT Brno).

Všechny uvedené projekty budou podrobněji popsány v následujících oddílech.

4.1   Nové karty

Rodina karet COMBO se v roce 2005 rozšířila o několik významných přírůstků:

  1. Základní karta COMBO6X pro sběrnice PCI 64bit/66 MHz a PCI-X. Tato karta byla již otestována a některé drobné nedostatky, které byly při testech odhaleny, jsme promítli do upraveného návrhu karty.
  2. Základní karta COMBO6E pro sběrnici Express PCI je nyní ve výrobě.
  3. Karta rozhraní COMBO-4SFPRO je k dispozici ve dvou variantách, s podporou buď pro gigabitový Ethernet nebo SDH STM-16. Karta již byla otestována a je připravena k nasazení.
  4. Karta rozhraní COMBO-2XFPRO s podporou pro 10gigabitový Ethernet. U této karty jsme narazili na vážné problémy se součástkami (viz níže). Karta v této podobě zřejmě nebude použitelná a pro podporu desetigigabitových rozhraní bude nutno navrhnout zcela novou kartu.

Přínos této nové rodiny karet COMBO je trojí:

Desetigigabitový Ethernet byl implementován již na kartách COMBO-2XFP vyvinutých pro projekt SCAMPI. Poté, co byly vyrobeny dva kusy této karty, firma Intel oznámila konec výroby phyterů DS12010, které jsou na kartě použity. U nové generace desetigigabitových karet rozhraní jsme se proto rozhodli místo čipů tohoto typu použít sériové obvody Rocket IO. Podle specifikace výrobce (Xilinx) měly tyto obvody v hradlových polích Virtex-II Pro XC2VP20 (speed grade 7) plně podporovat rozhraní 10GE. Navrhli jsme proto nové karty COMBO-2XFP s těmito hradlovými poli, firma Xilinx však následně podporu 10GE u těchto čipů odvolala bez uvedení bližších podrobností. Rozhodli jsme se proto vývoj karty COMBO-2XFPRO zastavit a navrhnout ji znovu s použitím nového hradlového pole Virtex-4, u něhož by měla být desetigigabitová rozhraní již podporována bez výhrad.

4.2   Sonda Netflow

Projekt vývoje sondy Netflow byl zahájen v roce 2004 v rámci aktivity JRA2 (Bezpečnost) projektu GN2. Cílem je samostatné monitorovací zařízení pro získávání informací o datových tocích IP ve vysokorychlostních sítích.

V říjnu 2005 jsme dokončili a do konce roku úspěšně otestovali prototyp sondy, který je založen na standardním PC s přidaným hardwarovým akcelerátorem pro analýzu datového provozu.

Průmyslovým standardem pro výměnu statistických dat o tocích je protokol Cisco Netflow, jehož nejnovější verze 9 je popsána v informativním RFC 3954. Data Netflow jsou obvykle generována směrovači. Použití autonomní sondy má proti tomuto tradičnímu uspořádání několik výhod:

Další technické podrobnosti o sondě lze nalézt v technické zprávě [ŽáL05] a článku [ZPK05].

4.2.1   Hardware

Hardwarový akcelerátor pro sondu Netflow je založen na kombinaci základní karty COMBO6 a dceřiné karty rozhraní pro gigabitový Ethernet, tj. buď COMBO-4MTX (metalické porty) anebo COMBO-4SFP (transceivery SFP). Z hlediska síťové infrastruktury funguje akcelerátor jako opakovač: datový tok přicházející do jednoho z portů je bezprostředně vysílán z jiného portu a kopie těchto dat se předává firmwaru k analýze.

4.2.2   Firmware

Firmware akcelerátoru Netflow v jazyku VHDL je postaven na zcela novém designu. Je schopen současně zpracovávat datový provoz IPv4 i IPv6. Aktuální verze firmwaru je schopna udržovat v paměti informace o 65 536 tocích.

[Obrázek]

Obrázek 4.2: Blokové schéma firmwaru sondy Netflow (větší obrázek)

Obrázek znázorňuje blokové schéma firmwaru. Pakety přijaté vstupní vyrovnávací pamětí (Input Buffer, IBUF) jsou postoupeny analyzátoru hlaviček (Header Field Extractor, HFE). Tato jednotka analyzuje hlavičky 2., 3. a 4. vrstvy, extrahuje z nich všechna potřebná pole a uloží je do pevné datové struktury nazývané unifikovaná hlavička (UH), jež se uloží do statistické fronty (statistical FIFO). Paralelně s tím jsou určitá klíčová pole UH použita jako vstup rozptylovací funkce CRC-64, která je implementována jednotkou HASH. Z výsledných 64 bitů funkce CRC-64 používáme 57 bitů jako unikátní identifikátor toku. Klíčových polí je obvykle pět: zdrojová a cílová adresa IP, čísla zdrojového a cílového portu a číslo protokolu třetí vrstvy. Firmware lze konfigurovat tak, že se libovolná podmnožina bitů těchto pěti klíčových polí zamaskuje a jako vstup rozptylovací funkce se použijí pouze zbylé bity.

Použití hodnoty rozptylovací funkce jakožto identifikátoru toku znamená, že pakety s rozdílnými hodnotami klíčových polí mohou občas dostat stejný identifikátor a tudíž mohou být nesprávně zařazeny do téhož toku. Vzhledem ke statisticky rovnoměrnému rozdělení hodnot funkce CRC-64 je pravděpodobnost nedetekované kolize N×2-57, kde N je skutečný počet toků v paměti. Paměť však nemůže nikdy zároveň obsahovat více než 216 toků, a proto je pravděpodobnost nedetekované kolize nejvýše 2-41, tedy asi 4,55×10-13. Při současné maximální propustnosti firmwaru - půl milionu paketů za vteřinu - to znamená v průměru nejvýše 7 kolizí za rok. I když je tato pravděpodobnost pro většinu aplikací dostatečně nízká, je nutné počítat i s cíleným útokem na rozptylovací funkci: Útočník může napřed podvrhnout vhodně připravený tok a pak spustit vlastní útok, který však bude nesprávně klasifikován jako první (podvržený) tok. Tento scénář není příliš obtížné zrealizovat, neboť rozptylovací funkce je známa. Tomuto nebezpečí se čelí tím, že je jednotka HASH inicializována náhodným číslem, takže její výsledné hodnoty nejsou predikovatelné.

Identifikátory toku jsou ukládány do fronty Hash FIFO, odkud je po jednom vybírá vyhledávací jednotka (Hash Search Unit, HSRCH) a zjišťuje, zda je tento identifikátor již v paměti přítomen. Je-li tomu tak, upraví se statistika příslušného existujícího toku, v opačném případě se v paměti založí nová položka.

Řídící jednotka (Manager Unit, MAN) spravuje seznamy identifikátorů toků a též udržuje seznam volných paměťových míst. Záznamy o tocích jsou uspořádány v obousměrném seznamu setříděném podle časové značky poslední změny záznamu. Neaktivní toky lze pak snadno rozpoznat, jakmile jejich stáří překročí stanovenou hranici (tzv. neaktivní časovač).

Konečně, úložná jednotka (Storage Unit, SCTRL) shromažďuje statistiky o aktivních tocích a exportuje záznamy podle instrukcí obdržených od jednotky MAN.

Aktuální verze firmwaru podporuje též experimentální vzorkovací proceduru nazývanou sample-and-hold. Od běžného statistického vzorkování, které je rovněž implementováno, se liší tím, že vzorkování vstupních paketů je potlačeno u všech toků, které již existují v paměti. Tímto postupem lze získat velmi přesné informace o velkých tocích.

Činnost firmwaru závisí na hodnotách několika numerických parametrů, které lze měnit i za běhu:

4.2.3   Softwarový ovladač akcelerátoru

Ovladač hardwarového akcelerátoru Netflow je k dispozici pro Linux 2.4 a 2.6. Umožňuje současný přístup několika aplikací k záznamům o tocích: Vyhrazený blok sdílené paměti se používá pro uložení až 16 384 záznamů v logické struktuře kruhové vyrovnávací paměti. Jakmile se kruh zaplní, jsou nejstarší záznamy přepisovány novými. Každá aplikace si přitom udržuje vlastní ukazatel do této vyrovnávací paměti a navíc může uzamknout až 1024 položek - pokud například není hotova s jejich čtením - a zabrání tak jejich přepsání.

Aplikace mohou k ovladači přistupovat výhradně prostřednictvím speciální nízkoúrovňové knihovny libcsflow. Tato knihovna implementuje některé společné funkce a kromě toho také umožňuje testovat aplikace bez přístupu k hardwarovému akcelerátoru - záznamy o tocích se v tomto případě načtou z diskového souboru.

4.2.4   Program pro export dat Netflow verze 9

První aplikací, která používá sondu Netflow, je exportér toků podporující formát Netflow verze 9. Prozatím umožňuje posílat data jedinému kolektoru prostřednictvím transportu IPv4/UDP. IP adresu a cílový port kolektoru lze nastavit z příkazového řádku.

Formát Netflow v9 je pružný v tom, že umožňuje prakticky libovolně stanovit obsah odesílaných záznamů o tocích. Použitá uspořádání dat jsou kolektoru sdělena pomocí takzvaných předloh (templates). Náš exportér zatím podporuje šest předloh pro všechny možné kombinace IPv4 a IPv6 na jedné straně a transportních protokolů TCP, UDP a ICMP na straně druhé. Další dvě předlohy (IPv4/OTHER a IPv6/OTHER) jsou používány pro ostatní protokoly třetí vrstvy.

Všechny předlohy sdílejí následujících sedm datových polí:

Další datová pole jsou již specifická pro jednotlivé předlohy. Jejich výskyt ukazuje tabulka.

Pole TCP UDP ICMP Popis
L4_SRC_PORT X X zdrojový port
L4_DST_PORT X X cílový port
DST_TOS X X oktet typu služby
TCP_FLAGS X příznaky TCP (TCP flags)
ICMP_FLAGS X příznaky ICMP (ICMP flags)

Tabulka 4.1: Datová pole v protokolově specifických předlohách

Bez znalosti příslušné předlohy nemůže kolektor data interpretovat, a proto je důležité všechny používané předlohy občas posílat. Prostřednictvím řádkového parametru je možné nastavit periodu jejich posílání.

4.2.5   Testy prototypu

V listopadu a prosinci 2005 jsme realizovali první úspěšné testy sondy, a to jak v laboratorním prostředí, tak i v produkční síti. Další nezávislé testy jsou připravovány ve spolupráci s našimi partnery v projektu GN2, jimž CESNET zapůjčil nebo zapůjčí prototypy sondy. Jeden z nich je již instalován v Utrechtu (Nizozemsko) a testován kolegy ze SURFnetu. Testování zatím obecně naráží na neexistující nebo chabou podporu Netflow v9 v kolektorech.

[Obrázek]

Obrázek 4.3: Propustnost sondy Netflow pro různé velikosti paketů

Propustnost firmwaru jsme testovali pomocí síťového analyzátoru Spirent AX/4000. Výsledky jsou graficky znázorněny v obrázku, z něhož je vidět, že propustnost současné verze designu je limitována dvěma faktory:

Na odstranění obou omezení v současné době pracujeme: Nová základní karta COMBO6X umožní zvýšit hodinovou frekvenci na 100 MHz a tím hrubou propustnost na 1,6 Gb/s. Ve fázi testů je též optimalizovaná implementace HFE, která by měla být schopna zpracovat minimálně 2 milióny paketů za vteřinu. Po těchto vylepšeních by měl být firmware sondy schopen zpracovat plnou rychlost 1 Gb/s bez ohledu na velikost paketu.

Sondu jsme rovněž testovali s reálnými daty z páteřní sítě CESNET2. Připojili jsme ji na port přístupového směrovače v brněnském uzlu, do něhož byl zrcadlen veškerý provoz přicházející do metropolitní sítě BAPS. Data generovaná sondou byla zpracovávána systémem FTAS (viz kapitolu 5.2). Následující obrázky ukazují vybraný vzorek výsledků1. Z nich je zřejmé, že data poskytovaná sondou jsou kvalitativně správná, neboť se shodují s nezávislými pozorováními. Pro přesnější kvalitativní srovnání ještě připravíme test, který porovná výsledky poskytované sondou s těmi, které získáme ze sousedícího směrovače.

[Obrázek]

Obrázek 4.4: Spektrum protokolů transportní vrstvy

[Obrázek]

Obrázek 4.5: Nejvýznamnější datové zdroje a služby

[Obrázek]

Obrázek 4.6: Složení provozu podle jednotlivých služeb

[Obrázek]

Obrázek 4.7: Viditelné relace BGP nad IPv4 i IPv6

4.2.6   Výhled do budoucnosti

Sonda Netflow spolu s programy FTAS a Netflow Monitor, vyvíjenými rovněž sdružením CESNET v rámci výzkumného záměru, poskytuje již v současné době vcelku komplexní a použitelné zařízení, které může být užitečné pro řadu aplikací nejen v oblasti bezpečnostní analýzy provozu, ale též sledování kvality služby, účtování přenesených dat či plánování kapacity sítě.

Plány pro nejbližší období (do konce února 2006) zahrnují především rozšíření a zpřehlednění softwaru. Počítáme s implementací následujících nových funkcí:

Základním prostředkem konfigurace sondy by se mělo stát textové uživatelské rozhraní systému Netopeer, viz oddíl.

Během prvního pololetí 2006 plánujeme dokončení nové verze sondy založené na základní kartě COMBO6X a kartě rozhraní COMBO-4SFPRO. Tato verze bude mít propustnost 1,6 GBit/s a kromě gigabitového Ethernetu bude podporovat i rozhraní SDH STM-16. Nové karty budou mít také větší kapacitu paměti SSRAM, což umožní zvýšit počet současně uchovávaných toků na 512 tisíc.

V delší časové perspektivě sledujeme především výzkumně orientované směry, jako je implementace protokolu IPFIX (RFC 3917) anebo různé strategie vzorkování.

4.3   Směrovač Liberouter

Cílem projektu Liberouter je vyvinout multigigabitový směrovač pro IPv6 a IPv4 založený na platformě PC a přídavné akcelerační kartě COMBO6, která umožňuje rozložit zátěž při směrování mezi hardware a software podle myšlenky hardwarově-softwarového kodesignu. S využitím tohoto přístupu je možné odstranit hlavní nevýhodu čistě softwarových směrovačů, kterou je nedostatečná propustnost pro dnešní vysokorychlostní linky. Projekt byl také financován z projektu 6NET, jenž byl součástí 5. rámcového programu EU.

Na počátku roku 2005 jsme při průběžném hodnocení projektu 6NET úspěšně prezentovali první funkční prototyp Liberouteru, kterým byla síťová karta s hardwarovou filtrací paketů. Architektura tohoto prototypu je popsána v loňské zprávě. V roce 2005 se pak vývoj směrovače rozdělil do dvou vývojových větví, kterými jsou vývoj síťové karty s hardwarovou filtrací a hardwarovým přeposíláním paketů (projekt NIFIC) a vývoj původně navrženého směrovače Liberouter. Pro obě vývojové větve je dnes vytvořena dokumentace ve formátu XML, jež je k dispozici na stránkách projektu www.liberouter.org.

4.3.1   Projekt NIFIC

Firmware

V první polovině roku jsme soustředili vývoj na dokončení projektu NIFIC, který navazuje na první prototyp Liberouteru a dále rozšiřuje jeho schopnosti o hardwarové přeposílání a replikaci paketů. Toho lze využít například k filtrování síťového toku ve vysokých rychlostech, protože paket je zpracováván pouze v hardwaru a není nutné jej dále softwarově zpracovávat. Dalším možným využitím je například posílání potenciálně nebezpečných toků do honeypotů nebo jakékoliv jiné rozdělení toků na základě informací z hlaviček paketů. Výhodou tohoto zařízení je jeho možná "neviditelnost" v síťové vrstvě, ale zároveň schopnost provádět klasifikaci na základě informací z této a vyšších vrstev.

Proti prvnímu prototypu se změnila zejména hardwarová architektura výstupní části zařízení - viz obrázek. Po přijetí vstupním rozhraním (IBUF) je paket zpracován procesorem HFE (Header Field Extractor), který uloží data paketu do fronty paketů (PFIFO) a informace z hlaviček potřebné pro klasifikaci do fronty unifikovaných hlaviček (UH FIFO). Tyto informace jsou dále zpracovány ve vyhledávacím procesoru (LUP), jehož výstupem je informace určující další zpracování paketu, které je následně provedeno v jednotce DISP (Dispatcher). Možnosti zpracování jsou:

[Obrázek]

Obrázek 4.8: Schéma firmware projektu NIFIC (větší obrázek)

Firmware projektu NIFIC je v současnosti k dispozici na kartách COMBO6, COMBO-4MTX a COMBO-4SFP. Přestože složitost firmwaru je menší, než je tomu u původní koncepce směrovače Liberouter, už nyní je využití zejména hradlového pole na kartě COMBO6 na velmi vysoké úrovni, a proto byla implementace kompletního směrovače přesunuta na novou platformu karet COMBO6X a COMBO6E.

Software

Softwarová část projektu NIFIC je do značné míry společná s projektem Liberouter, zejména pak filtrování paketů pomocí klasifikačního procesoru, kde pokračuje hledání nejvhodnějšího způsobu rozdělení filtrovacích pravidel do struktur asociativní a statické paměti - viz technická zpráva [Ant05]. Specifickou částí pouze pro tento projekt jsou ovladače poskytující přístup k síťovým rozhraním COMBO6. Tyto ovladače jsou dostupné pro operační systémy Linux a NetBSD. V souvislosti s přechodem na novou generaci karet COMBO6 intenzivně pracujeme na verzi ovladače, využívajícího k řízení systémové sběrnice procesor PowerPC, který je přímo integrován v programovatelném hradlovém poli. Tím bude sníženo zatížení procesoru počítače a bude možné dosáhnout vyšších propustností při přenosech po sběrnici.

V souvislosti s distribucí karet COMBO6 externím zájemcům vznikl systém pro přípravu balíčků, obsahujících všechny soubory příslušející k danému projektu. Cílem tohoto systému je zjednodušit instalaci softwaru a konfiguraci hardwaru jak pro externí zájemce, tak pro testovací skupinu. Výsledné balíčky, které obsahují zdrojové soubory softwaru a konfigurační soubory pro hradlová pole, jsou zveřejněny na stránkách projektu. Systém balíčků se v projektu NIFIC osvědčil, proto jej využíváme i pro další řešené projekty (Netflow, NIC).

4.3.2   Projekt Liberouter

Firmware

Souběžně s dokončováním projektu NIFIC část VHDL vývojářů intenzivně pracovala na komponentách nutných pro další posun ve vývoji původního směrovače Liberouter a ke konci roku pak byly všechny tyto komponenty integrovány do jednoho celku. Přestože některé z komponent ještě nejsou plně funkční, v softwarových simulacích už Liberouter přesměroval svůj první paket. V příštím roce hodláme soustředit vývoj na rozšiřování funkcí kritických komponent a přechod ze simulací k hardwarové implementaci na nových kartách COMBO6X a COMBO6E.

[Obrázek]

Obrázek 4.9: Schéma firmware projektu Liberouter (větší obrázek)

Architektura firmwaru směrovače Liberouter je znázorněna na obrázku. Vstupní část odpovídá architektuře projektu NIFIC, novými komponentami pak jsou:

REP (Replicator)
Jednotka pro hardwarovou implementaci multicastu. Jejím úkolem je replikace záznamů o paketech a přiřazování těchto záznamů do prioritních front.
PQ (Priority Queues)
Systém prioritních front pro každé výstupní rozhraní. Umožňuje realizaci QoS.
OPE (Output Packet Editor)
Výstupní paketový editor modifikující data paketu před jejich odesláním ze směrovače (změna L2, L3 adresy, zmenšení TTL atd.).
DRAM (SDRAM Scheduler + SDRAM Controller)
Plánovač přístupu k dynamické paměti umožňující práci s touto pamětí více jednotkám zároveň (HFE, REP, OPE) a řadič dynamické paměti zajišťující přístup do DDR SDRAM paměti.

V současné době jsou z nových komponent plně implementovány jednotky Replicator a DRAM scheduler. U ostatních jednotek jsme implementace rozdělili do dvou fází. První verze těchto komponent s omezenými funkcemi již jsou dostupné (OPE, PQ, SDRAM_CTRL) a umožní testování Liberouteru v hardwaru. V příštím roce pak budou tyto jednotky implementovány v plné verzi bez omezení funkcí. Současně s implementací nových jednotek probíhá přepracování výkonově kritických jednotek na vstupu (HFE, LUP) tak, aby bylo dosaženo vyšší propustnosti, lepšího využití prostředků hradlového pole a větší obecnosti těchto jednotek (úprava a rozšíření instrukční sady).

Software

Softwarová podpora pro akceleraci paketů sestává z démona combod. Operační systém udržuje směrovací tabulky, ARP tabulky pro překlad L3 adres na L2 a nastavení paketového filtru. Tyto zdroje je nutno zkombinovat do jedné vyhledávací struktury pro LUP. Dokončili jsme metodu kombinace směrování a ARP do jedné vyhledávací struktury (routing-ARP tabulky) a formální model této metody. Přidání paketového filtru je založeno na vložení filtrů reprezentovaných intervalovými rozhodovacími diagramy do relevantních částí adresového prostoru směrovací tabulky. Tento postup jsme implementovali v prototypu. Vyvíjíme formální model metody a pracujeme na stanovení kvantitativních charakteristik chování výsledné struktury. Průběžné výsledky této práce jsou shrnuty ve výše zmíněné technické zprávě [Ant05].

Mimo práce na akceleračním démonovi jsme dále doplnili sadu řídících nástrojů pro hardwarové komponenty. Cílem je vytvořit kompletní sadu těchto nástrojů s jednotným rozhraním pro nastavení a testování všech komponent firmwaru Liberouteru. Funkce nutné ke směrování paketů poté přesuneme do knihovny libcombo, kterou využívá démon combod pro řízení nanoprocesorů a uložení aktuálních směrovacích a filtrovacích pravidel na kartu COMBO6.

Formální verifikace

V oblasti formální verifikace jsme se zaměřili na ověření správnosti VHDL designu komponenty TX_BUFFER a generických komponent synchronních a asynchronních front FIFO a FIFO BRAM. Verifikace bloku TX_BUFFER potvrdila správnost příslušných VHDL programů vzhledem k nemožnosti přetečení bufferu. Formulace temporálních vlastností umožnila navíc upřesnění chování některých signálů a upřesnění předpokladů nezbytných ke správné činnosti bloku.

Verifikace parametrizované fronty FIFO BRAM vedla pro více než 5bitový adresní prostor ke kritické stavové expanzi. Správnost fronty byla tedy ověřována zjednodušením designu na 5bitový adresní prostor. Výsledky vedly k nalezení chyb v designu, které byly díky verifikaci lokalizovány a opraveny. Jednalo se o řízení signálu LSTBLK ohlašujícího poslední volný blok fronty. Nové verze designu jsme podrobili verifikaci vzhledem ke stejným vlastnostem, jako původní verze. Možnost znovupoužití formální specifikace byla u komponenty FIFO BRAM využita poprvé, a její výsledky umožnily rychle lokalizovat a odstranit nově zanesené chyby.

Přesné výsledky výše uvedených verifikací, včetně historie verifikací jednotlivých verzí komponent, jsou zveřejněny na stránkách projektu Liberouter v sekci formální verifikace.

Konfigurační systém Netopeer

Součástí projektu Liberouter je také konfigurační systém Netopeer, který má umožnit konzistentní konfiguraci směrovačů či jiných síťových zařízení. Pro vnitřní reprezentaci konfigurací používá Netopeer jazyk XML.

V roce 2005 jsme se soustředili na dokončení textového uživatelského rozhraní. Toto rozhraní, založené na knihovně ncurses, má již v současné době všechny požadované funkce a probíhá jeho testování.

Jako prostředek pro přenos konfigurace do síťového zařízení a hlášení případných chyb v opačném směru jsme zvolili protokol netconf, který je vyvíjen v rámci IETF. Software vyvinutý jako součást diplomové práce [Zlo05] je jednou z prvních implementací tohoto protokolu.

Dále pokračoval vývoj metakonfigurační aplikace [Mat05], která umožňuje konfigurovat celé sítě na vyšší úrovni abstrakce a automaticky připravovat konfigurace jednotlivých směrovačů v jazyku Netopeer. Vytvořili jsme též modul pro grafické znázornění sítě ve formátu SVG.

Koncem roku 2005 jsme zahájili práce na přizpůsobení systému Netopeer pro konfiguraci sondy Netflow, viz oddíl. Na základě specifikace předpokládaných funkcí hardwaru i softwaru sondy jsme vytvořili odpovídající XML schéma a upravili textové rozhraní. Nyní zbývá vytvořit back-end, který konfiguraci v jazyku Netopeer zpracuje a nastaví podle ní sondu Netflow.

4.4   Adaptér SCAMPI

Cílem evropského projektu SCAMPI v rámci 5. rámcového programu IST bylo vyvinout adaptér pro monitorování vysokorychlostních sítí s přenosovou kapacitou 10 Gb/s a vyšší. Na těchto rychlostech již není možné monitorovat vstupní datové toky pomocí konvenčních počítačů se síťovým rozhraním (úzké hrdlo tvoří především propustnost sběrnice mezi procesorem a síťovým rozhraním). V rámci vývoje adaptéru SCAMPI byla proto rozdělena funkce monitorovacího systému mezi software (běžící na konvenčním počítači) a specializovaný hardware (v podobě karet rodiny COMBO6), který zpracovává výkonově náročné části s využitím technologie FPGA.

V rámci projektu SCAMPI bylo úlohou našeho týmu především navrhnout a implementovat firmware monitorovacího systému a nízkoúrovňový software pro komunikaci s kartou COMBO6. Pro podporu projektu jsme navíc vyvinuli a oživili specializovanou kartu COMBO-PTM fungující jako zdroj přesných časových značek (použito pro účely statistik).

4.4.1   Firmware

Úlohou firmwaru v projektu SCAMPI bylo zajistit příjem paketu ze vstupního rozhraní, přiřadit paketu přesnou časovou značku a dále jej analyzovat a klasifikovat podle požadavků uživatelské aplikace. Dále byly požadovány tyto funkce: možnost sběru statistik, filtrování/vzorkování paketů a detekce specifických posloupností znaků v datovém obsahu paketu.

Na základě požadavků jsme navrhli firmware, který podporuje sběr až 256 různých statistik založených na délce paketu nebo časovém intervalu mezi pakety. K dispozici je též 16 vzorkovacích jednotek, které lze nakonfigurovat pro následující režimy vzorkování:

Firmware je díky použité asociativní paměti schopen detekovat až 512 různých vzorků při rychlosti 3,2 Gb/s.

Vývoj firmware jsme rozdělili do dvou fází. V první fázi jsme navrhli a implementovali verzi monitorovacího adaptéru pro rychlost 1 Gb/s. Podrobnější popis této verze je k dispozici v závěrečné zprávě z roku 2004.

Druhá fáze byla zaměřena na vývoj monitorovací adaptéru pro rychlost 10 Gb/s. Z důvodu vysoké propustnosti bylo potřeba rozdělit vstupní datový tok do několika cest, použít zcela jiné vstupní buffery, replikovat některé komponenty (HFE, FIFO) a rozdělit návrh mezi kartu COMBO6 a přídavnou kartu. Oproti designu první fáze, jsme navíc použili nové výkonnější moduly pro výpočet kontrolního součtu, vypracovali obecnější systém komunikačních sběrnic na čipu a implementovali mnoho dalších vylepšení. Architektura monitorovacího adaptéru pro 10 Gb/s je znázorněna na obrázku.

[Obrázek]

Obrázek 4.10: Architektura monitorovacího adaptéru pro 10 Gb/s (větší obrázek)

Činnost adaptéru lze shrnout do následujících bodů

  1. Na vstup adaptéru přicházejí data rychlostí 10 Gb/s standardním rozhraním XGMII. Ve vstupním bufferu (IBUF) je ověřen jejich kontrolní součet a celkový datový tok je rozdělen do čtyř menších toků o rychlosti 2,5 Gb/s. Ke každému paketu je navíc připojena přesná časová značka získaná z jednotky přesného času (TSU).
  2. Vstupní pakety jsou v dalším kroku analyzovány pomocí čtyř HFE procesorů konstruovaných speciálně pro účely analýzy datový toků na vysokých rychlostech. Výsledkem analýzy je pevná datová struktura (Unified Header, UH) sloužící pro klasifikaci datového toku.
  3. V dalším kroku probíhá proces klasifikace, kde jsou jednotlivé pakety rozdělovány do skupin na základě požadavků uživatele systému. Pro akceleraci tohoto procesu jsme použili specializovaný procesor (LUP), využívající rychlé asociativní paměti CAM.
  4. Na základě klasifikace paketu jsou v jednotce STU aktualizovány statistické informace založené na délce paketu a jeho časové značce. V závislosti na nastavení systému mohou být dále pakety určených toků vzorkovány jednotkou SAU (pro další analýzu v softwaru). V poslední fázi je možné vybrané datové toky prohledat jednotkou PCK, zda neobsahují výskyt vybraných řetězců.
  5. Pakety, které je třeba z určitého důvodu analyzovat v softwaru, jsou odesílány z vyrovnávací paměti (PFIFO) přes Dispatcher do jednotky OBUF, kde čekají na odeslání do paměti počítače po sběrnici PCI.

4.4.2   Systémový software

Systémový software pro projekt SCAMPI se skládá z ovladačů pro komunikaci s kartou COMBO6 a knihovny pro transformaci vstupních konfigurací monitorovacího systému do její reprezentace pro hardwarovou úroveň.

Ovladače poskytují nízkoúrovňový přístup do interních registrů, pamětí a čítačů COMBO6. Architekturu nástrojů pro klasifikaci paketů (původně vyvinutou pro projekt Liberouter) jsme zobecnili a doplnili o podporu pro statistickou (STU), vzorkovací (SAU) a vyhledávací (PCK) jednotku.

Komunikace mezi aplikacemi na uživatelské úrovni a monitorovacím systémem probíhá prostřednictvím aplikačního programového rozhraní MAPI vyvinutého též v rámci projektu SCAMPI. Toto rozhraní pak dále používá námi vyvinutou knihovnu Scampidump sloužící ke zpracování a zavedení monitorovacích pravidel do adaptéru. Scampidump přijímá pravidla vyjádřená v podmnožině syntaxe Berkeley Packet Filter (BPF). Pravidla jsou analyzována, převedena do formy nanoprogramu pro klasifikační jednotku LUP a nahrána do karty COMBO6.

4.5   Sonda IDS

Úkolem projektu IDS je vyvinout zařízení pro detekci nebezpečného síťového provozu (NIDS - Network intrusion detection system). NIDS jsou systémy, které se na základě analýzy hlaviček a vyhledávání vzorů v tělech paketů snaží odhalit potenciální útok, šíření virů nebo případně detekovat, že síť opouštějí důvěrná data. O možném útoku mohou informovat administrátora nebo systém, který může na útok reagovat a zabránit mu již v počáteční fázi. Právě vyhledávání řetězců a regulárních výrazů je kritickou operací, kterou musí NIDS řešit. Stávající softwarová řešeni se sekvenčním zpracováním, např. běžně používaný program Snort, dosahují v závislosti na výkonu použitého procesoru propustnosti maximálně v řádu stovek Mb/s. Taková propustnost je však pro multigigabitové sítě nedostatečná.

V posledních letech v této oblasti probíhá intenzivní výzkum a vzniklo několik přístupů na bázi FPGA pro rychlé vyhledávání řetězců a regulárních výrazů. Nejlepších výsledků dosahuje přístup na bázi nedeterministických konečných automatů (NFA) [ClS04]. Jeho principem je vytvoření NFA pro všechny vyhledávané řetězce a regulární výrazy. NFA je pak možné převést na ekvivalentní hardwarovou reprezentaci, viz obrázek. Stavy jsou nahrazeny registry a přechody logickými členy AND a OR.

[Obrázek]

Obrázek 4.11: Hardwarová reprezentace nedeterministického konečného automatu pro vyhledávání regulárních výrazů

Při použití nedeterministického automatu, který přijímá jeden znak v jednom taktu hodin, je možné dosáhnout při frekvenci 100 Mhz propustnosti až 800 Mb/s. Netriviální transformací NFA na rozšířený automat, který přijímá k znaků v jednom hodinovém cyklu, lze propustnost k-krát zvýšit a dosáhnout hodnoty jednotek až desítek Gb/s. Limitujícím faktorem pro dosažení propustnosti v řádu desítek Gb/s je velikost čipu. Je proto nutné hledat optimalizace, které umožní umístit celou databázi typu pravidel programu Snort na jeden čip i pro takto vysoké propustnosti.

V rámci projektu jsme na základě statistické analýzy databáze pravidel systému Snort identifikovali možné směry dalšího vývoje a výzkumu v této oblasti. Největší důraz bude kladen na optimalizaci hardwarové reprezentace rozšířeného NFA s ohledem na kapacitu čipu, což nám umožní do jednoho čipu vložit větší množinu řetězců a regulárních výrazů a zároveň zvýšit celkovou propustnost systému. V současné době jsme začali pracovat na prvním prototypu NIDS, který bude implementován na nových kartách COMBO6X a COMBO-4SFPRO.

4.6   Paketový generátor

Cílem projektu Paketový generátor (PAGEN) je tvorba výkonného paketového generátoru vybaveného aparátem pro generování přesných časových značek. Navržená architektura je schopna generovat hlavičky a data paketů dle nastavení uživatele a odesílat je s různým časovým rozložením nebo v přesný časový okamžik. Časové značky jsou generovány s přesností 32 ns. Navrhovaná propustnost je 10 Gb/s. Projekt je primárně navržen k implementaci na kartách COMBO6X, resp. COMBO6E vzhledem k vysoké propustnosti sběrnic PCI-X a PCI Express. Druhá čast designu zajišťující generování přesných časových značek je implementována na kartě COMBO-PTM.

Architekturu jsme navrhli tak, aby zařízení mohlo mimo jiné sloužit jako analyzátor propustnosti počítačové sítě mezi jednotlivými uzly. Na obrázku vidíme několik serverů vybavených paketovým generátorem a umístěných v analyzovaných uzlech. Tyto servery jsou zapojeny do smyčky a pomocí speciálního protokolu mají vzájemně synchronizovaný čas. Vznikne-li na některém uzlu požadavek na analýzu propustnosti, vygeneruje tento uzel speciální paket, k němuž je připojena časová značka značící čas odeslání. Jednotlivé uzly postupně připojují přesné časy, kdy paket obdržely a odeslaly, a svůj jedinečný identifikátor. Po návratu paketu provede odesílající server analýzu připojených značek.

[Obrázek]

Obrázek 4.12: Využití PAGENu jako analyzátoru propustnosti sítě

Projekt Paketový generátor je rozdělen do dvou fází. Firmware první fáze je navržen k odesílání ethernetových rámců generovaných softwarem v přesný časový okamžik na základě časové značky, a to s propustností 1 Gb/s. Architektura firmwaru je znázorněna na obrázku.

[Obrázek]

Obrázek 4.13: Architektura Paketového generátoru (fáze 1)

Zobrazené komponenty mají následující funkce:

Packet Memory (PM)
slouží k ukládání rámců generovaných softwarem. Její obsah může být měněn kdykoli za běhu prostřednictvím sběrnice PCI.
Time Stamp Unit (TSU)
zajišťuje generování přesných časových značek šířky 64 bitů s přesností až 32 ns. Její hlavní část se nachází na kartě COMBO-PTM, která je vybavena přesným krystalem (2 ppm).
Packet Sending Scheduler (PSS)
slouží jako plánovač pro odesílání rámců. Software zde ukládá záznamy, kdy má být který rámec odeslán.
Packet Sending Controller (PSC)
zajišťuje odesílání rámců z PM na základě času uloženého v PSS a přesné časové značky generované TSU. PSC provádí generování Preambule, Starting Delimiteru, Ending Delimiteru a FCS.

Software první fáze je navržen jako skriptovací jazyk řídící generování dat rámců a jejich ukládání do PM a dále vkládání záznamů do PSS.

Druhá fáze vývoje je zaměřena na plnohodnotný paketový generátor a editor s cílovou propustností 10 Gb/s. Firmware druhé fáze je rozdělen do dvou částí. Část zajišťující generování (Generator Part) bude schopna generovat L2/L3/L4 hlavičky i data rámce na základě uživatelem specifikovaných pravidel (např náhodně generované hodnoty podle daného rozložení, vzorky dat a další). Jako generátor a editor bude použit vysoce výkonný proudový procesor vybavený univerzálním procesorovým jádrem GENA, vyvinutým v rámci aktivity Programovatelný hardware. Druhá část (Output Part) zajišťuje odesílaní rámců v intervalech generovaných podle různých rozložení (normální, exponenciální a další). Architektura firmwaru je znázorněna na obrázku.

[Obrázek]

Obrázek 4.14: Architektura Paketového generátoru (fáze 2) (větší obrázek)

Software druhé fáze je rovněž navržen jako skriptovací jazyk, který bude sloužit k popisu pravidel pro generování a odesílání rámců (tzv. šablon). Software na základě skriptu zajistí volbu vhodné množiny nanoprogramů, které budou vykonávány výše zmíněným proudovým procesorem, a vygenerování správných šablon. Jako nadstavbu nad skriptovacím jazykem zvažujeme uživatelsky intuitivní a jednoduchou aplikaci usnadňující uživateli obsluhu paketového generátoru.

Projekt PAGEN ja na samém počátku. V současné době je hotova specifikace, dokončena jednotka přesného času (Time Stamp Unit) a navržena architektura proudového procesoru.

 

Poznámky:

  1. Z důvodu ochrany citlivých dat jsou všechny IP adresy rozmazány.

předchozí
obsah
následující
další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz