Grafická karta jako 10gigabitový směrovač

21. 3. 2012
Doba čtení: 6 minut

Sdílet

Na letošním InstallFestu proběhla také přednáška Radima Rošky a Morise Bangoury na téma 10G Ethernet switch a router na Linuxu. Protože se jednalo o velmi zajímavou a informacemi nabitou přednášku, rozhodli jsme se na jejím základě napsat samostatný článek. Kolik zvládne uroutovat grafická karta?

Informace z této přednášky měly být původně součástí včerejšího článku o InstallFestu. Nakonec se ale tato jedna pasáž rozrostla natolik, že jsme se rozhodli ji vyčlenit do samostatného článku. Nahrává tomu i fakt, že jde o velmi nosné téma a že projekt stavby 10GE routeru a switche je zajímavý sám o sobě. Pokud chcete vidět další fotografie z laboratoře, podívejte se na naši galerii. Můžete si i stáhnout původní prezentaci z InstallFestu (PDF).

Radim Roška: 10GE switch

Radim Roška a Moris Bangoura se ve svých diplomových pracích věnovali stavbě linuxového switche a routeru, které jsou schopné obsloužit linky s rychlostí 10 Gb/s. Radim Roška svou část přednášky začal obecným úvodem o Ethernetu a jeho principu. Vysvětlil, jak funguje adresace zařízení, jak vypadá hlavička rámce a podobně. Pokračoval funkcí switche a jeho CAM tabulky.

Poté už se věnoval samotnému projektu, který vznikl ve spolupráci ČVUT FEL a sdružení CESNET. Cílem mělo být postavení funkčního switche. Je to plnohodnotný switch postavený na Linuxu, který funguje na vrstvě L2, vysvětlil Roška.


Původně měli autoři představu, že půjde o levnou alternativu ke klasickým hardwarovým řešením. Zpočátku jsme si říkali, že to bude velmi výhodné. Ale hardwarový switch se dá koupit už v řádu desítek tisíc korun a jeho výkon je někde úplně jinde. Hardwarovým switchům nemůžeme konkurovat, popsal reálnou situaci Radim Roška.

Výsledný switch je tedy určen spíše pro speciální účely, například pro výuku. Je na něm možné provádět různé experimenty, studovat provoz na síti a podobně. Díky tomu, že jde o softwarové řešení, je možné studovat podrobně, co se v zařízení s pakety přesně děje a jak to funguje.

Při tvorbě takového řešení existuje spousta technických překážek. Desetigigabitový Ethernet přináší řadu komplikací. Už jen proto, že jím prochází velký datový tok. Zatímco ve „stovkové“ síti je provoz velmi malý, tady jde už o 15 milionů paketů každou sekundu. Tedy zároveň v extrémním případě až o 15 milionů přerušení za sekundu. Může dojít k zahlcení přerušeními, takzvaným interrupt live lock. Systém se tak zahltí vyřizováním přerušení a nestíhá zpracovat samotná data, popisuje jednu z hlavních překážek Roška.

Pokud tedy chceme obsloužit co nejvíce paketů, musíme se tohoto problému zbavit. Jednotlivé pakety pak nevyvolávají přerušení, ale systém si vyzvedává větší balíky paketů najednou (polling). To má ovšem zase nevýhodu ve vyšší latenci, protože pakety čekají nějakou dobu na vyzvednutí. Je možné kombinovat oba přístupy pomocí NAPI (Adaptive Interrupt Coalescing), kdy se při nízké zátěži používá přerušení a využívá se nízké latence a při vyšších zátěžích se přejde na polling.


Pro funkční „softwarový“ switch je třeba i dobré hardwarové řešení. Dnes naštěstí není problém dostatečně výkonné vybavení získat. Dnes máme k dispozici více jader, tedy i celkově vyšší výkon. Procesor ale musí mít k dispozici data. Použité síťové karty tedy mají více nezávislých front. Pokud máme třeba šestnáct front v síťové kartě, může se o jejich vyřizování starat šestnáct procesorových jader, vysvětlil propojení Roška.

Dalším úzkým hrdlem mohou být starší sběrnice, dnes s PCI-Expres už to ovšem není takový problém. Na šestnácti linkách se dostáváme asi na 16 GB/s, což je pro 10G Ethernet dostačující. Dalším úzkým hrdlem by mohla být systémová paměť, dnes se ale dosahuje běžně rychlosti kolem 25 GB/s (např. sběrnice QPI od Intelu), což je také bohatě dostačující.


Klíčové jsou samozřejmě také kvalitní síťové karty. Důležitý je kvalitní chipset, špičkou v této oblasti je Intel 82599. Nespornou výhodou tohoto chipsetu jsou i open-source ovladače. Výhodou je, že se můžete podívat, jak některé věci fungují. Síťové karty, které byly používány, mají k dispozici až 128 TX i RX front. To je dost na dvě 10G rozhraní.

Propustnost výsledného switche je možné měřit pomocí speciálních ethernetových měřících přístrojů. Bohužel jsou velmi drahé, jeden stojí milion korun. Museli jsme si je půjčit z CESNETu. Je možné použít i čistě softwarové řešení postavené na Linuxu, které je samozřejmě výrazně levnější. Další ukázka toho, jak může být Linux užitečný.

Moris Bangoura: 10GE router

Moris Bangoura pokračoval v přednášce a hovořil o routerech, tedy síťových zařízeních třetí vrstvy OSI. Vysvětlil rozdíly mezi softwarovými a hardwarovými routery. Softwarový router je obvykle nějaký počítač s procesorem, pamětí a sdílenou sběrnicí, na kterou je napojeno několik síťových karet. U hardwarových řešení se používají speciální integrované obvody ASIC, které v zásadě routují samy. Výhodou je, že se pakety samy přesměrovávají mezi jednotlivými porty a není třeba tím zatěžovat procesor. Můžeme tak dosáhnout podstatně vyšších datových toků.


Softwarové řešení je proti tomu výrazně flexibilnější, jednoduše rozšiřitelné a levné. Také jeho parametry jsou v mnoha ohledech zajímavější. Výhodou je, že máme k dispozici velkou paměť, do které si můžeme uložit třeba celou BGP tabulku, vysvětlil jednu z výhod Bangoura.

Samozřejmě u softwarového řešení existují i nevýhody. Tou nejviditelnější je, že vše zpracovává procesor, což může vést k jeho zahlcení a nízkému výkonu. Nesmíme zapomínat také na otázku energetické náročnosti. Relativně vysoká je i elektrická spotřeba takového zařízení.

Moris Bangoura dále hovořil o hardwarové stránce projektu. Stomegabitový FastEthernet bylo dříve možné zpracovávat i na sdílené PCI sběrnici, tedy na starší architektuře PC. U stokrát vyšších rychlostí už ale byl nutný jistý pokrok. Na 10G Ethernet bylo potřeba počkat na NUMA architekturu, což znamená, že každý procesor má přidělenou vlastní paměť. Celý systém má pak i více než jeden PCI-Express hub, což umožňuje připojit požadovaný počet periferií (10GE síťové karty a GPU). Dostatečného výkonu komunikace se síťovou kartou bylo možné dosáhnout až na PCI-Expres v2.0 sběrnicích s osmi linkami na kartu.

Existuje několik 10GE softwarových routerů postavených na Linuxu, jako například distribuce Bifrost. Je to hodně vytuněná a opatchovaná speciální distribuce pro softwarové routery. Další možností je také projekt Click, který je hodně modulární a není určený jen pro IP, ale umí routovat i další provozy. Jako poslední byl zmíněn Packet Shader Framework. Jeho výhodou je, že umí akcelerovat některé procesy přes grafickou kartu.


Akcelerace s použitím grafické karty je pro 10G Ethernet klíčová, protože na procesor je to už příliš velká zátěž. Při routování jen na procesoru je totiž třeba pro zpracování každého paketu zhruba 1200 procesorových cyklů. Na 10G Ethernetu pro wirespeed rychlosti při 64B paketech bychom potřebovali procesor s kmitočtem ve stovkách GHz. Všechen procesorový čas by byl použit na příjem/odesílání paketu a nezbylo by již na routování, firewalling a podobně.

Proto bylo třeba v prvé řadě snížit počet cyklů při zpracování paketu. Packet Shader I/O modul, který nahrazuje klasický driver síťové karty, je redukuje na cca 200. Využívá řadu vylepšení jako je velký statický kruhový buffer (nahrazuje dynamický alokovaný skb buffer), dávkové zpracování několika desítek paketů najednou, dodržování CPU affinity, automatický hybridní příjem paketů (polling/interrupted) a jiné. V neposlední řadě zajišťuje propojení z userspace částí Packet Shader Frameworku, která předává práci grafickým akcelerátorům.

ict ve školství 24

Ty se používají hlavně pro prohledávání routovací tabulky a případně další paměťově i časově náročné funkce (firewalling, ssl encryption). Na GeForce GTX580 je možné dosáhnout rychlosti 177 GBps, procesor Xeon zvládne jen 32 GBps. Mají velmi nízkou latenci a umí zpracovat až 512 vláken paralelně. Grafické karty jsou také velmi dobře dostupné a dnes jsou i poměrně levné. Packet Shader Framework zvládá s akcelerací na GPU až 40 Gbps full duplex.

(Foto: Petr Krčmář, Radim Roška a Petr Hodač)

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.