V poslední době jsem si všiml jednoho trendu. Místo abych vyměnil směrovač, když doslova přestane fungovat, musel jsem jednat dříve – vyměnit nové zařízení, protože starý směrovač už nedokázal držet krok s rostoucí rychlostí internetu dostupného v dané oblasti. (Poznamenejme, že jsem za tento problém náležitě vděčný.) Jako poslední příklad mohu uvést celou řadu routerů Netgear ProSafe 318G, které mě naposledy zklamaly, protože malé podniky přešly z tradičního připojení T1 o rychlosti 1,5-9 Mb/s na koaxiální (kabelové) připojení o rychlosti 50 Mb/s.

Ano, koaxiální – ne optické. Dokonce i koax se ukázal jako příliš velký pro starou řadu ProSafe. Tato zařízení nejenže nedokázala držet krok, ale padla na hubu. Často u starých routerů klesaly výsledky rychlostních testů z 9mbps se starým připojením na 3mbps nebo méně s připojením 50mbps. To samozřejmě neletí.

Zobrazit více

V dnešní době se stále častěji zdá, že řešením jsou bezdrátové směrovače. Ty bývají dlouhé na úhledně vypadající plasty a pestrobarevná webová rozhraní, ale krátké na technické funkce a spolehlivost. Co má dělat námezdní správce systému? V jádru může být směrovačem cokoli, co má dvě fyzická síťová rozhraní. A dnes existuje spousta a spousta relativně rychlých, levných a (což je super důležité!) plně polovodičových generických krabiček.

Takže konečně nastal čas. Tváří v tvář stárnoucímu hardwaru a novým spotřebitelským nabídkám, které nesplňovaly mé potřeby, jsem se rozhodl postavit si vlastní router. A pokud vás dnešní proměňující se prostředí konektivity nechává v podobné situaci, ukazuje se, že jak stavba, tak sestavení jsou poměrně rychlé.

Proč to dělat složitě

Mnozí z vás si pravděpodobně mumlají: „Jasně, pfSense, jasně“. Někteří z vás možná dokonce uvažují o smoothwall nebo untangle NG. Hrál jsem si s většinou firewallových distribucí, ale rozhodl jsem se pro základ, pro starou školu: obyčejná instalace Ubuntu Serveru pouze přes CLI a několik pravidel iptables.

Přiznávám, že to pravděpodobně není nejpraktičtější přístup pro každého čtenáře, ale pro mě měl smysl. Mám poměrně dost zkušeností s dolaďováním iptables a samotného linuxového jádra pro vysokou propustnost v internetovém měřítku, a čím méně nablýskaných funkcí, grafiky a klikacích věcí se postaví mezi mě a tabulku firewallu, tím méně chmýří musím odstranit z cesty a tím méně nových, ve zbytku mé práce nepoužitelných věcí se musím naučit. Jakékoli pravidlo, které už umím vytvořit v iptables pro správu přístupu k mým serverům, umím aplikovat i na firewall – pokud na mém firewallu běží stejná distribuce jako na mých serverech.

Zvětšit / Hle, unixový vousáč.

Také dost intenzivně pracuji s OpenVPN a chci mít možnost pokračovat v nastavování jeho serverů i klientů způsobem, na který už spoléhám. Některé firewallové distribuce mají podporu OpenVPN vestavěnou a některé ne, ale i ty s vestavěnou podporou mají tendenci očekávat, že věci poběží jinak než já. Opět platí, že čím víc mi systém nebude stát v cestě, tím budu spokojenější.

Jako další bonus vím, že na svém novém a zcela vanilkovém routeru s Ubuntu mohu velmi snadno udržovat vše zcela aktuální. Vše je podporováno přímo Canonicalem a vše může mít (a má) zapnuté automatické aktualizace. K tomu přidám občasnou úlohu cronu, která router restartuje (kvůli novým jádrům), a mám vystaráno.

Hardware, hardware, hardware

V některém z příštích dílů si projdeme návod, jak na to, ale dnes je důležité stanovit, proč může být DIY sestavení routeru tou nejlepší volbou. Abyste to mohli udělat, musíte nejprve pochopit dnešní obecnou situaci.

Ve spotřebitelském světě mají routery pod kapotou většinou maličké procesory MIPS bez velké paměti RAM (mírně řečeno). Tyto směrovače se od sebe do značné míry odlišují na základě rozhraní: Jak moc je lesklý? Kolik má technických funkcí? Dokážou se v něm uživatelé snadno zorientovat?“

