[GTER] CGNAT Bulk Port Allocation com DPDK

Fernando Frediani fhfrediani at gmail.com
Fri Nov 13 18:22:47 -03 2020


Um ponto importante a se comentar sobre o uso de Bulk Port Allocation é 
o seguinte.

Normalmente quando se faz um CGNAT Determinístico, embora ele seja mais 
simples com relação ao armazenamento de logs existem 2 problemas: 1) O 
limite de portas pode não ser suficiente para um cliente ou outro e 
causar problemas na navegação e 2) O número de portas alocadas é fixo e 
mesmo que a maioria dos clientes não utilize esse número ele não pode 
ser compartilhado com mais ninguém, o que significa uma necessidade 
maior de uso de IPs Públicos para atender uma determinada base de 
clientes recebendo IPs de CGNAT.
Tenho visto muitos colegas terem como referência, assim como eu próprio 
quando faço um Determinístico um ratio de 1:32 ou cerca de 2000 portas 
para cada usuário.

No entanto o uso médio de portas de um usuário tradicional é algo entre 
250 a 500 portas e é ai que onde está o um dos ganhos do Bulk Port 
Allocation. Se existem mais portas disponíveis dentro das cerca 65 mil 
em cada IP Público é possível ter um maior número de usuários atrás de 
um único IP Público do que no Determinístico. O Bulk Port Allocation 
aloca blocos pré-definidos (ex: 512 portas) dinamicamente conforme a 
necessidade do assinante. E de quebra é possível atender usuários com 
maior demanda pontual por portas (ex: 2000, 4000 portas) sem causar 
problemas de navegação.

Em resumo o que hoje é possível atender com uma mesma range de IPs 
Públicos em modo Determinístico é possível acomodar pelo menos de forma 
segura o dobro até 4 vezes mais usuários usando Bulk Port Allocation. E 
mesmo com a guarda de logs que não é tão complexa nem tão grande assim 
vale muito a pena.

Mas como o Gondim menciona no artigo e nunca é demais repetir a solução 
para a escassez de endereços IPv4 Públicos não é o CGNAT mas a 
implantação do IPv6 até a CPE do assinante. CGNAT sem IPv6 é ilusão.

Abraços
Fernando Frediani

On 13/11/2020 18:04, lyon lisboa wrote:
> Gondim,
>
> Parabéns por mais esse artigo, ficou excelente!!!
>
> Abs!
>
> On Fri, Nov 13, 2020 at 5:39 PM Gondim <gondim at linuxinfo.com.br> wrote:
>
>> Olá Flavio,
>>
>> Em 13/11/2020 16:54, Flavio Hayashi escreveu:
>>> Meus parabéns Gondim. Resultado fantástico para esse Hardware!!!
>>>
>>> Ainda não li em detalhes, mas se puder adiantar Gondim, fiquei com 2
>>> pontos de curiosidade
>>>
>>> 1) Com o dataplane rodando como user process, já puxando os 100% do
>>> core, tem alguma outra ferramenta para acompanhar se ainda tem
>>> capacidade na máquina?
>> Sim, essa é uma coisa que não temos nele. Estou colocando tráfego nesse
>> equipamento e acompanhando na switch e em gráficos se vai incrementar
>> algum erro ou apresentar alguma anomalia no gráfico. Como tenho um
>> bonding de 20Gbps entrando e 20Gbps saindo. Quero ver se com esse
>> hardware consigo chegar pelo menos em 18Gbps de entrada e saída. Vou
>> manter o artigo atualizado nesse sentido e se alguém conseguir outras
>> informações, posso publicar junto lá como referência também.
>>> 2) Com o BPA, como é feito o registro de mapeamento? Tem algum formato
>>> de log integrado com o sistema de gestão? Digo, alguém da operação
>>> consegue identificar o cliente no caso de requisição legal?
>> São 2 pontos que vocẽ vai ter log e depois correlacioná-los. Um é o
>> registro no radius por exemplo onde fica gravado o IP de CGNAT que seu
>> cliente pegou com data/hora e o outro é o que você vai armazenar do
>> DANOS que inclusive coloquei lá no artigo. Toda vez que for finalizado
>> um uso de portas + ip público, ele vai gerar um log assim:
>>
>> Nov 10 00:38:18 danos-cgnat dataplane[2689]: CGNAT: PB_RELEASED
>> subs-addr=100.69.82.117 policy=POLICY pub-addr=186.xxx.xxx.238
>> pool=NAT_POOL1 port=11264-11775 start-time=1604953031015000
>> end-time=1604953119545000
>>
>> No nosso caso tratamos esse log no Graylog e armazenamos em uma base de
>> dados MySQL. Quando você receber algum documento que tenha a porta
>> origem, o IP público e data/hora você vai consultar nessa base qual foi
>> o IP de CGNAT, por exemplo 100.69.82.117 e aí sim você vai fazer a
>> consulta desse IP 100.69.82.117 na data/hora  na sua base radius  pra
>> saber quem foi o assinante.
>>> Abraços e novamente, parebéns pelo resultado
>>>
>>>
>>> Flávio
>>>
>>> Em 13/11/2020 09:16, Gondim escreveu:
>>>> Bom dia pessoal,
>>>>
>>>> A escassez de endereços IPv4 tem obrigado muitos provedores de
>>>> Internet a aplicar mecanismos de CGNAT cada vez mais sofisticados e
>>>> performáticos devido à demanda crescente de tráfego.
>>>> Mesmo possuindo um IPv6 implantado em toda a base de clientes o CGNAT
>>>> precisa estar bem implantado e dimensionado para reduzir os problemas
>>>> decorrentes do compartilhamento de endereços IPv4 e restrição do
>>>> número de portas.
>>>> Como eu havia prometido aqui está o tutorial sobre o sistema DANOS,
>>>> baseado em Linux que é capaz de realizar CGNAT com Bulk Port
>>>> Allocation o que significa uma economia considerável de endereços
>>>> IPv4 Públicos, uma maior flexibilidade no número de portas utilizadas
>>>> pelos clientes e uma ótima performance pois utiliza DPDK o que
>>>> permite a utilização de um hardware modesto capaz de atingir dezenas
>>>> de Gigabits por segundo. Tudo isso de maneira gratuita possibilitando
>>>> ao provedor uma opção a mais além das comercialmente disponíveis.
>>>> O artigo pode ser acessado em:
>>>>
>>>>
>> https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK
>>>>
>>>> Abrs,
>>>>
>>> --
>>> gter list    https://eng.registro.br/mailman/listinfo/gter
>> --
>>     ⢀⣴⠾⠻⢶⣦⠀  Marcelo Gondim
>>     ⣾⠁⢠⠒⠀⣿⡁  Sysadmin - https://www.linuxinfo.com.br
>>     ⢿⡄⠘⠷⠚⠋   DA04 922E 78B3 44A5 3C8D 23D0 8DB5 571E E151 4E19
>>     ⠈⠳⣄⠀⠀⠀⠀  Logic will get you from A to B. Imagination will take you
>> everywhere. (Albert Einstein)
>>
>> --
>> gter list    https://eng.registro.br/mailman/listinfo/gter
>>
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter


More information about the gter mailing list