Técnica de transição
Escrito por Rodrigo Regis dos Santos
Encapsulamento
De uma forma geral, o funcionamento de um túnel é bem simples. O nó de entrada do túnel, cria um cabeçalho IPv4 com o pacote IPv6 encapsulado e o transmite através da rede IPv4. O nó de saída recebe o pacote encapsulado, retira o cabeçalho IPv4 e processa o pacote IPv6 recebido.
Este processo de encapsulamento, conhecido como 6in4, é identificado como protocolo do tipo 41 e sua utilização é comum em algumas técnicas de tunelamento, como 6to4, ISATAP e Tunnel Broker.
A estrutura de pacote IPv6 encapsulado em IPv4 é representada na figura abaixo:
Os campos do cabeçalho IPv4 são configurados da seguinte forma:
- Versão: para IPv4 o valor é 4;
- IHL(IP Header Lenght): comprimento do cabeçalho IP em palavras de 32 bits, geralmente é 5, pois, não há opções IPv4 no cabeçalho de encapsulamento;
- Tipo de serviço: geralmente é 0, para mais detalhes consulte a RFC 2983 e a RFC 3168 na seção 9.1;
- Tamanho total: Tamanho do payload do pacote IPv6 extraído do cabeçalho IPv6 mais o tamanho do cabeçalho IPv6 e IPv4, ou seja 60 bytes;
- ID: é o número de identificação do pacote, que é único para cada pacote enviado via IPv4;
- Flags: O flag DF (não fragmentar) é configurado de acordo com a seção 3.2 da RFC 4213. Se for necessário a fragmentação, ative o flag MF (mais fragmentos);
- Offset (Fragment Offset): necessário caso utilize fragmentação de pacote;
- TTL (Time To Live): Depende da implementação (RFC 4213 seção 3.3);
- Protocolo: o valor é 41 (ou 0x29 na notação hexadecimal), indicando que os dados encapsulados são IPv6;
- Origem: endereço IPv4 de entrada do túnel; e
- Destino: endereço IPv4 da saída do túnel.
Deste modo, o processo de desencapsulamento torna-se muito simples. Quando o pacote chega na saída do túnel (endereço IPv4 de destino), é verificado que ele utiliza protocolo do tipo 41 (6in4), então remove-se o cabeçalho IPv4, restando apenas o pacote IPv6, o qual é enviado para processamento na camada IPv6 e conseqüentemente encaminhado ao destinatário IPv6.
Alguns problemas de comunicação devem ser tratados pelo nó de entrada do túnel. É preciso determinar quando fragmentar o pacote ou quando reportar ao nó de origem um erro ICMPv6 "
packet too big ", além de traduzir erros ICMPv4, reportados pelos roteadores ao longo do caminho do túnel, em erros ICMPv6 e transmiti-los de volta ao nó de origem. O primeiro problema, remete a implementação de
Static Tunnel MTU ou
Dynamic Tunnel MTU. O segundo, depende do modo como o roteador devolve a mensagem de erro, visto que roteadores mais antigos retornam apenas 8 bytes de dados além do cabeçalho IPv4, o que não é suficiente para incluir o campo de endereço do cabeçalho IPv6. Entretanto, roteadores mais novos, são capazes de retornar além do cabeçalho IPv4, os dados do cabeçalho IPv6, permitindo ao nó encapsulador extrair o pacote IPv6 encapsulado e usá-lo para gerar uma mensagem ICMPv6 direcionando-a para o nó IPv6 de origem.
Além disso, um outro inconveniente apresentado pelo encapsulamento 6in4 é o fato dele não funciona através de NAT puro, pois, como não é um pacote TCP/UDP não possui especificação de portas, item necessário na comunicação através de NAT.
Interessante ressaltar, que as técnicas de tunelamento são tratadas pela camada IPv6 como um modelo "
single-hop ”, isto é, todo o trajeto entre origem e destino do pacote IPv6 é visto como um único salto. Isto ocorre porque o campo
Hop Limit do cabeçalho IPv6 só é decrementado no encaminhamento do pacote, os nós de entrada e saída do túnel não o decrementam.
Última atualização 16/10/2008 18h07