Linux kernel 5.7 sil komplekse list oerienkomst yn NetFilter fersnelle

Untwikkelders fan it subsysteem Netfilter filtering en modifikaasje foar netwurkpakketten publisearre in set patches dy't de ferwurking fan grutte wedstridenlisten (nftables set) signifikant fersnelle, dy't in kombinaasje fan subnetten, netwurkports, protokol en MAC-adressen kontrolearje moatte. Patches binne al akseptearre yn 'e branch nf-folgjende, dy't sil wurde foarsteld foar opname yn 'e Linux 5.7 kernel. De meast opfallende fersnelling waard berikt troch ynnimmend AVX2-ynstruksjes (yn 'e takomst is it pland om ferlykbere optimisaasjes te publisearjen basearre op NEON-ynstruksjes foar ARM).

Optimisaasjes opnommen yn 'e module nft_set_pipapo (PIle Packet POlicies), dy't oplost it probleem fan oerienkommende de ynhâld fan in pakket mei willekeurich fjild steat berik brûkt yn filterjen regels, lykas IP en netwurk haven berik (nft_set_rbtree en nft_set_hash manipulearje ynterval matching en direkte refleksje fan wearden). De ferzje fan pipapo vectorized mei 256-bit AVX2 ynstruksjes op in systeem mei in AMD Epyc 7402 prosessor toande in 420% prestaasjes ferheging doe't parsing 30 tûzen records ynklusyf haven-protokol kombinaasjes. De ferheging by it fergelykjen fan in kombinaasje fan in subnet en in poartenûmer by it parsearjen fan 1000 records wie 87% foar IPv4 en 128% foar IPv6.

Linux kernel 5.7 sil komplekse list oerienkomst yn NetFilter fersnelle

In oare optimalisaasje, wêrtroch it gebrûk fan 8-bit wedstriden groepen ynstee fan 4-bit, ek toande wichtige prestaasjes winst: 66% doe't parsing 30 tûzen port-protokol yngongen, 43% foar subnet_IPv4-poarte, en 61% foar subnet_IPv6-poarte. Yn totaal, mei rekken hâldend mei AVX2-optimisaasjes, ferhege de prestaasjes fan pipapo yn dizze tests mei respektivelik 766%, 168% en 269%. De skaaimerken krigen foar komplekse fergelikingen binne foarôfgeand oan kontrôles yn ien fjild rbtree (mei útsûndering fan de poarte + protokol test), mar oant no ta bliuwe se efter direkte kontrôles mei help hasjes en drop handlers basearre op netdev.

Linux kernel 5.7 sil komplekse list oerienkomst yn NetFilter fersnelle

Boarne: opennet.ru

Add a comment