taap.digitalferramentas para engenharia de redes

Calculadora de BDP e janela TCP

Informe banda, RTT, janela TCP e perda. O resultado mostra quantos bytes ficam em trânsito no enlace e qual fator limita a vazão de um único fluxo: link, janela ou perda.

tcp-bdp
ms
KiB
%
B

O que é o BDP

O produto banda × atraso (bandwidth-delay product) é a quantidade de dados que precisa estar "no fio", enviada e ainda não confirmada, para manter o enlace cheio. O TCP só pode ter em trânsito o tamanho da janela de recepção anunciada; se a janela for menor que o BDP, o transmissor para e espera ACKs, e a banda fica ociosa.

BDP (bytes) = banda (bit/s) × RTT (s) ÷ 8
vazão máx. por janela = janela × 8 ÷ RTT

Exemplo: 1 Gbps com RTT de 100 ms

BDP = 109 × 0,1 ÷ 8 = 12.500.000 bytes, cerca de 11,9 MiB. Com a janela clássica de 64 KiB (65.536 bytes), a vazão máxima é 65.536 × 8 ÷ 0,1 = 5,24 Mbps: apenas 0,5% do link. Para encher o link, a janela precisa chegar a 12,5 MB, o que exige window scaling.

Window scaling (RFC 7323)

O campo de janela do cabeçalho TCP tem 16 bits (máximo 65.535 bytes). A opção window scale, negociada no SYN, multiplica esse valor por 2n, com n até 14, permitindo janelas de até 1 GiB. Os sistemas operacionais atuais ativam a opção e ajustam o buffer automaticamente (autotuning), mas três situações ainda travam a janela em 64 KiB:

  • firewall, IPS ou balanceador que remove opções TCP do SYN;
  • aplicação que fixa SO_RCVBUF em valor baixo;
  • limites máximos de buffer do sistema menores que o BDP.
# Linux: conferir e ajustar limites (valores em bytes)
sysctl net.ipv4.tcp_window_scaling          # deve ser 1
sysctl -w net.core.rmem_max=67108864
sysctl -w net.ipv4.tcp_rmem="4096 131072 67108864"
sysctl -w net.ipv4.tcp_wmem="4096 16384 67108864"

# medir um fluxo e vários em paralelo
iperf3 -c 203.0.113.10 -t 30
iperf3 -c 203.0.113.10 -t 30 -P 8

Perda de pacotes: fórmula de Mathis

Mesmo com janela suficiente, a perda limita o TCP de controle de congestionamento clássico (Reno/CUBIC em regime). A aproximação de Mathis et al.:

vazão ≤ (MSS × 8 ÷ RTT) × (1,22 ÷ √p)

Com MSS de 1.460 bytes, RTT de 100 ms e 0,01% de perda: 116,8 kbit/s × 122 = 14,2 Mbps. Em caminhos longos, uma perda mínima derruba a vazão por fluxo; BBR é menos sensível a perda aleatória.

Tabela de BDP

BandaRTT 20 msRTT 100 msRTT 600 ms (GEO)
100 Mbps244 KiB1,19 MiB7,15 MiB
1 Gbps2,38 MiB11,9 MiB71,5 MiB
10 Gbps23,8 MiB119 MiB715 MiB

Meça o RTT real com ping ou mtr em horário de uso, não o valor de catálogo do circuito.

Respostas rápidas

Perguntas frequentes

Por que um único download não usa todo o meu link de 1 Gbps?

Em caminhos com RTT alto, a janela TCP ou a perda de pacotes limita cada fluxo antes do link. Aumente os buffers, verifique o window scaling ou use vários fluxos em paralelo.

Qual o tamanho máximo de janela TCP?

65.535 bytes sem window scaling; com a opção da RFC 7323 (fator até 2¹⁴), cerca de 1 GiB.

O BDP vale para UDP?

O BDP descreve o enlace, mas a limitação por janela é específica do TCP. Protocolos sobre UDP como QUIC têm controle de fluxo próprio, com o mesmo princípio.

Ferramenta para estudo e projeto. Valide a configuração em laboratório e com a documentação do fabricante antes de aplicar em produção.