带宽-延迟乘积

计算 BDP 和最优 TCP 缓冲区大小

如何使用带宽-延迟乘积

  1. 1输入链路带宽和往返时间。
  2. 2读取以比特和字节表示的带宽时延积。
  3. 3用它来为长距离链路规划 TCP 缓冲与窗口。

带宽时延积(BDP)

BDP = 带宽(比特/秒) × RTT(秒)

BDP 是链路上可同时“在途”的数据量;它决定了保持管道满载所需的最小 TCP 窗口。

100 Mbps 链路、100 ms RTT 的 BDP 约 1.25 MB,窗口必须超过它才能避免利用率不足。

BDP = 带宽 × RTT,单位是比特(换算成字节要除以 8)。它回答一个关键问题:**要让这条链路不空闲,管道里必须同时有多少数据在飞?**如果 TCP 窗口或中间设备的缓冲区小于 BDP,链路就会在等待确认时空转,实际吞吐量远低于带宽。

BDP 对网络设备的缓冲区设计也至关重要。经典经验法则要求路由器缓冲 ≥ BDP,一条 10 Gbps、RTT 200 ms 的链路就需要 250 MB 缓冲——这在核心路由器上是巨大的成本和延迟开销,因此后来提出了更精细的模型(如 Stanford 模型,缓冲 = BDP ÷ √N,N 为并发流数)。**这也是「缓冲膨胀」(Bufferbloat)问题的来源**:过大的缓冲让排队延迟飙升,视频会议卡顿但测速却很快。

链路类型带宽RTTBDP
局域网1 Gbps0.5 ms62.5 KB
同城专线1 Gbps5 ms625 KB
跨省骨干1 Gbps30 ms3.75 MB
中美海底光缆1 Gbps180 ms22.5 MB
GEO 卫星100 Mbps550 ms6.9 MB
5G 移动网络300 Mbps30 ms1.1 MB

典型链路的 BDP 与所需缓冲

常见问题

BDP 对 TCP 为何重要?

若窗口小于 BDP,发送方等 ACK 而链路永远填不满。

缓冲怎么定?

把 TCP 窗口和中间缓冲至少设为 BDP。

BDP 随距离增大吗?

会;RTT 随距离上升,所以长途链路需要更大的窗口。

怎么测量自己链路的 BDP?

两步:① 用 speedtest 或 iperf 测带宽;② 用 ping 测 RTT(或用 mtr 看整条路径)。然后 BDP = 带宽(bps) × RTT(s) ÷ 8 得到字节数。例如带宽 200 Mbps、ping 值 40 ms:BDP = 2×10⁸ × 0.04 ÷ 8 = 1 MB。接着检查系统的 TCP 窗口设置是否 ≥ 1 MB,若小于则需调大才能跑满 200 Mbps。

为什么跨国传输特别慢?

主因就是 BDP 太大。中美 RTT 约 150–200 ms,即使带宽 1 Gbps,BDP 也有约 20 MB,需要 20 MB 的 TCP 窗口才能跑满。默认窗口通常不够,加上丢包率较高(跨洋链路 0.1%–1% 很常见),TCP 会频繁降速。解决方案:① 启用 BBR 拥塞控制;② 使用广域网加速/CDN;③ 用多线程并行传输突破单连接窗口限制;④ 对大文件用 UDP 加速协议(如 QUIC、Aspera、镭速)。

更多工具