Aller au contenu
🛠️ToolsShed

Bandwidth Delay Product Calculator

Calculer le BDP pour l'optimisation des tampons TCP et obtenir les tailles de fenêtres recommandées et paramètres sysctl.

À propos de cet outil

Le produit bande passante-délai (BDP) est la bande passante du lien multipliée par son temps d'aller-retour, et il indique exactement quelle quantité de données peut circuler sur le câble à tout instant. Ce nombre fixe la fenêtre TCP idéale pour atteindre le débit maximal sur les réseaux longs et rapides, où la haute vitesse se conjugue à la latence élevée et où une fenêtre trop petite bride discrètement votre transfert.

Pour l'utiliser, saisissez la bande passante du lien et la latence d'aller-retour, puis lisez le BDP obtenu et la taille de fenêtre TCP suggérée. Il est conçu pour les ingénieurs réseau, les administrateurs système qui ajustent le débit et toute personne diagnostiquant des transferts lents sur des liens à forte latence.

Astuce : si la fenêtre TCP est plus petite que le BDP, le lien reste inactif en attendant les ACK et le débit s'effondre, alors dimensionnez vos tampons en conséquence. Tout s'exécute localement dans votre navigateur.

Questions Fréquentes

Implémentation du Code

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.