Hlavní navigace

Networking ve FreeBSD řady 5

Roman Divácký

Pátá řada FreeBSD bude obsahovat mimo jiné i novinky v síťování. Jelikož se nám blíží vydání první stabilní verze této řady, popíšeme si implementované novinky v následujícím článku.

Linux guys were pretty much floored that FreeBSD 5.3 can route 1Mpps and they can't do much more than 100kpps. ;-) Yes, way to go!

Tak i takhle vypadaji reakce na nový síťový stack ve FreeBSD 5.3, které je počátkem nové stabilní řady 5 a je každý den blíže (aktuálně to vypadá na začátek října). A protože hned druhé nejběžnější použití (po hraní her samozřejmě) tohoto operačního systému jsou různé síťové servery, neuškodí se podívat, co se v oblasti networkingu změnilo. André Opperman vytvořil presentaci, která tyto novinky a změny popisuje. Následující článek je na této presentaci volně založen a čerpá z ní základní informace.

Firewally

Předchozí verze FreeBSD měly možnost používat dvou firewallových systémů – nativního ipfw, které bylo implementováno jako hack přímo do zpracování netinet packetů, a ipf, které bylo importováno a používalo generickou abstraktní vrstvu takzvaný PFIL. S importem OpenBSD firewallu pf, který taky používá PFIL, bylo rozhodnuto (a posléze implementováno) přepsat ipfw, aby taky používal PFIL framework.

Jak už jsem psal výše, byl do FreeBSD řady 5 naportován OpenBSD firewall pf. Spolu s ním v systému přibyl traffic shaper ALTQ, který dříve existoval jako separátní patch. Osobně považuji kombinaci pf+altq za velmi silnou, přehlednou a ideální pro nasazení. Sám jsem přepsal zhruba 100řádkový iptables skript na 8 řádků v pf, velmi přehledné ;)

Samotný firewall ipfw byl v mnohém vylepšen – nyní umožňuje definovat takzvané množiny pravidel, se kterými pak lze manipulovat jako s celkem, umí filtrovat packety podle jailů (jakési polo-virtuální stroje, které FreeBSD používá pro oddelění různých procesů), dále jsou zde antispoof pravidla a ověřování validity zdroje packetu. Konečně jsme se také dočkali množin a tabulek.

Ve FreeBSD (od verze 4.1) existuje mechanismus KQUEUE, který zajišťuje O(1) implementaci pollingu na různé události. V jednoduchosti nahrazuje O(n) select/poll O(1) implementací (ie. doba vykonání je konstatní oproti době závislé na počtu sledovaných zdrojů událostí). Tento mechanismus byl mimochodem integrován do httpd demona Apache (make install -DWITH_EXPERIMEN­TAL_PATCHES) a slyšel jsem zvěsti o 30% nárůstu výkonu. Ve verzi FreeBSD 5 byla podpora systému KQUEUE zahrnuta i na stav ethernetové linky. Tohoto využijí především routovací démony hlídající, která linka je v provozu a která ne.

Project Evil

Vývojář *BSD William Paul vytvořil emulátor systému NDIS (formát síťových driverů pro Windows XP) a pojmenoval jej Project Evil (projekt zlo ;)). NDISulátor (jak bývá také nazýván) umožňuje použít Windows XP drivery ve FreeBSD, čímž velmi rozšiřuje škálu podporovaného síťového hardwaru (často kritizovaný nedostatek FreeBSD). Osobně bych to na produkčním stroji nikdy nenasadil, ale jako dočasné řešení popř. na doma je to určitě velmi příjemné (však také původní důvod vytvoření byla absence nativních driverů pro WiFi karty).

Náhodná IP ID

Protokol IP má v hlavičce IP packetu definovánu položku ID. Ta se používá pro znovusestavení fragmentovaných packetů, její počáteční hodnota však není nikde specifikována, a tak se obvykle používá jednoduché řešení, kdy jsou id generovány sekvenčně. Tím se však síť vystavuje riziku (pokud chápeme bezpečnost jako lidé z OpenBSD), a proto je ve FreeBSD 5 možnost zapnout náhodné generování tohoto id. (sysctl net.inet.ip.ran­dom_id)

TCP Inflight Bandwidth-Delay Limiter

