Os desenvolvedores do subsistema de filtragem e modificação de pacotes de rede Netfilter publicaram um conjunto de patches que acelera significativamente o processamento de grandes listas de correspondência (nftables set), onde é necessária a verificação da combinação de sub-redes, portas de rede, protocolo e endereços MAC. Os patches já foram aceitos na branch , que será proposta para inclusão no núcleo do Linux 5.7. O aumento mais significativo de desempenho foi alcançado graças ao de instruções AVX2 (futuramente, está previsto a publicação de otimizações semelhantes baseadas em instruções NEON para ARM).
As otimizações foram incorporadas ao módulo ('PIle PAcket POlicies'), que resolve a tarefa de correspondência do conteúdo do pacote com os intervalos de estado utilizados nas regras de filtragem, como intervalos de IP e portas de rede (nft_set_rbtree e nft_set_hash manipulam a correspondência de intervalos e o reflexo direto dos valores). A versão pipapo vetorizada com instruções AVX2 de 256 bits em um sistema com processador AMD Epyc 7402 mostrou um aumento de desempenho de 420% ao processar 30 mil registros, incluindo pares porta-protocolo. O aumento ao corresponder pares de sub-rede e número de porta ao processar 1.000 registros foi de 87% para IPv4 e 128% para IPv6.

Outra otimização, que permite o uso de grupos de correspondência de 8 bits em vez de 4 bits, também mostrou um aumento significativo de desempenho: 66% ao analisar 30 mil registros porta-protocolo, 43% para sub-rede_IPv4-port e 61% para sub-rede_IPv6-port. No total, considerando as otimizações AVX2, o desempenho do pipapo aumentou nos testes mencionados em 766%, 168% e 269%, respectivamente. As características obtidas para correspondências complexas superam as verificações de campos únicos em ('exceto no teste de pares porta+protocolo'), mas ainda ficam aquém das verificações diretas usando e manipuladores de drop baseados em netdev.

Fonte: opennet.ru
