That depends on who "we" is. :-) Is "we" the client's transport connection endpoint or the server's transport connection endpoint?
It's important to keep in mind that most transport connections (including widely-deployed protocols such as TCP or QUIC) can send data in both directions between two endpoints. That means that each endpoint needs to run a congestion control algorithm to decide how fast to send data over the network.
The transport connection endpoint and its congestion control algorithm generally do not and should not care whether the endpoint is being used by a "client" or a "server". That's because the job of the transport connection endpoint is the same in either case (whether "client" or "server"): to send data to the other end of the connection, at an appropriate rate.
A transport connection endpoint can estimate its BDP (bandwidth-delay product) by computing the delivery rate for the data it is sending, and multiplying this by the estimated two-way propagation delay (where the two-way propagation delay is often called the "min_rtt", "baseRTT", or RTprop in the
original BBR article).
Putting this all together, the client and server can each independently estimate their BDP:
+ the client's transport connection endpoint congestion control algorithm can estimate the client's BDP by multiplying (a) the delivery rate for the data the client is sending, by (b) the client's estimated two-way propagation delay
+ the server's transport connection endpoint congestion control algorithm can estimate the server's BDP by multiplying (a) the delivery rate for the data the server is sending, by (b) the server's estimated two-way propagation delay
Note that in general we expect that the client and server may have very different estimated BDPs. This is because the endpoints can have both different delivery rates and different two-way propagation delays:
(1) Delivery rate: the delivery rate measured by each side can be very different, because the route can be asymmetric, the links can have different bandwidths in each direction, and the competing traffic can be different in each direction.
(2) Two-way propagation delay: Intuitively, we would expect well-functioning client and server congestion control algorithms to calculate similar estimated two-way propagation delay values, but the estimates will tend to be at least somewhat different because:
(a) they are taking RTT samples at different times, with different queuing delay, link-layer delays, etc
(b) they are computing RTTs for packets of different sizes traveling over paths with potentially different available bandwidths (so serialization delays of the data packets can differ greatly)
(c) the delayed ACK policy of each endpoint may differ
(d) they may use different algorithms to combine those RTT samples to estimate the two-way propagation delay
best regards,
neal
--
You received this message because you are subscribed to the Google Groups "BBR Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bbr-dev/a821c9ba-7746-4496-8fd3-2470d2a9da88n%40googlegroups.com.