Combine startup_full_bw_threshold and probe_bw_probe_inflight_gain into full_bw_threshold in QUIC BBRv2. PiperOrigin-RevId: 490241924
diff --git a/quiche/quic/core/congestion_control/bbr2_misc.cc b/quiche/quic/core/congestion_control/bbr2_misc.cc index f85c602..d234f5b 100644 --- a/quiche/quic/core/congestion_control/bbr2_misc.cc +++ b/quiche/quic/core/congestion_control/bbr2_misc.cc
@@ -283,15 +283,15 @@ // fast, conservation style response to loss, use the last sample. last_bandwidth = congestion_event.sample_max_bandwidth; } - if (pacing_gain_ > Params().startup_full_bw_threshold) { + if (pacing_gain_ > Params().full_bw_threshold) { // In STARTUP, pacing_gain_ is applied to bandwidth_lo_ in // UpdatePacingRate, so this backs that multiplication out to allow the // pacing rate to decrease, but not below - // last_bandwidth * startup_full_bw_threshold. + // last_bandwidth * full_bw_threshold. // TODO(ianswett): Consider altering pacing_gain_ when in STARTUP instead. - bandwidth_lo_ = std::max( - bandwidth_lo_, - last_bandwidth * (Params().startup_full_bw_threshold / pacing_gain_)); + bandwidth_lo_ = + std::max(bandwidth_lo_, + last_bandwidth * (Params().full_bw_threshold / pacing_gain_)); } else { // Ensure bandwidth_lo isn't lower than last_bandwidth. bandwidth_lo_ = std::max(bandwidth_lo_, last_bandwidth); @@ -410,7 +410,7 @@ QUICHE_DCHECK(congestion_event.end_of_round_trip); QuicBandwidth threshold = - full_bandwidth_baseline_ * Params().startup_full_bw_threshold; + full_bandwidth_baseline_ * Params().full_bw_threshold; if (MaxBandwidth() >= threshold) { QUIC_DVLOG(3) << " CheckBandwidthGrowth at end of round. max_bandwidth:"
diff --git a/quiche/quic/core/congestion_control/bbr2_misc.h b/quiche/quic/core/congestion_control/bbr2_misc.h index 579a7b5..e817e74 100644 --- a/quiche/quic/core/congestion_control/bbr2_misc.h +++ b/quiche/quic/core/congestion_control/bbr2_misc.h
@@ -80,10 +80,9 @@ // TODO(wub): Maybe change to the newly derived value of 2.773 (4 * ln(2)). float startup_pacing_gain = 2.885; - // Full bandwidth is declared if the total bandwidth growth is less than - // |startup_full_bw_threshold| times in the last |startup_full_bw_rounds| - // round trips. - float startup_full_bw_threshold = 1.25; + // STARTUP or PROBE_UP are exited if the total bandwidth growth is less than + // |full_bw_threshold| in the last |startup_full_bw_rounds| round trips. + float full_bw_threshold = 1.25; QuicRoundTripCount startup_full_bw_rounds = 3; @@ -136,9 +135,6 @@ int64_t probe_bw_full_loss_count = GetQuicFlag(quic_bbr2_default_probe_bw_full_loss_count); - // Multiplier to get target inflight (as multiple of BDP) for PROBE_UP phase. - float probe_bw_probe_inflight_gain = 1.25; - // When attempting to grow inflight_hi in PROBE_UP, check whether we are cwnd // limited before the current aggregation epoch, instead of before the current // ack event.
diff --git a/quiche/quic/core/congestion_control/bbr2_probe_bw.cc b/quiche/quic/core/congestion_control/bbr2_probe_bw.cc index 9b9ab3c..1e35b97 100644 --- a/quiche/quic/core/congestion_control/bbr2_probe_bw.cc +++ b/quiche/quic/core/congestion_control/bbr2_probe_bw.cc
@@ -499,8 +499,8 @@ } else if (cycle_.rounds_in_phase > 0) { if (Params().probe_up_dont_exit_if_no_queue_) { is_queuing = congestion_event.end_of_round_trip && - model_->CheckPersistentQueue( - congestion_event, Params().probe_bw_probe_inflight_gain); + model_->CheckPersistentQueue(congestion_event, + Params().full_bw_threshold); } else { QuicByteCount queuing_threshold_extra_bytes = model_->QueueingThresholdExtraBytes(); @@ -508,7 +508,7 @@ queuing_threshold_extra_bytes += model_->MaxAckHeight(); } QuicByteCount queuing_threshold = - (Params().probe_bw_probe_inflight_gain * model_->BDP()) + + (Params().full_bw_threshold * model_->BDP()) + queuing_threshold_extra_bytes; is_queuing = congestion_event.bytes_in_flight >= queuing_threshold;
diff --git a/quiche/quic/core/congestion_control/bbr2_startup.cc b/quiche/quic/core/congestion_control/bbr2_startup.cc index addf64b..8f9bd0e 100644 --- a/quiche/quic/core/congestion_control/bbr2_startup.cc +++ b/quiche/quic/core/congestion_control/bbr2_startup.cc
@@ -76,11 +76,11 @@ static_cast<double>( max_bw_at_round_beginning_.ToBitsPerSecond())); // Even when bandwidth isn't increasing, use a gain large enough to - // cause a startup_full_bw_threshold increase. + // cause a full_bw_threshold increase. const float new_gain = - ((bandwidth_ratio - 1) * (Params().startup_pacing_gain - - Params().startup_full_bw_threshold)) + - Params().startup_full_bw_threshold; + ((bandwidth_ratio - 1) * + (Params().startup_pacing_gain - Params().full_bw_threshold)) + + Params().full_bw_threshold; // Allow the pacing gain to decrease. model_->set_pacing_gain( std::min(Params().startup_pacing_gain, new_gain));