Internet Protocol Version 6 – IPv6

IPv6, também conhecido por IPng, é chamado por muitos de protocolo da próxima geração. E visto que estamos cada vez mais próximos do upgrade da versão 4 para a 6 convém começarmos a familiarizar-nos com este protocolo e no que traz de novo. Grande parte das pessoas não sabe que estamos a chegar ao limite do IPv4. Na verdade, dos teoricamente 4.3 mil milhões de endereços que o IPv4 permite apenas temos disponíveis cerca de 250 milhões endereços. E ainda existem muitas áreas onde o IP pode e vai ser aplicado. Além destas aplicações que se pretendem fazer, também temos que levar em conta que apenas cerca de 10% da população mundial está ligada à Internet e que países como por exemplo a China e Índia ainda agora começaram a ter acesso a ela. O IPv4 não consegue fazer face a todas estas necessidades, daí a necessidade de haver uma mudança. Muito se tem feito para tentar atenuar a escassez de endereços com o IPv4, tem-se recorrido à Variable Length Subnet Masks (VLSM) e ao Network Address Protocol (NAT) para tentar aproveitar ao máximo os endereços disponíveis. Mas o IPv6 não se trata apenas de ter mais espaço, não, este protocolo sofreu uma modificação radical tanto na sua estrutura como no seu funcionamento. Foi melhorado significativamente para oferecer mais capacidade, eficácia, flexibilidade e optimização para ir ao encontro das necessidades actuais.

Benefícios e Usos do IPv6

Talvez o que salte logo á vista seja o facto de ao invés dos 4 mil milhões de endereços disponíveis, passamos a poder usar cerca de 340.282.366.920.938.463.463.374.607.431.768.211.456 de endereços. Mas existem outras características que fazem com que uma mudança para o IPv6 seja benéfica e que compense o tempo, o custo e o esforço da mudança. Muitas das coisas que existem hoje numa rede e em especial na Internet não foram pensadas quando se desenvolveu o IPv4 e por isso tem-se recorrido a muitos “remendos” para tentar colmatar essas falhas. Além de que as tecnologias mais recentes começam apresentar alguma dificuldade em trabalhar com o IPv4. Existem outros benefícios que vão surgir com a utilização do IPv6:

  • Auto-configuração;
  • Segurança (IPsec);
  • Melhor suporte para diferentes engenharias (diffserv ou RSVP);
  • Multicast;
  • Melhor suporte para redes ad hoc.

E um dos melhores e grandes benefícios que o IPv6 vai trazer é a eliminação do broadcast por completo.

Estrutura

Como foi referido anteriormente, o IPv6 apresenta mudanças profundas na sua estrutura, em especial no seu cabeçalho (header). Em primeiro lugar 5 campos do cabeçalho no IPv4 foram removidos, Header Length, Identification, Flags, Fragment Offset e Header Checksum. O Header Length foi removido porque o header já tem um tamanho fixo. Os campos Identification, Flags, e Fragment Offset estão relacionados com a fragmentação de pacotes em IPv4, mas foram removidos porque a fragmentação de pacotes em IPv6 funciona de maneira diferente. O campo Header Checksum também foi removido para aumentar a velocidade de processamento. Isto porque se os routers não precisarem de verificar e actualizar os checksums o processamento torna-se mais rápido.

IPv4 / IPv6: headers

Fonte: http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_9-3/ipv6_internals.html

Endereços e expressões no IPv6

É importante referir que os endereços no IPv6 vão ser muito maiores tendo em conta que passamos a usar 128 bits. Por isso em vez do habitual 192.168.10.10 passamos a ter algo como 2001:0db8:3c4d:0012:0000:0000:1234:56ab. A diferença que talvez mais se destaque seja o tamanho e o facto de usarmos 8 conjuntos de números separados por um : e em hexadecimal. Também o endereço passa a ser dividido em 3 partes:

  • Global Prefix – 2001:0db8:3c4d
  • Subnet – 0012
  • Interface ID – 0000:0000:1234:56ab

De salientar que o endereço que estamos a usar como exemplo pode ser resumido até ficar assim 2001:db8:3c4d:12::1234:56ab, mas isso já envolve algumas regras que tem de ser seguidas, porque talvez tenham reparado que eliminamos alguns 0s, mas isso nem sempre é possível.

