Maximização do uso do IPv4 com Data Centers IPv6 only e SIIT-DCs
26/04/2022
Poucos ambientes de rede se adaptam melhor à operação de pilha única do que os Centros de Dados. A operação de pilha dupla com o IPv4 e IPv6 em paralelo somente gera mais complexidade e sobrecarga administrativa. Não existem quase motivos para querer manter dois conjuntos de ACL, dois planos de endereçamento, dois procedimentos de solução de problemas e assim por diante, quando um é suficiente
Portanto, ao projetar uma rede de um centro de dados, a pergunta é: o IPv4 ou o IPv6?
As duas opções têm vantagens. No caso do IPv4, a vantagem mais importante é que praticamente todos os aplicativos são compatíveis com essa versão do protocolo, mesmo os legados ou livres de manutenção. Do outro lado, os endereços só IPv4 são poucos e caros no mundo todo. A solução natural seria usar endereços privados (RFC 1918) no seu lugar. No entanto, isso tem suas próprias desvantagens, principalmente porque exige a introdução na rede de dispositivos NAT com estado para traduzir entre a Internet IPv4 global no exterior e os endereços privados usados no interior.
Outra desvantagem, é claro, é que essa solução não está particularmente preparada para o futuro, já que, embora lentamente, a Internet global está migrando para o IPv6.
Então, por que não construirmos uma rede de centro de dados só IPv6? Se não houver aplicativos herdados só IPv4 dos que se preocupar, o IPv6 é uma boa opção. Os endereços IPv6 são abundantes e fáceis de conseguir; além disso, a maioria dos sistemas operacionais e aplicativos modernos os suportam. Se começarmos com o IPv6, não precisaremos nos preocupar com projetos complexos de migração de versão de IP no futuro.
A única coisa que resta considerar é como permitir que usuários finais da Internet que usam só IPv4 acessem os serviços e aplicativos hospedados no centro de dados só IPv6. Uma maneira particularmente inteligente de fazer isso é usar SIIT-DC – SIIT-DC: Tradução de IP/ICMP sem estado para ambientes de centros de dados IPv6 (RFC 7755). O SIIT-DC realiza uma conversão sem estado pacote por pacote do IPv4 para o IPv6 e vice-versa, deixando a carga útil (normalmente TCP) intacta. O SIIT-DC fornece a “cola” que possibilita que um usuário final só IPv4 se comunique com um servidor só IPv6.
Um tradutor SIIT-DC tem uma tabela com pares de endereços IPv4 e IPv6, por exemplo:
IPv4 | IPv6 |
---|---|
198.51.100.0 | 2001:db8::1234 |
198.51.100.1 | 2001:db8:abcd::42 |
…e assim por diante.
Quando o tradutor SIIT-DC recebe um pacote IPv4 destinado a um dos endereços IPv4 da tabela, ele remove o cabeçalho IPv4 e o substitui por um cabeçalho IPv6 onde o endereço de destino é trocado com base na tabela. O endereço de origem do cabeçalho IPv6 será o endereço IPv4 original do usuário final, com um prefixo IPv6 especial de 96 bits anteposto (prepend).
Esse prefixo especial poderia ser obtido do próprio pool de endereços do operador do centro de dados ou bem poderia ser usado um dos prefixos de uso especial reservados na RFC 6052 e a RFC 8215, por exemplo, 64:ff9b:1::/96.
Exemplo: o usuário final IPv4 203.0.113.123 quer abrir o site www.example.org, que tem um registro DNS IN A de 198.51.100.1. O pacote TCP SYN resultante é roteado para um tradutor SIIT-DC, que o traduz em um pacote IPv6 com o endereço de origem 64:ff9b:1::203.0.113.123 (64:ff9b:1::cb00:717b) e o endereço de destino 2001:db8:abcd::42.
O pacote traduzido é encaminhado para a rede IPv6, o servidor web responde normalmente e é roteado de volta para um tradutor SIIT-DC, que realiza a tradução inversa. Conexão estabelecida!
(No entanto, o que acontece com os usuários finais que suportam IPv6? Obviamente, se conectarão diretamente a 2001:db8:abcd::42 de acordo com o registro IN AAAA de DNS de www.example.org, omitindo completamente o sistema de tradução SIIT-DC).?
Como o SIIT-DC não tem estado, a tradução de IPv4→IPv6 não precisa ser tratada pelo mesmo dispositivo que a tradução inversa de IPv6→IPv4. Desde que todos estejam configurados com a mesma tabela de tradução IPv4/IPv6 e prefixo de 96 bits, pode haver qualquer número de dispositivos envolvidos. Nem precisam estar localizados no mesmo centro de dados ou rede —não há motivo algum pelo qual não poderíamos oferecer o SIIT-DC como um serviço para outras organizações pela Internet pública—.
Finalmente, o SIIT-DC maximiza o uso dos endereços IPv4 disponíveis. Você deve ter notado que a tabela de tradução no exemplo começa com um endereço «.0» —isso não foi um erro—. O SIIT-DC pode usar todos e cada um dos endereços que lhe são designados, os endereços de rede e broadcast não geram sobrecargas administrativas, etc. Dada a atual escassez de endereços IPv4 públicos, é importante aproveitar ao máximo os endereços IPv4 públicos aos que temos acesso.
Se você estiver pensando em construir um centro de dados no futuro, espero que seja um centro de dados só IPv6 e que o SIIT-DC o ajude a consegui-lo.
Se quiser experimentar com o SIIT-DC, um bom ponto de partida seria baixar Jool, uma implementação de código aberto para Linux desenvolvida pelo NIC México e o Tecnológico de Monterrey.
*Tore Anderson é arquiteto de redes sênior para o provedor de serviços de nuvem norueguês Redpill Linpro. Ele tem um interesse especial de longa data no IPv6 e redes para centros de dados, questões sobre as que escreveu várias RFC.
As opiniões expressas pelos autores deste blog são próprias e não refletem necessariamente as opiniões de LACNIC.