inflight low question

98 views
Skip to first unread message

Mihai Mazilu

unread,
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

unread,
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/bbr-dev/165ae930-af3a-42f4-a1b4-ca2997d4c87dn%40googlegroups.com.

Mihai Mazilu

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

Muhammad Ahsan

unread,
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

Reply all
Reply to author
Forward
0 new messages