inflight low question

101 views

Mihai Mazilu

Feb 26, 2024, 9:32:37 PMFeb 26
to BBR Development
Hello, i have a question in regards to inflight low. The way I understand that this lower bound works is that it is arrived at through "inflight_latest" which trends down, in turn lowering inflight low over time until it is reset when refilling provided constant loss occurs(if i am understanding correctly). However, in adapt_lower_bounds, it is arrived at though this formula "inflight_lo = max( inflight_latest, BBRBeta * inflight_lo )". My question is what is the rationale behind BBRBeta in this instance. Why is the maximum between inflight latest andBBRBeta * inflight_l  necessary here ?

Thanks.

Neal Cardwell

Feb 27, 2024, 11:58:27 AMFeb 27
to Mihai Mazilu, BBR Development
> Why is the maximum between inflight latest andBBRBeta * inflight_l  necessary here ?

The max() is there for two main reasons:

(a) to avoid being overly sensitive to random loss in application-limited scenarios, and
(b) to avoid being more sensitive to loss than CUBIC

Consider a simple case:

+ A TCP flow has a BDP of 1 million packets, and cwnd of 1 million packets. All is well.
+ The application sends 2 packets, and 1 of the 2 is lost

In this case:

+ CUBIC would set its cwnd to:
0.7*1M = 700,000 packets
... achieving reasonable performance

+ BBRv2 or BBRv3 *without* the max() would set its cwnd to:
inflight_latest = 1 packet
...crushing its own performance

+ BBRv2 or BBRv3 *with* the max() would set its cwnd to:
max(inflight_latest, BBRBeta * inflight_lo)
= max(1, 0.7 * 1M) packets = 700,000 packets
... matching CUBIC and achieving reasonable performance

best regards,
neal

On Mon, Feb 26, 2024 at 9:32 PM Mihai Mazilu <mihaif...@gmail.com> wrote:
Hello, i have a question in regards to inflight low. The way I understand that this lower bound works is that it is arrived at through "inflight_latest" which trends down, in turn lowering inflight low over time until it is reset when refilling provided constant loss occurs(if i am understanding correctly). However, in adapt_lower_bounds, it is arrived at though this formula "inflight_lo = max( inflight_latest, BBRBeta * inflight_lo )". My question is what is the rationale behind BBRBeta in this instance. Why is the maximum between inflight latest andBBRBeta * inflight_l  necessary here ?

Thanks.

--
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.

Mihai Mazilu

Feb 28, 2024, 9:32:32 PMFeb 28
to BBR Development
thank you for the detailed response.

Feb 28, 2024, 10:23:39 PMFeb 28
to Mihai Mazilu, BBR Development

Neal and Dave are always helpful.

I have learnt a lot from Neal, specially.

Rgds,

Ahsan