頻寬延遲積

計算 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、鐳速)。

更多工具