Linux-kerne 5.7 vil fremskynde kompleks listematchning i NetFilter

Udviklere af Netfilter-filtrerings- og modifikationsundersystemet til netværkspakker offentliggjort et sæt patches, der markant fremskynder behandlingen af ​​store matchlister (nftables-sæt), som kræver kontrol af en kombination af undernet, netværksporte, protokol og MAC-adresser. Patches er allerede blevet accepteret i filialen nf-næste, som vil blive foreslået til inklusion i Linux 5.7-kernen. Den mest mærkbare acceleration blev opnået takket være engagerende AVX2 instruktioner (i fremtiden er det planlagt at udgive lignende optimeringer baseret på NEON instruktioner til ARM).

Optimeringer inkluderet i modulet nft_set_pipapo (PIle Packet POlicies), som løser problemet med at matche indholdet af en pakke med vilkårlige felttilstandsintervaller, der bruges i filtreringsregler, såsom IP- og netværksportområder (nft_set_rbtree og nft_set_hash manipulerer intervalmatching og direkte afspejling af værdier). Versionen af ​​pipapo vektoriseret ved hjælp af 256-bit AVX2-instruktioner på et system med en AMD Epyc 7402-processor viste en 420% ydelsesforøgelse ved parsing af 30 tusinde poster inklusive portprotokolkombinationer. Stigningen ved sammenligning af en kombination af et undernet og et portnummer ved parsing af 1000 poster var 87 % for IPv4 og 128 % for IPv6.

Linux-kerne 5.7 vil fremskynde kompleks listematchning i NetFilter

En anden optimering, der tillader brugen af ​​8-bit matchgrupper i stedet for 4-bit, viste også betydelige præstationsgevinster: 66 % ved parsing af 30 tusind portprotokolposter, 43 % for subnet_IPv4-port og 61 % for subnet_IPv6-port. I alt, taget AVX2-optimeringer i betragtning, steg pipapos ydeevne i disse test med henholdsvis 766%, 168% og 269%. De opnåede egenskaber til komplekse sammenligninger er forud for indtjekning i enkeltfelter rbtræ (med undtagelse af port+protokol-testen), men indtil videre halter de bagud direkte kontrol ved hjælp af hash og drop-handlere baseret på netdev.

Linux-kerne 5.7 vil fremskynde kompleks listematchning i NetFilter

Kilde: opennet.ru

Tilføj en kommentar