O IPv6 - Transição III


2. Classificação das técnicas de transição

Como já foi visto, desde 1983 a estrutura da Internet é baseada no IPv4. Uma troca completa e imediata do protocolo seria inviável devido ao tamanho e à proporção desta rede. Por isso, o IPv6 foi projetado para ser implantado gradualmente.
O período de transição e de coexistência dos dois protocolos exigiu o desenvolvimento de técnicas auxiliares. O primeiro problema que elas procuravam resolver era como conectar redes IPv6 a outras redes IPv6 por meio de equipamentos ou de uma Internet que só suportassem IPv4. Surgiram então diversos tipos de túneis IPv6 sobre IPv4 para atender tal necessidade, usando diferentes técnicas, estabelecidos manualmente ou automaticamente. Foram criadas também técnicas para permitir que redes IPv6 e IPv4 interoperassem, por meio da tradução dos pacotes.
Mais recentemente, o problema principal a ser resolvido pela técnicas de transição passou a ser a implantação do IPv6 num ambiente em que o IPv4 não está mais disponível, mas ainda é necessário para os novos usuários da Internet. Foram, e continuam sendo, desenvolvidos então diversos tipos de túneis IPv4 sobre IPv6 para, aliados a técnicas de tradução, solucionar esse problema.
Pode-se, então, classificar as técnicas de transição segundo sua funcionalidade, em:
  • Pilha dupla: consiste na convivência do IPv4 e do IPv6 nos mesmos equipamentos, de forma nativa, simultâneamente. Essa técnica é a técnica padrão escolhida para a transição para IPv6 na Internet e deve ser usada sempre que possível.
  • Túneis: Permitem que diferentes redes IPv4 comuniquem-se através de uma rede IPv6, ou vice-versa.
  • Tradução: Permitem que equipamentos usando IPv6 comuniquem-se com outros que usam IPv4, por meio da conversão dos pacotes.
Deve-se notar que tanto os túneis quanto as técnicas de tradução podem ser stateful ou stateless. Técnicas stateful são aquelas em que é necessário manter tabelas de estado com informações sobre os endereços ou pacotes para processá-los. Nas técnicas stateless não é necessário guardar informações, cada pacote é tratado de forma independente. De forma geral técnicas stateful são mais caras: gastam mais CPU e memória, por isso não escalam bem. Sempre que possível deve-se dar preferência a técnicas stateless.
Há casos em que é necessária a comunicação entre IPv4 e IPv6 para apenas um, ou poucos tipos de aplicações. Ou ainda, quando é usada uma técnica de tradução e ela funciona para quase todas as aplicações, mas falha para algumas poucas, nomeadamente aquelas que carregam endereços IP literais no protocolo, na camada de aplicação. Para esses casos podem ser usados gateways específicos, na camada de aplicação. São chamados de Application Level Gateways, ou ALGs.
Uma grande dificuldade no processo de implantação do IPv6 é o desenvolvimento de uma variedade enorme de técnicas de transição, o que dificulta a escolha do que efetivamente utilizar. A figura 11 ilustra essa variedade, nomeando diversos tipos de técnicas para túneis hoje padronizadas, ou em discussão na IETF, e organizando-as segundo sua funcionalidade e método de funcionamento. Nem todas serão abordadas neste texto.
De forma geral, os critérios que devem ser utilizados na escolha da técnica a ser utilizada, são:
  • deve-se preferir técnicas que impliquem na utilização de IPv6 nativo pelos usuários finais, de forma que túneis IPv4 dentro de IPv6 devem ser preferidos em detrimento de túneis IPv6 sobre IPv4;
  • deve-se preferir técnicas stateless em detrimento de técnicas statefull;
  • deve-se evitar técnicas para prolongar o uso do protocolo IPv4, sem a adoção concomitante do IPv6;
  • deve-se analisar a adequação da técnica à topologia da rede onde será aplicada e
  • deve-se analisar a maturidade da técnica e as opções de implantação, como por exemplo suporte à mesma nos equipamentos de rede e em softwares.
img11
Figura 11: classificação das técnicas de transição

