gfe-relnote: Support the BBQ2 connection option in QUIC BBRv2 to lower the CWND gain to 2 in STARTUP. PiperOrigin-RevId: 305056280 Change-Id: I05b05813e254c5fdd7f5acf67af4be1bdc9644eb
diff --git a/quic/core/congestion_control/bbr2_misc.h b/quic/core/congestion_control/bbr2_misc.h index 63a11e1..09b1f35 100644 --- a/quic/core/congestion_control/bbr2_misc.h +++ b/quic/core/congestion_control/bbr2_misc.h
@@ -77,7 +77,8 @@ // The gain for both CWND and PacingRate at startup. // TODO(wub): Maybe change to the newly derived value of 2.773 (4 * ln(2)). - float startup_gain = 2.885; + float startup_cwnd_gain = 2.885; + 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|
diff --git a/quic/core/congestion_control/bbr2_sender.cc b/quic/core/congestion_control/bbr2_sender.cc index 4d79443..94cda02 100644 --- a/quic/core/congestion_control/bbr2_sender.cc +++ b/quic/core/congestion_control/bbr2_sender.cc
@@ -108,6 +108,13 @@ if (config.HasClientRequestedIndependentOption(kB2RP, perspective)) { params_.avoid_unnecessary_probe_rtt = false; } + if (GetQuicReloadableFlag(quic_bbr2_lower_startup_cwnd_gain) && + config.HasClientRequestedIndependentOption(kBBQ2, perspective)) { + QUIC_RELOADABLE_FLAG_COUNT(quic_bbr2_lower_startup_cwnd_gain); + // 2 is the lower, derived gain for CWND. + params_.startup_cwnd_gain = 2; + params_.drain_cwnd_gain = 2; + } } Limits<QuicByteCount> Bbr2Sender::GetCwndLimitsByMode() const {
diff --git a/quic/core/congestion_control/bbr2_startup.cc b/quic/core/congestion_control/bbr2_startup.cc index 8514d2a..1141ca0 100644 --- a/quic/core/congestion_control/bbr2_startup.cc +++ b/quic/core/congestion_control/bbr2_startup.cc
@@ -47,8 +47,8 @@ CheckExcessiveLosses(congestion_event); - model_->set_pacing_gain(Params().startup_gain); - model_->set_cwnd_gain(Params().startup_gain); + model_->set_pacing_gain(Params().startup_pacing_gain); + model_->set_cwnd_gain(Params().startup_cwnd_gain); // TODO(wub): Maybe implement STARTUP => PROBE_RTT. return full_bandwidth_reached_ ? Bbr2Mode::DRAIN : Bbr2Mode::STARTUP;