본문으로 건너뛰기
🛠️ToolsShed

대역폭-지연 곱 계산기

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.