Reklama

Na vyšším konci trhu SOHO se začínají objevovat některé procesory ARM na úrovni smartphonů a mnohem více paměti RAM. Tyto routery – podobně jako řada Nightgear Nighthawk, z nichž jednomu se budeme věnovat později – mají více jader, vyšší taktovací frekvence a mnohem více paměti RAM. Mají také mnohem vyšší cenovky než levnější konkurence. Vybral jsem Linksys EA2750 za 89 dolarů, ale Netgear Nighthawk X6, který jsem k němu dostal, byl téměř třikrát dražší (dokonce i ve svátečním výprodeji!) za 249 dolarů.

Zvětšit / Nesuďte mě – měl jsem hlad.

Přesto jsem chtěl jít jinou cestou. V poslední době se na trhu začala objevovat spousta zajímavých a poměrně levných malých strojů s architekturou x86-64 bez ventilátoru. Trik při stavbě routeru spočívá v nalezení takového, který má více síťových karet. Na Amazonu najdete pár poměrně bezpečných sázek, ale jsou to starší procesory na bázi Atomu a já chtěl novější Celeron. Po starém dobrém prohledávání internetu a tápání jsem se nakonec odhodlal k nákupu na Alibabě a objednal si nový Partaker Mini PC od společnosti Shenzhen Inctel Technology Company. Po 240 dolarech za samotný router a dalších 48 dolarech za 120GB SSD Kingston od Neweggu jsem za Homebrew Special utratil asi o 40 dolarů více než za Nighthawk. Vyplatilo by se to?“

Objevuje se vyzyvatel

Než se pustíme do testování, pojďme se rychle podívat na konkurenci.

Zvětšit / Zcela vlevo po směru hodinových ručiček: 1. Homebrew Special s Ubuntu, 2. Netgear Nighthawk X6, 3. Buffalo WHR-G300N-v2 a 4. Linksys N600 EA-2750. Zcela vpravo se nad nimi všemi tyčí: Monolith, jeden ze dvou serverů použitých k testování.

Ten Nighthawk je v porovnání s ostatními obrovský a impozantní (ještě víc, než se zdá z obrázku). Ve skutečnosti je podstatně větší než můj Homebrew Special, což je plně funkční univerzální počítač, který byste mohli používat jako naprosto kompetentní stolní počítač. Je to jako kdyby DC Comics požádalo H. R. Gigera, aby přiložil ruku k dílu při navrhování bezdrátového routeru pro Batmana.

Samotný Homebrew Special je docela roztomilý. Uvnitř skříně má jednu modrou a jednu červenou LED diodu a v noci se světlo z obou nepřímo rozlévá z jeho chladicích otvorů, což dodává síťovému komínu slavnostní party vzhled. Kdyby tam byly nějaké ventilátory, které by způsobovaly blikání, přivádělo by mě to k šílenství, ale protože je to ustálená jemná záře, vlastně se mi to líbí.

Na druhou stranu Linksys a Buffalo vypadají přesně jako to, co jsou – levné routery. Stojí však za zmínku, že stylizace Linksysu je velkým zlepšením oproti minulosti této značky. Vypadá více jako něco profesionálního a méně jako dětská hračka. (Ale dost o stylu – je čas podrobit tyto ubohé routery zkoušce.)

Prvním úkolem je samozřejmě jednoduchý test šířky pásma. Jeden počítač umístíte na stranu LAN a jeden počítač na stranu WAN a uprostřed spustíte malý šikovný nástroj iperf. Jednoduché, že?“

Zvětšit / Není na obrázku: zajímavé výsledky.

Reklama

No, to by bylo na krátký a nudný článek. Samotná síť měří gigabit, tři gigabitové směrovače měří gigabit a 100megabitový směrovač měří 100 megabitů.

Ve skutečnosti takto jednoduchý test ani nezačne vypovídat. Jediným důvodem k jeho provedení může být ukázat, jak je nesmyslný. Výrobci routerů si stále více uvědomují, že lidé jejich výrobky skutečně testují, a žádný výrobce nechce, aby jeho výrobek byl jinde než na vrcholu něčeho takového, jako je tabulka routerů smallnetbuilder. Ve světle toho se dnes výrobci aktivně honí za statistikami.

