gfe-relnote: Remove obsolete IETF QUIC recovery functionality. Protected by gfe2_reloadable_flag_quic_sent_packet_manager_cleanup.
PiperOrigin-RevId: 261917827
Change-Id: I2107915e7322138225b33d1593595e6ae2301ccd
diff --git a/quic/core/congestion_control/rtt_stats.h b/quic/core/congestion_control/rtt_stats.h
index 7b58276..997faa4 100644
--- a/quic/core/congestion_control/rtt_stats.h
+++ b/quic/core/congestion_control/rtt_stats.h
@@ -73,7 +73,10 @@
QuicTime::Delta mean_deviation() const { return mean_deviation_; }
- QuicTime::Delta max_ack_delay() const { return max_ack_delay_; }
+ QuicTime::Delta max_ack_delay() const {
+ DCHECK(!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup));
+ return max_ack_delay_;
+ }
QuicTime last_update_time() const { return last_update_time_; }
@@ -101,6 +104,7 @@
QuicTime::Delta initial_rtt_;
// The maximum ack delay observed over the connection after excluding ack
// delays that were too large to be included in an RTT measurement.
+ // TODO(ianswett): Remove when deprecating quic_sent_packet_manager_cleanup.
QuicTime::Delta max_ack_delay_;
QuicTime last_update_time_;
// Whether to ignore the peer's max ack delay.
diff --git a/quic/core/congestion_control/rtt_stats_test.cc b/quic/core/congestion_control/rtt_stats_test.cc
index 83cb155..4d259d3 100644
--- a/quic/core/congestion_control/rtt_stats_test.cc
+++ b/quic/core/congestion_control/rtt_stats_test.cc
@@ -35,20 +35,28 @@
QuicTime::Zero());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ }
// Verify that a plausible ack delay increases the max ack delay.
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(400),
QuicTime::Delta::FromMilliseconds(100),
QuicTime::Zero());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
+ rtt_stats_.max_ack_delay());
+ }
// Verify that Smoothed RTT includes max ack delay if it's reasonable.
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(350),
QuicTime::Delta::FromMilliseconds(50), QuicTime::Zero());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
+ rtt_stats_.max_ack_delay());
+ }
// Verify that large erroneous ack_delay does not change Smoothed RTT.
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(200),
QuicTime::Delta::FromMilliseconds(300),
@@ -56,7 +64,10 @@
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMicroseconds(287500),
rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
+ rtt_stats_.max_ack_delay());
+ }
}
TEST_F(RttStatsTest, SmoothedRttIgnoreAckDelay) {
@@ -67,14 +78,18 @@
QuicTime::Zero());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ }
// Verify that a plausible ack delay increases the max ack delay.
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(300),
QuicTime::Delta::FromMilliseconds(100),
QuicTime::Zero());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(300), rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ }
// Verify that Smoothed RTT includes max ack delay if it's reasonable.
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(300),
QuicTime::Delta::FromMilliseconds(50), QuicTime::Zero());
@@ -87,7 +102,9 @@
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMicroseconds(287500),
rtt_stats_.smoothed_rtt());
- EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ }
}
// Ensure that the potential rounding artifacts in EWMA calculation do not cause
@@ -208,7 +225,9 @@
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.smoothed_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.min_rtt());
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(0), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(0), rtt_stats_.max_ack_delay());
+ }
rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(300),
QuicTime::Delta::FromMilliseconds(100),
@@ -216,14 +235,19 @@
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.smoothed_rtt());
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.min_rtt());
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
+ rtt_stats_.max_ack_delay());
+ }
// Reset rtt stats on connection migrations.
rtt_stats_.OnConnectionMigration();
EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.latest_rtt());
EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.smoothed_rtt());
EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.min_rtt());
- EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ if (!GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.max_ack_delay());
+ }
}
} // namespace test
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index fb0e8de..0542edb 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -159,17 +159,29 @@
if (config.HasClientSentConnectionOption(kMAD1, perspective)) {
rtt_stats_.set_initial_max_ack_delay(peer_max_ack_delay_);
}
- if (config.HasClientSentConnectionOption(kMAD2, perspective)) {
- min_tlp_timeout_ = QuicTime::Delta::Zero();
- }
- if (config.HasClientSentConnectionOption(kMAD3, perspective)) {
- min_rto_timeout_ = QuicTime::Delta::Zero();
- }
- if (config.HasClientSentConnectionOption(kMAD4, perspective)) {
- ietf_style_tlp_ = true;
- }
- if (config.HasClientSentConnectionOption(kMAD5, perspective)) {
- ietf_style_2x_tlp_ = true;
+ if (GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_sent_packet_manager_cleanup);
+ if (config.HasClientSentConnectionOption(kMAD2, perspective)) {
+ // Set the minimum to the alarm granularity.
+ min_tlp_timeout_ = QuicTime::Delta::FromMilliseconds(1);
+ }
+ if (config.HasClientSentConnectionOption(kMAD3, perspective)) {
+ // Set the minimum to the alarm granularity.
+ min_rto_timeout_ = QuicTime::Delta::FromMilliseconds(1);
+ }
+ } else {
+ if (config.HasClientSentConnectionOption(kMAD2, perspective)) {
+ min_tlp_timeout_ = QuicTime::Delta::Zero();
+ }
+ if (config.HasClientSentConnectionOption(kMAD3, perspective)) {
+ min_rto_timeout_ = QuicTime::Delta::Zero();
+ }
+ if (config.HasClientSentConnectionOption(kMAD4, perspective)) {
+ ietf_style_tlp_ = true;
+ }
+ if (config.HasClientSentConnectionOption(kMAD5, perspective)) {
+ ietf_style_2x_tlp_ = true;
+ }
}
// Configure congestion control.
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 4fce40f..fe34851 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -2259,12 +2259,16 @@
EXPECT_EQ(QuicTime::Delta::FromMicroseconds(100002),
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
- // Send two packets, and the TLP should be 2 us.
+ // Send two packets, and the TLP should be 2 us or 1ms.
+ QuicTime::Delta expected_tlp_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMilliseconds(1)
+ : QuicTime::Delta::FromMicroseconds(2);
SendDataPacket(1);
SendDataPacket(2);
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
}
@@ -2290,16 +2294,23 @@
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_));
EXPECT_EQ(QuicTime::Delta::FromMicroseconds(100002),
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
- // Send two packets, and the TLP should be 2 us.
+ // Send two packets, and the TLP should be 2 us or 1ms.
+ QuicTime::Delta expected_tlp_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMilliseconds(1)
+ : QuicTime::Delta::FromMicroseconds(2);
SendDataPacket(1);
SendDataPacket(2);
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
}
TEST_P(QuicSentPacketManagerTest, NegotiateIETFTLPFromOptionsAtServer) {
+ if (GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ return;
+ }
QuicConfig config;
QuicTagVector options;
@@ -2328,6 +2339,9 @@
}
TEST_P(QuicSentPacketManagerTest, NegotiateIETFTLPFromOptionsAtClient) {
+ if (GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)) {
+ return;
+ }
QuicConfig client_config;
QuicTagVector options;
@@ -2369,14 +2383,22 @@
RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats());
rtt_stats->UpdateRtt(QuicTime::Delta::FromMicroseconds(1),
QuicTime::Delta::Zero(), QuicTime::Zero());
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(1),
+ QuicTime::Delta expected_rto_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMilliseconds(1)
+ : QuicTime::Delta::FromMicroseconds(1);
+ EXPECT_EQ(expected_rto_delay,
QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(1),
+ EXPECT_EQ(expected_rto_delay,
QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_, 0));
// The TLP with fewer than 2 packets outstanding includes 1/2 min RTO(0ms).
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ QuicTime::Delta expected_tlp_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMicroseconds(502)
+ : QuicTime::Delta::FromMicroseconds(2);
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
}
@@ -2394,14 +2416,22 @@
RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats());
rtt_stats->UpdateRtt(QuicTime::Delta::FromMicroseconds(1),
QuicTime::Delta::Zero(), QuicTime::Zero());
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(1),
+ QuicTime::Delta expected_rto_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMilliseconds(1)
+ : QuicTime::Delta::FromMicroseconds(1);
+ EXPECT_EQ(expected_rto_delay,
QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(1),
+ EXPECT_EQ(expected_rto_delay,
QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_, 0));
// The TLP with fewer than 2 packets outstanding includes 1/2 min RTO(0ms).
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ QuicTime::Delta expected_tlp_delay =
+ GetQuicReloadableFlag(quic_sent_packet_manager_cleanup)
+ ? QuicTime::Delta::FromMicroseconds(502)
+ : QuicTime::Delta::FromMicroseconds(2);
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_));
- EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2),
+ EXPECT_EQ(expected_tlp_delay,
QuicSentPacketManagerPeer::GetTailLossProbeDelay(&manager_, 0));
}