頻寬延遲乘積計算機
輸入
| 頻寬 | 1 Gbps |
|---|---|
| 來回時間(RTT) | 30 ms |
頻寬延遲乘積計算機
依據連線的頻寬與來回時間,計算頻寬延遲乘積(BDP)。BDP 是路徑上正在傳送中的資料量,也是讓該路徑保持充分利用所建議的 TCP 視窗大小。
輸入
連線特性
結果
輸入數值即可顯示計算結果。
頻寬延遲乘積
傳送中的位元數
頻寬延遲乘積
頻寬延遲乘積(BDP)是某一時刻能佔據網路路徑的資料量——亦即在傳送端與接收端之間「正在傳送中」的資料。它是調校高速連線時最有用的一個數字,因為它告訴你 TCP 視窗或通訊端緩衝區必須多大,才能讓連線保持充分利用,而不是在等待確認封包時閒置。
公式
BDPbits=B×T BDPbytes=8B×T其中 是以每秒位元數計的頻寬, 是來回時間(RTT),兩個量都以一秒為時間基準。乘積 給出線路上的位元數;除以 8 把它換算成位元組,也就是設定 TCP 視窗與緩衝區所用的單位。
一個有用的心智模型是輸送水的水管。頻寬是水管的橫截面積、RTT 是它的長度,所以頻寬延遲乘積就是水管的總容積。要讓水流不中斷,你必須隨時保有至少那麼多容積的水在其中流動。
計算範例。 1 Gbps 的連線搭配 30 ms 的來回時間:
BDPbits=1,000,000,000×0.030=30,000,000 bits BDPbytes=830,000,000=3,750,000 bytes≈3.75 MB所以任一時刻大約有 3.75 MB 的資料正在傳送中,而要讓連線達到飽和,需要至少這麼大的 TCP 視窗。若把頻寬減半為 100 Mbps,BDP 便降到 1.25 MB;要達到相同輸送量,現在只需三分之一的緩衝區。
為什麼 BDP 決定視窗大小
TCP 是一種滑動視窗協定:傳送端同時保有的未確認位元組數,最多只能達到其視窗所允許的上限。一旦視窗用滿,傳送端就會停下來,空等一整個來回時間讓確認封包返回,才能繼續傳送。
如果視窗小於 BDP,傳送端會在第一個確認封包返回之前就把視窗用完,連線在每個來回時間的其餘時段都會閒置。此時可達到的輸送量上限為:
throughput=RTTwindow不論連線有多少原始頻寬都一樣。把接收視窗與通訊端緩衝區設為至少一個 BDP,便能移除這個瓶頸,讓連線用滿全部容量。
長肥網路
頻寬延遲乘積很大的路徑——同時具備高頻寬與高延遲——稱為長肥網路(LFN)。跨洲光纖、洲際路徑與衛星連線都是典型例子。它們之所以難以應付,是因為視窗必須大到足以橫跨整個來回。
最初的 TCP 標頭只保留 16 個位元給視窗欄位,把它限制在 64 KB。在下表 1 Gbps、100 ms 的路徑上,BDP 為 12.5 MB——幾乎是該上限的 200 倍。視窗縮放選項(RFC 7323)將通告視窗乘以 2 的某次方,正是為了讓連線能在這類路徑上朝 BDP 成長。
| 路徑 | 頻寬 | RTT | BDP |
|---|---|---|---|
| 區域網路 | 1 Gbps | 1 ms | 125 KB |
| 區域型網際網路 | 100 Mbps | 30 ms | 375 KB |
| 跨洲 | 1 Gbps | 60 ms | 7.5 MB |
| 洲際 | 1 Gbps | 100 ms | 12.5 MB |
| 同步軌道衛星 | 50 Mbps | 600 ms | 3.75 MB |
請注意,延遲的重要性不亞於頻寬:衛星連線遠比光纖路徑慢,然而其龐大的 RTT 使其 BDP 與跨洲連線相當。
位元、位元組與測量 RTT
頻寬以每秒位元數宣傳,而緩衝區以位元組設定,因此那個 8 的因子不可或缺——以位元計的 BDP 會把所需緩衝區高估八倍。挑選數值時,請使用瓶頸頻寬(路由上最慢的連線),以及用 ping 或封包擷取量得的實際 RTT。在多數廣域路徑上,RTT 由傳播延遲主導——光橫越該距離所需的時間——這是任何緩衝都無法縮短的。
一個實際的後果是:兩條頻寬相同的連線可能需要截然不同的調校:來回時間較長的那一條 BDP 較大,需要較大的視窗。這也是為什麼通往遠端伺服器的高頻寬連線,若作業系統或應用程式把視窗壓到 BDP 以下,仍然會讓人覺得慢。
相關計算機
若想了解封包遺失與 RTT 如何共同限制連線的實際速度,請使用 TCP 吞吐量計算機 計算機。若要把來回時間拆解成傳播、序列化、排隊與處理等組成部分,請使用 延遲預算計算器 計算機。若要在每秒位元數與每秒位元組單位之間換算速率,請參考 吞吐量(bps)換算器 計算機。
常見問題(FAQ)
什麼是頻寬延遲乘積?
頻寬延遲乘積(BDP)是連線的頻寬乘以其來回時間。它等於路徑上任一時刻能「在傳送中」——已送出但尚未被確認——的最大資料量。把連線想成一根水管:頻寬是它的直徑、RTT 是它的長度,所以 BDP 就是這根水管的容積。要用滿全部容量,傳送端必須被允許保有至少一個 BDP 的未確認資料同時在傳。
BDP 如何決定 TCP 視窗大小?
TCP 同時在傳的資料量,最多只能達到其傳送/接收視窗所允許的上限。如果視窗小於 BDP,傳送端會把視窗用完,接著得空等一整個來回時間以收到確認封包才能繼續,使連線閒置。
把 TCP 接收視窗與通訊端緩衝區設為至少等於以位元組計的 BDP,就能讓傳送端把水管填滿。現代協定堆疊使用視窗縮放與自動調校,讓視窗自動朝 BDP 成長,但在資源受限或較舊的系統上,你可能需要手動調高緩衝區上限。
什麼是長肥網路(LFN)?
長肥網路是指頻寬延遲乘積很大的路徑——同時具備高頻寬與高延遲,例如跨洲或衛星連線。這類路徑需要大視窗才能保持填滿:1 Gbps 的連線搭配 100 ms 的 RTT,其 BDP 為 12.5 MB,遠大於未縮放 TCP 的 64 KB 上限。長肥網路正是視窗縮放、大型緩衝區與現代壅塞控制演算法最關鍵之處。
為什麼是延遲、而不只是頻寬,限制了輸送量?
因為 TCP 必須等待確認封包,輸送量上限為視窗大小除以 RTT,不論連線有多少原始頻寬。RTT 加倍會使 BDP 加倍,因此要達到相同速度所需的視窗也會加倍。這也是為什麼通往遠端伺服器的高速連線會讓人覺得慢:如果視窗無法涵蓋整個來回,連線多數時間都在等待,而非傳送。