Ver­nieu­win­gen in de Li­nux-ker­nel

Hoe de ker­nel­ont­wik­ke­laars Li­nux voor­uit­hel­pen

C’t Magazine - - Inhoud 9/2018 - Thor­sten Leem­huis

Of het nu gaat om de om­gang met op­slag­me­dia, per­for­man­ce­ana­ly­ses of fire­wall­tech­nie­ken – in de Li­nux­ker­nel ont­staan mo­men­teel al­ler­lei in­fra­struc­tu­ren die het werk van be­heer­ders en ont­wik­ke­laars zul­len ver­ge­mak­ke­lij­ken.

In de be­gin­da­gen van de Li­nux-ker­nel liep hij vaak wat ach­ter op an­de­re be­stu­rings­sys­te­men. Die si­tu­a­tie is ech­ter al en­ke­le ja­ren om­ge­keerd: Li­nux is qua tech­niek te­gen­woor­dig een trend­set­ter, ter­wijl an­de­ren vol­gen. Op drie ge­bie­den is dat ech­ter nog niet het ge­val: bij be­stands­sys­te­men, per­for­man­ce­ana­ly­se en fire­walls is Li­nux goed uit­ge­rust, maar nog niet lei­dend. Lang­zaam ont­staan er ini­ti­a­tie­ven om ook hier de kop over te ne­men.

Flexi­be­ler op­slaan

Het bor­relt voor­al weer bij de be­stands­sys­te­men, waar een tijd­lang ook wel min­der ge­beurd is. Ext4 do­mi­neert daar­bij nog steeds, maar XFS wint voor­al bij ser­vers ter­rein. Bei­de be­stands­sys­te­men gel­den als flexi­bel en zeer be­trouw­baar. Hun ont­werp en het ba­sis­con­cept van hun wer­king stam­men daar­bij ech­ter nog uit het vo­ri­ge mil­len­ni­um. Er ont­bre­ken dan ook nieu­we func­ties die an­de­re be­stands­sys­te­men wel heb­ben.

Op veel wen­sen­lijst­jes staat een in het be­stands­sys­teem ge­ïn­te­greerd vo­lu­me­be­heer he­le­maal bo­ven­aan. Dat biedt de mo­ge­lijk­heid om meer­de­re op­slag­me­dia te kop­pe­len, waar­over het be­stu­rings­sys­teem de da­ta daar­na zelf­stan­dig ver­deelt. Naar wens moet dat ook ver­sleu­teld kun­nen, ver­deeld over sub­vo­lu­mes of re­dun­dant zo­als bij RAID 1 of 5. Dat ver­ge­mak­ke­lijkt het be­heer aan­zien­lijk. Bij ruim­te­ge­brek voeg je een­vou­dig­weg een op­slag­me­di­um toe aan het vo­lu­me en kun je er met­een over be­schik­ken. Als je een op­slag­me­di­um

moet ver­van­gen, kun je het sys­teem ook op­dracht ge­ven al­le be­stan­den el­ders on­der te bren­gen.

Na­tuur­lijk is dat al­le­maal niet nieuw voor Li­nux. Be­heer­ders heb­ben die mo­ge­lijk­he­den al lan­ger als ze bij be­stands­sys­te­men als Ext4 en XFS een com­bi­na­tie toe­pas­sen van MD-RAID, DM-Crypt/Crypt setup/LUKS en Lo­gi­cal Vo­lu­me Ma­na­ger (LVM). Dat heeft naast voor­de­len ech­ter ook na­de­len: bij uit­brei­ding of ver­van­ging moet een be­heer­der elk van die la­gen apart aan­pas­sen om de ruim­te te be­nut­ten. Dat is niet al­leen tijd­ro­vend, maar ook fout­ge­voe­lig.

Sub­vo­lu­mes zijn daar­bij in­te­res­sant om­dat ze net zo ge­bruikt kun­nen wor­den als af­zon­der­lij­ke par­ti­ties, zon­der dat je van te­vo­ren de be­no­dig­de ruim­te hoeft te be­pa­len. De in­te­gra­tie van vo­lu­me­be­heer is ook gun­stig als er lees­fou­ten op­tre­den bij ac­tie­ve re­dun­dan­tie. Het be­stands­sys­teem kan de ge­ge­vens dan een­vou­dig­weg van een op­slag­me­di­um ha­len dat nog wel in­tac­te ge­ge­vens le­vert. Bij een MD-RAID lukt dat niet om­dat er daar geen in­ter­fa­ces zijn die het be­stands­sys­teem dat kan la­ten doen.

