Internal QUICHE change PiperOrigin-RevId: 283437153 Change-Id: I65c73671892ed5aff64bada9e6c8965192d926fb
diff --git a/quic/core/congestion_control/bbr2_probe_bw.cc b/quic/core/congestion_control/bbr2_probe_bw.cc index f624f5c..4487cbf 100644 --- a/quic/core/congestion_control/bbr2_probe_bw.cc +++ b/quic/core/congestion_control/bbr2_probe_bw.cc
@@ -200,6 +200,15 @@ // long, as seen in some multi-sender simulator tests. bool Bbr2ProbeBwMode::HasStayedLongEnoughInProbeDown( const Bbr2CongestionEvent& congestion_event) const { + if (exit_probe_down_after_one_rtt_) { + QUIC_RELOADABLE_FLAG_COUNT(quic_bbr2_exit_probe_bw_down_after_one_rtt); + // Stay in PROBE_DOWN for at most the time of a min rtt, as it is done in + // BBRv1. The intention here is to figure out whether the performance + // regression in BBRv2 is because it stays in PROBE_DOWN for too long. + // TODO(wub): Consider exit after a full round instead, which typically + // indicates most(if not all) packets sent during PROBE_UP have been acked. + return HasPhaseLasted(model_->MinRtt(), congestion_event); + } // The amount of time to stay in PROBE_DOWN, as a fraction of probe wait time. const double kProbeWaitFraction = 0.2; return HasCycleLasted(cycle_.probe_wait_time * kProbeWaitFraction,
diff --git a/quic/core/congestion_control/bbr2_probe_bw.h b/quic/core/congestion_control/bbr2_probe_bw.h index d64bd65..45b5a73 100644 --- a/quic/core/congestion_control/bbr2_probe_bw.h +++ b/quic/core/congestion_control/bbr2_probe_bw.h
@@ -11,6 +11,7 @@ #include "net/third_party/quiche/src/quic/core/quic_time.h" #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" namespace quic { @@ -121,6 +122,10 @@ bool last_cycle_probed_too_high_; bool last_cycle_stopped_risky_probe_; + + // Latched value of --quic_bbr2_exit_probe_bw_down_after_one_rtt. + const bool exit_probe_down_after_one_rtt_ = + GetQuicReloadableFlag(quic_bbr2_exit_probe_bw_down_after_one_rtt); }; QUIC_EXPORT_PRIVATE std::ostream& operator<<(