Calculadora de Produto Largura de Banda-Delay (BDP) e Ferramenta TCP
← Back to Main Calculator

Bandwidth Delay Product (BDP) Calculator

Calculate BDP, optimal TCP window size, max throughput, and Linux sysctl kernel buffer parameters.

Network Parameters

Presets:
ms
Presets:
0.00%

Packet loss degrades TCP throughput via the Mathis equation limit.

8.75MB

8,750,000 Bytes (70,000,000 bits in flight)

Recommended TCP Window Size8.75 MB (8,545 KB)
Max TCP Speed (No Loss)1.00 Gbps (100%)
Max TCP Speed (With Loss)1.00 Gbps (100%)
Default OS Buffer Limit WarningStandard OS default TCP receive buffer (usually 4 MB or 64 KB) will bottleneck this connection! Tune kernel settings below to utilize full bandwidth.

Linux Kernel TCP Tuning Commands (`/etc/sysctl.conf`)

Copy and paste these kernel parameters to tune Linux for this BDP.

# BDP TCP Tuning Parameters for 1.00 Gbps @ 70ms RTT
# Maximum BDP: 8,750,000 bytes

# Increase max read and write buffer sizes
net.core.rmem_max = 17500000
net.core.wmem_max = 17500000

# Increase autotuning TCP buffer limits (min, default, max)
net.ipv4.tcp_rmem = 4096 87380 17500000
net.ipv4.tcp_wmem = 4096 65536 17500000

# Enable TCP window scaling & timestamps
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1

Understanding Bandwidth Delay Product (BDP)

Bandwidth Delay Product (BDP) measures the maximum number of data bytes that can exist in transit on a network pipe at any given moment. Think of a network connection as a water pipe: bandwidth represents the diameter of the pipe, and latency (RTT) represents the length of the pipe. BDP is the total volume of water inside the pipe when it is completely full.

BDP Formula:

BDP (bits) = Bandwidth (bits/sec) × Round-Trip Time RTT (seconds)

BDP (Bytes) = BDP (bits) / 8

In TCP/IP networking, the sender cannot send unlimited data without receiving acknowledgments (ACKs) from the receiver. The maximum amount of unacknowledged data allowed is limited by the TCP Receive Window Size. If the receive window is smaller than the BDP, the sender must stop transmitting and wait for ACKs, leading to severe network underutilization.

How BDP Causes Long-Distance Speed Bottlenecks

Suppose you purchase a 1 Gbps internet link. If you connect to a server across the globe with a 150 ms RTT latency and your operating system uses a default TCP window size of 64 KB (65,536 bytes), your maximum achievable TCP speed will be:

Max Speed = (TCP Window Size in bits) / RTT in seconds

Max Speed = (65,536 × 8) / 0.150 seconds = 3,495,253 bps = 3.49 Mbps

Even though you are paying for 1,000 Mbps (1 Gbps), your single-thread TCP transfer is capped at just 3.49 Mbps simply because the TCP window size is too small for the 150 ms latency! By tuning the TCP window size to match the BDP (18.75 MB), you unlock the full 1,000 Mbps capacity.


Frequently Asked Questions (FAQ)

What is Bandwidth Delay Product (BDP)?

Bandwidth Delay Product (BDP) is the volume of data that can be "in flight" on a network link at any given time. It is calculated by multiplying maximum network bandwidth by the Round-Trip Time (RTT) latency (BDP = Bandwidth × RTT).

Why is BDP important for high-speed WAN connections?

Standard operating system TCP buffers are often optimized for low-latency LANs. When transferring data across long-distance WANs or cloud regions, small default buffers cause senders to pause while waiting for acknowledgments. Tuning buffers to match BDP prevents these pauses and maximizes throughput.

How does packet loss impact high BDP links?

Packet loss causes standard TCP congestion algorithms (like Reno or Cubic) to dramatically shrink the congestion window. According to the Mathis equation, maximum TCP throughput under packet loss is proportional to MSS / (RTT × sqrt(loss)). On high BDP links, using modern congestion control algorithms like Google's BBR (net.ipv4.tcp_congestion_control = bbr) significantly improves throughput under packet loss.

How do I apply these settings in Windows?

Modern Windows operating systems enable TCP Window Scaling automatically. You can enable autotuning via Administrator PowerShell using command: netsh int tcp set global autotuninglevel=normal.