advanced23 min studyLesson 185 in Engineering

Bandwidth-delay product is the amount needed in flight

Calculate path-filling flight size, interpret window ceilings, and distinguish propagation inventory from queued excess data and short-transfer startup.

On this page

What you’ll understand

  • Compute bandwidth-delay product with consistent bits, bytes, and seconds.
  • Distinguish useful in-flight inventory from excess bottleneck queue occupancy.
  • Assess whether window, application size, or another bottleneck limits a transfer.

A long pipe can hold much more water than a short pipe of the same width. A network path similarly needs enough outstanding data to keep service busy while feedback travels back. Bandwidth-delay product quantifies that inventory in a simple model. The useful question is not whether a buffer can be made enormous, but whether the sender can sustain enough flight without accumulating unnecessary waiting or confusing a short request with a steady bulk transfer.

Multiply a rate by a feedback interval

Choose a bottleneck capacity and a relevant unloaded round-trip time, then multiply them. Capacity in bytes per second times RTT in seconds gives bytes. This round-trip bandwidth-delay product estimates the outstanding inventory needed for one backlogged flow to keep a simple bottleneck busy while acknowledgments return. A one-way propagation product answers a different inventory question. State which delay you used. For capacity quoted in bits per second, divide by eight before comparing against byte windows. Decimal megabytes and binary mebibytes are different units and should be labeled explicitly in a buffer estimate.

Using minimum or unloaded RTT helps separate propagation and fixed processing delay from congestion-induced waiting. If loaded RTT includes a large bottleneck queue, multiplying it by capacity includes that queued inventory too. Treating the inflated product as a new target for still larger windows can normalize avoidable delay. Minimum RTT is itself an estimate from measurements: route changes, host scheduling, asymmetric paths, and sampling affect it. A product derived from a nominal link rate is an engineering starting point, not proof that this flow has exclusive access to that rate across the entire path.

Bflight=CR0,Bflight,bytes=Cbits/sR08B_{\rm flight}=C R_0,\qquad B_{\rm flight,bytes}=\frac{C_{\rm bits/s}R_0}{8}
R_0 is an unloaded round-trip time in seconds and C the assumed bottleneck service rate. The result is an illustrative path-filling flight size; it is not a prescription that every router allocate that much buffer to every flow.↔ Scroll wide equations horizontally.

A small window can leave service idle

If a sender can keep only 100 kilobytes outstanding on a path needing one megabyte to cover the feedback interval, it may run out of permission before the next acknowledgments arrive. This can leave bottleneck service idle despite a large advertised physical rate. The receiver window, congestion window, application write pattern, and outstanding-request limit can each create this restriction. Enlarging only one limit may not help when another remains binding. Inspect actual unacknowledged bytes and sender limiting state rather than assuming a large socket-buffer setting means the application fills the path.

Short transfers can finish before slow start or another controller reaches a path-filling flight. Connection setup, security establishment, request dependencies, and server work can dominate their completion time. A larger bandwidth-delay product does not mean a 2-kilobyte response needs a megabyte of useful payload in flight. Reusing connections or avoiding unnecessary round trips may help such a response more than changing steady-state buffers. Keep bulk goodput and request latency as different experimental targets, and use object sizes and dependency patterns representative of the application instead of evaluating every design with one giant file.

Xsimple≲min⁡(C,WR0),W<CR0⇒WR0<CX_{\rm simple}\lesssim\min\left(C,\frac{W}{R_0}\right),\qquad W<C R_0\Rightarrow\frac{W}{R_0}<C
W is usable outstanding bytes, C is bytes per second, and R_0 is seconds. The simple window-limited bound assumes a backlogged source, stable delay, no significant loss, and no additional bottleneck; startup and protocol overhead are excluded.↔ Scroll wide equations horizontally.

Inventory beyond the path can become waiting

Once service is continuously busy, more queued bytes do not make the link serialize bytes faster. Under a simple single-bottleneck picture, excess flight above the unloaded path inventory can contribute to a bottleneck queue, increasing RTT by roughly queue bytes divided by service bytes per second. Real multi-flow paths split flight across queues and receivers, so this is a diagnostic approximation rather than a universal decomposition. It still explains why high utilization and low latency require a controller and queue policy that avoid a permanently excessive standing backlog.

For the queue lab, Reset, explicitly set both λ=2 and μ=2, predict a constant four-unit backlog from t=0, then Play or Step. Compare separate runs: Reset and re-set BOTH rates to (1,2) before predicting zero at t=4 seconds; Reset and re-set (3,2) before predicting growth. A control edit retains t and recomputes from four, so it does not extend the previous run's history. There is no propagation pipe or bandwidth-delay controller. Relate backlog to extra waiting only with consistent units; the separate M/M/1 residence estimate is neither propagation RTT nor a BDP measurement.

Fill a 200-megabit path without mixing units

Assume a dedicated 200-million-bit-per-second bottleneck, unloaded RTT 0.04 seconds, and a backlogged loss-free sender. Its usable outstanding limit is initially 250,000 bytes.

  1. Convert capacity: 200,000,000 bits per second divided by eight is 25,000,000 bytes per second. Multiply by 0.04 seconds to obtain a 1,000,000-byte bandwidth-delay product.

  2. The 250,000-byte flight limit gives an approximate ceiling of 250,000/0.04=6,250,000 bytes per second, or 50 million bits per second.

  3. Increasing usable flight toward 1,000,000 bytes can remove this particular window ceiling if all other assumptions hold. Larger windows alone do not increase the 200-megabit bottleneck capacity and may instead add a queue.

The result

The path-filling estimate is one decimal megabyte; the original window ceiling is only one quarter of nominal bottleneck capacity.

Explore the model

Interactive lab

Interactive lab · queue

Balanced rates can preserve a standing queue

For EACH comparison Reset, explicitly re-set BOTH λ and μ, predict, then Play or Step. Runs (2,2), (1,2), and (3,2) respectively preserve, drain, and grow backlog four from t=0; the drain reaches zero at t=4 seconds. Rate edits retain t and recompute from four, not the current backlog. This is neither a propagation-path model nor a bandwidth-delay-product calculator.

Balanced rates can preserve a standing queueFluid backlog starts at 4 and follows max(0, 4 + (λ − μ)t). The separate M/M/1 residence-time formula assumes Poisson arrivals, exponential service and λ < μ. Current readings: Fluid backlog: 4; Net rate · λ − μ: −1 /s; M/M/1 mean residence: 1 s. All parameters are adjustable with the labeled controls below.02.557.51001.534.56Elapsed time · sFluid backlogλ < μ
Fluid backlogCurrent time
Fluid backlog
4
Net rate · λ − μ
−1 /s
M/M/1 mean residence
1 s
t = 0 s

Fluid backlog starts at 4 and follows max(0, 4 + (λ − μ)t). The separate M/M/1 residence-time formula assumes Poisson arrivals, exponential service and λ < μ. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.

Look forMatching offered rate to capacity stops additional growth, but an existing queue must drain before its latency disappears.

Check your understanding

Why can using a heavily queued RTT to choose a larger target flight size be misleading?

Try it yourself

A path is modeled at 80 million bits per second with unloaded RTT 0.1 seconds. Find the path-filling flight estimate and the approximate ceiling imposed by a 200,000-byte window.

Take a moment to make a prediction or work it out on paper. Open a hint when you need one.

Give me a hint

Convert capacity into bytes per second before multiplying. Compare the window with the computed inventory.

Compare with the solution

Capacity is 10,000,000 bytes per second, so the product is 1,000,000 bytes. A 200,000-byte usable window divided by 0.1 seconds yields 2,000,000 bytes per second, or 16 million bits per second. These are loss-free steady estimates; shared traffic and startup can lower actual goodput further.

Take it with you

  • Rate times unloaded feedback time estimates required outstanding inventory.
  • Window ceilings, path capacity, and short-transfer completion have different limits.
  • Queued excess raises delay without increasing a saturated bottleneck's service rate.

Read further

Original sources and deeper explanations to follow at your own pace.

Optional progress, saved in this browser when available. Revisit any lesson at any time.

Lesson not marked complete.