Bufferbloat Linux. Vamos destrinchar o bufferbloat em servidores Linux de forma clara e prática, incluindo causas, impactos e como diagnosticar e corrigir.
O que é Bufferbloat
Bufferbloat é o fenômeno em que buffers de rede excessivamente grandes (em roteadores, switches ou no próprio servidor) causam latência alta e instável, mesmo quando a largura de banda não está saturada.
Em outras palavras, quando o buffer tenta “guardar tudo”, os pacotes acabam esperando muito tempo para serem transmitidos, gerando ping alto, lag em aplicações sensíveis (como VoIP, jogos, streaming) e degradação geral da performance da rede.
Como Bufferbloat afeta servidores Linux
- Atraso em respostas TCP:
Pacotes demoram a sair do servidor, aumentando a latência em respostas HTTP, SSH, etc. - Problemas em aplicações em tempo real:
WebRTC, VoIP ou streaming podem travar ou apresentar jitter alto. - Ineficácia de congestion control do TCP:
TCP vê a fila cheia e reduz throughput, mesmo que a banda real não esteja totalmente usada. - Efeito em upload e download simultâneo:
Uploads grandes podem travar downloads ou afetar tráfego crítico.
Como diagnosticar Bufferbloat no Linux
1️⃣ Teste de latência real
Use ping enquanto transfere dados:
ping -i 0.2 google.com
- Observe picos de latência enquanto roda um
scpouwget. - Se o ping dispara durante transferências, é sinal clássico de bufferbloat.
2️⃣ Ferramentas específicas
tc(Traffic Control) – monitoramento e gestão de filas.iperf3– testar throughput da rede.pingplotter/mtr– traçar variações de latência.flent– benchmark avançado de bufferbloat.bloatyoubloatcheck– scripts de teste simplificados.
Como mitigar Bufferbloat em Linux
1️⃣ Habilitar qdisc inteligente
Linux permite controlar filas de rede com Traffic Control (tc).
Recomendado: FQ_CoDel
# Aplica FQ_CoDel na interface eth0 sudo tc qdisc replace dev eth0 root fq_codel
- FQ_CoDel: filtra pacotes em filas menores, reduzindo latência.
- Alternativa: Cake, que é mais moderno e combina fairness + shaping.
sudo tc qdisc replace dev eth0 root cake
2️⃣ Limitar buffers de hardware
Algumas NICs e drivers mantêm buffers enormes. Exemplo para reduzir:
# Mostra buffers atuais ethtool -g eth0 # Reduz RX/TX buffers sudo ethtool -G eth0 rx 256 tx 256
3️⃣ Controlar upload/download com shaping
No servidor, você pode limitar banda para evitar encher buffers:
sudo tc qdisc add dev eth0 root handle 1: htb default 12 sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 80mbit
4️⃣ Ajustes TCP
Reduzir tamanho máximo de buffers TCP:
# Ver buffer de envio sysctl net.ipv4.tcp_wmem # Ver buffer de recebimento sysctl net.ipv4.tcp_rmem
Exemplo de configuração mais conservadora:
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 6291456" sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 6291456"
5️⃣ Evitar sobrecarga de link
- Monitorar tráfego real versus capacidade da interface.
- Evitar saturar uplinks de 1 GbE ou links compartilhados.
Checklist rápido anti-bufferbloat no Linux
- ✅ Teste latência enquanto transfere dados (
pingoumtr). - ✅ Aplique FQ_CoDel ou Cake em interfaces críticas (
tc qdisc). - ✅ Reduza buffers da NIC se necessário (
ethtool -G). - ✅ Ajuste buffers TCP (
tcp_{r,w}mem). - ✅ Limite largura de banda em links compartilhados.
- ✅ Monitore constantemente tráfego e latência.
FAQ
É o acúmulo excessivo de pacotes em buffers de rede, causando alta latência e degradação de performance.
Testando ping durante transferências ou usando ferramentas como tc, flent ou iperf3
FQ_CoDel é eficiente e simples; Cake oferece recursos avançados de fairness e shaping.
Sim, reduzir RX/TX buffers evita que filas internas causem latência alta
Principalmente aplicações sensíveis à latência, como VoIP, streaming, jogos e sistemas em tempo real.