Endereços especiais

Assim como no IPv4 o IPv6 também endereços especiais e que estão reservados para diversas funções: 0:0:0:0:0:0:0:0 (::.) – mesmo que 0.0.0.0 em IPv4; 0:0:0:0:0:0:0:1 (::1) – mesmo que o 127.0.0.1 em IPv4; Estes são apenas dois exemplos de endereços reservados mais conhecidos, porque muitos outros existem para se referir a tipos específicos de endereços, como global unicast, unique local unicast, link-local unicast, multicast.

Tipos de Endereços

Novamente no IPv6, endereços tais como multicast, unicast que existem no IPv4 e que certamente conhecemos e estamos familiarizados, foram reaproveitados e usados também no IPv6. No entanto um endereço foi completamente eliminado, o broadcast. Lembram-se das broadcast storms?? Pois é, esse foi um dos muitos problemas que foi eliminado/resolvido com a eliminação do broadcast e que certamente não vai deixar saudades. Um endereço foi eliminado e um foi criado, estou-me a referir é claro ao Anycast, mas já vamos lá. Só de salientar que os endereços Unicast, Global Unicast, Multicast, Link-Local e Unique Local funcionam basicamente como no IPv4 e sem grandes diferenças ou praticamente nenhumas no IPv6. Mas como dissemos surgiu um novo tipo de endereço, o Anycast. Este endereço identifica diversas interfaces, mas o pacote anycast apenas é entregue a um endereço. Neste caso é entregue ao primeiro endereço que “ele” encontre e que corresponda aos termos definidos pelo routing da rede. Este endereço é usado em conjunto com o protocolo BGP.

Como é que o IPv6 funciona

Pode-se começar por explicar como um host recebe um endereço IPv6 e como consegue encontrar recursos e outros hosts numa rede. Também abordar o que é a stateless autoconfiguration e stateful autoconfiguration.

Auto-configuração

Desde 1993 que se usa o DHCP em IPv4 de maneira a que os host obtenham não só o endereço como também o Gateway e o Sufixo DNS. No IPv6 existem, no entanto, duas maneiras de configuração de um endereço. Uma é usando um DHCPv6 server, que basicamente funciona como o DHCP em IPv4 apesar de existir algumas diferenças nas mensagens usadas, o conceito é o mesmo. A outra maneira é chamada de stateless autoconfiguration. Com a auto-configuração um host pode dinamicamente obter um endereço usando para isso o endereço Link-Local Unicast. Para isto acontecer o host precisa de um prefixo /64 para configurar a interface. É então usado um protocolo do IPv6 chamado de Neighbor Discovery Protocol (NDP). Assim o host envia aos routers uma mensagem NDP chamada de RS (router solicitation) usando para isso uma mensagem IPv6 multicast. Esta mensagem pergunta qual é o prefix IPv6 usado nesta subnet e qual é o endereço(s) usado(s) pelo(s) default router na subnet.. O router por usa vez envia uma resposta com esse prefixo através de um RA (router advertisement) usando novamente o ICMP.

IPv6: RS-RA

O host pega então o prefixo que recebeu e junta-o com o seu interface ID (MAC) e no meio desse valor junta um FFFE para compensar os bits que faltam. O processo é mais complexo do que isto, porque é usado certo tipo específico de mensagens do ICMP assim como é usado endereços Multicast. Além de que existem diversas opções para a configuração do endereço.

Migrar para o IPv6

Apesar de todas as vantagens apresentadas certamente muitos se perguntem qual é que vai ser o “custo” e o trabalho que vai dar esta migração. Não podemos pensar que vai haver uma migração em massa do IPv4 para IPv6, isto porque o número de dispositivos com IPv4 ascende aos milhões e nem todos esses dispositivos suportam IPv6 por isso é bem provável que se vá demorar uns bons anos a fazer a transição. Além de que a transição vai depender também da infra-estrutura que tenhamos, como óbvio se tivermos routers ou switches já arcaicos o custo da migração vai ser maior. Mas foram criadas algumas estratégias que permitem uma integração gradual do IPv4 para a versão 6.

IPv4/IPv6 Dual Stacking

