53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# 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
|