Bandwidth Delay Product Calculator
TCPバッファチューニング用のBDPを計算し、推奨ウィンドウサイズとsysctl設定を取得します。
このツールについて
帯域遅延積(BDP)はリンク帯域幅にラウンドトリップタイムを掛けた値で、その瞬間に回線上を流れていられるデータ量を正確に示します。この値が、高速かつ高遅延の組み合わせで小さすぎるウィンドウが知らぬ間に転送を絞ってしまう長距離高帯域ネットワークにおいて、最大スループットを得るための理想的なTCPウィンドウを決めます。
使い方は、リンク帯域幅とラウンドトリップ遅延を入力し、算出されたBDPと推奨TCPウィンドウサイズを読み取るだけです。ネットワークエンジニア、スループットを調整するシステム管理者、高遅延リンクでの遅い転送を診断するすべての人のために作られています。
ヒント:TCPウィンドウがBDPより小さいと、回線はACKを待ってアイドル状態になりスループットが低下するため、それに合わせてバッファサイズを調整してください。すべての処理はブラウザ内でローカルに実行されます。
よくある質問
コード実装
def bandwidth_delay_product(bandwidth_mbps: float, rtt_ms: float) -> dict:
"""
Calculate Bandwidth-Delay Product (BDP).
BDP = Bandwidth × RTT
This represents the amount of data in transit (in flight) at any time.
"""
bandwidth_bps = bandwidth_mbps * 1_000_000
rtt_sec = rtt_ms / 1000
bdp_bits = bandwidth_bps * rtt_sec
bdp_bytes = bdp_bits / 8
bdp_kb = bdp_bytes / 1024
bdp_mb = bdp_kb / 1024
# Recommended TCP window size (2x BDP for headroom)
tcp_window_bytes = int(bdp_bytes * 2)
return {
"bdp_bits": int(bdp_bits),
"bdp_bytes": int(bdp_bytes),
"bdp_kb": round(bdp_kb, 2),
"bdp_mb": round(bdp_mb, 4),
"tcp_window_recommended_bytes": tcp_window_bytes,
"tcp_window_recommended_kb": round(tcp_window_bytes / 1024, 1),
}
# Examples
scenarios = [
("Home broadband", 100, 20),
("Transatlantic fiber", 1000, 70),
("Satellite internet", 50, 600),
("Data center", 10_000, 1),
]
for name, bw, rtt in scenarios:
r = bandwidth_delay_product(bw, rtt)
print(f"{name} ({bw} Mbps, {rtt}ms RTT):")
print(f" BDP: {r['bdp_kb']:.1f} KB ({r['bdp_mb']:.2f} MB)")
print(f" Recommended TCP window: {r['tcp_window_recommended_kb']:.0f} KB")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.