Como uma terceira possibilidade de classificação, pode-se dividir as técnicas conforme seus casos de uso:
  • Fornecer IPv6 e IPv4 para todos os dispositivos: pilha dupla.
  • Oferecer conectividade IPv6 nativa em conjunto com conectividade IPv4 com compartilhamento e preservação de endereços: DS-Lite, DS-Lite com A+P, 4rd, NAT64, IVI e 464XLAT.
  • Transportar IPv6 em uma rede MPLS IPv4: 6PE e 6VPE.
  • Obter conectividade IPv6, quando o provedor Internet não a oferecer: tunnel broker e túneis estáticos 6over4 ou GRE.
  • Oferecer conectividade IPv6 para os usuários sobre uma rede de transporte IPv4: 6rd (normalmente usado em provedores) e ISATAP (para redes internas).
  • Mecanismos para compartilhar endereços IPv4, estendendo sua vida: A+P e NAT444.

3. Pilha Dupla: IPv6 e IPv4 em todos os dispositivos

Na atual fase de implantação do IPv6, não é aconselhável ter nós com suporte apenas a esta versão do protocolo IP, visto que muitos serviços e dispositivos na Internet ainda trabalham somente com IPv4. Como citado anteriormente, manter o IPv4 já existente funcionando de forma estável e implantar o IPv6 nativamente, para que coexistam nos mesmos equipamentos, é a forma básica escolhida para a transição na Internet.  Esta técnica é conhecida como pilha dupla (Dual Stack ou DS) e deve ser usada sempre que possível.
A utilização deste método permite que dispositivos e roteadores estejam equipados com pilhas para ambos os protocolos, tendo a capacidade de enviar e receber os dois tipos de pacotes, IPv4 e IPv6. Com isso, um nó Pilha Dupla, ou nó IPv6/IPv4, se comportará como um nó IPv6 na comunicação com outro nó IPv6 e se comportará como um nó IPv4 na comunicação com outro nó IPv4.
Cada nó IPv6/IPv4 é configurado com ambos endereços, utilizando mecanismos IPv4 (ex. DHCP) para adquirir seu endereço IPv4 e mecanismos IPv6 (ex. configuração manual, autoconfiguração stateless e/ou DHCPv6) para adquirir seu endereço IPv6.
Este método de transição permita uma implantação gradual, com a configuração de  pequenas seções do ambiente de rede de cada vez. Além disso, caso no futuro o IPv4 não seja mais usado, basta simplesmente desabilitar a pilha IPv4 em cada nó.
O funcionamento da pilha dupla está ilustrado na figura 12.
img12

Figura 12: funcionamento da pilha dupla
Alguns aspectos referentes à infra-estrutura da rede devem ser considerados ao se implementar a técnica de pilha dupla: a estruturação do serviço de DNS e a configuração dos protocolos de roteamento e de firewalls.
Em relação ao DNS, é preciso configurar os novos endereços IPv6, usando registros do tipo AAAA (quad-A), que armazenam seus endereços. Para mais detalhes sobre o suporte do DNS ao IPv6, consulte a RFC 3596. Responder os endereços IPv6 (registros AAAA) quando disponíveis para um determinado nome de domínio é o comportamento padrão do servidor DNS, mesmo que ele opere apenas com IPv4. O protocolo por meio do qual é feita a consulta não interfere na resposta. Ao receber endereços IPv6 e IPv4 como resposta a uma consulta no DNS a aplicação decide qual protocolo usar. Normalmente a preferência é pelo protocolo IPv6 e, em caso de falha, tenta-se o IPv4. Mais recentemente têm sido experimentadas técnicas que implicam em tentativas simultâneas de conexão IPv6 e IPv4 e optam pela que for mais rápida (draft-ietf-v6ops-happy-eyeballs-07).
Em uma rede com pilha dupla, a configuração do roteamento IPv6 normalmente é independente da configuração do roteamento IPv4. Isto implica no fato de que, se antes de implementar-se o IPv6 a rede utilizava apenas o protocolo de roteamento interno OSPFv2 (com suporte apenas ao IPv4), será necessário migrar para um protocolo de roteamento que suporte tanto IPv6 quanto IPv4 (como ISIS por exemplo) ou forçar a execução do OSPFv3 paralelamente ao OSPFv2.
A forma como é feita a filtragem dos pacotes que trafegam na rede pode depender da plataforma que se estiver utilizando. Em um ambiente Linux, por exemplo, os filtros de pacotes são totalmente independentes uns dos outros, de modo que o iptables filtra apenas pacotes IPv4 e o ip6tables apenas IPv6, não compartilhando nenhuma configuração. No FreeBSD, as regras são aplicadas a ambos os protocolos no mesmo arquivo de configuração. Entretanto a regra pode ser aplicada simultâneamente aos dois protocolos ou a somente um. Para aplicar a somente um deles basta utilizar inet ou inet6 dependendo do protocolo à qual as regras devem ser aplicadas. De uma forma ou de outra, novas regras terão de ser configuradas no firewall ao implantar-se o IPv6.
É importante reforçar que configurações independentes para IPv4 e IPv6 são necessárias para diversos aspectos da rede, entre eles:
  • Informações nos servidores DNS autoritativos;
  • Protocolos de roteamento;
  • Firewalls;
  • Gerenciamento das redes.