Mo­der­ne be­stands­sys­te­men wer­ken vaak met Co­py-On-Wri­te (COW). Daar­mee kun­nen ze bij­voor­beeld gro­te be­stan­den in en­ke­le se­con­den ko­pi­ë­ren (re­f­link-ko­pie) zon­der daad­wer­ke­lijk da­ta te du­pli­ce­ren. Al­leen de da­ta die in een ko­pie wor­den ge­wij­zigd ko­men in die ko­pie te staan, de ko­pie en het ori­gi­neel wer­ken ver­der met de eer­der ge­deel­de da­ta. Dat maakt het mo­ge­lijk om snap­shots ef­fi­ci­ënt en in en­ke­le se­con­den te ma­ken. De com­ple­te toe­stand van een be­stands­sys­teem wordt daar­bij als ge­kop­peld sub­vo­lu­me 'be­vro­ren', net als Win­dows dat doet bij zijn scha­duw­ko­pie­ën. Je kunt daar­mee snel te­rug naar een eer­de­re toe­stand als bij een gro­te­re up­da­te er­gens wat ver­keerd gaat. Bo­ven­dien kun je via snap­shots in al­le rust con­sis­ten­te back-ups ma­ken, ter­wijl het sys­teem pa­ral­lel ver­der werkt.

COW-be­stands­sys­te­men be­wa­ren de nieu­we of ge­wij­zig­de da­ta en met­a­da­ta in vrije ruim­te. Pas na­dat ze daar zijn op­ge­sla­gen, wordt de ope­ra­tie de­fi­ni­tief toe­ge­voegd aan het be­stands­sys­teem. Ge­ge­vens be­lan­den daar­door in hun ge­heel of he­le­maal niet op de schijf. Daar­mee wor­den in­con­sis­ten­ties door cras­hes ver­me­den: in het be­stands­sys­teem is de ou­de of de nieu­we sta­tus op­ge­sla­gen, er is geen tus­sen­weg. COW-be­stands­sys­te­men heb­ben dan ook geen log­boek (jour­nal) no­dig, zo­als Ext4 en XFS ge­brui­ken om in­con­sis­ten­ties te voor­ko­men. Dat be­spaart bo­ven­dien tijd­ro­ven­de con­sis­ten­tie­checks en re­pa­ra­ties na een crash.

Voor­lo­per ZFS

Het voor So­la­ris ont­wik­kel­de en in 2005 ge­pre­sen­teer­de be­stands­sys­teem ZFS heeft met der­ge­lij­ke voor­de­len de har­ten ge­sto­len van veel be­heer­ders. Des­tijds viel de­ze Li­nux-af­ge­lei­de nog on­der Sun Mi­cro­sys­tems, dat de ZFS-co­de opens­our­ce maak­te. Daar­uit ont­stond de Li­nux-port 'ZFS for Li­nux'. Die heeft on­der­tus­sen een klei­ne maar ge­waar­deer­de plaats in de Li­nux-ge­meen­schap ver­o­verd.

Dat het daar­bij is ge­ble­ven, komt on­der meer door ju­ri­di­sche as­pec­ten. De door Sun vrij­ge­ge­ven ZFS-co­de valt on­der een opens­our­ce­li­cen­tie die veel ju­ris­ten niet com­pa­ti­bel ach­ten met die van de Li­nux-ker­nel. ZFS for Li­nux kan daar daar­om niet zo­maar bij. Het wordt ook niet recht­streeks in Li­nux ge­ïn­te­greerd, maar via een ab­strac­tie­laag. Ubuntu le­vert dat duo al sinds twee jaar mee – al heeft dat wel ge­leid tot dis­cus­sies over de rechts­gel­dig­heid, maar die zijn ver­zand. Er zijn geen ge­val­len be­kend van rechts­za­ken, maar het ri­si­co daar­op is waar­schijn­lijk een van de hoofd­re­de­nen waar­om Red Hat en Su­se de­ze soft­wa­re ver­mij­den.

