guía de desarrolladores nftlb

PUBLICADO EL 30 julio, 2019

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                |
                                       ---------------------------------------
Comparte en:

Documentación bajo los términos de la Licencia de Documentación Libre de GNU.

¿Le resultó útil este artículo?

Artículos Relacionados