Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(767)

Unified Diff: net/quic/core/congestion_control/bbr_sender.cc

Issue 2542273002: Ensure that BBR does not drop to exceedingly low pacing rates during the STARTUP phase. Protected … (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/core/congestion_control/bbr_sender.cc
diff --git a/net/quic/core/congestion_control/bbr_sender.cc b/net/quic/core/congestion_control/bbr_sender.cc
index 04908c22f164ef21e946da6c2d2f21f439dddb24..5bdc63a1233bb84add24828782d5a17dc8be8591 100644
--- a/net/quic/core/congestion_control/bbr_sender.cc
+++ b/net/quic/core/congestion_control/bbr_sender.cc
@@ -99,7 +99,9 @@ BbrSender::BbrSender(const QuicClock* clock,
last_sample_is_app_limited_(false),
recovery_state_(NOT_IN_RECOVERY),
end_recovery_at_(0),
- recovery_window_(max_congestion_window_) {
+ recovery_window_(max_congestion_window_),
+ enforce_startup_pacing_rate_increase_(
+ FLAGS_quic_bbr_faster_startup) {
EnterStartupMode();
}
@@ -454,7 +456,24 @@ void BbrSender::CalculatePacingRate() {
return;
}
- pacing_rate_ = pacing_gain_ * BandwidthEstimate();
+ QuicBandwidth target_rate = pacing_gain_ * BandwidthEstimate();
+
+ // Ensure that the pacing rate does not drop too low during the startup.
+ if (!is_at_full_bandwidth_ && enforce_startup_pacing_rate_increase_) {
+ // Pace at the rate of initial_window / RTT as soon as RTT measurements are
+ // available.
+ if (pacing_rate_.IsZero() && !rtt_stats_->min_rtt().IsZero()) {
+ pacing_rate_ = QuicBandwidth::FromBytesAndTimeDelta(
+ initial_congestion_window_, rtt_stats_->min_rtt());
+ return;
+ }
+
+ // Do not decrease the pacing rate during the startup.
+ pacing_rate_ = std::max(pacing_rate_, target_rate);
+ return;
+ }
+
+ pacing_rate_ = target_rate;
}
void BbrSender::CalculateCongestionWindow(QuicByteCount bytes_acked) {

Powered by Google App Engine
This is Rietveld 408576698