Niets wijst er­op dat die si­tu­a­tie snel be­ter wordt. Ora­cle heeft Sun al weer eni­ge tijd ge­le­den over­ge­no­men en ont­wik­kel­de het be­stands­sys­teem ver­der on­der een ei­gen li­cen­tie. On­af­han­ke­lijk daar­van werkt een groep ont­wik­ke­laars door aan de ou­de­re opens­our­ce­co­de on­der de naam OpenZFS. Daar is ZFS for Li­nux weer van af­ge­leid.

Ora­cle ge­bruikt re­cen­te ZFS-ver­sies bij de schan­da­lig du­re Stor­a­ge Ap­pli­an­ces. Ora­cle lijkt niet ge­ïn­te­res­seerd te zijn in het op­los­sen van de li­cen­tie­pro­ble­ma­tiek en be­moeit zich de laat­ste ja­ren juist ac­tief met de ver­de­re ont­wik­ke­ling van an­de­re Li­nux-be­stands­sys­te­men – en niet zo'n beet­je ook.

Zelfs als Ora­cle de li­cen­tie van ZFS zou wil­len aan­pas­sen, be­te­kent dat nog niet dat ZFS snel de nieu­we ster aan het fir­ma­ment van Li­nux-be­stands­sys­te­men zou wor­den. Zo­als een van de ont­wik­ke­laars aan de Li­nux-co­de voor stor­a­ge- en be­stands­sys­te­men ooit te­gen ons zei: een net­te in­te­gra­tie van ZFS in de Li­nux-ker­nel is nog meer werk dan de res­te­ren­de pro­ble­men van Btrfs ver­hel­pen.

Btrfs een hy­pe?

Btrfs is een be­stands­sys­teem waar­mee Li­nux zon­der ZFS kan: de func­ti­o­na­li­teit is er van­af het be­gin op af­ge­stemd om die van ZFS te eve­na­ren. De ont­wik­ke­ling van het sys­teem, wat uit­ge­spro­ken wordt als 'But­ter-FS', be­gon in 2007. Een jaar la­ter werd er al het eti­ket 'Next Ge­ne­ra­ti­on Fi­le Sy­s­tem for Li­nux' op­ge­plakt. Zo werd het door voor­aan­staan­de Li­nux-ont­wik­ke­laars tij­dens een con­fe­ren­tie in ie­der ge­val ge­bracht.

Btrfs was toen nog jong en al­les­be­hal­ve in­zet­baar. De vroe­ge lof heeft niet ge­hol­pen. Mis­schien is het zelfs na­de­lig ge­weest, want nog steeds ont­bre­ken er en­ke­le func­ties die oor­spron­ke­lijk wel

ge­pland wa­ren. De be­lang­rijk­ste is ge­ïn­te­greer­de en­cryp­tie. De RAID 5-co­de en een aan­tal min­der gang­ba­re fea­tu­res heb­ben bo­ven­dien be­ken­de ge­bre­ken. Die ko­men ech­ter al­leen aan het licht in zeer spe­ci­fie­ke si­tu­a­ties.

De ba­sis­func­ti­o­na­li­teit van Btrfs geldt al ja­ren als vol­was­sen en heeft zich in de prak­tijk aar­dig be­we­zen. OpenSu­se Le­ap en Tum­ble­weed en Su­se Li­nux En­ter­pri­se ge­brui­kers Btrfs al ja­ren als stan­daard root­be­stands­sys­teem zon­der dat daar gro­te pro­ble­men bij op­tre­den. Ook Fa­cebook ge­bruikt Btrfs voor veel ser­vers.

Net als ZFS vergt Btrfs bij het ge­bruik ech­ter wel een an­de­re ma­nier van den­ken. Bij ima­ges van vir­tu­e­le ma­chi­nes en da­ta­ba­ses met gro­te be­stan­den moet je een beet­je mee­den­ken: Co­py-On-Wri­te (COW) ver­traagt de boel bij der­ge­lij­ke be­stan­den, daar­om kun je het daar­bij be­ter uit­scha­ke­len. Btrfs heeft ook een beet­je hulp no­dig: je moet de vo­lu­mes ge­re­geld op­scho­nen met 'ba­lan­ce'-ac­ties. Als dat niet hand­ma- tig of met vas­te tus­sen­po­zen ge­beurt, kan het be­stands­sys­teem wel­licht geen nieu­we be­stan­den meer op­slaan ter­wijl er ei­gen­lijk nog ge­noeg ruim­te vrij is.

