A correspondência de lista complexa do NetFilter será acelerada no kernel Linux 5.7

Desenvolvedores do subsistema de filtragem e modificação de pacotes de rede Netfilter publicado um conjunto de patches que acelera significativamente o processamento de grandes listas de correspondências (conjunto nftables), que exigem a verificação de uma combinação de sub-redes, portas de rede, protocolo e endereços MAC. Patches já foram aceitos no branch nf-próximo, que será proposto para inclusão no kernel Linux 5.7. A aceleração mais notável foi alcançada graças a noivando Instruções AVX2 (no futuro está prevista a publicação de otimizações semelhantes baseadas nas instruções NEON para ARM).

Otimizações incluídas no módulo nft_set_pipapo (PIle PAcket POlicies), que resolve o problema de correspondência do conteúdo de um pacote com intervalos de estado de campo arbitrários usados ​​​​em regras de filtragem, como IP e intervalos de portas de rede (nft_set_rbtree e nft_set_hash manipulam correspondência de intervalo e reflexão direta de valores). A versão do pipapo vetorizada usando instruções AVX256 de 2 bits em um sistema com processador AMD Epyc 7402 apresentou um aumento de desempenho de 420% ao analisar 30 mil registros incluindo combinações de protocolo de porta. O aumento ao comparar uma combinação de uma sub-rede e um número de porta ao analisar 1000 registros foi de 87% para IPv4 e 128% para IPv6.

A correspondência de lista complexa do NetFilter será acelerada no kernel Linux 5.7

Outra otimização, permitindo o uso de grupos de correspondência de 8 bits em vez de 4 bits, também mostrou ganhos significativos de desempenho: 66% ao analisar 30 mil entradas de protocolo de porta, 43% para subnet_IPv4-port e 61% para subnet_IPv6-port. No total, levando em consideração as otimizações do AVX2, o desempenho do pipapo aumentou nesses testes em 766%, 168% e 269%, respectivamente. As características obtidas para comparações complexas estão à frente das verificações de campo único em rbtree (com exceção do teste porta+protocolo), mas até agora eles estão atrás das verificações diretas usando hashes e manipuladores de descarte baseados em netdev.

A correspondência de lista complexa do NetFilter será acelerada no kernel Linux 5.7

Fonte: opennet.ru

Adicionar um comentário