Resumen #
nftlb se basa en la pila de red de Linux netfilter/nftables. Esta nueva pila proporciona nuevos conceptos y capacidades que necesitamos para integrarnos en el diseño actual de balanceo de carga.
Este artículo tiene como objetivo brindar una comprensión general sobre cómo se diseñan la ruta de datos y la ruta de control del balanceador de carga de nftables.
Ganchos de ruta de datos #
Estos son los ganchos de Netfilter que utiliza nftlb, aprovechando las cadenas configurables. Es necesario incluir nuevos conceptos, como la descarga del seguimiento de conexiones, para acelerar las conexiones reenviadas establecidas a los backends.
------------ | DNSBL | ------------ | ingreso a la cola | preenrutamiento adelante posenrutamiento ------------ ------------- -------------- -------- ---- ------- -------------- ------- | filtro | filtro | filtro | | filtro | nacional | | filtro | | nacional | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | Políticas de seguridad |-( Conntrack )-> | Límites de seguridad | |-( Enrutamiento )-> | | --> | | | Agrupación | Tablas de flujo | DSR | VS{} | Ayudantes | dNAT | VS{} | Descarga de flujo | | sNAT | | | | dNAT sin acero | | Marcas | | -------------- ------- ------------ ------------- ---- ---------- ------------ -------
preámbulo #
(0) filtro: Reservado para la gestión de clusters. Aún no incluido en nftlb.
(50-99) filtro: Reservado para aceleración de tablas de flujo. Aún no incluido en nftlb.
(100) filtro: Reservado, en orden, para: Políticas de seguridad (listas negras y listas blancas), retorno directo del servidor y topologías dNAT sin estado.
preenrutamiento #
(-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 manipulación de NAT de destino.
HACIA EL FUTURO #
(0) filtro : Reservado para descarga de flujo. Aún no incluido en nftlb.
postenrutamiento #
(100) nat : Reservado para la manipulación de NAT de destino.
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.
------------- traducción ------------- -------- API JSON | | objs a nft | | enlace de red | | ------------> | servidor http | --------------> | libnftables | --------> | núcleo | | | | | | | | ------------- | ------------- -------- | enlace de red | ---------------------------------------