透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

頻寬延遲乘積
4,000,000
位元
以位元組表示 500,000 bytes
以 KB 表示 488.28 KB

什麼是頻寬延遲乘積(BDP)?

頻寬延遲乘積(Bandwidth-Delay Product,簡稱 BDP)指的是在任一瞬間,網路連線上能同時「在途傳輸」的最大資料量。它等於連線頻寬乘以來回延遲時間(RTT)。BDP 是 TCP 調校的核心觀念:想要充分發揮「高速度、高延遲」連線(也就是俗稱的「長肥網路」,Long Fat Network)的效能,TCP 接收視窗至少必須大於等於 BDP,否則實際傳輸速率將遠遠低於可用頻寬。

A network link shown as a pipe between sender and receiver, with bandwidth as pipe width and RTT as pipe length, filled with data packets in flight
The BDP is the amount of data 'in flight' on a link, like water filling a pipe whose width is bandwidth and length is round-trip time.

如何使用本計算機

先輸入連線頻寬並選擇單位(bit/s、Kbit/s、Mbit/s 或 Gbit/s),接著填入以毫秒(ms)為單位的來回延遲時間,也就是 ping 指令通常會回報的數值。計算機會同時給出以位元、位元組與 KB 表示的 BDP。設定 socket 緩衝區或 TCP 視窗大小時,請以位元組(byte)的數值為依據。

公式說明

BDP(位元)= 頻寬(bits/s)× RTT(秒)。計算時先把頻寬換算成每秒位元數,並將 RTT 由毫秒換算成秒(除以 1000)。將位元結果除以 8 即得位元組數,再將位元組除以 1024 就得到 KiB(KB)。

$$\text{BDP (bytes)} = \frac{\text{Bandwidth} \times \text{Unit} \times \dfrac{\text{RTT (ms)}}{1000}}{8}$$

Formula diagram multiplying bandwidth in bits per second by round-trip time in seconds to get BDP in bits
BDP equals bandwidth (bits/s) multiplied by round-trip time (s).

實際範例

假設一條 100 Mbit/s 的連線,RTT 為 40 ms。此時頻寬=100,000,000 bit/s,RTT=0.040 秒。\(\text{BDP} = 100{,}000{,}000 \times 0.040 = 4{,}000{,}000\) 位元=500,000 位元組 ≈ 488.28 KB。若要讓這條連線跑滿頻寬,TCP 視窗至少應設定為約 500 KB。

解釋您的 BDP 結果

BDP 是發送方必須能夠保持在線上的未確認數據量,以充分利用鏈路。TCP 在必須等待確認之前,只能有一個窗口大小的數據處於未完成狀態,因此接收窗口必須滿足:

$$\text{TCP 窗口} \ge \text{BDP}$$

如果窗口小於 BDP,發送方會傳輸一個窗口的數據,然後在等待 ACK 的整個往返時間內空閒。可實現的吞吐量則會受到限制,無論鏈路提供多少帶寬:

$$\text{吞吐量} \approx \frac{\text{窗口(字節)} \times 8}{\text{RTT(秒)}}$$

例如,在 150 毫秒跨洲路徑上的經典 64 KB 窗口只能產生 \(\frac{65{,}536 \times 8}{0.150} \approx 3.5\) Mbit/s — 遠低於 100 Mbit/s 鏈路的容量。

  • 預設窗口(無縮放):原始的 16 位 TCP 窗口字段的最大值為 65,535 字節(64 KB)。在低延遲的區域網上,通常已足夠。
  • 窗口縮放 (RFC 1323 / RFC 7323):任何 BDP 超過 64 KB 的路徑都需要 TCP 窗口縮放選項,該選項將公告窗口乘以 2 的某個冪次,最高可達約 1 GB。必須在兩個端點上啟用該選項(並且不被中間設備剝離)。
  • 窗口過小:吞吐量受限於窗口 ÷ RTT;延遲增加一倍會使固定窗口的可達成速度減半。這就是為什麼「長胖網路」(高 BDP)即使在快速鏈路上也感覺很慢。
  • 窗口過大:將窗口設定遠大於 BDP 會浪費記憶體,並可能增加緩衝/延遲,但不會改善穩定狀態吞吐量。

作為實踐規則,應將最大 TCP 緩衝區設定為至少 BDP(通常使用 BDP 的 2 倍以吸收 ACK 時序和重傳)。現代作業系統會自動向上調整窗口至接近 BDP,因此主要要驗證的是窗口縮放是否在端到端都允許。

典型 RTT 和帶寬參考值

當您沒有測量的 RTT 時,請使用這些典型範圍作為輸入。實際 RTT 取決於物理距離、路由、佇列和介質;衛星鏈路主要由地球同步軌道的傳播延遲決定。

網路路徑 典型 RTT 說明
同一局域網 / 資料中心 < 1 ms 交換式乙太網、本地子網
同一城市 / ISP 1–10 ms 本地對等互聯、區域伺服器
同一國家 10–40 ms 跨區域陸地光纖
跨洲 / 洲際 80–150 ms 例如 US–Europe、US–Asia
地球同步軌道衛星 500–700 ms ~每跳上下各 36,000 公里

按連線類型的常見存取帶寬(下行、標稱):

連線類型 典型帶寬
ADSL 5–24 Mbit/s
VDSL / 固定無線 25–100 Mbit/s
Cable (DOCSIS) 100–1000 Mbit/s
光纖到府 (FTTH) 100 Mbit/s – 10 Gbit/s
4G LTE 10–100 Mbit/s
5G 100 Mbit/s – 1 Gbit/s+
千兆乙太網 (局域網) 1 Gbit/s
10 千兆乙太網 10 Gbit/s

在計算 BDP 之前,為了在單位之間轉換引用的計劃速度,Gbps-to-MbpsKbps-to-Mbps 轉換可能會有幫助;記住 BDP 公式需要原始的每秒位元數。

常見問題

為什麼延遲會影響傳輸速率?因為傳送端在任何時間點只能有「一個視窗」份量、尚未收到確認(ACK)的資料在途中。若視窗小於 BDP,傳送端就得停下來等待 ACK,導致頻寬閒置浪費。

該看位元組還是位元?頻寬通常以位元(bit)標示,但緩衝區與視窗大小是以位元組(byte)設定,因此調校時以位元組的結果最實用。

RTT 該填多少?請填入兩端點之間的來回延遲時間,一般可用 ping 量測,或依地理距離概估。

最後更新: