Knowledge

Bandwidth-Delay Product (BDP): Formula, Examples, and TCP Tuning Guide

Bandwidth-delay product (BDP) is the amount of data a network path can hold in transit before the sender receives an acknowledgement. Put simply, it tells you how much data must be “in flight” to keep a connection fully utilized. BDP matters whenever a connection has substantial bandwidth, noticeable round-trip time (RTT), or both. It is especially useful when sizing TCP windows and socket buffers for long-distance data transfers, cloud replication, scientific workloads, media contribution, and high-speed private links.

What is the bandwidth-delay product?

Think of a network path as a pipe. Bandwidth is the pipe’s width; RTT is how long it takes to send a signal to the far end and receive a response. The bandwidth-delay product is the volume of data that fits inside that pipe while the sender waits for an acknowledgement.

If a sender can keep at least one BDP of data outstanding, the link can stay busy. If it can keep far less than one BDP outstanding, it may send a burst, wait for acknowledgements, and leave capacity unused.

The Internet standards body describes BDP as the data needed to “fill the pipe”—the outstanding data required to achieve maximum TCP throughput on a path.

Bandwidth-delay product formula

Use this formula when bandwidth is in bits per second, and RTT is in seconds:

BDP (bits) = bandwidth (bits/second) × RTT (seconds)

To convert the result to bytes:

BDP (bytes) = bandwidth (bits/second) × RTT (seconds) ÷ 8

For example, a 1 Gbps path with a 40 ms RTT has a BDP of:

1,000,000,000 × 0.040 ÷ 8 = 5,000,000 bytes

That is 5 MB in decimal units, or about 4.77 MiB. A single TCP flow needs roughly that much usable in-flight capacity to approach 1 Gbps under ideal conditions.

BDP calculation examples

Link bandwidth RTT BDP in bytes Approximate binary size
100 Mbps 20 ms 250,000 bytes 244 KiB
1 Gbps 40 ms 5,000,000 bytes 4.77 MiB
10 Gbps 80 ms 100,000,000 bytes 95.37 MiB
100 Gbps 10 ms 125,000,000 bytes 119.21 MiB

Use the end-to-end RTT, not one-way latency. A common mistake is to multiply bandwidth by the ping time in milliseconds without converting milliseconds to seconds—or to forget the divide-by-eight step when the desired result is bytes.

bandwidth delay product

Why bandwidth-delay product matters for TCP

TCP requires the receiver to acknowledge delivered data. The sender can only have a limited amount of unacknowledged data outstanding, so the amount in flight must be large enough to span the RTT.

At any moment, a TCP sender is effectively constrained by the smallest of these limits:

  • The congestion window (cwnd), which responds to available network capacity and congestion signals.
  • The advertised receive window (rwnd), which reflects the receiver’s available buffer space.
  • Practical sender and receiver socket-buffer limits.

When one of these limits is below the path BDP, throughput can be capped even if the physical link is much faster. A useful upper-bound approximation is:

Throughput ≈ usable in-flight data ÷ RTT

For example, if a flow can sustain only a 64 KiB receive window over a 100 ms RTT, the flow-control ceiling is roughly 5.24 Mbps:

65,536 × 8 ÷ 0.1 = 5.24 Mbps

That is why the original 16-bit TCP window becomes inadequate on high-bandwidth, higher-latency paths.

TCP window scaling addresses this constraint.

BDP vs. bandwidth, latency, and throughput

Term What it describes Typical unit
Bandwidth The link’s potential data rate Mbps or Gbps
Latency / RTT The time for a request and response cycle ms
Bandwidth-delay product Data that can be in transit during one RTT bytes, KB, MB
Throughput The data rate an application actually achieves Mbps or Gbps

A 10 Gbps circuit does not automatically deliver 10 Gbps to a single application. On a long-RTT path, the flow needs a sufficiently large in-flight window, no limiting receiver or sender buffer, and a healthy path. Packet loss, congestion, encryption overhead, storage speed, host CPU, and the application protocol can all lower observed throughput.

How to calculate BDP step by step

  1. Find the usable path bandwidth. Use the bottleneck rate or a measured sustainable delivery rate—not merely the Ethernet port speed.
  2. Measure RTT. Measure the end-to-end path in realistic conditions. RTT can vary with routing and queueing, so collect more than one sample.
  3. Convert units. Change Mbps or Gbps to bits per second, and milliseconds to seconds.
  4. Multiply bandwidth by RTT. The result is BDP in bits.
  5. Divide by eight. This produces the byte value usually used for TCP-window and buffer discussions.
  6. Validate with a real transfer. Confirm that loss, host resources, and TCP flow-control values do not impose a smaller limit.

Worked example: 10 Gbps across an 80 ms RTT

Assume an application needs to move data across a 10 Gbps path with an 80 ms round-trip time.

10,000,000,000 bits/second × 0.080 seconds = 800,000,000 bits
800,000,000 ÷ 8 = 100,000,000 bytes

The BDP is 100 MB (about 95 MiB). A single TCP flow with only a 16 MiB effective in-flight limit would be unable to fill this path. Its theoretical ceiling before other constraints would be about 1.68 Gbps:

16 MiB × 8 ÷ 0.080 seconds ≈ 1.68 Gbps

This is an illustration, not a tuning prescription. Modern operating systems often autotune TCP buffers, and the correct settings depend on the operating system, transport, congestion-control algorithm, traffic mix, memory budget, and loss behavior.

BDP and buffer sizing: use it as a starting point

BDP is an excellent planning and diagnostic value, but it is not an instruction to allocate unlimited buffering. Excess buffers can create persistent queueing delay, a problem often called bufferbloat.

For a single, well-behaved TCP flow on a clean path, a window or buffer capacity around the BDP is a reasonable first benchmark. In production, account for these realities:

  • TCP needs headroom during normal operation. The usable window must accommodate protocol behavior, application reads, and RTT variation—not just a static spreadsheet result.
  • Loss changes the picture. A larger buffer cannot overcome packet loss, and traditional loss-based congestion control can reduce its sending window after loss.
  • Shared links need queue discipline. A large queue can improve burst absorption yet harm interactive traffic by inflating latency.
  • Multiple flows share capacity. The path BDP is not a separate allocation for every connection; flows contend for the same bottleneck.
  • Sender and receiver both matter. Increasing a receiver buffer alone does not guarantee that the sender’s congestion window, socket buffer, or application can sustain the rate.

When should you check bandwidth-delay product?

Calculate BDP when you see a large gap between link speed and a single-flow transfer rate, particularly in these situations:

  • Backups, replication, or bulk migrations between distant data centers or cloud regions
  • Transfers over satellite, mobile, or other high-latency links
  • Research, media, and engineering workflows moving very large files
  • 10 Gbps, 40 Gbps, or 100 Gbps private links that do not reach expected throughput
  • TCP performance tests where a window or socket-buffer limit appears in telemetry

It is less useful as a first troubleshooting step for short, low-bandwidth, or application-limited transactions. In those cases, DNS, TLS setup, server response time, request concurrency, or application design may dominate the user experience.

Practical ways to improve high-BDP transfers

Start with measurement rather than a broad buffer increase.

  1. Measure RTT, retransmissions, and delivered throughput during a representative transfer.
  2. Check TCP window scaling and inspect both the advertised receive window and the congestion window where your platform makes them visible.
  3. Verify socket-buffer limits and operating-system autotuning. Make changes narrowly, document the prior setting, and test after each change.
  4. Remove non-network bottlenecks. Disk throughput, CPU used for encryption, packet processing, and a single-threaded application can all be the true limit.
  5. Use appropriate parallelism only when it fits the workload. Multiple streams can improve aggregate utilization when one flow is constrained, but they can also create unfairness and congestion.
  6. Watch latency under load. If queues grow and RTT rises sharply, larger buffers may be making the experience worse.

The goal is not “the biggest TCP buffer.” It is stable, useful throughput with acceptable latency and fair sharing of the network.

Key takeaway

The bandwidth-delay product answers one practical networking question: how much data must be in flight to keep this path busy? Calculate it by multiplying usable bandwidth by RTT, then convert to bytes. Use that result to investigate TCP window limits, set realistic transfer expectations, and guide careful performance testing—while still watching congestion, loss, queues, and host bottlenecks.

Knowledge

What Is Piggybacking in Cybersecurity? Risks, Examples, and Prevention

What Is Piggybacking in Cybersecurity? Risks, Examples, and Prevention Piggybacking in cybersecurity is a physical...

Simplex Communication in Computer Networks: Definition, Examples, and Uses

Simplex communication is a one-way method of data transmission in which one device only sends...

What Is Asynchronous Transfer Mode (ATM)?

What Is Asynchronous Transfer Mode (ATM)? Asynchronous Transfer Mode (ATM) is a high-speed networking technology...