Utilizar pilha dupla pode não ser possível em todas as ocasiões. Por exemplo, quando não há mais IPv4 disponíveis e o provedor precisa atender a usuários novos com IPv6 e IPv4. Para redes corporativas que já utilizam NAT isso não é um impendimento: o IPv6 nativo pode ser utilizado em conjunto com o IPv4 compartilhado. Outra situação que dificulta a implantação do IPv6 usando pilha dupla é a existência de equipamentos que não o suportam e que não podem ser facilmente substituídos. Para contornar essas situações existem diversas técnicas disponíveis, algumas das quais serão abordadas nas próximas sessões.

4. Túneis 6over4 (IPv6-over-IPv4)

CenárioR6-I4I4-R6I6-R4R4-I6R6-R4R4-R6I6-I4I4-I6R6-I4-R6R4-I6-R4
SuportaNãoNãoNãoNãoNãoNãoNãoNãoSimNão
Quando a utilização de pilha dupla não é possível, umas das alternativas a ser considerada é a utilização de túneis. As técnicas de tunelamento fazem o encapsulamento de pacotes IPv6 em pacotes IPv4. Este encapsulamento é conhecido como 6in4 ou IPv6-in-IPv4 (RFC 4213). Ele consiste em colocar o pacote IPv6 dentro de um pacote IPv4, adequar os endereços de origem e destino para o IPv4 e colocar no cabeçalho o tipo 41 (29 em hexadecimal). Esse tipo de encapsulamento é conhecido por 6in4,  ou como “protocolo 41”. Quando o destino receber o pacote com tipo 41 ele irá remover o cabeçalho IPv4 e tratar o pacote como IPv6. A figura 13 ilustra esse comportamento.
Também é possível, de forma análoga, encapsular pacotes IPv4 em pacotes IPv6, técnica conhecida como 4in6. Algumas das técnicas de transição estudadas mais à frente fazem isso.
img13

Figura 13: funcionamento 6in4
Uma das formas de utilizar-se túneis é criando-os manualmente. A técnica 6over4 (RFC 4213) utiliza um túnel manual estabelecido entre dois nós IPv4 para enviar o tráfego IPv6. Todo o tráfego IPv6 a ser enviado é encapsulado em IPv4 usando 6in4, explicado anteriormente. A configuração manual consiste em definir quais serão os IPs v4 de origem e destino que serão utilizados em cada ponta do túnel. Ao ser recebido pelo nó destino, o pacote IPv6 é desencapsulado e tratado adequadamente.
Esse tipo de túnel pode ser utilizado para contornar um equipamento ou enlace sem suporte a IPv6 numa rede, ou para criar túneis estáticos entre duas redes IPv6 através da Internet IPv4.
É importante entender a diferença entre 6over4 e 6in4. O túnel 6over4 é um túnel estabelecido manualmente que tem o objetivo de permitir conexão IPv6 entre dois nós de rede conectados por uma rede via IPv4. Ele usa o encapsulamento 6in4. Já o encapsulamento 6in4, com a utilização do tipo 41, pode ser utilizado também em outras técnicas de transição que transportam pacotes IPv6 em redes IPv4, como poderá ser observado ao longo deste texto.
Criar um túnel 6over4 é bastante fácil. A seguir serão mostrados exemplos de como fazer esta implementação no Linux e com roteadores Cisco. A topologia da implementação em Linux é:
img14
Figura 14: túnel manual 6over4 entre dois dispositivos
Os computadores Host A e Host B são computadores Linux e os roteadores simplesmente representam uma rede somente IPv4 ou a Internet IPv4. Os computadores devem ser configurados com os seguintes passos:
No Host A, basta digitar os comandos:

ip tunnel add toHostB mode sit ttl 64 remote 192.0.2.130 local 192.0.2.2
ip link set dev toHostB upip -6 route add 2001:db8::b0ca dev toHostB
De forma análoga, no Host B:
ip tunnel add toHostA mode sit ttl 64 remote 192.0.2.2 local 192.0.2.130 ip link set dev toHostA up
ip -6 route add 2001:db8::ba1a dev toHostA
Para verificar o correto funcionamento pode-se utilizar o comando ping6 antes e depois de fazer as configurações. Será possível notar que as duas máquinas passaram a comunicar-se via IPv6.
Para o exemplo de configuração em roteadores Cisco de túneis 6over4 a topologia será:
img15
Figura 15: túnel manual 6over4 entre dois roteadores
Para a configuração do túnel somente é necessária a configuração do Roteador A e do Roteador B.
No Roteador A:
configure terminal
interface Tunnel10
ipv6 address 2001:db8:100::1/64
tunnel source 198.51.100.5
tunnel destination 203.0.113.198
tunnel mode ipv6ip
end
Ainda no Roteador A, é necessário ativar o roteamento IPv6 e criar uma rota para a rede do Roteador B, apontando para o Túnel 6over4:
ipv6 unicast-routing
ipv6 route 2001:db8:20::/64 2001:db8:100::2
De forma análoga, no Roteador B:

configure terminal
interface Tunnel20ipv6 address 2001:db8:100::2/64
tunnel source 203.0.113.198
tunnel destination 198.51.100.5
tunnel mode ipv6ip
endipv6 unicast-routing
ipv6 route 2001:db8:10::/64 2001:db8:100::1
Mais uma vez, é possível testar a configuração utilizando o ping para IPv6.

5. Túneis GRE

CenárioR6-I4I4-R6I6-R4R4-I6R6-R4R4-R6I6-I4I4-I6R6-I4-R6R4-I6-R4
SuportaNãoNãoNãoNãoNãoNãoNãoNãoSimNão
Outra opção de túnel estático para o tranporte de IPv6 em redes IPv4 é o GRE (Generic Routing Encapsulation – RFC 2784). Ele é um túnel estático entre dois nós originalmente desenvolvido pela Cisco com a finalidade de encapsular vários tipos diferentes de protocolos, como por exemplo IPv6 e ISIS (a lista completa dos protocolos suportados pode ser encontrada em http://www.iana.org/assignments/ethernet-numbers). Este tipo de encapsulamento é suportado na maioria do sistemas operacionais e roteadores e possibilita a criação de um link ponto a ponto. Assim como o 6over4 sua configuração é manual, de modo que pode gerar um esforço na sua manutenção e gerenciamento proporcional à quantidade de túneis.
O pacote com cabeçalho é explicado na figura a seguir:
img16

Figura 16: pacote com cabeçalho GRE
O funcionamento deste tipo de túnel é muito simples: consiste em pegar os pacotes originais, adicionar o cabeçalho GRE e o cabeçalho IPv4 e enviar ao IP de destino. Quando o pacote encapsulado chegar na outra ponta do túnel (IP de destino) remove-se dele os cabeçalhos IPv4 e GRE, restando apenas o pacote original, que é encaminhado normalmente ao destinatário.
A configuração dos túneis GRE é muito semelhante àquela feita para o 6over4. No exemplo dado para roteadores Cisco, no item 4, basta trocar:
tunnel mode ipv6ip
por
tunnel mode gre

Comentários

Postagens mais visitadas deste blog

O IPv6 - Alocação de endereços

Característica do Protocolo FTP

A camada Aplicação - Modelo OSI