V jádře Linuxu 5.7 bude urychleno porovnávání komplexních seznamů NetFilter

Vývojáři filtrovacího subsystému a modifikace síťových paketů Netfilter publikováno sada patchů, které výrazně zrychlují zpracování velkých mapovacích seznamů (sada nftables), které vyžadují kontrolu kombinace podsítí, síťových portů, protokolu a MAC adres. Patche jsou již přijímány do pobočky nf-další, který bude navržen pro zahrnutí do jádra Linuxu 5.7. Nejvýraznějšího zrychlení bylo dosaženo díky angažovanost AVX2 instrukce (v budoucnu se plánuje publikování podobných optimalizací na základě NEON instrukcí pro ARM).

Provedené optimalizace modulu nft_set_pipapo (PIle PAcket POlicies), která řeší problém porovnávání obsahu paketu s libovolnými rozsahy stavů polí používaných ve filtrovacích pravidlech, jako jsou rozsahy IP a síťových portů (nft_set_rbtree a nft_set_hash manipulují s intervalovým porovnáváním a přímým odrazem hodnot). Verze pipapo vektorizovaná pomocí 256bitových instrukcí AVX2 na systému s procesorem AMD Epyc 7402 vykázala nárůst výkonu o 420 % při analýze 30 1000 záznamů, které zahrnovaly vazby port-protokol. Nárůst shody odkazu z podsítě a čísla portu při analýze 87 záznamů byl 4 % pro IPv128 a 6 % pro IPvXNUMX.

V jádře Linuxu 5.7 bude urychleno porovnávání komplexních seznamů NetFilter

Další optimalizace, umožňující použití 8bitových mapovacích skupin místo 4bitových, také ukázala měřitelné zvýšení výkonu: 66 % při analýze 30 43 záznamů protokolu portu, 4 % pro subnet_IPv61-port a 6 % pro subnet_IPv2-port. Celkově, s přihlédnutím k optimalizacím AVX766, se výkon pipapo v těchto testech zvýšil o 168 %, 269 % a XNUMX %. Charakteristiky získané pro komplexní srovnání jsou před testy jednotlivých polí v rbstrom (s výjimkou testu portu + protokolu), ale zatím zaostávají za přímými testy pomocí hash a drop handlery založené na netdev.

V jádře Linuxu 5.7 bude urychleno porovnávání komplexních seznamů NetFilter

Zdroj: opennet.ru

Přidat komentář