頻寬延遲積
計算 BDP 和最佳 TCP 緩衝區大小
如何使用頻寬延遲積
- 1輸入鏈路頻寬和往返時間。
- 2讀取以位元和位元組表示的頻寬時延積。
- 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)問題的來源**:過大的緩衝讓排隊延遲飆升,視訊會議卡頓但測速卻很快。
| 鏈路型別 | 頻寬 | RTT | BDP |
|---|---|---|---|
| 區域網 | 1 Gbps | 0.5 ms | 62.5 KB |
| 同城專線 | 1 Gbps | 5 ms | 625 KB |
| 跨省骨幹 | 1 Gbps | 30 ms | 3.75 MB |
| 中美海底光纜 | 1 Gbps | 180 ms | 22.5 MB |
| GEO 衛星 | 100 Mbps | 550 ms | 6.9 MB |
| 5G 行動網路 | 300 Mbps | 30 ms | 1.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、鐳速)。
