„Linux“ branduolys 5.7 pagreitins sudėtingų sąrašų atitikimą „NetFilter“.

Netfilter tinklo paketų filtravimo ir modifikavimo posistemio kūrėjai paskelbtas pataisų rinkinys, kuris žymiai pagreitina didelių atitikmenų sąrašų (nftables rinkinio) apdorojimą, dėl kurio reikia patikrinti potinklių, tinklo prievadų, protokolo ir MAC adresų derinį. Pleistrai jau priimti į filialą nf-kitas, kuris bus pasiūlytas įtraukti į Linux 5.7 branduolį. Labiausiai pastebimas pagreitis buvo pasiektas dėka patrauklus AVX2 instrukcijos (ateityje planuojama publikuoti panašius optimizavimus pagal NEON instrukcijas, skirtas ARM).

Į modulį įtrauktos optimizacijos nft_set_pipapo (Pile paketų politikos), kuri išsprendžia paketo turinio suderinimo su savavališkais lauko būsenos diapazonais, naudojamais filtravimo taisyklėse, pvz., IP ir tinklo prievadų diapazonais (nft_set_rbtree ir nft_set_hash manipuliuoja intervalų atitikimu ir tiesioginiu reikšmių atspindžiu), problemą. Pipapo versija, vektorizuota naudojant 256 bitų AVX2 instrukcijas sistemoje su AMD Epyc 7402 procesoriumi, parodė 420% didesnį našumą, kai buvo analizuojama 30 tūkstančių įrašų, įskaitant prievado ir protokolo derinius. Padidėjimas, lyginant potinklio ir prievado numerio derinį analizuojant 1000 įrašų, buvo 87 % IPv4 ir 128 % IPv6.

„Linux“ branduolys 5.7 pagreitins sudėtingų sąrašų atitikimą „NetFilter“.

Kitas optimizavimas, leidžiantis naudoti 8 bitų atitikties grupes vietoj 4 bitų, taip pat parodė reikšmingą našumo padidėjimą: 66% analizuojant 30 tūkstančių prievado protokolo įrašų, 43% subnet_IPv4-port ir 61% subnet_IPv6-port. Iš viso, atsižvelgiant į AVX2 optimizavimą, pipapo našumas šiuose testuose padidėjo atitinkamai 766%, 168% ir 269%. Sudėtingiems palyginimams gautos charakteristikos yra prieš patikrinimus viename lauke rbtree (išskyrus prievado+protokolo testą), bet kol kas jie atsilieka nuo tiesioginių patikrinimų naudojant maišos ir drop tvarkyklės, pagrįstos netdev.

„Linux“ branduolys 5.7 pagreitins sudėtingų sąrašų atitikimą „NetFilter“.

Šaltinis: opennet.ru

Добавить комментарий