Roteamento de alto desempenho com um conjunto de regras de alta rotatividade. Qual abordagem é mais provável escalar para C10K e além?

1

Fui solicitado a criar um roteador de alto rendimento usando hardware de PC / servidor. Eu estou modestamente familiarizado com pf, iptables e tc, mas nunca tive tanta rotatividade e tantas regras. Espero que você possa me ajudar a evitar soluções estúpidas que não funcionem.

Meu objetivo é oferecer suporte a pelo menos 10.000 clientes simultâneos, com pelo menos 100 clientes adicionados e removidos por segundo. Cada cliente terá regras de roteamento bidirecionais simples com a seguinte funcionalidade:

  • Apenas IPv6
  • Encaminhar o pacote (substituindo os endereços de origem e destino)
  • Gravar bytes recebidos
  • Parar o encaminhamento depois que uma quantidade definida de dados foi recebida

Minha preocupação é que criar e destruir 100 conjuntos de regras por segundo irá matar o desempenho devido a um mutex escondido.

As minhas soluções candidatas são:

  • OpenBSD com pf. Esta é a minha solução preferida.
  • Debian com iptables + tc.
  • Um módulo de kernel personalizado. Eu prefiro não fazer isso, mas vou, se for preciso.

Qual dessas soluções será dimensionada melhor? Quais truques devo usar para obter o melhor desempenho possível?

    
por Freen 21.03.2014 / 00:27

1 resposta

1

Embora eu nunca tenha tentado fazer o que você está fazendo, a melhor maneira de fazer isso com o OpenBSD provavelmente será com as tabelas, pois você pode facilmente adicionar / remover IPs das tabelas.

    
por 01.04.2014 / 14:24