4 Programovatelný hardware
Aktivita Programovatelný hardware se zabývá vývojem specializovaných síťových zařízení s hardwarově akcelerovanými funkcemi, zejména pro monitorování vysokorychlostních sítí.
Vzhledem k tomu, že výzkumný záměr končí, zaměřili jsme se v roce 2010 především na konsolidaci a dokumentaci hlavních výsledků, aby je bylo možné bez větších potíží nadále využívat a rozvíjet i s obměněným pracovním týmem.
Dvěma přírůstky do rodiny karet COMBO byly v roce 2010 karty rozhraní COMBOL-1G4 a COMBOIs-1G4, obě se čtyřmi gigabitovými porty, které umožňují především zvýšit počet portů připojených na jednu mateřskou kartu COMBO-LXT. Počátkem roku jsme také dokončili oživování karty COMBO-10G4TXT a tuto kartu pak použili k experimentům s přenosy 40 Gb/s na čtyřech nezávislých kanálech 10 Gb/s.
Novou síťovou aplikací vzniklou v roce 2010 je HAMOC – Hardwarově akcelerované monitorovací centrum. Podstatou hardwarové akcelerace je u něj firmware HANIC, který je vlastně dvouportovou síťovou kartou, navíc ale pro každý příchozí paket počítá hodnotu rozptylovací funkce (hash) na základě zvolených hlavičkových polí (číslo vstupního rozhraní, verze IP, zdrojová a cílová IP adresa, zdrojový a cílový port, protokol). Podle hodnoty hash se paket distribuuje nově vyvinutými generickými DMA řadiči do jednoho ze 16 generických DMA kanálů (resp. osmi, pokud jsou povolené jumbo frames). Tímto způsobem je možné příchozí provoz např. rozdělit ke zpracování na více procesorových jader, přičemž pakety patřící stejnému toku jsou zpracovávány stále stejným jádrem. Tato strategie hardwarové akcelerace se blíží výkonem specializovaným firmwarům, je ale navíc velmi pružná – umožňuje použít standardní softwarové aplikace a výrazně zvýšit jejich výkon. HAMOC je popsán v technické zprávě [Cel10] a byl vyzkoušen i s reálným provozem na desetigigabitové lince do NIX.CZ.
Sondu FlowMon pro monitorování IP toků jsme vyvíjeli v několika etapách od roku 2004. V současnosti jsou pro nasazení na linkách s rychlostmi 10 Gb/s připraveny dvě verze sondy FlowMon:
- FlowMon Light je jednodušší verze, která v hardwaru pouze analyzuje hlavičky paketů a počítá z nich hodnotu rozptylovací funkce, jež je pak v softwaru použita pro zařazení paketu do příslušného toku. Propustnost této verze je přibližně 17,5 milionu paketů za sekundu.
- FlowMon Full uchovává záznamy o tocích v hardwaru a je schopna zpracovat provoz ze dvou plně zatížených portů 10GbE bez ohledu na velikost paketů, tedy dosáhnout propustnosti 30 Mpkt/s.
Obě verze FlowMon mohou paketům přidělovat přesné časové značky a počítat časové statistiky jednotlivých toků.
Poslední hardwarově akcelerovanou aplikací je bezstavový firewall NIFIC, který umožňuje filtrovat pakety na lince podle stanovených pravidel. V roce 2010 jsme doplnili možnost základní filtrace provozu IPv6 a také filtrace podle značek VLAN a MPLS. V současnosti dokončujeme novou verzi NIFIC, která poskytuje možnost filtrace podle prefixů IPv6 libovolné délky a výrazně zvětšuje počet adres (IPv4 i IPv6), podle nichž je možno provoz filtrovat.
Všechna námi vyvinutá zařízení lze vzdáleně konfigurovat pomocí naší vlastní implementace protokolu NETCONF. Během několika posledních let jsme se v rámci Internet Engineering Task Force (IETF) aktivně zapojili do vývoje tohoto protokolu v pracovních skupinách NETCONF a NETMOD.
Zbytek této kapitoly je věnován detailnějšímu technickému popisu hlavních výsledků aktivity.
4.1 Rodina karet COMBO
V roce 2010 jsme se zaměřili na plné oživení a portaci firmware na kartu COMBOI-10G4TXT. Vzhledem ke špatné dostupnosti čipů AEL 2005 jsme upravili kartu na použití čipů Vitesse 8486. Karta COMBOI-10G4TXT byla použita na prvotní testy 40Gb Ethernetu, viz [FNL10].
Dále jsme se zaměřili na návrh a oživení rozšiřující karty COMBOL-1G4 a karty rozhraní COMBOIs-1G4.
Karta COMBOL-1G4 (obrázek 4.1) je samostatná karta rozhraní 4×1GbE. Je určena pro aplikace, které nevyžadují pro zpracování počítač třídy PC, případně pro rozšíření počtu portů karty COMBO-LXT. S kartou COMBO-LXT může být propojena pomocí jednoho nebo dvou konektorů LSC s přenosovou rychlostí až 20 Gb/s. Karta COMBOL-1G4 je napájena buď z karty COMBO-LXT anebo ze zdroje 12V kompatibilního s počítači PC. Karta je dále vybavena rozšiřujícím konektorem IFCs (IFC short) pro připojení dalších rozhraní (4×1 Gb/s nebo 1×10 Gb/s), hradlovým polem VIRTEX XC5VLX50T a pamětí QDR.
![[Obrázek]](img/combol-1g4_front.jpg)
Obrázek 4.1. Karta COMBOL-1G4
Karta COMBOIs-1G4 (obrázek 4.2) je určena pro rozšíření karty COMBOI-10G4 nebo COMBOL-1G4 o další čtyři 1GbE porty.
![[Obrázek]](img/combol_is-front.jpg)
Obrázek 4.2. Karta COMBOIs-1G4
Obě karty COMBOL-1G4 a COMBOIs-1G4 jsou tedy určeny k rozšíření počtu portů karet COMBO-LXT. V maximální variantě při použití karet COMBO-LXT, COMBOI-10G4TXT, 4 karet COMBOL-1G4 a 5 karet COMBOIs-1G4 je k dispozici sestava se čtyřmi 10GbE a 36 1GbE porty. Praktické využití této sestavy může narazit na různá omezení, uvedený příklad ale demonstruje variabilitu rodiny karet COMBO verze 2.
4.2 NetCOPE
Projekt NetCOPE v roce 2010 sloužil především jako podpora ostatním projektům. Stávající sběrnice uvnitř FPGA čipu nazvané ICS (InterConnection System) jsme nahradili jednodušší a obecnější variantou GICS (Generic InterConnection System). Přínosem tohoto kroku je jednodušší sestavování a úprava firmwaru a také snazší dosažení vysokých pracovních frekvencí. Např. firmware NIC (Network Interface Card) pracuje stabilně na 200 MHz a díky tomu dosahuje propustnosti okolo 12 Gb/s ve směru ze sítě do operační paměti PC.
Dalším příspěvkem ke zrychlování firmware je použití tzv. partitions. Jde o technologii firmy Xilinx umožňující zachovat vybrané nejnáročnější části firmware v odděleném souboru. Při příštím překladu se tyto části znovu využijí beze změny, tedy včetně zachování již jednou splněných požadavků na frekvenci.
Hlavním výsledkem projektu NetCOPE v roce 2010 je vývoj a integrace generického DMA modulu. Tento firmwarový modul se stará o vysokorychlostní přenos (nejen paketových) dat mezi operační pamětí počítače a FPGA. Dosavadní implementace DMA modulů byla prakticky použitelná nejvýše pro čtyři obousměrné DMA kanály, protože s každým kanálem docházelo k replikaci řídicí logiky, a tedy k nadměrnému využití zdrojů FPGA. Nový generický DMA modul je mnohem lépe škálovatelný a umožňuje bez větších obtíží použít větší množství nezávislých DMA kanálů. Navíc podporuje možnost nestejného počtu přijímacích a vysílacích kanálů. Zatím byly v FPGA testovány varianty až do 16 přijímacích a 2 vysílacích kanálů, předpokládáme ale možnost použití i 32 kanálů pro příjem paketů ze sítě.
Použití většího počtu DMA kanálů má přímou vazbu na využití více procesorových jader moderních PC. Každé jádro může obsluhovat jeden DMA kanál, a tím dochází k razantnímu nárůstu výkonu u úloh, kde rychlost softwarového zpracování brzdí celý systém. O tomto tématu vznikla samostatná technická zpráva [PDM10].
Mezi další změny patří:
- Rozšíření podpory tzv. jumbo rámců, tedy paketů delších než 1518 B. Zatímco dosud NetCOPE podporoval pakety do délky 4 kB, letos jsme rozšířili podporu pro pakety až do délky 16 kB.
- Využití vestavěných bloků v FPGA pro výpočet CRC na 10GbE rozhraní. Tato změna snižuje množství využité logiky na čipu FPGA.
- Plná podpora 64bitového OS Linux.
4.3 HANIC
Hardwarově akcelerovaná síťová karta (HANIC) vznikla jako nový projekt v roce 2010 v rámci řešení úkolu distribuce síťového provozu na více jader. Její hlavní vlastností je schopnost distribuovat příchozí provoz do více DMA kanálů, kde každý kanál může být obsluhován samostatným CPU. Algoritmus distribuce je založen na výpočtu kontrolního součtu CRC z volitelných položek hlavičky paketu, kde výsledek CRC slouží přímo jako číslo DMA kanálu, kterým je paket poslán ke zpracování do PC. Aktuální implementace podporuje výpočet CRC z následujících položek hlavičky paketu:
- číslo vstupního portu,
- verze IP protokolu,
- zdrojová a cílová IP adresa (IPv4 i IPv6),
- L4 protokol,
- porty (pro TCP a UDP).
Jelikož výše uvedené položky jednoznačně identifikují síťový tok (flow), při distribuci je zaručeno, že všechny pakety příslušející do jednoho síťového toku budou odeslány stejným DMA kanálem a mohou tedy být zpracovány na jednom CPU. Tato vlastnost je velmi důležitá pro aplikace pracující nad síťovými toky, jako je například monitorování založené na NetFlow.
Kromě vlastní distribuce HANIC umožňuje:
- přidat k paketu přesnou časovou značku,
- ořezat paket na zvolenou délku,
- vzorkovat příchozí pakety 1:N,
- zpracovat jumbo pakety do velikosti 16 KB,
- propustnost do software přes 10 Gbps.
Firmware HANIC pro kartu COMBOv2-LXT155 a COMBOv2-10G2 byl implementován nad platformou NetCOPE s využitím jejích nových vlastností, jako jsou generické vícekanálové DMA řadiče a systém sběrnic GICS. Při implementaci aplikačního jádra HANIC jsme využili již vyvinuté jednotky z projektu NIFIC a FlowMon a výrazně tak zkrátili dobu vývoje. Zjednodušené schéma hardwarové architektury HANIC je na obrázku 4.3.
![[Obrázek]](img/hnic-scheme.png)
Obrázek 4.3. Hardwarová architektura HANIC (větší obrázek)
K příchozím paketům ze síťového modulu jsou přidány přesné časové značky, pakety jsou vzorkovány a dále pokračují do jednotky pro extrakci hlaviček (HFE), kde jsou extrahovány žádané položky z hlavičky paketu. Celý paket je uložen do paketového bufferu a extrahovaná data z hlavičky paketu pokračují do jednotky HASH, kde je nad nimi spočítán kontrolní součet CRC. Výsledek CRC – číslo kanálu – je pak v jednotce Header Insert přidán k paketu. Dále jsou pakety oříznuty na zvolenou délku, ze dvou procesních linek se sloučí do jedné a následně jsou odeslány do DMA modulu, kde jsou na základě CRC distribuovány do příslušných kanálů. Současná implementace umožňuje distribuci do 8 kanálů s podporou jumbo rámců nebo do 16 kanálů bez této podpory. HANIC je ovšem snadno škálovatelný pro libovolný počet DMA kanálů a jediným limitem tak je množství zdrojů na FPGA čipu.
HANIC na straně hostitelského PC plně využívá softwarové vybavení platformy NetCOPE, jako jsou ovladač a knihovna SZE2. Uživatel má pro zpracování příchozího provozu k dispozici stejný počet SZE2 rozhraní jako je počet kanálů ve firmware (8 nebo 16). Jelikož mechanismus pro přístup k datům je již součástí NetCOPE, byl implementován pouze konfigurační nástroj hanicctl, který umožňuje jednoduše nastavovat všechny vlastnosti síťové karty HANIC.
Síťová karta HANIC prošla důkladným testováním a na konci roku 2010 je dostupná jako stabilní balíček pro operační systém CentOS 5.
4.4 NIFIC
Síťová karta s hardwarovou filtrací paketů – paketový filtr (NIFIC) – slouží ke zpracování síťových toků plnou rychlostí linky bez ztráty paketu. Architekturu paketového filtru NIFIC lze využít například jako bezstavový firewall, nástroj pro sledování vybraného datového toku, inteligentní rozbočovač atp.
Paketový filtr NIFIC byl navržen pro rodinu karet COMBOv2 a je implementován nad platformou NetCOPE. Architektura plně využívá potenciál výkonných FPGA osazených na kartách COMBOv2 a je navržena pro filtraci nejenom gigabitové, ale především desetigigabitové a výhledově čtyřicetigigabitové linky bez ztráty paketu. Bližší popis paketového filtru NIFIC je dispozici v technické zprávě [PD08].
Na konci roku 2009 jsme vydali balík 3.2.0 pro 32bitový CENTOS 5. Jeho největší slabinou byla chybějící klasifikace podle IPv6 adres. Během roku 2010 jsme se tedy soustředili na implementaci této vlastnosti do firmware a software NIFICu. Kromě samotného rozšíření jsme se věnovali i odladění balíku 3.2.0 a jeho portování na 64bitový CENTOS 5. Balík 3.2.0 byl odladěn a rozšířen o podporu karty COMBOL-1G4. Ve verzi 3.3.0 je nasazen jako firewall na vstupním bodu do sítě vývojových serverů aktivity. Balík je klasifikován jako stabilní a je dostupný v našem úložišti.
Implementace podpory IPv6 do paketového filtru NIFIC včetně použitých algoritmů je podrobně popsána v technické zprávě [DK10]. Rozdělili jsme ji do dvou fází: V první fázi jsme pro klasifikaci podle IPv6 adres a prefixů využili již implementované jednotky z klasifikačního jádra NIFIC. Rychlost implementace byla ovšem vykoupena nízkým počtem podporovaných IPv6 adres (max. 128 adres) a podporou prefixů pouze do délky 64 (tj. horních 64 bitů adresy). Dále byla z důvodů úspory místa na FPGA čipu vynechána podpora klasifikace podle MAC adres. Kromě podpory IPv6 adres jsme implementovali také podporu klasifikace podle značek VLAN a MPLS a zvýšili propustnost pro příjem a odesílání z a do software hostitelského PC. Tyto úpravy si vyžádaly nezanedbatelné zásahy do firmwarové architektury i konfiguračního software. Pozměněnou firmwarovou architekturu klasifikace a konfigurační software jsme následně úspěšně odladili ve verifikacích.
Popsaná pozměněná klasifikace byla spolu s dalšími vylepšeními vydána jako balíček NIFICu verze 4.0.0. Balíček byl testován komplexními automatizovanými testy správnosti klasifikace a na základě jejich úspěšného splnění je dostupný jako stabilní v RPM úložišti. Jeho hlavní vlastnosti jsou:
- Klasifikace podle čísla vstupního rozhraní, VLAN identifikátoru, zdrojové a cílové IP adresy (v4 i v6), protokolu L4, portů (TCP, UDP) a TCP příznaků.
- Propustnost do software přes 10 Gb/s.
- Přesné časové značky pro pakety přesměrované do software.
- Přepnutí pravidel bez ztráty paketu.
- Zjednodušené a zrychlené odesílání ze software hostitelského stroje do sítě, cesta neprochází klasifikací.
- Čítače počtu paketů a bajtů odpovídající danému pravidlu.
Ve druhé fázi implementace podpory IPv6 adres jsme se změřili na zvýšení počtu unikátních IPv6 i IPv4 adres v pravidlech filtru. Pro toto zvýšení bylo nutné kompletně přepracovat stávají implementaci vyhledávání nejdelšího prefixu (2. krok algoritmu klasifikace) pro IP adresy. V technické zprávě [DK10] jsme popsali nový algoritmus pro vyhledání nejdelšího prefixu (LPM) pro IP adresy a jeho implementaci. Nově navržený algoritmus je založen na rychlém vyhledání pomocí rozptylovací funkce a algoritmu treebitmap. Algoritmus a jeho implementace umožňuje díky zřetězení procesních jednotek zpracovat jednu IP adresu v každém taktu a pro frekvenci 156 MHz tak dosahuje propustnosti 100 Gb/s při podpoře řádově tisíců IP adres verze 4 i 6. Algoritmus a jeho implementace jsou tedy vhodné nejenom pro současný NIFIC, ale i pro jeho případné nové generace pro 40 a 100 Gb/s sítě.
Kromě nové implementace algoritmu LPM pro IP adresy bylo nutné přepracovat i stávající implementaci jednotky výstupní části klasifikace (4. krok klasifikačního algoritmu), kde jsou vybrané položky z hlavičky paketu porovnávány s aktuálním pravidlem. V původní implementaci jsou pro tabulku pravidel použity blokové paměti (BRAM) na čipu FPGA, s nimiž však maximální počet pravidel dosahuje pouze 2048. Pro podporu 10 000 a více pravidel bylo nutné tabulku pravidel přesunout do externí paměti QDRII SRAM a jednotku znovu kompletně implementovat.
Obě zmiňované nové jednotky jsme implementovali a odladili v simulacích a zapojili do hardwarové architektury NIFICu. Kromě samotné hardwarové implementace bylo nutné upravit a rozšířit i konfigurační software. Implementace konfiguračního software však není ještě vzhledem ke své komplexnosti hotová, po jejím dokončení bude však možné odladit celou klasifikaci ve verifikacích a připravit balíček NIFIC 4.1.0, kde kromě zmíněných vylepšení klasifikace budou použity i nové vlastnosti platformy NetCOPE, jako jsou například generické DMA řadiče. Předpokládaný balíček NIFIC 4.1.0 bude mít navíc oproti NIFIC 4.0.0 tyto vlastnosti:
- Podpora až 10 000 pravidel s unikátními IPv4 nebo IPv6 adresami.
- Distribuce paketů směřujících do software do více DMA kanálů na základě pravidel. Podporováno bude také kopírovaní jednoho paketu do více kanálů.
4.5 HAMOC – hardwarově akcelerované monitorovací centrum
Sledování provozu ve vysokorychlostních sítích s přenosovou rychlostí 10 Gb/s a vyšší za pomoci tradičních softwarově orientovaných přístupů založených na standardních síťových kartách je omezeno z pohledu dosažitelného výkonu. V důsledku toho řada monitorovacích systémů vyžaduje nestandardní úpravy použitého programového vybavení, aby bylo možné zlepšit jejich stabilitu a výkon. Hardwarová akcelerace monitorovacího procesu umožňuje překonat výkonnostní limity čistě softwarového řešení a garantovat stabilitu měření pro libovolné zatížení sítě. Ne vždy je však její použití snadné, což může mnohé uživatele odradit od jejího nasazení.
Cílem prototypu hardwarově akcelerovaného monitorovacího centra (HAMOC) bylo vytvořit platformu pro bezztrátové měření síťového provozu ve vysokorychlostních sítích. Měřicí platforma HAMOC je založena na kartách z rodiny COMBOv2, pro které byl vytvořen firmware a software umožňující použití obecně uznávaných nástrojů pro sledování síťového provozu. Vložená vrstva hardwarové akcelerace je pro uživatele plně transparentní. Uživatel využívá stávající nástroje, na něž je zvyklý, např. paketové analyzátory Wireshark či tcpdump, které pracují s hardwarově předzpracovanými daty.
![[Obrázek]](img/hamoc-architektura.png)
Obrázek 4.4. Architektura hardwarově akcelerovaného monitorovacího centra (větší obrázek)
Obrázek 4.4 zobrazuje architekturu monitorovacího centra. Mateřská karta COMBO-LXT155 je osazena kartou rozhraní COMBOI-10G2 pro sledování provozu na dvou 10 Gb/s linkách. Karta je nainstalována do 2U serveru speciálně sestaveného pro použití s COMBOv2 kartami na měřicích bodech v síti CESNET2. Použití technologie hradlových polí (FPGA – Field-Programmable Gate Array) umožňuje měnit firmware karty a přizpůsobovat v čase funkci měřicího systému. Základním firmwarem je síťová karta s rychlými datovými přenosy do paměti hostitelského počítače. Softwarové rozhraní SZE (Straight ZEro copy) karet COMBOv2 bylo nutné doplnit do knihovny libpcap. Knihovna libpcap tvoří základ pro většinu dnes používaných monitorovacích aplikací. Díky tomu platforma HAMOC podporuje aplikace pro
- zachytávání a analýzu paketů – tcpdump, Wireshark, TShark,
- odesílání paketů – Tcpreplay,
- vyhledávání vzorů – Snort, Bro, ngrep,
- generování NetFlow/IPFIX toků – FlowMon, nProbe.
Dílčím cílem platformy HAMOC bylo nejen zajistit bezztrátové měření, ale zároveň mít možnost provozovat několik monitorovacích aplikací současně viz obrázek 4.5. Tohoto stavu je dosaženo použitím speciálního firmwaru HANIC (viz sekce 4.3), který umožňuje distribuci dat mezi jednotlivé procesory a jejich jádra na základě rozptylovací funkce (kontrolní součet CRC) zvolených hlavičkových polí paketu. Následně nad každým jádrem může běžet buď jedna instance stejného programu, např. systém pro detekci průniků Snort, nebo několik programů současně, např. export NetFlow/IPFIX dat a Snort.
![[Obrázek]](img/hamoc-aplikace.png)
Obrázek 4.5. Současné použití aplikací FlowMon, Snort a Wireshark pro sledování počítačové sítě
Detailní popis platformy HAMOC je uveden v [Cel10]. Zpráva hodnotí dosažený výkon měřicí platformy HAMOC a uvádí typické případy nasazení v praxi. Vytvořený prototyp byl ověřen laboratorními testy na splnění RFC 2544 pomocí hardwarového generátoru Spirent TestCenter 2000. HAMOC jsme také experimentálně nasadili na měřicích bodech v síti CESNET2. Prototyp je nyní způsobilý ke dlouhodobému sledování sítě pro potřeby administrátorů anebo bezpečnostních týmů.
4.6 Sonda FlowMon
Sonda FlowMon je dedikované zařízení pro sběr statistických dat o síťovém provozu. Analyzuje provoz na lince a získává informace k jednotlivým síťovým tokům. Informace asociované ke stejnému síťovému toku jsou v sondě agregovány do jednoho záznamu a posílány do sběrného místa (kolektoru) pomocí protokolu NetFlow nebo IPFIX. Cílem sondy je maximálně agregovat data o síťových tocích tak, aby se přenášely na kolektor jen malé objemy dat a kolektor nebyl zahlcen velkým počtem záznamů. Pro sondu je také důležité zajistit i dostatečnou propustnost tak, aby se neztrácely pakety a nebyla ovlivněna přesnost měření. Funkci sondy je možné modelovat do tří nezávislých procesů (viz obrázek 4.6):
![[Obrázek]](img/flow-mereni.png)
Obrázek 4.6. Model sondy FlowMon (větší obrázek)
- Zpracování paketů začíná přijetím paketu a přiřazením přesné časové značky. Následně jsou analyzovány hlavičky paketu a extrahovány informace, které slouží k identifikaci síťového toku nebo jsou potřeba pro vytváření statistik. Současně s extrakcí se provádí hledání regulárních výrazů s cílem rozpoznat k síťovým tokům konkrétní aplikační protokol.
- FlowCACHE slouží k agregaci záznamů. Pro každý paket se nejprve z FlowCACHE přečte odpovídající záznam a provede se aktualizace s využitím agregačních funkcí. Aktualizovaný záznam se pak uloží zpět na původní místo.
- Export záznamů na kolektor zajišťuje zabalení exportovaných dat do vhodného protokolu (IPFIX nebo NetFlow).
Již v minulém roce jsme vytvořili implementaci sondy založenou na výkonné akcelerační kartě COMBOv2 instalované v hostitelském počítači. V duchu myšlenky současného vývoje hardwarových a softwarových prostředků (tzv. kodesignu) byla nejprve na kartu přesunuta operace zpracování paketů, která zabírala nejvíce výpočetního času procesoru. Vznikla tak sonda s názvem FlowMon LT, jejíž vlastnosti charakterizuje obrázek 4.7.
![[Obrázek]](img/flowmon-lt.png)
Obrázek 4.7. Vlastnosti sondy FlowMon LT (větší obrázek)
Proces zpracování paketů byl akcelerován na kartě COMBOv2 tak, že dosahuje plné propustnosti bez ohledu na délku paketů. Po sběrnici PCI Express je však nutné přenášet ke každému paketu extrahované položky z hlaviček paketů. Tyto informace představují blok dat o velikosti, která přibližně odpovídá velikosti nejmenšího Ethernet rámce. Pro nejkratší rámce tak propustnost sběrnice přímo určuje maximální propustnost sondy. V případě FlowMon LT je tak omezena propustnost pro nejkratší pakety na 10 Gb/s, což odpovídá 15 milionům paketů za sekundu.
V letošním roce jsme sondu FlowMon LT rozšířili o možnost distribuce extrahovaných informací až na 32 jader s ohledem na lokalitu síťových toků. Dále jsme implementaci sondy rozšířili tak, aby podporovala jumbo pakety do velikosti 4 kB. Kromě detailní verifikace firmwaru jsme provedli i detailní testy sondy jak pomocí Spirent Test Centrum, tak i dlouhodobým nasazením v živé síti. Sonda byla schopna bez jakýchkoliv problémů sbírat po dobu několika měsíců data z měřicích bodů, které jsou nasazeny v síti CESNET. Kromě verifikací a testů jsme pro FlowMon LT také značně obohatili dokumentaci.
Problémem sondy FlowMon LT je nízká propustnost sběrnice PCI Express. V letošním roce jsme se proto zaměřili zejména na odladění sondy, která urychluje nejen operaci zpracování paketů, ale i agregaci záznamů ve FlowCACHE. Přesunutím FlowCACHE na kartu COMBOv2 jsou agregována data už na kartě, což snižuje počet přenosů po PCI Express sběrnici a umožňuje zvýšit výkon celé sondy. Velikost FlowCACHE na kartě je ale omezena kapacitou statických pamětí, což může pro zatížené linky s velkým počtem síťových toků způsobovat častý export záznamů a sekundárně i velké zatížení kolektoru. Aby byl redukován počet exportů, použili jsme na hostitelském počítači druhou úroveň agregace záznamů. FlowCACHE je tak rozdělena na primární cache umístěnou na kartě a sekundární cache vytvořenou v paměti hostitelského počítače. Vlastnosti sondy s FlowCACHE na kartě znázorňuje obrázek 4.8.
![[Obrázek]](img/flowmon-full.png)
Obrázek 4.8. Vlastnosti sondy FlowMon s FlowCACHE na kartě (větší obrázek)
Navrženou architekturu firmware se nám podařilo i přes velké zaplnění FPGA čipu odladit při vysoké frekvenci, což umožnilo zpracování paketů rychlostí linky a řízení FlowCACHE na kartě (20 Gb/s a 30 MPkt/s). Navíc díky možnosti agregovat záznamy přímo na kartě bylo možné dosáhnout významné redukce množství dat přenášených po sběrnici. Už pro agregační poměr 2:1 je zajištěna wire-speed propustnost na dvou 10Gb portech i pro nejkratší pakety. Kromě výkonnosti jsme odladili i stabilitu zařízení. Pro relativně komplexní firmware jsme vytvořili několik verifikačních prostředí, což umožnilo efektivně odstranit řadu chyb a připravit stabilní balíčky. Kromě verifikací byla provedena i řada testů zachycených vzorků síťového provozu i pomocí Spirent Test Centra. Sonda byla navíc nasazena po dobu několika týdnů na vytížené 10Gb lince, aniž by byly v průběhu měření zaznamenány sebemenší problémy. Obě verze FlowMon sond jsou dnes stabilní, dostupné v podobě balíčků a je možné je použít pro měření vytížených 10Gb linek.
4.7 Vzdálená konfigurace pomocí protokolu NETCONF
Hardwarově akcelerované aplikace na kartách COMBO využívají princip „hardwarově softwarového kodesignu“, jenž je založen na plánovitém rozložení funkcí dané aplikace mezi firmware a software. Vedlejším efektem tohoto jinak velmi užitečného postupu je komplikovanější konfigurace, neboť se aplikační funkce musí obvykle konfigurovat různými způsoby a v několika fázích. Sjednocení konfigurace, které je z hlediska běžného uživatele žádoucí, dosahujeme přidáním softwarové konfigurační vrstvy založené na standardním protokolu NETCONF [RFC4741].
Námi vyvinutá open source implementace protokolu NETCONF nese jméno Netopeer a je dostupná na Google Code. Tato implementace sice zahrnuje jen povinné součásti protokolu NETCONF, obsahuje ale navíc některé subsystémy, které jsou nezbytné pro integraci konfigurační vrstvy se systémovým softwarem našich zařízení – například k interní komunikaci mezi agentem NETCONF a systémovými nástroji využíváme protokol D-Bus.
Od roku 2007 se aktivně podílíme na vývoji protokolu NETCONF v pracovních skupinách NETCONF a NETMOD při IETF. Významnou měrou jsme přispěli zejména k vývoji standardů a nástrojů pro modelování konfiguračních dat v jazyce YANG [RFC6020]. Hlavním výsledkem naší práce v IETF je pak navrhovaný standard [LL10], který bude počátkem roku 2011 vydán jako RFC.
|
|
obsah |
následující
|