Der komplexe NetFilter-Listenabgleich wird im Linux 5.7-Kernel beschleunigt

Entwickler des Netfilter-Filter- und Modifikationssubsystems für Netzwerkpakete veröffentlicht haben eine Reihe von Patches, die die Verarbeitung großer Übereinstimmungslisten (nftables set) erheblich beschleunigen, die die Überprüfung einer Kombination aus Subnetzen, Netzwerkports, Protokollen und MAC-Adressen erfordern. Patches wurden bereits in die Filiale übernommen nf-next, das zur Aufnahme in den Linux 5.7-Kernel vorgeschlagen wird. Die spürbarste Beschleunigung wurde dank erreicht fesselnd AVX2-Anweisungen (in Zukunft ist geplant, ähnliche Optimierungen basierend auf NEON-Anweisungen für ARM zu veröffentlichen).

Optimierungen im Modul enthalten nft_set_pipapo (PIle PAcket POlicies), das das Problem löst, den Inhalt eines Pakets mit beliebigen Feldzustandsbereichen abzugleichen, die in Filterregeln verwendet werden, wie z. B. IP- und Netzwerk-Portbereiche (nft_set_rbtree und nft_set_hash manipulieren den Intervallabgleich und die direkte Spiegelung von Werten). Die mit 256-Bit-AVX2-Anweisungen vektorisierte Version von Pipapo auf einem System mit einem AMD Epyc 7402-Prozessor zeigte eine Leistungssteigerung von 420 % beim Parsen von 30 Datensätzen einschließlich Port-Protokoll-Kombinationen. Der Anstieg beim Vergleich einer Kombination aus Subnetz und Portnummer beim Parsen von 1000 Datensätzen betrug 87 % für IPv4 und 128 % für IPv6.

Der komplexe NetFilter-Listenabgleich wird im Linux 5.7-Kernel beschleunigt

Eine weitere Optimierung, die die Verwendung von 8-Bit-Übereinstimmungsgruppen anstelle von 4-Bit ermöglichte, zeigte ebenfalls erhebliche Leistungssteigerungen: 66 % beim Parsen von 30 Portprotokolleinträgen, 43 % für subnet_IPv4-port und 61 % für subnet_IPv6-port. Insgesamt stieg die Leistung von Pipapo in diesen Tests unter Berücksichtigung der AVX2-Optimierungen um 766 %, 168 % bzw. 269 %. Die für komplexe Vergleiche ermittelten Merkmale sind den Einzelfeld-Checks überlegen rbtree (mit Ausnahme des Port+Protokoll-Tests), liegen aber bisher hinter den direkten Prüfungen mit zurück Hashes und Drop-Handler basierend auf Netdev.

Der komplexe NetFilter-Listenabgleich wird im Linux 5.7-Kernel beschleunigt

Source: opennet.ru

Kommentar hinzufügen