05 - Comparação IPv4 vs IPv6
video: https://youtu.be/... no frontmatter da nota.Comparação IPv4 vs IPv6
O IPv6 foi criado para resolver a exaustão de endereços do IPv4 e para modernizar o protocolo de rede, tornando o roteamento na Internet global mais eficiente. Esta seção compara detalhadamente os dois cabeçalhos, identifica os campos que foram removidos, os novos campos adicionados e o impacto dessas mudanças no processamento dos roteadores.
1. Principais Diferenças Técnicas
| Característica | IPv4 | IPv6 |
|---|---|---|
| RFC | RFC 791 (1981) | RFC 8200 (2017) |
| Endereçamento | 32 bits (4,2 bilhões de endereços) | 128 bits (3,4 × 1038 endereços) |
| Tamanho do cabeçalho | Variável (20 a 60 bytes) | Fixo (40 bytes) |
| Checksum no header | Sim (verificado a cada salto) | Não (removido para agilizar roteamento) |
| Fragmentação | Feita por roteadores intermediários | Feita apenas pelo emissor original |
| Campos de fragmentação | Identification, Flags, Fragment Offset | Movidos para Extension Header (Fragment) |
| Options no header | Embutidas no cabeçalho principal | Movidas para Extension Headers |
| Segurança (IPsec) | Opcional (introduzido a posteriori) | Nativo (especificação original) |
| Configuração | Manual ou DHCP | SLAAC (RFC 4862) ou DHCPv6 |
| Broadcast | Sim | Abolido (multicast/anycast) |
| Field Type (EtherType) | 0x0800 | 0x86DD |
| MTU mínimo | 576 bytes | 1280 bytes |
| ICMP | ICMPv4 (RFC 792) | ICMPv6 (RFC 4443), integrado ao ND |
2. Cabeçalho IPv4 — Visão Geral
O cabeçalho IPv4 tem tamanho variável (mínimo 20 bytes), exigindo que roteadores leiam o campo IHL (Internet Header Length) para saber onde começa o payload:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL | DSCP |ECN| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TTL | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (0 a 40 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Total: 20 a 60 bytes. O campo Options é raramente usado, mas quando presente, força cada roteador intermediário a processá-lo em software (slow path), penalizando a performance.
3. Cabeçalho IPv6 — Visão Geral
O cabeçalho IPv6 tem tamanho fixo de 40 bytes, sem Options inline. Quaisquer informações adicionais são encadeadas em Extension Headers:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label (20 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length (16 bits) | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address (128 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address (128 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Total: 40 bytes fixos. A ausência de Options no header principal permite que roteadores façam lookup em ASIC sem slow-path.
4. Campos Removidos do Cabeçalho IPv6
A RFC 8200 removeu 5 campos do cabeçalho principal, transferindo funcionalidade ou eliminando-a:
| Campo Removido | Função em IPv4 | Destino em IPv6 |
|---|---|---|
| IHL (Internet Header Length) | Indicar tamanho variável do header (4 bits) | Eliminado — header é sempre 40 bytes |
| Identification | Identificar fragmentos do mesmo datagrama original | Movido para Fragment Extension Header (RFC 8200 seção 4.5) |
| Flags | DF (Don't Fragment), MF (More Fragments), Reserved | DF/MF movidos para Fragment Extension Header |
| Fragment Offset | Posição do fragmento no datagrama original | Movido para Fragment Extension Header |
| Header Checksum | Verificação de integridade do header a cada salto | Eliminado — checksum é responsabilidade das camadas L2 (FCS Ethernet) e L4 (TCP/UDP checksum com pseudo-header) |
Justificativa para a Remoção do Checksum
Em IPv4, cada roteador precisa recalcular o Header Checksum porque o TTL decrementa a cada salto. Esse cálculo é caro em ASIC, especialmente com tamanhos variáveis. Em IPv6, eliminou-se esse cálculo:
- A integridade L2 é garantida pelo FCS (Frame Check Sequence) do Ethernet (CRC-32).
- A integridade L4 é garantida pelo checksum TCP/UDP (com pseudo-header incluindo endereços IP).
- Confiabilidade de enlace moderno é altíssima — retransmissões raramente são causadas por corrupção de bits no cabeçalho.
Justificativa para Eliminar Fragmentação Intermediária
Em IPv4, se um roteador recebe um pacote maior que o MTU do próximo enlace, ele fragmenta — gerando overhead em roteadores de núcleo. Em IPv6:
- A origem faz Path MTU Discovery (PMTUD, RFC 8201) usando ICMPv6 Packet Too Big.
- A origem fragmenta o payload em pacotes menores antes de enviar.
- Roteadores intermediários não fragmentam — se receberem pacote maior que MTU, descartam e enviam ICMPv6 Packet Too Big para a origem.
Isso reduz drasticamente o trabalho dos roteadores de núcleo e desloca a complexidade para os endpoints — coerente com o Princípio End-to-End.
5. Novo Campo: Flow Label
O IPv6 introduziu o campo Flow Label (20 bits), ausente em IPv4:
|Version| Traffic Class | Flow Label (20 bits) |
Função
Permite identificar rapidamente, no hardware de roteadores, todos os pacotes pertencentes ao mesmo fluxo (ex.: uma chamada VoIP, um stream de vídeo, uma conexão TCP) — sem precisar inspecionar o conteúdo do payload L4.
Vantagens
- QoS em hardware: o roteador aplica fila/precedência baseada no Flow Label, sem parsear cabeçalhos TCP/UDP.
- Equal-Cost Multipath (ECMP): permite que fluxos sigam o mesmo caminho (evita reordering em links paralelos), mantendo consistência.
- Pseudo-header TCP/UDP: o Flow Label faz parte do pseudo-header para o cálculo de checksum L4.
Valores
0x00000: pacote não pertence a nenhum fluxo específico.- Qualquer outro valor: identifica um fluxo — a fonte gera um número pseudoaleatório de 20 bits e usa-o para todos os pacotes da mesma conversa.
6. Extension Headers
Em IPv6, informações opcionais (Options) são organizadas em cadeia de cabeçalhos adicionais, lidos somente quando necessário. Cada Extension Header tem um campo "Next Header" que aponta para o próximo:
[IPv6 Header (40B)] -> [Hop-by-Hop] -> [Routing] -> [Fragment] -> [TCP]
Next Header = 0 Next = 43 Next = 44 Next = 6
| Next Header Value | Tipo | Processado por |
|---|---|---|
| 0 | Hop-by-Hop Options | Todos os roteadores no caminho |
| 43 | Routing | Apenas pelo destino |
| 44 | Fragment | Apenas pelo destino (e origem) |
| 50 | Encapsulating Security Payload (ESP) | Apenas pelo destino |
| 51 | Authentication Header (AH) | Apenas pelo destino |
| 59 | No Next Header | Fim da cadeia |
| 60 | Destination Options | Apenas pelo destino |
Implicações operacionais: roteadores de núcleo só precisam processar Hop-by-Hop (raro em tráfego normal) — ganho de performance massivo em comparação a IPv4 Options inline. Firewalls frequentemente descartam pacotes com Extension Headers não padrão (sobretudo Hop-by-Hop e Routing), por risco de DoS e evasão. A RFC 7872 documenta que ~30% da Internet já dropava pacotes com Extension Headers não padrão em 2016 — recomenda-se evitar Hop-by-Hop em tráfego regular.
7. Comparação de Tamanho: Caso Prático
Para um pacote TCP sem opções em ambos: IPv4 = 20 bytes header + 20 bytes TCP = 40 bytes; IPv6 = 40 bytes header + 20 bytes TCP = 60 bytes. IPv6 é 50% maior em overhead. Porém, em links de alta velocidade (10 Gbps+), o overhead relativo é irrelevante (1,5% da MTU de 1500), e o ganho em performance de processamento compensa amplamente. Para pacotes IPsec ESP (túnel), a diferença é maior (~28 vs ~48 bytes) — em tráfego VPN concentrado, o overhead de IPv6 pode chegar a 15%.
8. Coexistência e Transição
Como a virada de chave de IPv4 para IPv6 não acontece de uma hora para a outra, a rede utiliza técnicas de transição:
- Dual Stack (RFC 4213): host e roteador rodam os dois protocolos simultaneamente; cada conexão decide qual versão usar (Happy Eyeballs, RFC 8305).
- Tunelamento 6to4 (RFC 3056) / Teredo (RFC 4380) / 6rd (RFC 5969): pacotes IPv6 encapsulados em IPv4 para atravessar redes IPv4-only (6rd usa prefixo próprio do ISP; Teredo usa UDP para hosts atrás de NAT).
- DS-Lite (RFC 6333): cliente IPv6-only acessa IPv4 via NAT44 no ISP.
- 464XLAT (RFC 6877): tradução IPv4-over-IPv6 — usado em redes móveis 4G/5G.
- NAT64 + DNS64 (RFC 6146/6147): IPv6-only acessa serviços IPv4 via tradução na borda.
A grande vantagem do IPv6 em Cyber Security é o fim da necessidade do NAT (Network Address Translation). Cada dispositivo tem IP público global, permitindo IPsec de ponta a ponta sem as complicações de tradução de endereços. Porém, sem NAT, hosts ficam diretamente alcançáveis, exigindo firewall stateful real em vez de confiar no NAT como "segurança por obscuridade".
9. Tabela Resumo — Evolução dos Campos
| Campo IPv4 | Ação | Em IPv6 |
|---|---|---|
| Version | Mantido | Version=6 (mesmo campo) |
| IHL | Removido | Cabeçalho fixo de 40 bytes |
| DSCP+ECN (TOS) | Mantido | Traffic Class (8 bits) |
| Total Length | Mantido | Payload Length (sem header 40B) |
| Identification | Movido | Fragment Extension Header |
| Flags (DF, MF) | Movido | Fragment Extension Header |
| Fragment Offset | Movido | Fragment Extension Header |
| TTL | Mantido | Hop Limit (mesma semântica) |
| Protocol | Mantido | Next Header |
| Header Checksum | Removido | Eliminado (responsabilidade L2+L4) |
| Source/Dest Addr | Ampliado | 128 bits cada |
| Options | Movido | Extension Headers em cadeia |
| (não existia) | Novo | Flow Label (20 bits) |
10. Conclusão
A comparação IPv4 vs IPv6 mostra um redesenho consciente: o cabeçalho principal foi simplificado e fixado em 40 bytes para acelerar o processamento em ASIC, enquanto funcionalidades opcionais foram modularizadas em Extension Headers. A remoção do Header Checksum e da fragmentação intermediária reflete o amadurecimento das redes físicas e a adesão estrita ao Princípio End-to-End. O novo campo Flow Label habilita QoS em hardware sem inspeção L4. Apesar do overhead de 20 bytes extras por pacote, o ganho em performance de roteamento, segurança nativa (IPsec) e eliminação do NAT compensam amplamente. A transição segue em curso: mais de 45% do tráfego do Google já é IPv6, mas a coexistência com IPv4 continuará por décadas.