Files
xdp/wireguard_mtu_optimization.md
T
2025-02-28 20:26:06 -03:00

1.8 KiB

Otimização de MTU e Fragmentação para WireGuard

Problema e Solução

O WireGuard necessita de overhead para encapsulamento e criptografia, resultando em:

  • Overhead ~60 bytes (cabeçalhos + criptografia)
  • MTU efetivo menor que o MTU da interface física
  • Possível fragmentação ou perda de pacotes

A solução implementada:

  1. Ajuste automático de MSS TCP: Evita fragmentação em sessões TCP
  2. PMTU Discovery inteligente: Gerencia Path MTU para destinos específicos
  3. Prevenção proativa de fragmentação: Identifica pacotes grandes e sinaliza MTU

Como Funciona

O programa XDP para interface WireGuard:

  1. Para pacotes TCP:

    • Detecta pacotes SYN (início de conexão)
    • Ajusta o valor MSS para valor seguro (1380 = 1420 - 40)
    • Evita fragmentação durante toda a sessão TCP
  2. Para todos os pacotes:

    • Verifica o tamanho total contra o MTU do WireGuard
    • Gerencia pacotes com flag DF (Don't Fragment)
    • Memoriza MTU efetivo para cada destino
  3. Para pacotes grandes com DF flag:

    • Sinaliza "fragmentação necessária" via ICMP
    • Permite que os hosts ajustem automaticamente o PMTU

Benefícios Obtidos

  • Melhor Performance: Elimina fragmentação desnecessária
  • Latência Reduzida: Evita retransmissões causadas por fragmentação
  • Estabilidade: Previne problemas de conectividade relacionados a MTU
  • Eficiência: Otimiza automaticamente conforme diferentes destinos

Monitoramento

As estatísticas são mantidas em um mapa BPF e podem ser visualizadas com:

bpftool map dump name mtu_stats_map

Estatísticas monitoradas:

  • Pacotes totais processados
  • Pacotes acima do MTU do WireGuard
  • Pacotes com MSS TCP ajustado
  • Pacotes que necessitaram fragmentação
  • Pacotes que dispararam sinalização PMTU