O termo Dual Stack significa que o host ou o router usa o IPv4 e o IPv6 ao mesmo tempo. Para os hosts significa que tem associado ao NIC tanto um endereço IPv4 como um IPv6 e que consegue enviar pacotes IPv4 para hosts com o IPv4 e o mesmo com o IPv6. Para os routers significa que além dos endereços IPv4 e routing protocols também tem configurado endereços IPv6 assim como os respectivos routing protocols. Esta é a estratégia mais usada porque é a mais fácil de se usar isto porque permite o upgrade gradual tanto dos dispositivos como das aplicações.

6to4 Tunneling

Existem diversos tipos de tunneling, mas neste caso o que é feito é pegar num pacote IPv6 e encapsula-lo dentro de um pacote IPv4.

IPv6: tunneling

Existem diversos tipos de tunneling que podemos usar: Manually configured tunnels (MCT); Dynamic 6to4 tunnels; Intra-site Automatic Tunnel Addressing Protocol (ISATAP) e; Teredo tunneling. Um aspecto a ter em atenção é que se em algum ponto existir um NAT, este irá “destruir” esse túnel, mas existe uma maneira de dar a volta este problema e é por usarmos um método já citado – Teredo.

NAT-PT

Em alguns casos teremos que usar uma terceira opção que permita que se converta um cabeçalho IPv6 em IPv4 e vice-versa. Neste caso temos que usar o Network Address Translation–Protocol Translation (NAT-PT) apesar de não ser uma grande solução. Para que se dê esta conversão é necessário que o router saiba quais os endereços IPv4 e IPv6 deve usar e assim como no NAT tradicional também temos static definition, dynamic NAT, e dynamic PAT.

Segurança

É na segurança que o IPv6 também se destaca e pela positiva. Nesta área viu-se a necessidade de redesenhar e incorporar algumas características básicas em termos de segurança, de maneira a que o IPv6 possa, pelo menos, providenciar um nível mínimo de segurança contra as muitas ameaças a que a Internet está sujeita. Por isso alguns aspectos básicos foram levados em conta como a integridade a confidencialidade e a autenticação. Como já dissemos anteriormente, o IPv4 quando foi desenhado não levou em conta as ameaças que iriam surgir. Por isso surgiram algumas falhas de segurança, por exemplo com alguns protocolos usados. Protocolos esses que “confiam” a sua segurança da autenticação dos endereços IP e das portas. No entanto não sabemos se determinado pacote IP foi modificado ou lido o que leva a uma falha de segurança. Além de que muitos protocolos que requerem autenticação enviam a password em puro texto que facilmente poderá ser descodificado. Estes são alguns dos problemas que são colmatados através de Filtros para pacotes, Firewalls, SSL, PEM, PGP, etc. Como é o IPv6 é mais seguro? Graças à Framework IPSec, que é uma Framework de segurança para a camada onde trabalha o IP. Esta Framework consiste em seis elementos distintos: requerimentos de segurança na camada network, encriptação (ESP), autenticação (AH), utilização de algoritmos criptográficos para encriptação e autenticação, definição de políticas de segurança e gestão da chave IPSec. Existem diversos usos que podemos dar á IPSec, confidencialidade nas transmissões, autenticação dos peer para os updates de routing, server lookups e auto-configuração em DHCP e também a prevenção de ataques Denial-of-Service. O IPSec também exerce a sua influência em outros serviços e aplicações das diversas camadas, mas nem todo é um mar de rosas porque existem algumas áreas onde ainda ocorrem alguns conflitos, como por exemplo em NAT, QoS e Tunneling. Mas também ainda existem falhas no IPv6 apesar de se considerar o IPSec estável, mas muito trabalho ainda se tem de fazer em diversas áreas de maneira a poder usufruir ao máximo aquilo que o IPv6 tem para oferecer.

Conclusão

Neste pequeno artigo foram abordados diversos aspectos relacionados com o IPv6, mas tudo isto que analisamos apenas é um pequeno resumo de toda a informação disponível. Para poderem aprofundar melhor este assunto recomendo que leiam IPv6 Essentials O Reilly e o Chapter 13 – Internet Protocol Version 6 (IPv6) do Sybex CCNA Cisco Certified Network Associate Study Guide Exam 640-802 6th Edition.

Publicado na edição 15 (PDF) da Revista PROGRAMAR.