Problém je, že statistiky jsou jen statistiky. Být schopen dosáhnout vysokého čísla v testu čisté propustnosti je lepší než nic, ale zdaleka to není celý příběh. Tuto lekci jsem dostal na vlastní kůži, když jsem pracoval pro dodavatele T-1 na začátku roku 2000. Jejich extrémně drahé modemy Adtran zvládaly v pohodě běžné používání internetu 50 až 100 lidmi, ale jediný uživatel, který používal Limewire nebo jiného P2P klienta, to celé v mžiku shodil. (Tehdejší řešení: před drahý modem Adtran umístit levný, ale úžasný router Netopia za 150 dolarů. Problém vyřešen.“

Reklama

I pro relativně jednoduché směrování – žádná hloubková kontrola paketů, žádné proudové skenování malwaru nebo detekce vniknutí, žádné tvarování – jsou procesor i paměť RAM, které má směrovač k dispozici, důležité mnohem více než schopnost nasytit internetovou linku. Peer-to-peer sdílení souborů je v dnešní době asi nejbrutálnější aktivitou, kterou síť zažije (ať už se jedná o bittorrent, některou z variant Gnutella nebo eDonkey nebo systém peer-to-peer stahování herní společnosti). Já jsem s hraním WoW skončil v době, kdy byl zaveden distribuční systém P2P společnosti Blizzard, ale můj tehdejší spolubydlící nikoli. V den spuštění byl nový systém peer stahování WoW nešťastně nastaven jako výchozí bez jakéhokoli škrcení. Vesele se snažil najít a udržet spojení s doslova tisíci klienty současně a moje domácí síť se zhroutila jako Gilbert Godfried, na kterého se vrhl Terry Tate. Se spolubydlícím jsme si to vyříkali.

Na základě těchto zkušeností z minulosti nechci své vyzyvatele jen minimálně „otestovat“ a zabalit to, chci je pořádně zpotit. Abych toho dosáhl, budu je zatěžovat úlohami, které kladou důraz na tři problémové oblasti: nasycení síťové linky, opravdu rychlé navazování a přerušování jednotlivých spojení TCP/IP a udržování obrovského počtu jednotlivých spojení TCP/IP otevřených najednou.

Mám v kapse botnet a jsem připraven to rozjet

Krátce jsem uvažoval o tom, že vytvořím nějakou ohavnou obludu poháněnou Dockerem s desítkami tisíc linuxových kontejnerů s jednotlivými IP adresami, které se budou dožadovat připojení a/nebo obsluhovat webové stránky. Pak jsem se vzpamatoval. Pokud jde o směrovače, není rozdíl mezi udržováním připojení k tisícům jednotlivých IP adres nebo jen k tisícům portů na stejné IP adrese. Strávil jsem trochu času tím, že jsem z oblíbeného webového serveru Lee Hutchinsona nginx udělal směšné lovecraftovské monstrum s 10 000 hlavami a chutí k destrukci.

Pro každý směrovač jsem pomocí ApacheBench otestoval stahování jpegu se třemi různými velikostmi souborů (10K, 100K a 1M) při čtyřech různých úrovních souběhu (10, 100, 1 000 a 10 000 současných klientů). To nám dává celkem 12 testů, nepočítaje náš počáteční test iperf, a stojí za to se na ně všechny podívat jako na jakési spektrum.

Reklama

Ve většině ohledů je ten 10K soubor náročnější. Malá velikost souboru znamená, že můžete každou sekundu doručit mnohem více jednotlivých souborů, než nasytíte rozhraní, což znamená navázat a přerušit mnohem více spojení TCP, což zatěžuje procesor směrovače. Na druhou stranu 1M soubor znamená, že při vyšších úrovních souběhu budete zaručeně udržovat více otevřených spojení. Stojí za to se podívat, jak si směrovače poradí s celým spektrem, protože každá úroveň poměrně slušně modeluje poměrně běžný problém, který by směrovač mohl potřebovat zvládnout (stahování nebo odesílání velkého množství e-mailů, obsluha sdílení souborů peer-to-peer nebo obecné procházení webu od mnoha uživatelů), pokud by byl doveden do extrémní úrovně.

Nakonec jsem nakonec musel vyladit nejen nginx, ale i samotné linuxové jádro, aby spolehlivě poskytovalo takovou propustnost, jakou jsem hledal. Samotné routery jsou „stock“ – dokonce i můj Homebrew Special zůstal nevyladěný – ale testovací servery, Menhir a Monolith (každý s osmijádrovým procesorem AMD FX-8320, 32 GB DDR3 RAM a kompletně aktualizovaným operačním systémem Ubuntu Trusty) potřebovaly docela vážnou masáž, aby zvládly takovou zátěž.

Při takovém šílenství se raději ujistěte, čeho jsou vaše skutečné servery a síť schopny, než začnete dělat nějaké závěry ohledně routerů, které mezi ně umístíte. Pro začátek jsem nejprve otestoval Menhir samotný na rozhraní localhost (vůbec žádná síť) a poté testoval mezi servery pouze přes můj síťový přepínač (16portový gigabitový Netgear ProSafe, pokud vás to zajímá).

Zvětšit / Každý experiment potřebuje kontrolu.

Výsledky na localhostu nemohly být lepší – daleko, daleko vyšší propustnost než gigabit u každého testu. Ve skutečnosti jsem musel ručně omezit měřítko osy Y grafu, jinak byste měli problém vůbec vidět skutečné testy. Přímý síťový test nebyl špatný, ale zřejmě začínáme narážet na určité limity na horním konci. Nejsem si jistý, zda je problémovou komponentou samotný přepínač nebo vestavěná síťová rozhraní v obou serverech, ale něco není úplně na výši. Na práci to ale stačí. Je čas konečně zapojit routery.

Připravme se na dunění!“

Byl jsem trochu nervózní. Už tak jsem ke svému malému domácímu zařízení cítil docela náklonnost – koneckonců jsem si ho postavil sám. Věděl jsem, že snadno převálcuje postarší Buffalo, které jsem vyhrabal ze šuplíku, a Linksys, což byla doslova nejlevnější věc ve Staples s gigabitovým rozhraním. Ale mohl by porazit ten laserem naváděný atomový parní mlátič Nighthawk? Myslel jsem si to, ale nebyl jsem si jistý.

Zvětšit / Na obrázku: bezchybné vítězství.

Když testy stahování skončily, na Homebrew Special už nebyly žádné otázky. Ano, dokázal porazit Nighthawk… a poté odejít se zíváním. Kromě jednoho malého propadu na úrovni 10K souborů/10 souběžných připojení (což je výzva pro procesor s absolutně největším počtem uskutečněných a přerušených připojení) si vedl téměř identicky jako samotné přímé připojení k síti.

Reklama

Nighthawk je mimochodem opravdu skvělý SOHO router, kterých jsem nasadil poměrně dost. Nicméně prakticky okamžitě spadl. Na stahování megabajtů po deseti to bylo krkolomné. Při jakémkoli náročnějším úkolu začal výkon prudce klesat.

Linksys, žádné překvapení, si nevedl vůbec dobře. I tak jednoduchá úloha, jako je stahování 10 souborů najednou, snížila jeho propustnost téměř na polovinu toho, co ukázal naivní test iperf. Dál už to bylo jen horší a několik testů se mu ani nepodařilo dokončit. Pozitivní je, že Linksys dobře demonstruje, že na routeru opravdu záleží.

Nakonec si zaslouží pochvalu i malý statečný buvol. Přestože stál méně než Linksys, když byl úplně nový (před osmi lety, pozor), a pět let živořil v šuplíku, slezl z pověstné barové stoličky a v polovině testů Linksys skutečně porazil. Buffalo dosáhlo tohoto úspěchu navzdory síťovému rozhraní, které mělo desetinovou rychlost. To je odvaha. Až se příště někdo bude lacině ohánět produkty čerstvě pořízenými v Číně, budu křičet: „Vzpomeňte si na Buffalo!“

Reklama

Před vyvozením jakýchkoli závěrů je však třeba vzít v úvahu rychlost odesílání dat.

Zvětšit / Musím se podívat dvakrát, abych se ujistil, že to není stejný graf.

Naštěstí se zde na vztazích mezi routery opravdu nic nezměnilo. Homebrew stále vypadá, jako by tam ani nebyl, téměř zcela odpovídá přímému připojení k síti. Nighthawk nadále naprosto dominuje nad Linksysem a malý šrot Buffalo stále dělá, co může, zastarale. V absolutních číslech je vidět, že jak Nighthawk, tak Linksys jsou na tom s uploadem o něco lépe než se stahováním, ale není to nic, o čem by se dalo psát. Tento výsledek zůstává stejný: Homebrew Special drží krok se sítí (kupodivu si dokonce vede lépe než přímé připojení v testu 10 000 připojení/10 000 souborů), Nighthawk si ve srovnání s Linksysem jednoznačně zaslouží svou cenovku a Linksys je, no, levný.

S tímto závěrečným grafem však máme novou sadu výsledků – lososově zbarvené sloupce, které jsou napříč grafem docela stabilní a pohybují se něco málo přes 200 MB/s. To je Homebrew Special, který napíná své kryptografické svaly. Je na něm spuštěn server OpenVPN. Při tomto testu je server Menhir na straně WAN připojen k serveru OpenVPN na routeru. Provoz na straně LAN zařízení Homebrew Special je směrován přes tunel VPN, takže Menhir naráží na IP adresu Monolith (server na straně LAN) prostřednictvím působivého 2048bitového šifrování založeného na protokolu SSL. Vzhledem k tomu, že v mé oblasti zatím nikdo nenabízí internetové připojení s rychlostí nad 200 Mb/s, můj vnitřní kryptografický nerd plesá radostí. Mohl bych doslova šifrovat každý jednotlivý bajt svého internetového provozu v obou směrech, aniž by se to projevilo na výkonu.

Jedna krátká výhrada na závěr

Jakkoli je můj malý Homebrew Special působivý, chybí mu jedna věc, kterou nabízejí všichni tři ostatní soutěžící: bezdrátový přístup. Mohl bych do Homebrew přidat bezdrátovou kartu a zajistit, aby sloužil bezdrátově, ale v současné době to nemám v plánu. Jsem až příliš dobře obeznámen s tím, co je k dispozici za bezdrátové karty pro PC, a všechny smrdí ledasčím. Dokonce i levná zařízení, jako je Linksys nebo Buffalo, by poskytla smackdown pro bezdrátové pokrytí a dosah, a Nighthawk není ani ve stejné lize. Pokud jde o dosah, pokrytí a současné připojení k bezdrátové síti, je to opravdu laserem řízené atomové parní kladivo. (Právě teď mám jeden z nich, který pokrývá více než 50 uživatelů v objektu o rozloze 53 000 čtverečních stop od rohu k rohu.)

S tím, že nic nebrání tomu, abyste používali samostatný WAP (Wireless Access Point) výhradně pro plnění povinností Wi-Fi. V mém domě je to dvojice WAPů Ubiquiti „hockey puck“, jeden pro každé patro domu. Jejich správa je o něco pracnější než u Nighthawku, ale dvojice stojí o polovinu méně. Jsou to docela standardní linuxová zařízení, ke kterým se lze připojit přímo přes SSH a která se spravují z docela dobré malé webové aplikace, kterou můžete spustit… hádáte správně, přímo na Homebrew Special. (Migrace serveru Ubiquiti z mé pracovní stanice na Homebrew Special bude jedním z mých prvních úkolů po tomto díle, a pak ho povýším na aktivně používaný před mou domácí kancelářskou sítí)

Ve jménu důkladnosti bychom měli dodržet jedno společné omezení, něco u všech spotřebních síťových zařízení, která jsem kdy spravoval: touhu restartovat po téměř jakékoli změně. Některé z těchto restartů trvají i více než minutu. Nemám nejmenší tušení proč, ale ať už je důvod jakýkoli, Homebrew Special tímto průmyslovým standardem postižen není. Uděláte změnu, použijete ji a je hotovo. A pokud potřebujete Speciál restartovat? Za 12 sekund je opět nahozen. (Měřil jsem to počítáním vypadlých pingů.)

Pokud vás tedy tato čísla přesvědčila a chcete si postavit vlastní Homebrew Special, stačí k tomu počítač se dvěma fyzickými síťovými rozhraními. Může to být speciální mini PC, jako je to, které jsem použil zde, nebo to může být jakákoli stará krabice, která se vám někde válí a do které můžete nacpat dvě síťové karty. Nenechte se zastrašit prvním snímkem obrazovky. Sestavení vlastního skutečně rychlého routeru není tak těžké zvládnout. A pokud se dožadujete plánu, ve skutečnosti vám brzy nastíníme celý postup od „tady je běžný počítač“ až po „tady je router a tady je návod, jak ho nakonfigurovat“.

Reklama

Jim Salter (@jrssnet) je autor, řečník, majitel malé firmy, nájemný sysadmin a otec tří dětí – ne nutně v tomto pořadí. Poprvé skutečně okusil open source, když v roce 1999 spustil Apache na svém vlastním dedikovaném serveru FreeBSD 3.1, a od té doby je zarytým zastáncem FOSS. Vytvořil a spravuje také http://freebsdwiki.net a http://ubuntuwiki.net.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.