Zum Inhalt springen
🛠️ToolsShed

Bandwidth Delay Product Calculator

Berechne BDP für TCP-Buffer-Tuning und erhalte empfohlene Fenstergrößen sowie sysctl-Einstellungen.

Über dieses Tool

Das Bandbreiten-Verzögerungs-Produkt (BDP) ist die Bandbreite der Verbindung multipliziert mit ihrer Umlaufzeit, und es zeigt genau, wie viele Daten zu jedem Zeitpunkt unterwegs auf der Leitung sein können. Diese Zahl bestimmt das ideale TCP-Fenster für den vollen Durchsatz in langen, schnellen Netzwerken, in denen hohe Geschwindigkeit auf hohe Latenz trifft und ein zu kleines Fenster Ihre Übertragung unbemerkt drosselt.

Geben Sie zur Nutzung die Bandbreite der Verbindung und die Umlauflatenz ein und lesen Sie dann das resultierende BDP sowie die empfohlene TCP-Fenstergröße ab. Es richtet sich an Netzwerkingenieure, Systemadministratoren, die den Durchsatz optimieren, und alle, die langsame Übertragungen über Verbindungen mit hoher Latenz diagnostizieren.

Tipp: Ist das TCP-Fenster kleiner als das BDP, liegt die Leitung untätig und wartet auf ACKs, während der Durchsatz leidet, also passen Sie Ihre Puffer entsprechend an. Alles läuft lokal in Ihrem Browser.

Häufig gestellte Fragen

Code-Implementierung

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.