帯域幅遅延積(BDP)とは?
帯域幅遅延積(BDP:Bandwidth-Delay Product)とは、ある瞬間にネットワーク回線上を「飛行中(in flight)」で存在できるデータ量の最大値を指します。値は、回線の帯域幅にラウンドトリップタイム(RTT:往復遅延時間)を掛け合わせたものです。BDPはTCPチューニングにおける重要な概念です。高速かつ高遅延の回線(いわゆる「ロング・ファット・ネットワーク(LFN)」)を最大限に活用するには、TCPの受信ウィンドウを少なくともBDP以上に設定する必要があります。そうしないと、利用可能な帯域幅を大きく下回るスループットしか得られません。
この計算ツールの使い方
まず回線の帯域幅を入力し、単位(bit/s、Kbit/s、Mbit/s、Gbit/s)を選びます。次にラウンドトリップタイムをミリ秒単位で入力します。これはpingで一般的に表示される値です。計算ツールは、BDPをビット・バイト・キロバイトで返します。ソケットバッファやTCPウィンドウサイズを設定する際は、バイト値を目安にしてください。
計算式の解説
BDP(ビット)= 帯域幅(bit/s)× RTT(秒)です。まず帯域幅を1秒あたりのビット数に換算し、RTTはミリ秒から秒へ(1000で割って)変換します。ビットで求めた結果を8で割るとバイトになり、さらにバイトを1024で割るとキビバイト(KB)になります。
$$\text{BDP (bytes)} = \frac{\text{Bandwidth} \times \text{Unit} \times \dfrac{\text{RTT (ms)}}{1000}}{8}$$
計算例
帯域幅100 Mbit/s、RTT 40 msの回線を考えてみましょう。帯域幅 = 100,000,000 bit/s、RTT = 0.040 sです。BDP = \(100{,}000{,}000 \times 0.040 = 4{,}000{,}000\) ビット = 500,000 バイト ≒ 488.28 KBとなります。この回線を使い切る(飽和させる)には、TCPウィンドウを最低でも約500 KBに設定する必要があります。
BDP結果の解釈
BDPは、送信者がリンクを完全に活用するためにワイヤ上に保ち続ける必要がある未確認データの量です。TCPは確認応答を待つ前に1つのウィンドウ分のデータのみを未処理のままにできるため、受信ウィンドウは以下を満たす必要があります:
$$\text{TCPウィンドウ} \ge \text{BDP}$$ウィンドウがBDPより小さい場合、送信者はデータのウィンドウを送信してから、ACKを待つ間、往復時間の残りの間アイドル状態になります。その場合、達成可能なスループットはリンクが提供する帯域幅がどれだけ大きくても上限がかかります:
$$\text{スループット} \approx \frac{\text{ウィンドウ (バイト)} \times 8}{\text{RTT (秒)}}$$例えば、150 msの大陸間パスで従来の64 KBウィンドウの場合、\(\frac{65{,}536 \times 8}{0.150} \approx 3.5\) Mbit/s — 100 Mbit/sリンク容量をはるかに下回ります。
- デフォルトウィンドウ (スケーリングなし): 元の16ビットTCPウィンドウフィールドの最大値は65,535バイト (64 KB) です。低遅延LANでは通常これで十分です。
- ウィンドウスケーリング (RFC 1323 / RFC 7323): BDPが64 KBを超えるパスでは、アドバイスされたウィンドウを2の累乗で約1 GBまで乗算するTCPウィンドウスケールオプションが必要です。これは両方のエンドポイントで有効にする必要があり、ミドルボックスによって削除されてはいけません。
- サイズが小さいウィンドウ: スループットはウィンドウ ÷ RTTに制限されます。遅延を2倍にすると、固定ウィンドウの達成可能な速度が半分になります。これが「ロングファットネットワーク」(高BDP) が高速リンクでも遅く感じられる理由です。
- サイズが大きいウィンドウ: ウィンドウをBDPよりはるかに大きく設定するとメモリが無駄になり、バッファリング/遅延が増加する可能性がありますが、定常状態のスループットは向上しません。
実用的なルールとして、最大TCPバッファをBDP以上に設定します (ACKタイミングと再送信を吸収するために2×BDPを使用することがよくあります)。最新のオペレーティングシステムはウィンドウを自動調整してBDPに向かって上げるため、主に確認することはウィンドウスケーリングがエンドツーエンドで許可されていることです。
典型的なRTTと帯域幅の参照値
測定されたRTTがない場合は、入力として以下の典型的な範囲を使用してください。実際のRTTは物理的距離、ルーティング、キューイング、および媒体に依存します。衛星リンクは地球静止軌道への往復の伝播遅延に支配されます。
| ネットワークパス | 典型的なRTT | 注記 |
|---|---|---|
| 同じLAN / データセンター | < 1 ms | スイッチドイーサネット、ローカルサブネット |
| 同じメトロ / ISP | 1–10 ms | ローカルピアリング、地域サーバー |
| 同じ国 | 10–40 ms | クロスリージョン陸上光ファイバー |
| 大陸間 / 大陸間 | 80–150 ms | 例:米国–ヨーロッパ、米国–アジア |
| 地球静止衛星 | 500–700 ms | ホップあたり約36,000 km上下 |
接続タイプ別の一般的なアクセス帯域幅 (ダウンストリーム、公称):
| 接続タイプ | 典型的な帯域幅 |
|---|---|
| ADSL | 5–24 Mbit/s |
| VDSL / 固定無線 | 25–100 Mbit/s |
| ケーブル (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+ |
| ギガビットイーサネット (LAN) | 1 Gbit/s |
| 10ギガビットイーサネット | 10 Gbit/s |
BDPを計算する前にクォートされたプラン速度をユニット間で変換するには、Gbps-MbpsまたはKbps-Mbps変換が役立ちます。BDP公式は1秒あたりの生ビット数を想定しています。
よくある質問(FAQ)
なぜ遅延がスループットに影響するのですか? 送信側は、確認応答(ACK)を受け取っていないデータを最大でも1ウィンドウ分しか送り出せないためです。ウィンドウがBDPより小さいと、送信側はACK待ちで停止してしまい、帯域幅が使われないまま余ってしまいます。
バイトとビットのどちらを使うべきですか? 帯域幅は通常ビットで表記されますが、バッファやウィンドウのサイズはバイトで設定します。そのため、チューニングにはバイトの結果が最も役立ちます。
どのRTTを使えばよいですか? 通信を行う2つのエンドポイント間のラウンドトリップタイムを使います。一般的にはpingで測定するか、地理的な距離から推定します。