Dat zijn wel­licht wat re­de­nen waar­om Btrfs nog niet zo suc­ces­vol is als men voor­spel­de. Su­se staat ech­ter vier­kant ach­ter het be­stands­sys­teem. Ook bij de En­ter­pri­se­ver­sie van Ora­cle is Btrfs een van de speer­pun­ten. Het be­drijf heeft zelfs een tijd de be­lang­rijk­ste ont­wik­ke­laar in dienst ge­had. Red Hat heeft na een aan­tal moei­za­me po­gin­gen ech­ter een punt ach­ter Btrfs ge­zet: de vol­gen­de ge­ne­ra­tie Red Hat En­ter­pri­se Li­nux zal het be­stands­sys­teem niet meer on­der­steu­nen.

XFS leert nieu­we trucs

Red Hat zet in plaats daar­van in­ten­sie­ver in op XFS, dat bij pro­fes­si­o­ne­le dis­tri­bu­tie Red Hat En­ter­pri­se Li­nux (RHEL) so­wie­so al als stan­daard be­stands­sys­teem gold. Su­se en OpenSu­se ge­brui­ken XFS stan­daard voor da­ta­par­ti­ties. Ook Ora­cle roert zich bij XFS en zet zelfs vaart ach­ter een flin­ke uit­brei­ding, waar­mee het sys­teem di­ver­se nieu­we func­ties krijgt. Een daar­van is het con­tro­le­ren en re­pa­re­ren van het be­stands­sys­teem tij­dens ge­bruik. XFS krijgt zelfs COW-sup­port, waar­door het bij­voor­beeld met re­f­link-ko­pie­ën en ru­di­men­tai­re snap­shots kan wer­ken.

Met an­de­re woor­den: het uit de ja­ren ne­gen­tig stam­men­de en meer­ma­len flink ge­re­no­veer­de XFS krijgt met de nieuw­ste uit­brei­ding veel func­ties die Btrfs en ZFS aan­trek­ke­lijk maak­ten. Aan die XFS-ver­be­te­rin­gen wordt ech­ter nog ge­werkt. En er staan nog meer ver­nieu­win­gen op sta­pel. Een voor­aan­staan­de XFS-ont­wik­ke­laar van Red Hat ex­pe­ri­men­teert al met het toe­voe­gen van sub­vo­lu­mes en vol­waar­di­ge snap­shots.

Maar een echt vo­lu­mema­na­ge­ment zal XFS daar­mee niet krij­gen. Red Hat werkt ech­ter aan een Stra­tis ge­noem­de ma­na­ge­ment­in­fra­struc­tuur waar­mee het be­heer van stor­a­ge mak­ke­lij­ker wordt, net als bij Btrfs en ZFS. Daar­mee ko­men dan ook al­le mo­ge­lijk­he­den van la­gen als MD-RAID en DM-Crypt/Crypts­etup/LUKS be­schik­baar. Die heb­ben zich al ja­ren be­we­zen en zijn krach­ti­ger en flexi­be­ler dan het vo­lu­mema­na­ge­ment van Btrfs en ZFS. Red Hat in­te­greert bo­ven­dien met­een de Vir­tu­al Da­ta Op­ti­mi­zer (VDO) in de door LVM ge­bruik­te de­vi­ce-map­per. Daar­door leert de­ze ook de­du­pli­ca­tie en com­pres­sie op blok­ni­veau. De func­ti­o­na­li­teit is dan niet in een en­kel be­stands­sys­teem be­schik­baar, maar in al­le be­stands­sys­te­men.

Bij Ext4, dat veel desktop­dis­tri­bu­ties als stan­daard ge­brui­ken, is het erg rus­tig. Som­mi­ge ont­wik­ke­laars wer­ken wel aan ver­be­te­rin­gen, maar diep­gaan­de ver­an­de­rin­gen zo­als bij de nieuwst XFS-uit­brei­din­gen zijn hier niet in zicht.

Met Bca­chefs is er daar­naast nog een COW-be­stands­sys­teem voor in­te­gra­tie in de Li­nux-ker­nel. De ker­nel­ont­wik­ke­laars die ver­ant­woor­de­lijk zijn voor de be­stands­sys­te­men staan open voor het toe­voe­gen van dit sys­teem. Bca­chefs komt voort uit de ssd-ca­che­o­p­los­sing Bca­che. Maar na een in­te­gra­tie duurt het door­gaans geen maan­den maar eer­der ja­ren voor­dat de ont­wik­ke­laars de erg­ste bugs heb­ben weg­ge­werkt.

XFS krijgt veel func­ties die Btrfs en ZFS aan­trek­ke­lijk maak­ten

Ge­de­tail­leer­de in­for­ma­tie

So­la­ris was niet al­leen met het be­stands­sys­teem een trend­set­ter, maar ook met zijn Dy­na­mic Tra­cing Fa­ci­li­ty (Dtra­ce). Die tool biedt al een de­cen­ni­um lang ge­de­tail­leerd in­zicht in de sys­teem­pro­ces­sen van So­la­ris. Be­heer­ders en pro­gram­meurs krij­gen daar­mee diep­gaan­de in­for­ma­tie over de run­ti­me­ge­dra­gin­gen van de ker­nel en uit­ge­voer­de pro­gram­ma's. Daar­mee kun­nen per­for­man­ce­pro­ble­men mak­ke­lij­ker en doel­ge­rich­ter wor­den on­der­zocht en ver­hol­pen.

Dat werkt in prin­ci­pe via drie aan el­kaar ver­wan­te trucs. Een daar­van is de mo­ge­lijk­heid tot het in­bou­wen van meet­pun­ten (tra­ce­points), wat ont­wik­ke­laars op be­lang­rij­ke pun­ten in de bron­co­de van de So­la­ris-ker­nel en be­lang­rij­ke soft­wa­re heb­ben ge­daan. Daar­mee is mak­ke­lijk te vol­gen wel­ke her­ken­ba­re de­len van de co­de vaak of lang­du­rig ac­tief zijn. De meet­pun­ten wor­den steeds ge­trig­gerd als de pro­ces­sor de be­tref­fen­de de­len van de co­de uit­voert.

Dat kan ech­ter lei­den tot een gi­gan­ti­sche hoe­veel­heid meet­ge­ge­vens. Die over­dra­gen aan een ana­ly­se­pro­gram­ma in users­pa­ce zou het sys­teem enorm ver­tra­gen. Dat wordt ver­me­den mid­dels een twee­de truc: de pro­gram­ma­co­de wordt in de ker­nel ge­la­den en ver­werkt de ge­ge­vens met­een en zet ze om in een com­pac­te­re be­oor­de­ling. De der­de truc: je kunt zo'n ana­ly­se op elk mo­ment star­ten om­dat de meet­pun­ten stan­daard in­ge­bouwd zijn, maar nor­maal niet voor een noe­mens­waar­di­ge over­head zor­gen.

Ora­cle heeft Dtra­ce na de over­na­me van Sun ge­port naar Li­nux. Het viel des­tijds on­der de bij ZFS ge­bruik­te li­cen­tie, die niet ver­e­nig­baar is met die van de Li­nux-ker­nel. Af­ge­zien van Ora­cle Li­nux zijn er ech­ter nau­we­lijks dis­tri­bu­ties die de­ze op­los­sing ge­ïn­te­greerd heb­ben. Dat is mis­schien de hoofd­re­den waar­om het in de Unix-we­reld erg ge­waar­deer­de Dtra­ce op Li­nux-ge­bied slechts een mar­gi­na­le rol speelt. Er was lan­ge tijd geen al­ter­na­tief, al­leen Sys­temTap kwam een beet­je in de buurt, maar dat speelt bui­ten het Red-Hat-uni­ver­sum geen gro­te rol.

Keer­punt

In the­o­rie kan Dtra­ce nu gaan groei­en, want Ora­cle heeft de li­cen­tie van de Li­nux-port ope­ner ge­maakt om in­te­gra­tie in Li­nux mo­ge­lijk te ma­ken. Veel en­thou­si­as­me heeft dat niet op­ge­le­verd. Niet zo vreemd, want de Li­nux-we­reld heeft on­der­tus­sen de ba­sis ge­legd voor iets be­ters. De be­lang­rijk­ste bouw­steen daar­voor is een kort en krach­tig BPF ge­noem­de vir­tu­e­le ma­chi­ne in de Li­nux-ker­nel. Die heet soms ook eBPF (en­han­ced BPF) om­dat hij van het Ber­ke­ley Pac­ket Fil­ter (BPF) af­stamt. Met het ori­gi­neel, waar bij­voor­beeld net­werkana­ly­se­tools als Tc­pdump op te­rug­grij­pen, heeft het mo­der­ne BPF ech­ter wei­nig van doen. Net als de vir­tu­e­le ma­chi­ne van Ja­va kan de BPF kant-en-kla­re of zelf ge­schre­ven pro­gram­ma's uit­voe­ren. Zo­als bij Dtra­ce kun je per­for­man­ce­meet­ge­ge­vens recht­streeks in de ker­nel ana­ly­se­ren en met­een ver­werkt te­rug­ge­ven. De ana­ly­se kan zelfs de voor Dtra­ce be­stem­de meet­pun­ten ge­brui­ken die de ont­wik­ke­laars van MySQL, Post­greSQL en hon­der­den an­de­re toe­pas­sin­gen in hun co­de heb­ben in­ge­bouwd.

