IPv6 - Um breve histórico
Há mais de 10 anos que o protocolo IPv6 vem sendo discutido e para muitos esse seria um assunto meramente acadêmico. Felizmente, não somente a comunidade Internet vem dando maior atenção as vantagens do IPv6, mas as empresas já tem benefícios diretos em usá-lo internamente. Se você quiser adotar o IPv6 na sua empresa já é possível, uma vez que a partir do Windows Vista e Windows 2008 a Microsoft utiliza o IPv6 como protocolo padrão. Além dos sistemas operacionais da Microsoft, o Linux, Solaris e sistemas baseados em *BSD também já estão prontos para esse novo mundo.
Devido a importância desse tópico, vou iniciar uma serie de post relacionados ao IPv6, e este primeiro vou me focar na história dele.
Desde que surgiu a rede mundial Internet, e a primeira versão do procotolo IP foi desenvolvida, o poder de processamento das máquinas cresceu muito e o número de máquinas conectadas à rede cresceu de algumas centenas a alguns milhões. A versão 4 do IP conseguiu acomodar todas as mudanças e continua se tornando cada vez mais popular, embora não tenha sido originalmente projetado para dar suporte a uma rede de escala universal ou que permitisse aplicações multimídia. A necessidade de uma atualização do protocolo era evidente.
Em 1991, membros do IETF (Internet Engineering Task Force) chegaram à conclusão de que o crescimento exponencial da rede levaria à exaustão dos endereços IP até o final do ano de 1994, caso não ocorresse antes um colapso dos hardwares de roteamento da época. Essa crise foi superada em curto prazo com a adoção do CIDR (Classless Inter-Domain Routing), e o NAT (Network Address Translation).
Muitos pensam que o NAT é uma solução de segurança, mas na verdade ele não tem esse intuito, o NAT mapeia endereços IP não válidos na Internet para endereços válidos, de forma a reaproveitar os já escassos blocos de endereços IP roteaveis na rede. Contudo, o NAT viola um dos princípios originais da Internet, que é fornecer um endereço global ÚNICO para todos os nós da rede, além disso, impõe restrições para comunicação móvel. Já o CIDR consistia resumidamente em dar blocos de endereços IP Classe C contíguos a regiões do planeta (Europa, Ásia, etc), e essas regiões dividiriam seus blocos em blocos menores, mas ainda contíguos, até que todas as redes tivessem seus endereços. Com o uso de máscara de rede, os roteadores usavam uma máscara para endereçar todo um bloco de endereços e assim conseguiam diminuir a tabela de roteamento.
Mas o CIDR não seria uma solução duradoura, outra deveria ser projetada em longo prazo e que tivesse uma duração maior. Um novo protocolo precisava ser desenvolvido em substituição ao IPv4. Uma proposta foi a adoção do CLNP, que tem um espaço de 160 bits para endereçamento. Entretanto, além de não suportar serviços multimídia como desejado, por ser uma solução OSI não foi bem quista pela comunidade como um todo.
Em 1993, o IESG (Internet Engineering Steering Group) criou um grupo de trabalho para uma nova versão do protocolo IP, o IpngWG (IP Next Generation Working Group), com base em alguns objetivos que deveriam ser alcançados. O grupo de trabalho, então, selecionou protocolos "candidatos" para a camada de rede da arquitetura TCP/IP. O vencedor foi o SIPP (Simple Internet Protocol Plus), por diferir menos do IPv4 e ter um plano de transição melhor. Mas uma combinação de aspectos positivos dos três protocolos candidatos foi feita e com isso gerou-se a recomendação para a versão 6 do IP em novembro de 1994.
A nova versão do protocolo IP foi desenvolvida com alguns objetivos, tendo em mente que deveria ser um passo evolucionário em relação à versão 4, mas não um passo radicalmente revolucionário. Funções desnecessárias foram removidas; funções que trabalhavam bem foram mantidas, e novas funcionalidades foram acrescentadas.
O novo protocolo IP aumenta o espaço de endereçamento de 32 para 128 bits, suportando mais níveis de hierarquia de endereçamento, um número muito maior de nodos endereçáveis, e permitindo a auto-configuração de nodos.
O cabeçalho do protocolo foi simplificado, sendo que alguns campos do cabeçalho da versão 4 foram tirados ou deixados como opcionais, de modo a reduzir o processamento de cabeçalhos tanto quanto não se perceba que o tamanho dos endereços aumentou, o que poderia aumentar também o tempo de processamento dos mesmos nos roteadores. Enquanto os endereços da versão 6 são 4 vezes maiores que os da versão 4, seu cabeçalho é apenas 2 vezes maior.
A flexibilidade de inclusão de opções no futuro, no cabeçalho do IPv6, foi aumentada devido ao fato de se ter cabeçalhos de extensão que podem ser incluídos. Nesses cabeçalhos estão incluídas também extensões que fornecessem suporte para autenticação, integridade de dados e confidenciabilidade. Essa é uma característica obrigatória em todas as implementações do protocolo.
Uma nova capacidade foi adicionada para permitir que o transmissor de um dado pacote requeira um fluxo especial para ele, como uma qualidade de serviço que não seja a "default" ou um serviço em tempo real, priorizando aplicações que tem uma transmissão contínua em relação a outras que não tem esse fluxo.
Por fim, os objetivos que foram propostos para a nova versão do protocolo IP são:
- Suporte a bilhões de hosts - através da expansão do espaço de endereçamento e uma hierarquia mais versátil;
- Redução da tabela de roteamento;
- Protocolo passível de expansão, através do uso de cabeçalhos de extensão;
- Simplificação do cabeçalho do protocolo, diminuindo o tempo de processamento na análise dos cabeçalhos, por parte de roteadores e hosts;
- Garantia de mais segurança (autenticação e privacidade) em relação à versão atual;
- Criação de um campo que suporte mecanismos de controle de qualidade de serviço, gerando maior sensibilidade ao tipo de serviço, como, por exemplo, serviços de tempo real;
- Permissão de multicasting, através da especificação de escopos de sessões multicasting;
- Melhorias no roteamento, inclusive no que tange a hosts móveis;
- Permissão de máquinas wireless mudarem fisicamente de lugar sem mudança em seus endereços IP;
- Habilitação de máquinas se autoconfigurarem (número IP, servidor de nome...) ao serem ligadas na rede, operação "plug and play";
- Um novo tipo de endereço chamado anycast, conceitualmente uma "cruz" entre unicast e multicast: esse tipo de endereço identifica um conjunto de nodos, onde um pacote enviado para um endereço anycast será entregue a um destes nodos;
- Coexistência das duas versões do protocolo por um bom tempo, pois não se pode determinar uma data específica para que todas as máquinas no mundo troquem seus softwares.