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.
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_RCVBUFem 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.:
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
| Banda | RTT 20 ms | RTT 100 ms | RTT 600 ms (GEO) |
|---|---|---|---|
| 100 Mbps | 244 KiB | 1,19 MiB | 7,15 MiB |
| 1 Gbps | 2,38 MiB | 11,9 MiB | 71,5 MiB |
| 10 Gbps | 23,8 MiB | 119 MiB | 715 MiB |
Meça o RTT real com ping ou mtr em horário de uso, não o valor de catálogo do circuito.