El kernel de Linux 5.7 acelerará la coincidencia de listas complejas en NetFilter

Desarrolladores del subsistema de filtrado y modificación de paquetes de red Netfilter publicado un conjunto de parches que aceleran significativamente el procesamiento de grandes listas de coincidencias (conjunto nftables), que requieren verificar una combinación de subredes, puertos de red, protocolo y direcciones MAC. Los parches ya han sido aceptados en la sucursal. nf-siguiente, que se propondrá para su inclusión en el kernel de Linux 5.7. La aceleración más notable se logró gracias a atractivo Instrucciones AVX2 (en el futuro está previsto publicar optimizaciones similares basadas en instrucciones NEON para ARM).

Optimizaciones incluidas en el módulo. nft_set_pipapo (PIle PAcket POlicies), que resuelve el problema de hacer coincidir el contenido de un paquete con rangos de estado de campo arbitrarios utilizados en reglas de filtrado, como rangos de puertos de red e IP (nft_set_rbtree y nft_set_hash manipulan la coincidencia de intervalos y la reflexión directa de los valores). La versión de pipapo vectorizada utilizando instrucciones AVX256 de 2 bits en un sistema con un procesador AMD Epyc 7402 mostró un aumento de rendimiento del 420 % al analizar 30 mil registros, incluidas las combinaciones de puerto y protocolo. El aumento al comparar una combinación de una subred y un número de puerto al analizar 1000 registros fue del 87 % para IPv4 y del 128 % para IPv6.

El kernel de Linux 5.7 acelerará la coincidencia de listas complejas en NetFilter

Otra optimización, que permitió el uso de grupos de coincidencia de 8 bits en lugar de 4 bits, también mostró ganancias de rendimiento significativas: 66 % al analizar 30 mil entradas de protocolo de puerto, 43 % para el puerto subred_IPv4 y 61 % para el puerto subred_IPv6. En total, teniendo en cuenta las optimizaciones de AVX2, el rendimiento de pipapo aumentó en estas pruebas en un 766%, 168% y 269%, respectivamente. Las características obtenidas para comparaciones complejas están por delante de las comprobaciones de campo individuales en rbárbol (con la excepción de la prueba de puerto + protocolo), pero hasta ahora van por detrás de las comprobaciones directas utilizando hashes y controladores de caída basados ​​en netdev.

El kernel de Linux 5.7 acelerará la coincidencia de listas complejas en NetFilter

Fuente: opennet.ru

Añadir un comentario