11 minuto(s) de leitura

Autor: Pedro Augusto de O. Pereira / http://augusto.pedro.googlepages.com/

Introdução
O IP foi criado na década de 70 para ser utilizado na ARPANet. Seus primeiros desenvolvedores foram Vinton Cerf (http://en.wikipedia.org/wiki/Vinton_Cerf) e Bob Kahn (http://en.wikipedia.org/wiki/Bob_Kahn). De lá pra cá, o uso do IP aumentou exponencialmente, tornando-o o protocolo padrão para as redes atuais. Embora tenham existido tentativas para desenvolver e popularizar outros protocolos mais bem estruturados (como o OSI – Open Systems Interconnection), estes não obtiveram tanto sucesso quanto o IP (e os outros protocolos do conjunto). Hoje em dia, praticamente não se vê outro protocolo em uso no lugar do IP (talvez, a alternativa mais conhecida, porém já em desuso há alguns anos, é o IPX da Novell).

O papel do IP numa rede de computadores é encontrar uma rota para chegar ao destino (verificar o estado da rede, garantir a entrega do pacote ou sua integridade não é seu papel. Para isso existem outros protocolos como TCP). Os pacotes roteados pelo IP não necessariamente seguem a mesma rota até o destino, cada pacote é roteado de maneira independente dos outros, demorando tempos diferentes e nem sempre chegando em ordem.
Atualmente, está em uso o IP versão 4 (IPv4), as versões 1, 2 e 3 nunca foram usadas. A versão 4 é a utilizada em todas as redes no mundo todo. Porém, tanta popularidade causou sérios problemas ao IP. Talvez o mais visível seja a escassez de endereços disponíveis. Há uma previsão de que todos os endereços IPv4 chegarão ao fim em 2014 (talvez antes).
O IPv4 utiliza um esquema de endereçamento de 32 bits, o que oferece aproximadamente apenas 4 bilhões de endereços (não é nem 1 endereço para cada habitante do mundo). Com o enorme crescimento inesperado da Internet, essa quantidade de endereços já é considerada escassa. Nem se utilizando técnicas como NAT e endereços inválidos para LAN se conseguirá prover endereços suficientes para a quantidade de dispositivos conectados à Internet.
Pensando nisso, a IETF começou o desenvolvimento do IPv6 (IP versão 6 ou IP Next Generation). Esta versão foi criada pensando no enorme crescimento da rede e em algumas coisas que faltavam no IPv4.

O IPv5
Antes de partir de vez para o IPv6, você deve estar se perguntando: “Mas o que aconteceu com o IPv5?”.
O IPv5 foi utilizado para um outro tipo de pesquisas: um protocolo de streaming em tempo real que não tinha muito a ver com o IP. Assim, foi necessário utilizar outro número para evitar confusão.

O IPv6
O IPv6 não é o que se pode chamar de “novo protocolo”. Ele já vem sendo desenvolvido desde janeiro de 1995. Sua RFC (Request For Comments) é a 2460 e pode ser encontrada no link http://www.faqs.org/rfcs/rfc2460.html. Algumas outras centenas de RFC’s foram escritas focando em vários pontos diferentes do IPv6 como endereçamento, ICMP, Multicast, entre outros. Essas RFC’s podem ser encontradas aqui: http://playground.sun.com/ipv6/specs/specifications.html.

Vantagens do IPv6

  • Maior quantidade de endereços disponíveis: O IPv6 utiliza 128 bits para endereços. Isso evita que os endereços disponíveis se esgotem rapidamente (como aconteceu com o IPv4) e evita também a necessidade do uso de técnicas como NAT. Outra vantagem é que serão alocados blocos de IP maiores, o que faz com que scanear um bloco por uma vulnerabilidade seja muito mais demorado, desestimulando tal prática, fazendo o IPv6 mais resistente à tráfego malicioso.
  • Configuração automática mais simples: Há dois tipos de configuração automática no IPv6: stateless e stateful. A configuração automática “stateless” no IPv6 não exige qualquer configuração manual em hosts, uma configuração mínima (se houver) em roteadores e nenhum servidor adicional para isso. Na configuração stateless, o próprio host gera o endereço utilizando informações disponíveis localmente e informações divulgadas por roteadores. Os roteadores divulgam os prefixos das sub-redes associadas à um link, enquanto os hosts geram um “identificador de interfaces” que é exclusiva na rede. Combinando as duas informações, têm-se o endereço.
    Na configuração stateful, o host obtém os endereços e outras configurações adicionais de um servidor. Esse servidor mantém um banco de dados que associa um endereço à um host. Funciona como o DHCP atual.
    As configurações stateless e stateful são complementares. Por exemplo, um host pode usar uma configuração stateless para definir o seu endereço e usar a configuração stateful para obter outras informações.
    Quando se deseja um controle maior sobre quais são os endereços que podem ser usados na rede, deve-se usar a configuração stateful.
  • Jumbograms: No IPv4, todo o payload (os dados que o usuário quer transferir, excluindo-se o cabeçalho) se limita a 65.535 bytes. No IPv6 há a possibilidade de se utilizar jumbograms para transferir muito mais que isso (até 4.294.967.295 bytes). Só é possível utilizar jumbograms quando os MTU’s das 2 pontas forem maiores que 65.536 bytes. Utilizando-se este recurso, você consegue aumentar a eficiência da rede. Você pode verificar mais detalhes sobre como utilizar jumbograms lendo a RFC disponível aqui: http://rfc.net/rfc2675.html.
  • Segurança diretamente no protocolo: O IPSec agora é parte integrante do IP, provendo criptografia e autenticação (porém, ainda requer configuração para ser usado).
  • Roteamento mais rápido: O cabeçalho do IPv6 é mais simples, o que aumenta a velocidade no roteamento.

Desvantagens do IPv6

  • Um potencial problema do IPv6 é que ele é menos eficiente ao utilizar a banda disponível, o que pode causar lentidão em sites de rede com menor banda disponível.
  • Como o IPv6 modificou muitas coisas, é necessário fazer com que outros protocolos (como ICMP e DHCP) sejam adaptados para que consigam trabalhar corretamente com esta versão do protocolo. Além de ser necessário reescrever os protocolos, é necessário desenvolver aplicativos que suportem o IPv6. Este atualmente é o maior problema na adoção do IPv6.
  • Os MTU’s a serem utilizados para a transferência dos dados serão definidos pela origem. Assim, quando se rotear pacotes por rotas diferentes pode-se ter problemas com MTU’s menores o que irá dificultar a utilização de rotas diferentes para cada pacote, como acontece com o IPv4.

Os endereços IPv6
O endereçamento no IPv6 é completamente diferente do utilizado no IPv4. A começar pela quantidade de bits: no IPv6 são utilizados 128 bits para endereçamento, enquanto no IPv4 são apenas 32 bits. 128 bits geram aproximadamente 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços válidos para serem utilizados.
A estrutura do endereçamento IPv6 também é bastante diferente, um endereço é formado por 8 conjuntos de 4 dígitos hexadecimais. Esse endereço é composto de 2 partes lógicas: uma parte de 64 bits para rede e os outros 64 bits para o host. A parte do endereçamento do host pode ser gerada inserindo-se o endereço MAC da interface de rede, porém essa prática não é obrigatória. No IPv6, não existem classes de endereços (como A, B, C, D ou E). Um exemplo desse tipo de endereço é:

2394:3756:A34C:FAC9:9021:0000:FF3A:9671

Os endereços IPv6 são compatíveis com o IPv4. O endereço IPv6 conterá o IPv4 como em:

::192.168.0.1

garantindo interoperabilidade durante a migração das redes. Funciona assim: 96 bits são para o endereço IPv6 e 32 bits são utilizados para o endereço IPv4.
Porém, esta forma de identificação de hosts já caiu em desuso e implementações modernas não são obrigadas a aceitar este tipo de endereçamento.
A forma utilizada atualmente é utilizar 96 bits para o endereço IPv6, sendo que os últimos 16 bits do endereço IPv6 serão setados para FFFF e os últimos 32 bits serão utilizados para o endereço IPv4. Assim:

::FFFF:192.168.0.1

Para mais informações sobre este tipo de endereçamento, consulte a RFC 4038.
Se um ou mais grupos do endereço forem todos 0s, pode-se abreviar a escrita do endereço assim:

2394:3756:A34C:FAC9:9021:0000:FF3A:9671
2394:3756:A34C:FAC9:9021::FF3A:9671

Porém, você deve prestar bastante atenção ao fazer abreviações deste tipo pois só pode haver um conjunto de :: no endereço, se não ele não será um endereço válido e não pode ser usado.
Utilizando CIDR com IPv6
No IPv6 você também pode utilizar CIDR para segmentar sua rede. O conceito é praticamente o mesmo, seguindo a estrutura:

< endereço da rede ipv6 >/< bits da rede >

Fica mais claro com um exemplo. Considere a rede 345A:2381:AB5D:5140:0000:0000:0000:0000. Em notação CIDR podemos escrever isso assim:

345A:2381:AB5D:5140::/64

Essa sub-rede contém os hosts de 345A:2381:AB5D:5140:0000:0000:0000:0000 a 345A:2381:AB5D:5140:FFFF:FFFF:FFFF:FFFF.

O endereço Loopback
O endereço loopback é utilizado para testar se a pilha TCP/IP do próprio host está funcionando corretamente, sem a necessidade de enviar pacotes a outros hosts da rede. Para fazer este teste execute o comando:

ping ::1

Lembrando que pacotes destinados a loopback não devem de maneira nenhuma ser roteados.O cabeçalho IPv6
O cabeçalho do IPv6 foi bastante modificado em relação ao cabeçalho do IPv4 e ficou mais simples, com menos campos. Abaixo descrevo os campos deste cabeçalho.

  • Version: Indica a versão do protocolo. Este campo possui 4 bits e está sempre setado como 6.
  • Traffic Class: É utilizado pelo host de origem ou pelo roteador para identificar uma prioridade diferente para o pacote (semelhante ao campo TOS do IPv4). Possui 8 bits.
  • Flow Label: É usado pela origem para indicar sequências de pacotes que necessitam de um tratamento especial pelos roteadores, como por exemplo, um QoS não padrão ou um serviço em tempo real (como video-conferência). Este campo possui 20 bits.
  • Payload Length: É o tamanho do pacote, excluindo-se o cabeçalho. Qualquer cabeçalho opcional será considerado como parte dos dados e não do cabeçalho. Este campo possui 16 bits.
  • Next Header: Informa o tipo do cabeçalho que segue o cabeçalho padrão do IPv6. Permite inserir extensões de cabeçalho entre o cabeçalho do IP e do TCP (ou UDP). Essa extensão de cabeçalho pode ser, por exemplo, a autenticação IPSec. Este campo possui 8 bits.
  • Hop Limit: Desempenha o mesmo papel do campo TTL (Time To Live) do IPv4. A cada roteador pelo qual o pacote passa, é decrementada 1 unidade deste campo. Se a contagem chegar a 0, o pacote é descartado. Este campo possui 8 bits.
  • Source Address: Informa qual é o endereço de origem do pacote. Possui 128 bits.
  • Destination Address: Informa qual é o endereço de destino do pacote. Possui 128 bits.As extensões do cabeçalho IPv6
    Além do cabeçalho básico descrito no tópico anterior, o IPv6 pode incluir vários outros cabeçalhos. Esses outros cabeçalhos são inseridos entre o cabeçalho IP e o cabeçalho do protocolo da camada acima (TCP ou UDP). Cada uma dessas extensões é identificada por um valor diferente no campo Next Header do cabeçalho básico. O cabeçalho básico pode conter nenhum, 1 ou mais dessas extensões.
    Esses cabeçalhos de extensão não são examinados nem processados pelos roteadores no caminho até o destino. A única excessão para essa regra é o cabeçalho de extensão Hop-by-Hop, que carrega informações que devem ser processadas por todos os hosts no caminho até o destino. Esse cabeçalho deve ser o primeiro a seguir o cabeçalho básico do IP, quando presente, e seu valor de campo Next Header é 0.
    Extensões de cabeçalho devem sempre ser processadas na ordem em que foram inseridas no cabeçalho. Implementações completas do IPv6 possuem os seguintes cabeçalhos de extensão: Hop-by-Hop, routing, fragment, destination options, authentication, encapsulating security payload.Como configurar IPv6 no Linux
    Atualmente, o suporte do Linux ao IPv6 é apenas no kernel 2.6.x. As versões 2.2.x têm uma implementação de uma definição antiga do protocolo e no 2.4.x o protocolo já não é mais atualizado. Há grandes chances de que a sua distribuição já tenha o suporte ao IPv6 habilitado.
    Para confirmar se seu kernel já tem suporte ao IPv6, procure pelo arquivo if_inet6 no /proc. Se esse arquivo não existir, pode ser que o módulo do IPv6 não esteja carregado, tente o seguinte:# modprobe ipv6Outra maneira simples de descobrir se seu kernel tem o IPv6 habilitado, é pingando você mesmo:# ping6 ::1Se você obtiver sucesso, significa que está tudo funcionando direitinho. Se nenhum destes testes deu certo, você vai precisar recompilar o kernel para habilitar esse suporte.
    Para configurar suas interfaces com IPv6, é só usar as versões mais recentes do ifconfig, route, traceroute, etc. Qualquer distribuição recente já disponibiliza a versão destes programas com o suporte ao IPv6.

    Como configurar IPv6 no OpenBSD
    No OpenBSD, o suporte ao IPv6 já vem habilitado por padrão desde a versão 2.7. Faça o teste do ping mostrado na seção anterior e verifique se está tudo correto.

    Como configurar o IPv6 no FreeBSD
    O suporte no FreeBSD ao IPv6 já vem habilitado por padrão desde a versão 4.0. Para ativar o IPv6, simplesmente adicione (ou modifique) a seguinte linha no arquivo /etc/rc.conf:

    ipv6_enable=”YES”

    Como fica o DNS com o IPv6
    Basicamente, a maior mudança ocorrida nos softwares servidores de DNS foi a adição do registro AAAA, o qual corresponde ao registro A do IPv4, que possui uma referência a apenas um endereço IPv6.
    Outra mudança é no DNS reverso. Todos os números do IPv6 deem ser separados por pontos (começando com o último número) e ao fim de todo o endereço deve ser adicionado o domínio .IP6.ARPA.
    Por exemplo, o DNS reverso para o ip 8902:AC45:12D4:4534:98DE:8453:AB48:90D1 seria:

    1.D.0.9.8.4.B.A.3548.E.D.8.9.4.3.5.4.4.D.2.1.5.4.C.A.2.0.9.8.IP6.ARPA

    Para os outros tipos de registros como MX e NS a mudança é pouca. Agora eles precisam saber quando devolver um endereço IPv4 ou IPv6.
    O BIND já suporta o IPv6 na versão 8.x com patches e nativamente na versão 9.x (9.2.x já tem uma implementação completa). As versões dele para Windows ainda não suportam o IPv6. O DJBDNS com patch também é capaz de resolver nomes para IPv6.Conclusão
    O IPv6 vai resolver muitos problemas que temos atualmente com o IPv4 e trazer muitos benefícios para as redes em geral.
    Muitos países já estão adotando o protocolo (principalmente países asiáticos, por serem muito populosos em geral), porém um sério problema é a falta de aplicativos que suportem o IPv6. Os grandes sistemas operacionais já suportam o IPv6 há algum tempo, porém nem todos os aplicativos que fazem uso de redes o suportam.

Deixe um comentário