Entwickler des Netfilter-Subsystems zur Filterung und Modifikation von Netzwerkpaketen ein Satz von Patches, die die Verarbeitung groĂer Matching-Listen (nftables set), die eine ĂberprĂŒfung der Kombination aus Subnetzen, Netzwerkports, Protokollen und MAC-Adressen erfordern, erheblich beschleunigen. Die Patches wurden bereits in die Branch , die fĂŒr die Aufnahme in den Linux-Kernel 5.7 vorgeschlagen wird. Die bemerkenswerteste Beschleunigung wurde durch von AVX2-Instruktionen erreicht (eine Ă€hnliche Optimierung auf Basis von NEON-Instruktionen fĂŒr ARM ist vorgesehen).
Die Optimierungen wurden in das Modul eingefĂŒhrt (PIle PAcket POlicies), das die Aufgabe ĂŒbernimmt, den Inhalt eines Pakets mit den in den Filterregeln verwendeten beliebigen BereichszustĂ€nden der Felder, wie beispielsweise IP- und Netzwerkportbereichen, abzugleichen (nft_set_rbtree und nft_set_hash manipulieren den Abgleich von Intervallen und direkten Wertspiegelungen). Die vektorisierten 256-Bit-AVX2-Version von pipapo auf einem System mit einem AMD Epyc 7402-Prozessor zeigte eine Leistungssteigerung von 420 % beim Parsen von 30.000 EintrĂ€gen, darunter Port-Protokoll-Paare. Die Steigerung beim Abgleich eines Paars aus Subnetz und Portnummer beim Parsen von 1.000 EintrĂ€gen betrug 87 % fĂŒr IPv4 und 128 % fĂŒr IPv6.

Eine weitere Optimierung, die die Verwendung von 8-Bit-Matching-Gruppen anstelle von 4-Bit-Gruppen ermöglicht, zeigte ebenfalls einen spĂŒrbaren Leistungsschub: 66 % beim Parsen von 30.000 Port-Protokoll-EintrĂ€gen, 43 % â Subnetz_IPV4-Port und 61 % â Subnetz_IPV6-Port. Insgesamt, unter BerĂŒcksichtigung der AVX2-Optimierungen, erhöhte sich die Leistung von pipapo in den genannten Tests um 766 %, 168 % und 269 % entsprechend. Die fĂŒr komplexe Abgleiche erzielten Charakteristika ĂŒbertreffen die ĂberprĂŒfungen einzelner Felder in (auĂer im Test des Port+Protokoll-Paars), liegen aber derzeit hinter direkten ĂberprĂŒfungen mithilfe von und Drop-Handlers auf Basis von netdev zurĂŒck.

Quelle: opennet.ru