Te­ge­lij­ker­tijd zijn er ver­be­te­rin­gen aan­ge­bracht in de ker­nel­ei­gen Ftra­ce­tra­cer en de voor ker­nel­bron­nen ont­wik­kel­de per­for­man­ce­ana­ly­se­tool Perf. Ook bij het dy­na­misch aan­wij­zen van meet­pun­ten in de ker­nel (Kpro­bes) en in pro­gram­ma's (Upro­bes) is voor­uit­gang ge­boekt. Zo ont­staat lang­za­mer­hand een fra­me­work waar­mee de Li­nux-we­reld aan­slui­ting vindt bij Dtra­ce. Met be­hulp van de BPF Com­pi­ler Col­lec­ti­on (BCC), Perf en een nieu­we Sys­temTap-mo­du­le en wat an­de­re tools, kun­nen de­ze nieu­we mo­ge­lijk­he­den ook al goed wor­den be­nut. Maar het is al­le­maal nog nieuw en moet nog ver­fijnd wor­den. Het ont­breekt voor­al aan soft­wa­re waar­mee de ana­ly­se­func­tie een­vou­di­ger en mak­ke­lij­ker kan wor­den ge­bruikt. Tot die tijd moe­ten be­heer­ders en pro­gram­meurs dat op­van­gen met Li­nux-know­how en ei­gen in­span­nin­gen.

An­ders net­wer­ken

BPF ver­an­dert niet al­leen de sys­teem- en soft­w­are­ana­ly­se, maar kan ook wor­den in­ge­zet om de net­werk­on­der­steu­ning ra­di­caal te ver­an­de­ren. Een be­lang­rij­ke bouw­steen daar­bij is het Ex­press Da­ta Path (XDP). Het gaat daar­bij om een net­werk­snel­weg waar­bij pro­gram­ma's die met de BPF uit­ge- voerd wor­den be­pa­len wat er met de pak­ket­ten ge­beurt. Daar­door kun­nen bij­voor­beeld De­ni­al-of-Ser­vi­ce-aan­val­len be­ter af­ge­wend wor­den of ver­loopt for­war­den ef­fi­ci­ën­ter. XDP kan pak­ket­ten na­me­lijk kort na ont­vangst door de net­werk­chip al om­lei­den of la­ten val­len. Dat be­spaart veel werk voor de krach­ti­ge­re net­werkstack van de ker­nel: die hoeft al­leen nog de pak­ket­ten te ver­wer­ken waar XDP-pro­gram­ma's niets mee kun­nen.

Een der­ge­lij­ke flexi­bel pro­gram­meer­ba­re net­werk­snel­weg is erg in­te­res­sant voor het veel­be­spro­ken Soft­wa­re De­fi­ned Net­wor­king om be­paal­de ta­ken dui­de­lijk ef­fi­ci­ën­ter te re­a­li­se­ren. Juist bij net­wer­ken met vir­tu­e­le ma­chi­nes en con­tai­ners biedt XDP veel voor­de­len, zo­als bij OpenStack en Ku­ber­ne­tes. Het is dus niet zo vreemd dat veel be­drij­ven wer­ken aan pro­duc­ten op ba­sis van XDP.

Een voor­beeld is Fa­cebook, met hun zelf­ont­wik­kel­de load-ba­lan­cer Ka­tran en de voor­al voor con­tai­ners en mi­cro­ser­vi­ces ge­op­ti­ma­li­seer­de net­werk­ma­na­ge­ment­tool Cil­li­um. Die voe­ren en­ke­le van fire­walls be­ken­de fil­ter­ta­ken uit met de BPF. Daar­bij wor­den al­ler­lei func­ties aan­ge­bo­den die met het klas­sie­ke net­werk­fil­ter Ip­ta­bles on­mo­ge­lijk te re­a­li­se­ren zijn.

