CGNAT para 40 mil assinantes sem estourar o log

Alocação determinística de portas reduz o log de CGNAT de bilhões de linhas por mês para praticamente zero. A conta de dimensionamento, passo a passo.

CGNAT é o compartilhamento de um IPv4 público entre vários assinantes, e virou inevitável: a LACNIC esgotou o estoque geral de IPv4 e comprar prefixo no mercado secundário custa caro por endereço. O problema começa quando o CGNAT é dimensionado no olho e os limites aparecem em produção, na forma de porta esgotada em horário de pico ou de um ofício judicial que o log não consegue responder.

A conta correta cabe em uma página. Vamos fazê-la para um ISP de 40 mil assinantes, um porte comum no interior do Centro-Oeste.

A obrigação que define o projeto

O Marco Civil da Internet (Lei 12.965/2014, art. 13) obriga o provedor a guardar registros de conexão por 12 meses. Com CGNAT, "registro de conexão" precisa permitir responder: qual assinante estava usando o IP público X, porta Y, no instante Z.

O jeito ingênuo de responder é logar cada sessão NAT. Um assinante doméstico abre algumas dezenas de milhares de sessões por dia; 40 mil assinantes geram na casa de bilhões de linhas por mês. Guardar 12 meses disso significa manter dezenas de terabytes de log consultáveis sob prazo judicial, um custo que a alocação determinística de portas, descrita a seguir, elimina quase por completo.

A alocação determinística dispensa o log de sessões

Na alocação determinística de portas em blocos (PBA, port block allocation), cada assinante recebe uma faixa fixa de portas de um IP público, calculada por fórmula a partir do seu IP privado. A tradução deixa de ser sorteio e vira função, e o mapeamento pode ser reconstruído a qualquer momento sem log nenhum, só com a configuração e o cadastro de qual assinante tinha qual IP privado.

A conta de capacidade:

portas utilizáveis por IP público:   64 512  (1024–65535)
bloco por assinante:                  2 048  portas
assinantes por IP público:               31
IPs para 40 mil assinantes:           1 291  → um /21 (2 048 IPs) com folga
lado privado:                 100.64.0.0/10  (RFC 6598, reservado para CGNAT)

Duas decisões merecem atenção nessa tabela. Primeiro, o tamanho do bloco: 2.048 portas atendem o assinante doméstico típico, cujo pico fica entre 300 e 1.000 sessões simultâneas. Blocos de 512 espremem mais assinantes por IP, mas geram esgotamento de porta para quem usa muitas conexões, e esse chamado é difícil de diagnosticar. Segundo, a folga: os 1 291 IPs necessários equivalem a um /21,7, e arredondar para o /21 inteiro deixa 59% de sobra de propósito. Dimensione pela base projetada para os próximos 24 meses, porque a base de hoje estará defasada antes da primeira expansão.

O que ainda se loga: a atribuição do IP privado ao assinante (que o servidor PPPoE ou DHCP já registra) e, se o equipamento alocar blocos dinâmicos adicionais em pico, cada alocação de bloco. Esse segundo registro fica em poucas linhas por assinante por dia, contra dezenas de milhares no log por sessão. A resposta ao ofício sai de um cruzamento de duas tabelas pequenas.

O que o equipamento precisa suportar

Antes de fechar a compra ou reaproveitar o roteador que existe, verifique três comportamentos:

  • PBA determinístico de fato, com a fórmula documentada pelo fabricante. "Suporta CGNAT" sem determinismo devolve o problema do log.
  • EIM/EIF (endpoint-independent mapping e filtering): mantém o mesmo mapeamento externo independentemente do destino, o que faz jogos, VoIP e videochamada funcionarem atrás do CGNAT. Sem isso, o suporte recebe a fatura em chamados.
  • Contadores de esgotamento de bloco exportáveis para a monitoração. Assinante sem porta livre navega "com lentidão", e sem o contador esse defeito não aparece em gráfico nenhum.

IPv6 anda junto

CGNAT bem dimensionado compra tempo enquanto o IPv6 não chega ao assinante. Cada assinante com IPv6 nativo tira do CGNAT justamente o tráfego mais pesado, porque os grandes destinos de vídeo e redes sociais já atendem em IPv6. Um dual stack bem feito reduz o tráfego traduzido a uma fração e adia a próxima expansão de pool por anos. A ordem de ativação que funciona sem parar a rede é assunto para um artigo próprio.

Se o seu CGNAT foi dimensionado há mais de dois anos, ou se ninguém consegue dizer hoje qual assinante estava atrás de determinado IP e porta em uma data passada, vale refazer essa conta: contato@castelapi.com.br.

continue lendo

Artigos relacionados