Le noyau Linux 5.7 accélérera la correspondance de listes complexes dans NetFilter

Développeurs du sous-système de filtrage et de modification Netfilter pour les paquets réseau ont publié un ensemble de correctifs qui accélèrent considérablement le traitement des grandes listes de correspondances (ensemble nftables), qui nécessitent la vérification d'une combinaison de sous-réseaux, de ports réseau, de protocoles et d'adresses MAC. Les correctifs ont déjà été acceptés dans la branche nf-suivant, qui sera proposé pour inclusion dans le noyau Linux 5.7. L'accélération la plus notable a été obtenue grâce à engageant Instructions AVX2 (à l'avenir, il est prévu de publier des optimisations similaires basées sur les instructions NEON pour ARM).

Optimisations incluses dans le module nft_set_pipapo (PIle PAcket POlicies), qui résout le problème de la correspondance du contenu d'un paquet avec des plages d'état de champ arbitraires utilisées dans les règles de filtrage, telles que les plages de ports IP et réseau (nft_set_rbtree et nft_set_hash manipulent la correspondance d'intervalle et la réflexion directe des valeurs). La version de pipapo vectorisée à l'aide d'instructions AVX256 2 bits sur un système doté d'un processeur AMD Epyc 7402 a montré une augmentation des performances de 420 % lors de l'analyse de 30 1000 enregistrements, y compris les combinaisons port-protocole. L'augmentation en comparant une combinaison d'un sous-réseau et d'un numéro de port lors de l'analyse de 87 4 enregistrements était de 128 % pour IPv6 et de XNUMX % pour IPvXNUMX.

Le noyau Linux 5.7 accélérera la correspondance de listes complexes dans NetFilter

Une autre optimisation, permettant l'utilisation de groupes de correspondance de 8 bits au lieu de 4 bits, a également montré des gains de performances significatifs : 66 % lors de l'analyse de 30 43 entrées de protocole de port, 4 % pour le port subnet_IPv61 et 6 % pour le port subnet_IPv2. Au total, en tenant compte des optimisations AVX766, les performances de pipapo ont augmenté dans ces tests de 168 %, 269 % et XNUMX %, respectivement. Les caractéristiques obtenues pour des comparaisons complexes sont en avance sur les contrôles sur un seul champ dans arbre rb (à l'exception du test port+protocole), mais jusqu'à présent, ils sont à la traîne par rapport aux contrôles directs utilisant hachages et des gestionnaires de suppression basés sur netdev.

Le noyau Linux 5.7 accélérera la correspondance de listes complexes dans NetFilter

Source: opennet.ru

Ajouter un commentaire