guia de desenvolvedores nftlb

POSTADO POR Zevenet | 30 julho, 2019

Visão geral

nftlb depende da pilha de rede netfilter / nftables linux. Com essa nova pilha, são fornecidos novos conceitos e habilidades que precisamos encaixar no design de balanceamento de carga atual.

Este artigo tem como objetivo fornecer uma visão geral sobre como o caminho de dados e o caminho de controle do balanceador de carga nftables são projetados.

Ganchos de Caminho de Dados

Estes são os ganchos do Netfilter que o nftlb usa, aproveitando as cadeias configuráveis. Novos conceitos, como o descarregamento de rastreamento de conexão, precisam ser incluídos para acelerar as conexões encaminhadas estabelecidas para os back-ends.

                                                                  ------------
                                                                 |    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 gerenciamento de cluster. Ainda não incluído no nftlb.
Filtro (50-99): Reservado para aceleração de tabelas de fluxo. Ainda não incluído no nftlb.
Filtro (100): Reservado, na ordem, para: Topologias de diretivas de segurança (lista de bloqueio e lista branca), Retorno direto do servidor e dNAT sem estado.

Prerouting

(-150) filter: Reservado para limites de segurança por serviços virtuais ou por back-end como: número máximo de conexões estabelecidas, limite de TCP RST por segundo, limite de TCP SYN por segundo, queda de conexões TCP não restritas, fila para serviço DNSBL, serviço virtual e marcas backends , uso de helpers, registro de conexões de entrada por serviço virtual.
(0) nat: Reservado para o destino NAT mangling.

para a frente

Filtro (0): Reservado para descarregamento de fluxo. Ainda não incluído no nftlb.

postrouting

(100) nat: Reservado para o destino NAT mangling.

Caminho de controle

O caminho de controle nftlb é projetado como um daemon que fornece um servidor http simples com uma API, ou binário independente que aceita um arquivo de configuração no formato JSON.

                -------------    traduction     -------------             --------
   JSON API    |             |   objs to nft   |             |  netlink  |        |
 ------------> | http server | --------------> | libnftables | --------> | kernel |
               |             |        |        |             |           |        |
                -------------         |         -------------             --------
                                      |               netlink                |
                                       ---------------------------------------
Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados