Ontwikkelaars van het Netfilter-systeem voor filtering en modificatie van netwerkniveaus een reeks patches die de verwerking van grote overeenkomstenlijsten (nftables set) significant versnellen, waarbij controle vereist is van subnetten, netwerkpoorten, protocollen en MAC-adressen. De patches zijn al geaccepteerd in de tak , die zal worden voorgesteld voor opname in de Linux-kernel 5.7. De meest opmerkelijke versnelling is gerealiseerd door AVX2-instructies (in de toekomst is het gepland om soortgelijke optimalisaties op basis van NEON-instructies voor ARM te publiceren).
Optimalisaties zijn aangebracht in de module (PIle PAcket POlicies), die de taak aanpakt om de inhoud van een pakket te vergelijken met de in filterregels toegepaste willekeurige waardes van velden, zoals IP- en netwerkportintervallen (nft_set_rbtree en nft_set_hash manipuleren de overeenkomst van intervallen en directe reflectie van waarden). De gevectoriseerde versie van pipapo met 256-bits AVX2-instructies toont een prestatieverbetering van 420% bij het verwerken van 30.000 records, inclusief port-protocol koppelingen. De verbetering bij het vergelijken van de koppeling van subnet en poortnummer bij het verwerken van 1000 records was 87% voor IPv4 en 128% voor IPv6.

Een andere optimalisatie die het gebruik van 8-bits wedstrijduitslagen in plaats van 4-bits mogelijk maakt, toonde ook een merkbare prestatieverbetering: 66% bij het verwerken van 30.000 records port-protocol, 43% - subnet_IPv4-poort en 61% - subnet_IPv6-poort. In totaal, rekening houdend met de AVX2-optimalisaties, steeg de prestatie van pipapo in de genoemde tests met 766%, 168% en 269% respectievelijk. De resultaten voor complexe overeenkomsten overtreffen de controles van enkele velden in (behalve de test van de koppeling port+protocol), maar blijven momenteel achter bij directe controles via en drop-handlers op basis van netdev.

Bron: opennet.ru
