IPv6 – Internet Protocol Version 6
O IPv6 (Internet Protocol Version 6) é a versão mais recente do protocolo Internet Protocol (IP), desenvolvido para substituir gradualmente o IPv4.
O principal motivo para a criação do IPv6 foi a limitação da quantidade de endereços disponíveis no IPv4. Enquanto o IPv4 utiliza endereços de 32 bits, o IPv6 utiliza endereços de 128 bits, permitindo uma quantidade extremamente maior de endereços IP.
O que é IPv6?
O Internet Protocol (IP), ou Protocolo de Internet, é responsável pelo endereçamento e encaminhamento dos pacotes entre dispositivos conectados a uma rede.
Durante muitos anos, o IPv4 foi utilizado como principal versão do protocolo IP. Porém, o crescimento da Internet e a popularização de computadores, smartphones, servidores, dispositivos IoT, câmeras, sensores e diversos outros equipamentos fizeram com que o espaço de endereçamento IPv4 se tornasse insuficiente.
Como solução, foi desenvolvido o IPv6, que utiliza endereços de 128 bits.
Uma das principais diferenças entre IPv4 e IPv6 está justamente no tamanho dos endereços:
| Protocolo | Tamanho do endereço | Quantidade teórica de endereços |
|---|---|---|
| IPv4 | 32 bits | 232 |
| IPv6 | 128 bits | 2128 |
Enquanto o IPv4 possui aproximadamente 4,3 bilhões de endereços possíveis, o IPv6 possui aproximadamente:
340 undecilhões de endereços.
Em números:
340.282.366.920.938.463.463.374.607.431.768.211.456
É endereço para caramba. E ainda bem, porque a Internet resolveu colocar IP em praticamente tudo.
Formato de um endereço IPv6
Diferentemente do IPv4, que utiliza quatro grupos de números decimais separados por pontos, o IPv6 utiliza 128 bits representados em hexadecimal.
Um endereço IPv6 possui 8 grupos de 16 bits, separados pelo caractere dois-pontos (:).
Exemplo:
2001:0db8:0000:0000:0000:ff00:0042:8329
Cada grupo possui quatro dígitos hexadecimais.
Os caracteres utilizados no sistema hexadecimal são:
0 1 2 3 4 5 6 7 8 9 A B C D E F
Cada caractere hexadecimal representa 4 bits.
Portanto:
4 caracteres × 4 bits = 16 bits
Como existem oito grupos:
8 × 16 bits = 128 bits
Exemplo de um endereço IPv6
Considere o endereço:
2001:0db8:0000:0000:0000:ff00:0042:8329
Podemos separá-lo da seguinte forma:
| Grupo | Valor |
|---|---|
| 1 | 2001 |
| 2 | 0db8 |
| 3 | 0000 |
| 4 | 0000 |
| 5 | 0000 |
| 6 | ff00 |
| 7 | 0042 |
| 8 | 8329 |
Cada grupo possui 16 bits:
2001 | 0db8 | 0000 | 0000 | 0000 | ff00 | 0042 | 8329
16 16 16 16 16 16 16 16
Total:
128 bits
Representação hexadecimal
Para entender o IPv6, é importante lembrar que cada algarismo hexadecimal representa quatro bits.
| Hexadecimal | Binário |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| A | 1010 |
| B | 1011 |
| C | 1100 |
| D | 1101 |
| E | 1110 |
| F | 1111 |
Por exemplo:
A = 1010
F = 1111
O grupo:
2001
pode ser representado em binário como:
0010 0000 0000 0001
Abreviação dos endereços IPv6
Os endereços IPv6 podem parecer grandes inicialmente, mas existem regras que permitem reduzir sua representação.
1. Remover zeros à esquerda
Os zeros à esquerda de cada grupo podem ser removidos.
Por exemplo:
0db8
pode ser escrito como:
db8
Da mesma forma:
0042
pode ser escrito como:
42
Assim:
2001:0db8:0000:0000:0000:ff00:0042:8329
pode ser reduzido para:
2001:db8:0:0:0:ff00:42:8329
2. Utilizar dois-pontos duplos (::)
Uma sequência consecutiva de grupos contendo apenas zeros pode ser substituída por ::.
Assim:
2001:db8:0:0:0:ff00:42:8329
pode ser escrita como:
2001:db8::ff00:42:8329
O :: representa uma sequência de um ou mais grupos de zeros.
Importante: o :: pode ser utilizado apenas uma vez em um endereço IPv6. Caso fosse utilizado mais de uma vez, não seria possível determinar quantos grupos de zeros existem em cada posição.
Prefixo de rede no IPv6
Assim como no IPv4 moderno, o IPv6 utiliza a notação CIDR para indicar o tamanho do prefixo da rede.
Por exemplo:
2001:db8:1234:5678::/64
O /64 significa que os primeiros 64 bits representam o prefixo da rede.
2001:db8:1234:5678::/64
|-----------------|
64 bits
Como o endereço IPv6 possui 128 bits, restam:
128 - 64 = 64 bits
para a identificação da interface.
Uma rede IPv6 /64 possui teoricamente:
2^64
endereços.
Isso corresponde a:
18.446.744.073.709.551.616
endereços possíveis.
Tipos de endereços IPv6
Entre os principais tipos de endereços IPv6 estão:
- Unicast
- Multicast
- Anycast
Diferentemente do IPv4, o IPv6 não utiliza broadcast tradicional. Funções que anteriormente dependiam de broadcast são tratadas principalmente por mecanismos de multicast.
Endereço Unicast
O endereço Unicast identifica uma única interface.
Quando um dispositivo envia um pacote para um endereço unicast, o pacote é destinado a uma interface específica.
Exemplo:
2001:db8:1234:5678::10
Podemos pensar de forma semelhante ao endereço de um dispositivo específico dentro da rede.
Endereço Multicast
O Multicast permite enviar um pacote para vários dispositivos que pertencem a determinado grupo.
Os endereços multicast IPv6 começam com:
FF
Um exemplo é:
ff02::1
O multicast é muito importante no funcionamento do IPv6, inclusive em mecanismos utilizados para descoberta de vizinhos e configuração de rede.
Endereço Anycast
O Anycast permite utilizar o mesmo endereço em múltiplas interfaces ou dispositivos.
Quando um pacote é enviado para um endereço anycast, ele é encaminhado para uma das interfaces pertencentes ao grupo, normalmente de acordo com os critérios de roteamento.
Esse mecanismo pode ser utilizado, por exemplo, para oferecer serviços distribuídos em diferentes locais.
Endereço IPv6 Link-Local
Todo dispositivo IPv6 normalmente possui um endereço Link-Local, utilizado para comunicação dentro do próprio enlace de rede.
Os endereços Link-Local utilizam o prefixo:
FE80::/10
Um exemplo:
fe80::a00:27ff:fe4e:66a1
Esse endereço é utilizado para comunicação local e não é roteado pela Internet.
Os endereços Link-Local são importantes para diversas funções do IPv6, especialmente para a comunicação entre dispositivos diretamente conectados à mesma rede.
Endereço IPv6 Global Unicast
Os endereços Global Unicast são utilizados para comunicação que pode ser roteada globalmente.
Um exemplo didático é:
2001:db8:1234:5678::10
O bloco 2001:db8::/32 é reservado para documentação e exemplos, sendo utilizado em materiais didáticos para evitar a utilização acidental de endereços reais.
Uma estrutura simplificada pode ser representada assim:
| Prefixo da rede | Interface |
|-----------------------------|-----------|
| 64 bits | 64 bits |
Exemplo:
2001:db8:1234:5678::10
|------------------|------|
rede interface
Autoconfiguração no IPv6
Uma característica importante do IPv6 é o suporte à autoconfiguração de endereços.
Um dispositivo pode obter informações necessárias para configurar sua conectividade de rede sem que seja necessário configurar manualmente cada endereço.
Esse recurso é especialmente importante em ambientes com grande quantidade de dispositivos, como:
- Smartphones;
- Computadores;
- Servidores;
- Câmeras IP;
- Sensores;
- Equipamentos IoT;
- Automação residencial;
- Veículos conectados.
Cabeçalho IPv6
Outra diferença importante entre IPv4 e IPv6 está no cabeçalho do pacote.
O cabeçalho básico IPv6 possui 40 bytes e apresenta uma estrutura mais simples que a do IPv4.
Os principais campos são:
| Campo | Tamanho |
|---|---|
| Version | 4 bits |
| Traffic Class | 8 bits |
| Flow Label | 20 bits |
| Payload Length | 16 bits |
| Next Header | 8 bits |
| Hop Limit | 8 bits |
| Source Address | 128 bits |
| Destination Address | 128 bits |
Uma representação simplificada do cabeçalho é:
+----------------+----------------+----------------------+
| Version | Traffic Class | Flow Label |
+----------------+----------------+----------------------+
| Payload Length | Next Header | Hop Limit |
+-------------------------------------------------------+
| |
| Source Address |
| 128 bits |
| |
+-------------------------------------------------------+
| |
| Destination Address |
| 128 bits |
| |
+-------------------------------------------------------+
Principais campos do cabeçalho IPv6
Version
Possui 4 bits e identifica a versão do protocolo.
No IPv6:
Version = 6
Traffic Class
Possui 8 bits e permite identificar características relacionadas ao tratamento do tráfego.
Flow Label
Possui 20 bits e pode ser utilizado para identificar um fluxo de pacotes que deve receber determinado tratamento na rede.
Payload Length
Indica o tamanho da carga útil que acompanha o cabeçalho IPv6.
Next Header
Indica qual cabeçalho ou protocolo vem depois do cabeçalho IPv6.
Pode indicar, por exemplo:
- TCP
- UDP
- ICMPv6
- Cabeçalho de extensão
Hop Limit
Indica quantos saltos o pacote ainda pode realizar.
Cada roteador que encaminha o pacote reduz esse valor em uma unidade.
Quando chega a zero, o pacote é descartado.
O conceito é semelhante ao campo TTL existente no IPv4.
Source Address
Indica o endereço IPv6 de origem do pacote.
Possui:
128 bits
Destination Address
Indica o endereço IPv6 de destino do pacote.
Também possui:
128 bits
IPv6 e fragmentação
Uma diferença importante entre IPv4 e IPv6 está na fragmentação dos pacotes.
No IPv4, um roteador pode fragmentar um pacote quando necessário.
No IPv6, a fragmentação é realizada somente pelo dispositivo de origem, utilizando um cabeçalho de extensão específico.
Isso simplifica o processamento realizado pelos roteadores no caminho.
Em uma visão simplificada:
IPv4
Origem → Roteador → Roteador → Destino
↓
pode fragmentar
No IPv6:
IPv6
Origem → Roteador → Roteador → Destino
↓
fragmentação, se necessária
IPv4 x IPv6
Podemos comparar os dois protocolos:
| Característica | IPv4 | IPv6 |
|---|---|---|
| Tamanho do endereço | 32 bits | 128 bits |
| Representação | Decimal | Hexadecimal |
| Separador | . | : |
| Exemplo | 192.168.1.10 | 2001:db8::10 |
| Quantidade teórica | 232 | 2128 |
| Broadcast tradicional | Sim | Não |
| Multicast | Sim | Sim |
| Anycast | Não como recurso definido da mesma forma | Sim |
| Autoconfiguração | Disponível por mecanismos específicos | Ampla |
| Cabeçalho básico | 20 a 60 bytes | 40 bytes |
| Fragmentação por roteadores | Sim | Não |
| Protocolo de controle | ICMP | ICMPv6 |
Exemplo de uma rede IPv6
Considere a seguinte rede:
2001:db8:1234:5678::/64
Podemos ter dispositivos como:
Roteador
2001:db8:1234:5678::1
Computador 1
2001:db8:1234:5678::10
Computador 2
2001:db8:1234:5678::20
Servidor
2001:db8:1234:5678::100
Todos pertencem ao mesmo prefixo:
2001:db8:1234:5678::/64
Uma representação simplificada seria:
INTERNET
|
|
+-----------+
| ROTEADOR |
+-----------+
|
2001:db8:1234:5678::/64
|
+------------+------------+
| | |
| | |
PC 1 PC 2 SERVIDOR
::10 ::20 ::100
Por que o IPv6 foi criado?
O principal motivo foi a expansão da Internet e a necessidade de um espaço de endereçamento muito maior.
No IPv4:
32 bits
≈ 4,3 bilhões de endereços
No IPv6:
128 bits
≈ 340 undecilhões de endereços
Essa diferença permite que o IPv6 ofereça um espaço de endereçamento muito maior, adequado ao crescimento contínuo da Internet e ao aumento da quantidade de dispositivos conectados.
Além da quantidade de endereços, o IPv6 também introduziu mudanças na estrutura do cabeçalho, nos mecanismos de autoconfiguração, no uso de multicast e na forma como determinados recursos do protocolo são implementados.
Conclusão
O IPv6 – Internet Protocol Version 6 é a evolução do protocolo IP desenvolvida para atender às necessidades de uma Internet com uma quantidade cada vez maior de dispositivos conectados.
A principal mudança está no tamanho dos endereços:
IPv4 = 32 bits
IPv6 = 128 bits
Entretanto, as diferenças vão muito além da quantidade de endereços.
O IPv6 apresenta:
- Endereços de 128 bits;
- Representação hexadecimal;
- Suporte a Unicast, Multicast e Anycast;
- Ausência do broadcast tradicional;
- Autoconfiguração;
- Cabeçalho básico simplificado;
- Cabeçalhos de extensão;
- Fragmentação realizada pela origem;
- Estrutura de endereçamento mais escalável.
Compreender o IPv6 é fundamental para quem trabalha ou estuda Redes de Computadores, Administração de Redes, Segurança da Informação, Cloud Computing, Internet das Coisas (IoT) e infraestrutura de TI.
O IPv6 não deve ser visto apenas como um IPv4 com mais números. Ele representa uma evolução importante na arquitetura do protocolo IP e é parte fundamental da evolução da Internet.
Referências
- Internet Engineering Task Force (IETF) – RFC 8200 – Internet Protocol, Version 6 (IPv6) Specification.
- Internet Engineering Task Force (IETF) – RFC 4291 – IP Version 6 Addressing Architecture.
- Internet Engineering Task Force (IETF) – RFC 5952 – A Recommendation for IPv6 Address Text Representation.
