Index: net/quic/quic_sent_packet_manager.cc |
diff --git a/net/quic/quic_sent_packet_manager.cc b/net/quic/quic_sent_packet_manager.cc |
index 15f0ad96ed039cbf612b08d539acc7c7fa414b9a..5ca809d532a92d335abcaf5de7be827a7365bfd5 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -20,6 +20,11 @@ using std::max; |
using std::min; |
namespace net { |
+ |
+// The length of the recent min rtt window in seconds. Windowing is disabled for |
+// values less than or equal to 0. |
+int32 FLAGS_quic_recent_min_rtt_window_s = 60; |
+ |
namespace { |
static const int kDefaultRetransmissionTimeMs = 500; |
// TCP RFC calls for 1 second RTO however Linux differs from this default and |
@@ -44,6 +49,8 @@ static const size_t kNumMinRttSamplesAfterQuiescence = 2; |
// Number of unpaced packets to send after quiescence. |
static const size_t kInitialUnpacedBurst = 10; |
+// Use a 1 minute window for Recent Min RTT with BBR. |
+ |
bool HasCryptoHandshake(const TransmissionInfo& transmission_info) { |
if (transmission_info.retransmittable_frames == NULL) { |
return false; |
@@ -91,6 +98,10 @@ void QuicSentPacketManager::SetFromConfig(const QuicConfig& config) { |
// TODO(ianswett): BBR is currently a server only feature. |
if (config.HasReceivedConnectionOptions() && |
ContainsQuicTag(config.ReceivedConnectionOptions(), kTBBR)) { |
+ if (FLAGS_quic_recent_min_rtt_window_s > 0) { |
+ rtt_stats_.set_recent_min_rtt_window( |
+ QuicTime::Delta::FromSeconds(FLAGS_quic_recent_min_rtt_window_s)); |
+ } |
send_algorithm_.reset( |
SendAlgorithmInterface::Create(clock_, &rtt_stats_, kTCPBBR, stats_)); |
} |