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;