Fire­wall 4.0

Bij de pak­ket­fil­ters voor fire­walls lijkt een troons­wis­se­ling na­bij. Het via nft be­heer­de Nf­ta­bles moet na­me­lijk de op­vol­ger wor­den van ip­ta­bles en de bij­be­ho­ren­de ge­lijk­na­mi­ge ker­nel­in­fra­struc­tuur. Ip­ta­bles ont­stond rond de wis­se­ling van het mil­len­ni­um en is ver­trouwd voor veel Li­nux­be­heer­ders. Het werkt ook erg over­zich­te­lijk, maar heeft een aan­tal na­de­len die vaak voor­al bij com­plexe set-ups dui­de­lijk wor­den. In 2013 na­men een aan­tal be­lang­rij­ke ont­wik­ke­laars van de net­werk­co­de zich dan ook voor om Nf­ta­bles ein­de­lijk te gaan be­vor­de­ren tot de nieu­we fire­wal­l­op­los­sing. Die Net­fil­ter-toe­pas­sing was tot dan toe voor­al een de­mon­stra­tie­pro­ject.

De syn­taxis van nft lijkt veel op die van pf uit OpenBSD, dat in de Unix-we­reld als toon­aan­ge­ven­de fire­wal­l­op­los­sing geldt. De Nf­ta­bles-tool is daar­door niet al­leen uit­ge­brei­der en flexi­be­ler dan Ip­ta­bles, maar ook mak­ke­lij­ker te han­te­ren. Nf­ta­bles com­mu­ni­ceert daar­naast via een mo­der­ne­re in­ter­fa­ce met nft, waar­door zelfs bij com­plexe fire­walls een af­zon­der­lij­ke re­gel snel en mak­ke­lijk aan­ge­past of toe­ge­voegd kan wor­den. Het is ook een­vou­dig om zo­wel voor IPv4 als IPv6 gel­den­de re­gels te ma­ken. Ver­der hoef je niet meer twee

Per­for­man­ce­pro­ble­men kun­nen be­ter wor­den on­der­zocht en ver­hol­pen

apar­te re­gels te ma­ken om een pak­ket te la­ten val­len (DROP) en dat ook te log­gen (LOG). Be­heer­ders die geen zin heb­ben om weer iets nieuws te le­ren, kun­nen de nieu­we tool en bij­be­ho­ren­de syn­taxis ge­woon ne­ge­ren: er zijn com­pa­ti­bi­li­teitstools die Ip­ta­bles-re­gels zo be­wer­ken dat de ker­nel ze uit­voert met Nf­ta­bles. Het is al­le­maal al zo ver qua func­ti­o­na­li­teit en be­trouw­baar­heid dat nft het be­wind van ip­ta­bles lang­za­mer­hand kan over­ne­men.

Fi­re­wall­ba­sis

On­langs ver­scheen op­eens van­uit het niets een nieu­we kan­di­daat voor de troon­op­vol­ging: de tool Bp­fil­ter, waar­bij door het BPF uit­ge­voer­de pro­gram­ma's het fil­te­ren van net­werk­pak­ket­ten voor hun re­ke­ning ne­men. Dat staat nog in de kin­der­schoe­nen, dus uit­ge­breid tes­ten en ver­der im­ple­men­te­ren is nog no­dig. Bp­fil­ter zal Ip­ta­bles en Nf­ta­bles so­wie­so niet he­le­maal ver­van­gen, het is al­leen een nieu­we, nor­ma­li­ter voor ge­brui­kers ver­bor­gen in­fra­struc­tuur die de kern­func­ties van bei­de pak­ket­ten kan ver­van­gen en het zwa­re werk doet. Die struc­tuur moet uit­ein­de­lijk aan­ge­spro­ken kun­nen wor­den via de pro­gram­mee­r­in­ter­fa­ces die ip­ta­bles en nft al ge­brui­ken. De be­staan­de tools voor het con­fi­gu­re­ren van een fire­wall blij­ven dan wer­ken. Vol­gens de eer­ste me­tin­gen zou Bp­fil­ter een be­te­re per­for­man­ce bie­den dan Ip­ta­bles en Nf­ta­bles. Nog meer snel­heid is mo­ge­lijk met spe­ci­a­le net­werk­chips die BPF-ver­snel­ling bie­den. Dat is al­le­maal no­dig om het ver­keer van 10Gb- en 40Gb-net­werk­kaar­ten te kun­nen ver­wer­ken, want daar ra­zen cir­ca 60 mil­joen 64-by­te pak­ket­ten per se­con­de voor­bij. Dat vergt te veel van de ou­de­re pac­ket­fil­terstacks. XDP kan vol­gens een BPF-ont­wik­ke­laar daar­en­te­gen al zo'n 40 mil­joen pak­ket­ten com­pleet soft­wa­re­ma­tig ver­wer­ken. Dat kan om­dat de ker­nel de BPF-co­de op de gang­ba­re pro­ces­so­rar­chi­tec­tu­ren met Just-in-Ti­me-com­pi­le­ren (JIT) con­ver­teert naar snel­le en ef­fi­ci­ënt uit­voer­ba­re ma­chi­ne­co­de.