Vzhledem ke způsobu, jakým funguje protokol TCP (při saturaci linky zmenší okno, které posléze zase zvětšuje přes saturaci, a tak pořád dokola) se stává, že při delších spojeních není linka optimálně využita, a proto si FreeBSD TCP stack udržuje jisté informace o spojení (vlastně rychlost linky), podle kterých poté řídí velikost TCP okna. Prý to při delších spojeních poměrně urychluje přenos. Tato volba je defaultně zapnuta.

RFC3390

Do řady 5 bylo implementováno RFC 3390, které v podstatě zajišťuje rychlejší otevření TCP okna, ie. zrychlení krátkých spojení. Zrychelní je dosaženo tím, že se místo jednoho packetu otevře okno až pro čtyři. Defaultně zapnuto.

Routování

Velmi drasticky byly zmenšeny routovací tabulky, jednak pomocí odstranění některých pozůstatků historických implementací (BSD TCP/IP je 20 let starý), jednak použítím slab alokátoru UMA, který je další výraznou novinkou v řadě 5. Slab alokátor je v podstatě princip alokace paměti pro struktury o stejné velikosti, tyto struktury jsou vlastně předalokovány a předinicializovány, takže vlastní alokace je velmi rychlá. Také je díky zmenšené obecnosti alokátoru (alokujeme jen to, co známe, ne vše) umírněn overhead alokačního procesu.

Přejmenovávání interfaců

FreeBSD tradičně pojmenovává zařízení podle jména driveru, to se týká i síťových karet. Nyní je zde možnost zařízení libovolně přejmenovat, velmi dobré pro přehlednost, nebo pokud vám ethX tak moc schází :)

TCP Hostcache

FreeBSD si pamatuje parametry spojení na různé hosty a podle toho nastavuje parametry dalšího spojení na tento host. Tj. při opakovaných krátkých spojeních je dosaženo výrazné optimalizace a zrychlení.

Správa „mrtvých“ spojení

TCP stack byl dále modifikován tak, že pokud je spojení v zavřeném stavu a už se pouze čeká na timeout, jsou o něm uloženy pouze nezbytně nutné informace místo celého PCB, čímž se dosahuje až 80% úspory paměti jádra. Takto je FreeBSD schopno obsloužit o dost větší počet krátkých spojení (např. při slashdottingu).

SACK

Selective ACK, jak je popsán v RFC 2018, zajištuje při packet loss pouze selektivní retransfer, čímž velmi šetří zašuměnou linku (WiFi např.)

Fastforwarding

Tato novinka zajištuje, že se celý IP packet (při forwardingu) zpracuje v jednom kroku a CPU použije pouze při zpracování IP hlavičky. Nikdy se tedy nefrontuje ani se nedělí jeho zpracování. Výsledkem je až o 60 % vyšší výkon při routování. Pokud si chcete tohle zrychlení vyzkoušet, můžete takto: sysctl net.inet.ip.fas­tforwarding=1 (není defaultně zapnuto).

IP options

Protokol IP definuje pole options, které mělo sloužit k různým účelům. Realita je však taková, že se v 99.9 % buď ignorují, nebo některé routery takto modifikované packety dokonce zahazují. Navíc zpracování těchto options není jen zbytečné, ale je i poměrně náročné. Proto byla implementována možnost toto zpracovávání vypnout: sysctl net.inet.ip.pro­cess_options=0 (není defaultně zapnuto).

Všechna tato vylepšení už tak velmi dobrého síťového stacku FreeBSD (spolu s ostatními vylepšenímy) řady 5 z tohoto operačního systému dělají velmi dobrou volbu při rozhodování, co nainstalovat na server. Všem doporučuji FreeBSD minimálně vyzkoušet, popř. nainstalováním betaverze FreeBSD 5.3 pomoci s testováním.

Našli jste v článku chybu?

12. 11. 2004 12:11

remet (neregistrovaný)

sourozenecka laska a nenavist jde ruku v ruce...

12. 11. 2004 11:49

remet (neregistrovaný)

No tak tohle je pro zmenu velmi demagogicke :-) Moc rad si poslechnu co ze to tem chudackum nejde... Povidej, prehanej...

DigiZone.cz: Je tu první sportovní přenos přes mobily

Je tu první sportovní přenos přes mobily

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Nejlepší obranou při nachlazení je útok

Nejlepší obranou při nachlazení je útok

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy