1.8 KiB
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:
- Ajuste automático de MSS TCP: Evita fragmentação em sessões TCP
- PMTU Discovery inteligente: Gerencia Path MTU para destinos específicos
- Prevenção proativa de fragmentação: Identifica pacotes grandes e sinaliza MTU
Como Funciona
O programa XDP para interface WireGuard:
-
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
-
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
-
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