Portál AbcLinuxu, 26. dubna 2024 03:28

Jaderné noviny - 8. 12. 2016: Hodnota XDP

19. 12. 2016 | Redakce
Články - Jaderné noviny - 8. 12. 2016: Hodnota XDP  

Stav vydání jádra. Citáty týdne: Thomas Graf a Linus Torvalds. Debata o hodnotě XDP.

Stav vydání jádra

Současný vývojový kernel je 4.9-rc8, vydaný 4. prosince. Slovy Linuse: „Takže pokud někdo sledoval strom v gitu, nemělo by ho překvapit, že jsem se nakonec rozhodl rc8 udělat. Nebylo to až zase tak špatné, ale ani natolik v poklidu, abych seznal, že by nemělo smysl přidat další týden.“

Seznam regresí ze 4. prosince obsahoval 11 známých problémů v cyklu 4.9.

Stabilní aktualizace: 4.8.12 a 4.4.36 byly vydány 2. prosince. Aktualizace 4.8.13 a 4.4.37 byly v době psaní tohoto článku v procesu revidování a vyšly 8. prosince.

Oprava snadno zneužitelné chyby souběhu, známé jako CVE-2016-8655, v době psaní článku sice byla připravena pro cyklus 4.9, ale ještě se nedostala do stabilních aktualizací.

Citáty týdne

Budoucnost nedokážeme předpovídat. Pokud by tomu tak nebylo, se síťováním bychom už dávno byli hotovi a dnes bychom pracovali na zmrzlině, která by se jedla sama.

Thomas Graf

Co to tedy znamená? Znamená to, že bych mohl skutečné vydání rc1 dát na 25., ale jsem si sakra jistý, že ten den nebudu doopravdy pracovat a ani ten den předtím. Takže realisticky půjde o zkrácené začleňovací okno a pokud nepošlete své žádosti o začlenění včas, nebudou brány na zřetel.

Linus Torvalds předpovídá budoucnost

LSF/MM 2017: Výzva k zaslání návrhů

Summit o úložištích, souborových systémech a správě paměti v Linuxu 2017 se bude konat 20. a 21. března v Cambridge, Massachusetts, společně s událostí „Vault“ Linux Foundation. Výzva k zaslání témat k projednání je otevřená: zainteresovaní účastníci mohou poslat návrhy k diskuzi. Uzávěrka je 15. ledna.

Více v článku.

Debata o hodnotě XDP

Všechny části jádra jsou přizpůsobovány podle nároků na výkon a škálovatelnost, ale některé subsystémy jsou pod větším tlakem než jiné. Za účelem zlepšení výkonu síťového subsystému, po němž se může chtít, aby zvládal vytrvalou zátěž zahrnující miliony paketů za sekundu, se prošla celá řada technologií. Jedním z výsledků této práce je mechanismus „expresní datové cesty“ (XDP). Nyní se ale XDP dočkala odporu některých vývojářů, kteří tento mechanismus vnímají jako „zbytečnost,“ potenciální problém s údržbou v dlouhodobém časovém horizontu a odvádění pozornosti od práce, kterou by měli vývojáři síťového subsystému dělat především.

Základní myšlenkou XDP je optimalizace případů, kdy je možné o příchozích paketech vytvořit relativně jednoduché rozhodnutí. Využívá se zavedení programu BPF do jádra – tento program získá možnost pakety si prohlédnout, než se dostanou do části jádra, která má na starosti síťování. Původním účelem XDP bylo rychlé zahazování nechtěných paketů, ale brzy došlo k rozšíření o jednoduché rozhodování o směrování paketů a jejich modifikace. Více informací o tom, jak mechanismus funguje, najdete v průběžně doplňované dokumentaci.

Hlavním přínosem XDP je skutečnost, že systém může rychle rozhodovat o paketech, aniž by do toho musel vstupovat zbytek síťového kódu. Možná, že by za určitých okolností šel výkon ještě vylepšit nahráváním programů XDP přímo do síťového rozhraní, třeba po překladu.

Zatím se většina diskuzí týkajících se XDP točila kolem implementačních detailů namísto otázky, zda je XDP vůbec dobrý nápad. Na to došlo až počátkem prosince, kdy Florian Westphal ve svém příspěvku, který napsal za pomoci Hannese Frederica Sowy, dal najevo, že se zavedením XDP nesouhlasí: „V netdev se poslední dobou začaly často objevovat patche související s XDP. Byl bych raději, kdyby to přestalo…“ Preferoval by, kdyby se vývojáři odvrátili od tohoto „dobře míněného, leč zbytečného“ přístupu k něčemu, co je alespoň z jeho pohledu lepší k řešení problémů, kterým síťový subsystém čelí.

Stručně řečeno, tím něčím je kterýkoli z dostupných mechanismů (např. data plane development kit), které umožňují obejít síťovou část jádra kódem z uživatelského prostoru. Tyto mechanismy skutečně mohou přinést zlepšení výkonu v prostředí, kde je potřeba striktně definovaný soubor funkcí a jde se obejít bez výhod univerzální části síťového kódu jádra. Pokračoval tím, že některé problémy se nejlépe vyřeší využitím filtrování paketů přímo v hardwaru.

Podle Westphala je XDP horší řešení, protože poskytuje omezené prostředí prostředí pro vývoj. Síťový kód je možné v uživatelském prostoru psát v libovolném z celé plejády jazyků, má plnou podporu ladění atd. Naopak programy BPF jsou náročnější na vývoj a mají výrazně omezené potenciální funkce. Westphal tvrdí, že pro každý z řadu případů užití XDP, což zahrnuje směrování, vyvažování zátěže a brzké filtrování paketů, vidí lepší alternativní řešení.

Thomas Graf odpověděl, že má se síťováním v uživatelském prostoru zásadní problém: jakmile paket opustí jádro, může se mu stát cokoliv, a pak už není možné dělat bezpečnostní rozhodnutí. Mohlo by dojít ke kompromitaci uživatelského prostoru a jádro by nemělo šanci to zjistit. Naopak kompromitovat kód BPF v jádře by mělo být těžší, protože tento kód je mnohem omezenější v tom, co si může dovolit. Graf dodal, že vyvažování zátěže je často potřeba dělat jak uvnitř aplikací, tak napříč více stroji, což by nechtěl, aby se řešilo v uživatelském prostoru.

Sowa zpochybnil užití brzkého zahazování a zeptal se, zda byl důraz kladen na dodatečnou ochranu, nebo na zlepšení výkonu. Stejně jako Westphal navrhl, že by se tento problém dal řešit primárně hardwarovým zahazováním paketů. Odpověď Toma Herberta dává jasně najevo, že vidí jasnou potřebu flexibility i výkonu:

Zmírňování DDOS je samo o sobě pravděpodobně dostatečnou motivací podívat se na XDP. Potřebujeme něco, co bude při útoku zahazovat špatné pakety jak nejrychleji to jen půjde, a potřebujeme, aby to bylo integrované do jádra, a potřebujeme, aby to bylo programovatelné, abychom se mohli vypořádat se stále rostoucími schopnostmi útočníků, a nechceme být nutně závislí na hardwarových řešeních. Proto jsme vytvořili XDP!

Správce síťového subsystému David Miller se připojil s tím, že také vidí XDP jako dobré řešení pro zahazování paketů. Hardwarové filtry podle něj nedostačují a XDP mu přijde jako správný přístup.

Sowova další obava už nebyla vyjasněna tak snadno. S tím, jak programy XDP nabývají na funkcionalitě, budou potřebovat také čím dál sofistikovanější informace od zbytku síťového subsystému. Tyto informace mohou být poskytovány funkcemi volatelnými z BPF, ale tyto funkce se nejspíš stanou součástí ABI jádra pro uživatelský prostor. To v důsledku omezí možnost úprav, které v budoucnu budou síťoví vývojáři moci udělat. Tyto obavy jsou analogické obavám týkajícím se trasovacích bodů, které v částech jádra omezily své užití. Nikdo v diskuzi na tento problém s ABI nezareagoval. Nakonec se se tím bude muset pracovat jako s libovolným jiným rozhraním pro uživatelský prostor, kam se budou nové funkce přidávat, doufejme, opatrně a s důkladnou kontrolou.

Nakonec diskuze o hodnotě XDP (potažmo její absenci) zřejmě změnila několik názorů. Stephen Hemminger to zřejmě shrnul nejlépe tím, že je zde prostor pro různé přístupy. XDP se více hodí k „vysokorychlostnímu drcení paketů,“ zatímco přístup z uživatelského prostoru bude lepší pro implementaci velkých kusů síťové infrastruktury. Síťový svět je čím dál složitější a k řešení všech problémů, kterým jádro v této oblasti čelí, bude zapotřebí více přístupů.

Odkazy a zdroje

LWN.net

Další články z této rubriky

Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023
Jaderné noviny – přehled za listopad 2023

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.