Deprecate --gfe2_reloadable_flag_quic_bbr_default_exit_startup_on_loss.
PiperOrigin-RevId: 317682056
Change-Id: I12ff1fad1d94be3ce7cfe6055d473bfc1057de17
diff --git a/quic/core/congestion_control/bbr_sender.cc b/quic/core/congestion_control/bbr_sender.cc
index 34c81cd..6c6f3ef 100644
--- a/quic/core/congestion_control/bbr_sender.cc
+++ b/quic/core/congestion_control/bbr_sender.cc
@@ -32,10 +32,6 @@
const float kDerivedHighGain = 2.773f;
// The newly derived CWND gain for STARTUP, 2.
const float kDerivedHighCWNDGain = 2.0f;
-// The gain used in STARTUP after loss has been detected.
-// 1.5 is enough to allow for 25% exogenous loss and still observe a 25% growth
-// in measured bandwidth.
-const float kStartupAfterLossGain = 1.5f;
// The cycle of gains used during the PROBE_BW stage.
const float kPacingGain[] = {1.25, 0.75, 1, 1, 1, 1, 1, 1};
@@ -106,8 +102,6 @@
congestion_window_gain_constant_(
static_cast<float>(GetQuicFlag(FLAGS_quic_bbr_cwnd_gain))),
num_startup_rtts_(kRoundTripsWithoutGrowthBeforeExitingStartup),
- exit_startup_on_loss_(
- GetQuicReloadableFlag(quic_bbr_default_exit_startup_on_loss)),
cycle_current_offset_(0),
last_cycle_start_(QuicTime::Zero()),
is_at_full_bandwidth_(false),
@@ -138,10 +132,7 @@
stats_->slowstart_duration = QuicTimeAccumulator();
}
EnterStartupMode(now);
- if (exit_startup_on_loss_) {
- QUIC_RELOADABLE_FLAG_COUNT(quic_bbr_default_exit_startup_on_loss);
- set_high_cwnd_gain(kDerivedHighCWNDGain);
- }
+ set_high_cwnd_gain(kDerivedHighCWNDGain);
}
BbrSender::~BbrSender() {}
@@ -203,14 +194,8 @@
return ProbeRttCongestionWindow();
}
- if (exit_startup_on_loss_) {
- if (InRecovery()) {
- return std::min(congestion_window_, recovery_window_);
- }
- } else {
- if (InRecovery() && !(rate_based_startup_ && mode_ == STARTUP)) {
- return std::min(congestion_window_, recovery_window_);
- }
+ if (InRecovery()) {
+ return std::min(congestion_window_, recovery_window_);
}
return congestion_window_;
@@ -265,17 +250,9 @@
if (config.HasClientRequestedIndependentOption(k2RTT, perspective)) {
num_startup_rtts_ = 2;
}
- if (!exit_startup_on_loss_ &&
- config.HasClientRequestedIndependentOption(kBBRS, perspective)) {
- slower_startup_ = true;
- }
if (config.HasClientRequestedIndependentOption(kBBR3, perspective)) {
drain_to_target_ = true;
}
- if (!exit_startup_on_loss_ &&
- config.HasClientRequestedIndependentOption(kBBS1, perspective)) {
- rate_based_startup_ = true;
- }
if (GetQuicReloadableFlag(quic_bbr_mitigate_overly_large_bandwidth_sample)) {
if (config.HasClientRequestedIndependentOption(kBWM3, perspective)) {
bytes_lost_multiplier_with_network_parameters_adjusted_ = 3;
@@ -321,14 +298,7 @@
}
void BbrSender::ApplyConnectionOptions(
- const QuicTagVector& connection_options) {
- if (ContainsQuicTag(connection_options, kLRTT)) {
- exit_startup_on_loss_ = true;
- }
- if (ContainsQuicTag(connection_options, kBBQ2)) {
- set_high_cwnd_gain(kDerivedHighCWNDGain);
- }
-}
+ const QuicTagVector& /*connection_options*/) {}
void BbrSender::AdjustNetworkParameters(const NetworkParams& params) {
const QuicBandwidth& bandwidth = params.bandwidth;
@@ -672,10 +642,6 @@
bool BbrSender::ShouldExitStartupDueToLoss(
const SendTimeState& last_packet_send_state) const {
- if (!exit_startup_on_loss_) {
- return false;
- }
-
if (num_loss_events_in_round_ <
GetQuicFlag(FLAGS_quic_bbr2_default_startup_full_loss_count) ||
!last_packet_send_state.is_valid) {
@@ -746,7 +712,7 @@
bool has_losses,
bool is_round_start) {
// Disable recovery in startup, if loss-based exit is enabled.
- if (exit_startup_on_loss_ && !is_at_full_bandwidth_) {
+ if (!is_at_full_bandwidth_) {
return;
}
@@ -840,16 +806,6 @@
}
}
- if (!exit_startup_on_loss_) {
- // Slow the pacing rate in STARTUP once loss has ever been detected.
- const bool has_ever_detected_loss = end_recovery_at_.IsInitialized();
- if (slower_startup_ && has_ever_detected_loss &&
- has_non_app_limited_sample_) {
- pacing_rate_ = kStartupAfterLossGain * BandwidthEstimate();
- return;
- }
- }
-
// Do not decrease the pacing rate during startup.
pacing_rate_ = std::max(pacing_rate_, target_rate);
}
@@ -895,10 +851,6 @@
void BbrSender::CalculateRecoveryWindow(QuicByteCount bytes_acked,
QuicByteCount bytes_lost) {
- if (!exit_startup_on_loss_ && rate_based_startup_ && mode_ == STARTUP) {
- return;
- }
-
if (recovery_state_ == NOT_IN_RECOVERY) {
return;
}
diff --git a/quic/core/congestion_control/bbr_sender.h b/quic/core/congestion_control/bbr_sender.h
index c7285d7..446f0dd 100644
--- a/quic/core/congestion_control/bbr_sender.h
+++ b/quic/core/congestion_control/bbr_sender.h
@@ -326,13 +326,6 @@
// The number of RTTs to stay in STARTUP mode. Defaults to 3.
QuicRoundTripCount num_startup_rtts_;
- // Latched value of --quic_bbr_default_exit_startup_on_loss.
- // If true, exit startup if all of the following conditions are met:
- // - 1RTT has passed with no bandwidth increase,
- // - Some number of congestion events happened with loss, in the last round.
- // - Some amount of inflight bytes (at the start of the last round) are lost.
- bool exit_startup_on_loss_;
-
// Number of round-trips in PROBE_BW mode, used for determining the current
// pacing gain cycle.
int cycle_current_offset_;
diff --git a/quic/core/congestion_control/bbr_sender_test.cc b/quic/core/congestion_control/bbr_sender_test.cc
index 92aef73..8855918 100644
--- a/quic/core/congestion_control/bbr_sender_test.cc
+++ b/quic/core/congestion_control/bbr_sender_test.cc
@@ -617,17 +617,10 @@
EXPECT_APPROX_EQ(sender_->BandwidthEstimate() * (1 / 2.885f),
sender_->PacingRate(0), 0.01f);
- if (!GetQuicReloadableFlag(quic_bbr_default_exit_startup_on_loss)) {
- // BBR uses CWND gain of 2.88 during STARTUP, hence it will fill the buffer
- // with approximately 1.88 BDPs. Here, we use 1.5 to give some margin for
- // error.
- EXPECT_GE(queue->bytes_queued(), 1.5 * kTestBdp);
- } else {
- // BBR uses CWND gain of 2 during STARTUP, hence it will fill the buffer
- // with approximately 1 BDP. Here, we use 0.8 to give some margin for
- // error.
- EXPECT_GE(queue->bytes_queued(), 0.8 * kTestBdp);
- }
+ // BBR uses CWND gain of 2 during STARTUP, hence it will fill the buffer
+ // with approximately 1 BDP. Here, we use 0.8 to give some margin for
+ // error.
+ EXPECT_GE(queue->bytes_queued(), 0.8 * kTestBdp);
// Observe increased RTT due to bufferbloat.
const QuicTime::Delta queueing_delay =
@@ -885,9 +878,6 @@
TEST_F(BbrSenderTest, SimpleTransferExitStartupOnLoss) {
CreateDefaultSetup();
- if (!GetQuicReloadableFlag(quic_bbr_default_exit_startup_on_loss)) {
- SetConnectionOption(kLRTT);
- }
EXPECT_EQ(3u, sender_->num_startup_rtts());
// Run until the full bandwidth is reached and check how many rounds it was.
@@ -915,9 +905,6 @@
TEST_F(BbrSenderTest, SimpleTransferExitStartupOnLossSmallBuffer) {
CreateSmallBufferSetup();
- if (!GetQuicReloadableFlag(quic_bbr_default_exit_startup_on_loss)) {
- SetConnectionOption(kLRTT);
- }
EXPECT_EQ(3u, sender_->num_startup_rtts());
// Run until the full bandwidth is reached and check how many rounds it was.
@@ -971,9 +958,6 @@
TEST_F(BbrSenderTest, DerivedCWNDGainStartup) {
CreateSmallBufferSetup();
- if (!GetQuicReloadableFlag(quic_bbr_default_exit_startup_on_loss)) {
- SetConnectionOption(kBBQ2);
- }
EXPECT_EQ(3u, sender_->num_startup_rtts());
// Verify that Sender is in slow start.
EXPECT_TRUE(sender_->InSlowStart());