Linux kernel 5.7 zal het matchen van complexe lijsten in NetFilter versnellen

Ontwikkelaars van het Netfilter-filter- en wijzigingssubsysteem voor netwerkpakketten gepubliceerd een reeks patches die de verwerking van grote matchlijsten (nftables set) aanzienlijk versnellen, waarbij een combinatie van subnetten, netwerkpoorten, protocol- en MAC-adressen moet worden gecontroleerd. Patches zijn al geaccepteerd in het filiaal nf-volgende, die zal worden voorgesteld voor opname in de Linux 5.7-kernel. De meest opvallende versnelling werd bereikt dankzij innemend AVX2-instructies (in de toekomst is het de bedoeling om soortgelijke optimalisaties te publiceren op basis van NEON-instructies voor ARM).

Optimalisaties opgenomen in de module nft_set_pipapo (PIle PAcket POlicies), dat het probleem oplost van het matchen van de inhoud van een pakket met willekeurige veldstatusbereiken die worden gebruikt in filterregels, zoals IP- en netwerkpoortbereiken (nft_set_rbtree en nft_set_hash manipuleren intervalmatching en directe reflectie van waarden). De versie van pipapo gevectoriseerd met behulp van 256-bit AVX2-instructies op een systeem met een AMD Epyc 7402-processor liet een prestatieverbetering van 420% zien bij het parseren van 30 records inclusief poort-protocolcombinaties. De stijging bij het vergelijken van een combinatie van een subnet en een poortnummer bij het parseren van 1000 records was 87% voor IPv4 en 128% voor IPv6.

Linux kernel 5.7 zal het matchen van complexe lijsten in NetFilter versnellen

Een andere optimalisatie, die het gebruik van 8-bit matchgroepen in plaats van 4-bit mogelijk maakte, liet ook aanzienlijke prestatieverbeteringen zien: 66% bij het parseren van 30 poortprotocolvermeldingen, 43% voor subnet_IPv4-poort en 61% voor subnet_IPv6-poort. In totaal, rekening houdend met AVX2-optimalisaties, stegen de prestaties van pipapo in deze tests met respectievelijk 766%, 168% en 269%. De kenmerken die worden verkregen voor complexe vergelijkingen liggen voor op controles in het veld rbboom (met uitzondering van de poort+protocoltest), maar tot nu toe blijven ze achter bij directe controles met behulp van hasj en drop-handlers op basis van netdev.

Linux kernel 5.7 zal het matchen van complexe lijsten in NetFilter versnellen

Bron: opennet.ru

Voeg een reactie