Udviklerne af Netfilter-pakkefiltrerings- og modifikationssystemet et sæt patches, der betydeligt øger hastigheden af behandlingen af store match-lister (nftables set), hvor der er behov for at kontrollere kombinationen af subnetværk, netværksadresser, protokoller og MAC-adresser. Patches er allerede accepteret i grenen , som vil blive foreslået til inkludering i Linux-kernen 5.7. Den mest markante hurtigere behandling er opnået ved AVX2-instruktioner (det er planlagt at offentliggøre lignende optimeringer baseret på NEON-instruktioner til ARM i fremtiden).
Optimeringerne er indført i modulet (PIle PAcket POlicies), der løser opgaven med at matche indholdet af pakken med de anvendte filtreringsregler, der spænder over vilkårlige intervalområder, såsom IP- og netværksportintervaller (nft_set_rbtree og nft_set_hash håndterer matchningen af intervaller og direkte afspejling af værdier). Den vektoriserede version af pipapo med 256-bit AVX2-instruktioner på et system med en AMD Epyc 7402-processor viste en stigning i ydeevnen på 420% ved behandling af 30.000 poster, der omfatter port-protokol-koblinger. Forøgelsen ved matchning af en subnetværk- og portnummerkombination ved behandling af 1.000 poster var 87% for IPv4 og 128% for IPv6.

En anden optimering, der gør det muligt at bruge 8-bit match-grupper i stedet for 4-bit, viste også betydelig ydeevneforøgelse: 66% ved behandling af 30.000 port-protokol-poster, 43% — subnet_IPv4-port og 61% — subnet_IPv6-port. I alt, når man tager højde for AVX2-optimeringerne, blev ydeevnen for pipapo øget i de angivne tests med 766%, 168% og 269% henholdsvis. De opnåede karakteristika for komplekse matchninger overgår kontrol af enkeltfelter i (undtagen testen af port+protokol), men ligger stadig bag de direkte kontroller ved hjælp af og drop-behandlere baseret på netdev.

Kilde: opennet.ru