Als Bp­fil­ter door­zet, kan dat een groot deel van de Ip­ta­bles- en Nf­ta­bles-co­de in de ker­nel over­bo­dig ma­ken. Ont­wik­ke­laars kun­nen de ker­nel dan lich­ter ma­ken. De voor­uit­zich­ten zijn goed, want de aan­zet wordt ge­le­verd door be­ken­de en voor­aan­staan­de net­werk- en BPF-ont­wik­ke­laars. Ze krij­gen daar­bij on­der­steu­ning van Da­vid Mil­ler, die de net­werk­co­de van Li­nux be­heert en een van de be­lang­rijk­ste ker­nel­ont­wik­ke­laars is. Hij heeft de eer­ste on­der­de­len van Bp­fil­ter al ge­pland voor Li­nux 4.18 (re­lea­se in au­gus­tus).

Wat gaat het wor­den?

Op dit mo­ment is nog niet ze­ker wan­neer de fire­wall­tech­niek Nf­ta­bles, waar al ja­ren aan wordt ge­werkt, echt van de grond komt. Dat kan best vrij lang­zaam gaan om­dat veel be­heer­ders ver­trouwd zijn met Ip­ta­bles en dat een­vou­dig­weg 'goed ge­noeg' werkt. Bo­ven­dien zorgt Bp­fil­ter voor het ver­snel­len van bei­de pak­ket­fil­ters, zo­dat ze ook de steeds snel­ler wor­den­de net­werk­in­ter­fa­ces kun­nen bij­be­nen.

Bij de per­for­man­ce­ana­ly­se wijst al­les er ech­ter op dat Dtra­ce een ni­che­be­staan zal blij­ven lei­den, ook al zijn de li­cen­tie­pro­ble­men uit de we­reld. BPF & der­ge­lij­ke zijn meer be­lo­vend en heb­ben al veel fans. Dat kun­nen er nog meer wor­den als er een met BPF-sup­port ver­rijkt Sys­temTap of iets ge­heel nieuws ver­schijnt, waar­mee de dia­gno­se­mo­ge­lijk­he­den van mo­der­ne ker­nels mak­ke­lijk kun­nen wor­den be­nut.

Bij de be­stands­sys­te­men vol­doet Ext4 voor­lo­pig nog pri­ma, maar steeds meer ge­brui­kers zul­len over­stap­pen op Btrfs of XFS. ZFS for Li­nux is een tus­sen­op­los­sing die min­der in­te­res­sant wordt als Btrfs of de nieu­we XFS-func­ties een vlucht ne­men. Op dit mo­ment heb­ben ech­ter al­le vier de be­stands­sys­te­men een be­staans­recht. Bij be­stands­sys­te­men is het al­tijd al zo ge­weest dat de bes­te op­los­sing af­hangt van de om­stan­dig­he­den. (mdt)

Bp­fil­ter zorgt voor het ver­snel­len van Ip­ta­bles en Nf­ta­bles/Nft

De mees­te func­ties van het 'Next Ge­ne­ra­ti­on Fi­le Sy­s­tem for Li­nux' Btrfs gel­den in­mid­dels als sta­biel.

De tools van de BPF Com­pi­ler Col­lec­ti­on (BCC) bie­den al­ler­lei in­zich­ten in de sys­teem­pro­ces­sen van Li­nux, waar­mee per­for­man­ce­pro­ble­men mak­ke­lij­ker ge­lo­ka­li­seerd en ver­hol­pen kun­nen wor­den.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.