The
Bandwidth*Delay Product, or
BDP for short determines the amount of data that can be in transit in the network. It is the product of the availalbe
bandwidth and the
latency, or
RTT.
BDP is a very important concept in a Window based
protocol such as TCP. It plays an especially important role in high-speed / high-
latency networks, such as most
broadband internet connections. It is one of the most important factors of tweaking TCP in order to tune systems to the type of network used.
The
BDP simply states that:
BDP (bits) = total_available_bandwidth (bits/sec) x round_trip_time (sec)
or, since
RWIN/BDP is usually in bytes, and
latency is measured in milliseconds:
BDP (bytes) = total_available_bandwidth (KBytes/sec) x round_trip_time (ms)
What does it all mean ? The TCP Window is a buffer that determines how much data can be transferred before the server stops and waits for acknowledgements of received packets.
Throughput is in essence bound by the
BDP. If the
BDP (or
RWIN) is lower than the product of the
latency and available
bandwidth, we can't fill the line since the client can't send acknowledgements back fast enough. A transmission can't exceed the (
RWIN /
latency) value, so The TCP Window (
RWIN) needs to be large enough to fit the maximum_available_bandwidth x maximum_anticipaded_delay.
See also:
SG BDP Calculator
What latency should I use to calculate RWIN ?