Linuxkärnan 5.7 kommer att påskynda komplex listmatchning i NetFilter

Utvecklare av Netfilter-filtrerings- och modifieringsundersystemet för nätverkspaket publicerat en uppsättning patchar som avsevärt påskyndar behandlingen av stora matchningslistor (nftables set), som kräver kontroll av en kombination av subnät, nätverksportar, protokoll och MAC-adresser. Patchar har redan accepterats i filialen nf-nästa, som kommer att föreslås för inkludering i Linux 5.7-kärnan. Den mest märkbara accelerationen uppnåddes tack vare engagerande AVX2-instruktioner (i framtiden är det planerat att publicera liknande optimeringar baserade på NEON-instruktioner för ARM).

Optimering ingår i modulen nft_set_pipapo (PIle Packet POlicies), som löser problemet med att matcha innehållet i ett paket med godtyckliga fälttillståndsintervall som används i filtreringsregler, såsom IP- och nätverksportintervall (nft_set_rbtree och nft_set_hash manipulerar intervallmatchning och direkt reflektion av värden). Versionen av pipapo vektoriserad med 256-bitars AVX2-instruktioner på ett system med en AMD Epyc 7402-processor visade en prestandaökning på 420 % vid analys av 30 tusen poster inklusive portprotokollkombinationer. Ökningen när man jämför en kombination av ett subnät och ett portnummer vid analys av 1000 poster var 87 % för IPv4 och 128 % för IPv6.

Linuxkärnan 5.7 kommer att påskynda komplex listmatchning i NetFilter

En annan optimering, som tillåter användningen av 8-bitars matchningsgrupper istället för 4-bitars, visade också betydande prestandavinster: 66 % vid analys av 30 tusen portprotokollposter, 43 % för subnet_IPv4-port och 61 % för subnet_IPv6-port. Totalt, med hänsyn tagen till AVX2-optimeringar, ökade pipapos prestanda i dessa tester med 766%, 168% respektive 269%. De egenskaper som erhålls för komplexa jämförelser ligger före enstaka fältincheckningar rbträd (med undantag för port+protokolltestet), men än så länge ligger de efter direkta kontroller med hjälp av hash och släpphanterare baserade på netdev.

Linuxkärnan 5.7 kommer att påskynda komplex listmatchning i NetFilter

Källa: opennet.ru

Lägg en kommentar