Contenido
Resumen
nftlb se basa en la pila de red de linux netfilter / nftables. Con esta nueva pila, se proporcionan nuevos conceptos y habilidades que necesitamos para encajar en el diseño actual de equilibrio de carga.
Este artículo tiene como objetivo proporcionar una visión general sobre cómo se diseñan la ruta de datos y la ruta de control de nftables load balancencer.
Ganchos de ruta de datos
Estos son los ganchos Netfilter que usa nftlb, aprovechando las cadenas configurables. Se deben incluir nuevos conceptos como la descarga de seguimiento de conexión para acelerar las conexiones reenviadas establecidas a los backends.
------------ | DNSBL | ------------ | queue ingress | prerouting forward postrouting ------------ ------------- -------------- ------------ ------- -------------- ------- | filter | filter | filter | | filter | nat | | filter | | nat | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | Sec Policies |-( Conntrack )-> | Sec Limits | |-( Routing )-> | | --> | | | Clustering | Flow tables | DSR | VS{} | Helpers | dNAT | VS{} | Flow offload | | sNAT | | | | stless dNAT | | Marks | | -------------- ------- ------------ ------------- -------------- ------------ -------
preámbulo
Filtro (0): Reservado para la gestión de clustering. Aún no incluido en nftlb.
Filtro (50-99): Reservado para la aceleración de tablas de flujo. Aún no incluido en nftlb.
Filtro (100): Reservado, en orden, para: Políticas de seguridad (listas negras y listas blancas), retorno directo del servidor y topologías dNAT sin estado.
prerrutamiento
(-150) filtro: Reservado para límites de seguridad por servicios virtuales o por backend como: número máximo de conexiones establecidas, límite de TCP RST por segundo, límite de TCP SYN por segundo, caída de conexiones TCP no estrictas, cola al servicio DNSBL, servicio virtual y marcas de backends , uso de ayudantes, registro de conexiones de entrada por servicio virtual.
(0) nat: Reservado para el destino de NAT NAT.
HACIA EL FUTURO
Filtro (0): Reservado para descarga de flujo. Aún no incluido en nftlb.
postrouting
(100) nat: Reservado para el destino de NAT NAT.
Ruta de control
La ruta de control nftlb está diseñada como un demonio que proporciona un servidor http simple con una API o un binario independiente que acepta un archivo de configuración en formato JSON.
------------- traduction ------------- -------- JSON API | | objs to nft | | netlink | | ------------> | http server | --------------> | libnftables | --------> | kernel | | | | | | | | ------------- | ------------- -------- | netlink | ---------------------------------------