Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Simulador de Fragmentação IPv4 / IPv6 & PMTUD

Versão 1.6 — PMTUD iterativo fim a fim · fragmentação realista · remontagem exclusivamente no destino final
Baseado em RFC 791, RFC 8200, RFC 1191, RFC 4821 e RFC 8899


📌 Visão Geral

Este simulador interativo foi desenvolvido para demonstrar, de forma visual e passo a passo:

  • Fragmentação de pacotes no IPv4
  • Descoberta de MTU de caminho (PMTUD) em IPv4 e IPv6
  • Funcionamento real do PMTUD iterativo
  • Problema de Black Hole PMTUD
  • Regras fundamentais de rede frequentemente mal compreendidas

🔴 Regra central do simulador (e das RFCs):

Roteadores nunca remontam fragmentos. A remontagem ocorre exclusivamente no host destino final.


🧠 Fundamentos Teóricos

1. Fragmentação IPv4 (RFC 791)

No IPv4, a fragmentação pode ocorrer em qualquer roteador ao longo do caminho.

Quando um pacote é maior que o MTU do enlace:

  • O roteador divide o pacote em fragmentos
  • Cada fragmento recebe seu próprio cabeçalho IP
  • Os fragmentos seguem independentemente
  • Nenhum roteador remonta

Campos importantes:

  • Identification (16 bits) → identifica o datagrama original
  • Flags
    • DF (Don't Fragment)
    • MF (More Fragments)
  • Fragment Offset (13 bits) → unidade de 8 bytes

Cálculo do tamanho máximo por fragmento:

maxData = floor((MTU - header_IP) / 8) * 8

Overhead:

overhead = (N - 1) × 20 bytes

2. IPv6 — Fragmentação e PMTUD (RFC 8200)

O IPv6 remove completamente a fragmentação nos roteadores.

Se o pacote não cabe:

  1. Roteador descarta
  2. Envia ICMPv6 "Packet Too Big"
  3. A fonte ajusta o tamanho
  4. (Opcional) Fonte fragmenta usando Fragment Extension Header (8B)

Regra fundamental:

Roteadores IPv6 NUNCA fragmentam e NUNCA remontam


3. PMTUD IPv4 (RFC 1191)

Funciona com o bit DF=1:

  • Pacote maior que MTU → descartado
  • Roteador envia:
    • ICMP Tipo 3 Código 4 (Fragmentation Needed)

A fonte:

  • Atualiza cache PMTU
  • Reenvia pacote menor

4. PMTUD Iterativo (IPv6 — Implementado no simulador)

⚠️ Essa é a principal evolução da versão 1.6

O simulador implementa corretamente:

✔ Múltiplas sondagens
✔ Descoberta progressiva de gargalos
✔ Ajuste incremental de MTU

Fluxo real:

Fonte envia pacote grande
        ↓
Roteador bloqueia → ICMPv6 PTB
        ↓
Fonte reduz tamanho
        ↓
Nova sondagem
        ↓
Repete até atravessar todo o caminho

👉 Só após isso:

  • A fonte conhece o Path MTU real
  • E então pode fragmentar corretamente

5. PMTUD Black Hole

Ocorre quando ICMP é bloqueado:

  • Pacotes são descartados silenciosamente
  • Fonte nunca descobre o problema
  • TCP entra em loop de retransmissão

Sintoma clássico:

✔ Conexão abre
❌ Dados não fluem

Soluções:

  • MSS Clamping
  • DPLPMTUD (RFC 8899)
  • PLPMTUD (RFC 4821)

🖥️ Modos do Simulador

🔹 IPv4 — Fragmentação

  • Roteadores fragmentam
  • Pode haver refragmentação
  • Fragmentos seguem até o destino
  • Remontagem apenas no Host B

🔹 IPv6 — PMTUD (Iterativo)

✔ Sondagens múltiplas
✔ ICMPv6 PTB
✔ Ajuste progressivo
✔ Fragmentação apenas na fonte


🔹 IPv4 — PMTUD (DF=1)

  • Sem fragmentação na rede
  • Uso de ICMP para ajuste
  • Simula também black hole

🎛️ Controles

Tamanho do pacote

  • 100B até 4000B
  • Inclui cabeçalho IP

Cenários de rede

Cenário Descrição
Básico Ethernet → PPPoE → ADSL → Fibra
Túnel GRE Overhead de encapsulamento
Misto Ethernet + PPPoE + ATM
DF Black Hole ICMP bloqueado

📊 Interface Visual

Topologia

  • 5 nós:
    • Host A (origem)
    • 3 roteadores
    • Host B (destino)

Cores dos enlaces

  • 🟢 Verde → pacote cabe
  • 🟡 Amarelo → próximo do limite
  • 🔴 Vermelho → excede MTU

Partículas

  • 🔵 Azul → pacote normal
  • 🟠 Laranja → fragmentos
  • 🔴 Vermelho → ICMP
  • 🟢 Verde → sucesso

Painel de Fragmentos

Mostra:

  • Cabeçalhos
  • Payload
  • Flags (MF)
  • Offsets

Estatísticas

  • Número de fragmentos
  • Overhead total
  • Path MTU
  • Drops / ICMPs

🔬 Comportamentos Importantes (Modelados na v1.6)

✔ Fragmentação progressiva (IPv4)

Fragmentos podem ser fragmentados novamente:

Pacote → Fragmento → Refragmentação

✔ PMTUD iterativo real (IPv6)

✔ múltiplas tentativas
✔ descoberta incremental

✔ Caminho completo antes do sucesso

✔ atravessa todos os enlaces

✔ Remontagem somente no destino

❌ nunca em roteadores


🧪 Experimentos Sugeridos

  1. Fragmentação vs MTU mínimo
  2. PMTUD iterativo (IPv6)
  3. GRE e overhead
  4. Black Hole
  5. Refragmentação

⚠️ Erros Comuns

  • ❌ Roteadores remontam pacotes
  • ❌ IPv6 fragmenta no caminho
  • ❌ PMTUD ocorre em uma única tentativa

📚 Referências

  • RFC 791
  • RFC 8200
  • RFC 1191
  • RFC 4821
  • RFC 8899
  • RFC 2923

🎯 Objetivo

  • Ensino de redes
  • Visualização didática
  • Correção de conceitos

👨‍🏫 Observação

👉 PMTUD é um processo iterativo — não instantâneo

About

Funcionamento do mecanismo de fragmentação do IPv4 e IPv6 PMTUD - (Path MTU Discovery)

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages