Deprecate gfe2_reloadable_flag_quic_update_ack_timeout_on_receipt_time.
PiperOrigin-RevId: 449225386
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index 2154d94..cc7e38e 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -11182,40 +11182,13 @@
std::make_unique<TaggingEncrypter>(0x01));
connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
// Verify HANDSHAKE packet gets processed.
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
- } else {
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
- }
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Verify immediate ACK has been sent out when flush went out of scope.
- ASSERT_FALSE(connection_.HasPendingAcks());
- } else {
- ASSERT_TRUE(connection_.HasPendingAcks());
- // Send ACKs.
- clock_.AdvanceTime(connection_.GetAckAlarm()->deadline() - clock_.Now());
- connection_.GetAckAlarm()->Fire();
- }
+ // Verify immediate ACK has been sent out when flush went out of scope.
+ ASSERT_FALSE(connection_.HasPendingAcks());
ASSERT_FALSE(writer_->ack_frames().empty());
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Verify the ack_delay_time in the sent HANDSHAKE ACK frame is 100ms.
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
- writer_->ack_frames()[0].ack_delay_time);
- ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
- return;
- }
- // Verify the ack_delay_time in the INITIAL ACK frame is 1ms.
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1),
- writer_->ack_frames()[0].ack_delay_time);
- // Process the coalesced HANDSHAKE packet.
- ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
- auto packet = writer_->coalesced_packet()->Clone();
- writer_->framer()->ProcessPacket(*packet);
- ASSERT_FALSE(writer_->ack_frames().empty());
- // Verify the ack_delay_time in the HANDSHAKE ACK frame includes the
- // buffering time.
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(101),
+ // Verify the ack_delay_time in the sent HANDSHAKE ACK frame is 100ms.
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
writer_->ack_frames()[0].ack_delay_time);
ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
}
@@ -15295,27 +15268,15 @@
connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
ASSERT_TRUE(connection_.HasPendingAcks());
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- EXPECT_EQ(packet_receipt_time + DefaultDelayedAckTime(),
- connection_.GetAckAlarm()->deadline());
- clock_.AdvanceTime(packet_receipt_time + DefaultDelayedAckTime() -
- clock_.Now());
- } else {
- EXPECT_EQ(clock_.Now() + DefaultDelayedAckTime(),
- connection_.GetAckAlarm()->deadline());
- clock_.AdvanceTime(DefaultDelayedAckTime());
- }
+ EXPECT_EQ(packet_receipt_time + DefaultDelayedAckTime(),
+ connection_.GetAckAlarm()->deadline());
+ clock_.AdvanceTime(packet_receipt_time + DefaultDelayedAckTime() -
+ clock_.Now());
// Fire ACK alarm.
connection_.GetAckAlarm()->Fire();
ASSERT_EQ(1u, writer_->ack_frames().size());
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Verify ACK delay time does not include queuing delay.
- EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
- } else {
- // Verify ACK delay time = queuing delay + ack delay
- EXPECT_EQ(DefaultDelayedAckTime() + kQueuingDelay,
- writer_->ack_frames()[0].ack_delay_time);
- }
+ // Verify ACK delay time does not include queuing delay.
+ EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
}
TEST_P(QuicConnectionTest, CoalesceOneRTTPacketWithInitialAndHandshakePackets) {
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index b515e22..96db0f0 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -79,8 +79,6 @@
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_conservative_bursts, false)
// If true, stop resetting ideal_next_packet_send_time_ in pacing sender.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_donot_reset_ideal_next_packet_send_time, false)
-// If true, update ACK timeout based on packet receipt time rather than now.
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_update_ack_timeout_on_receipt_time, true)
// If true, use BBRv2 as the default congestion controller. Takes precedence over --quic_default_to_bbr.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_to_bbr_v2, false)
// If true, use PING manager to manage the PING alarm.
diff --git a/quiche/quic/core/quic_received_packet_manager.cc b/quiche/quic/core/quic_received_packet_manager.cc
index 213f6ba..bb7b87d 100644
--- a/quiche/quic/core/quic_received_packet_manager.cc
+++ b/quiche/quic/core/quic_received_packet_manager.cc
@@ -267,24 +267,9 @@
return;
}
- QuicTime ack_timeout_base = now;
- const bool quic_update_ack_timeout_on_receipt_time =
- GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time);
- if (quic_update_ack_timeout_on_receipt_time) {
- if (last_packet_receipt_time <= now) {
- QUIC_CODE_COUNT(quic_update_ack_timeout_on_receipt_time);
- ack_timeout_base = last_packet_receipt_time;
- } else {
- QUIC_CODE_COUNT(quic_update_ack_timeout_on_now);
- ack_timeout_base = now;
- }
- }
- QuicTime updated_ack_time =
- ack_timeout_base +
- GetMaxAckDelay(last_received_packet_number, *rtt_stats);
- if (quic_update_ack_timeout_on_receipt_time) {
- updated_ack_time = std::max(now, updated_ack_time);
- }
+ const QuicTime updated_ack_time = std::max(
+ now, std::min(last_packet_receipt_time, now) +
+ GetMaxAckDelay(last_received_packet_number, *rtt_stats));
if (!ack_timeout_.IsInitialized() || ack_timeout_ > updated_ack_time) {
ack_timeout_ = updated_ack_time;
}
diff --git a/quiche/quic/core/quic_received_packet_manager_test.cc b/quiche/quic/core/quic_received_packet_manager_test.cc
index 65cfa86..c453707 100644
--- a/quiche/quic/core/quic_received_packet_manager_test.cc
+++ b/quiche/quic/core/quic_received_packet_manager_test.cc
@@ -650,13 +650,8 @@
kInstigateAck, QuicPacketNumber(3),
/*last_packet_receipt_time=*/packet_receipt_time3,
clock_.ApproximateNow(), &rtt_stats_);
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Make sure ACK timeout is based on receipt time.
- CheckAckTimeout(packet_receipt_time3 + kDelayedAckTime);
- } else {
- // Make sure ACK timeout is based on now.
- CheckAckTimeout(clock_.ApproximateNow() + kDelayedAckTime);
- }
+ // Make sure ACK timeout is based on receipt time.
+ CheckAckTimeout(packet_receipt_time3 + kDelayedAckTime);
RecordPacketReceipt(4, clock_.ApproximateNow());
MaybeUpdateAckTimeout(kInstigateAck, 4);
@@ -677,13 +672,8 @@
kInstigateAck, QuicPacketNumber(3),
/*last_packet_receipt_time=*/packet_receipt_time3,
clock_.ApproximateNow(), &rtt_stats_);
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Given 100ms > ack delay, verify immediate ACK.
- CheckAckTimeout(clock_.ApproximateNow());
- } else {
- // Make sure ACK timeout is based on now.
- CheckAckTimeout(clock_.ApproximateNow() + kDelayedAckTime);
- }
+ // Given 100ms > ack delay, verify immediate ACK.
+ CheckAckTimeout(clock_.ApproximateNow());
}
} // namespace
diff --git a/quiche/quic/core/uber_received_packet_manager_test.cc b/quiche/quic/core/uber_received_packet_manager_test.cc
index 5474421..ad62d8f 100644
--- a/quiche/quic/core/uber_received_packet_manager_test.cc
+++ b/quiche/quic/core/uber_received_packet_manager_test.cc
@@ -558,15 +558,9 @@
CheckAckTimeout(clock_.ApproximateNow());
EXPECT_TRUE(HasPendingAck());
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
- // Verify ACK delay is based on packet receipt time.
- CheckAckTimeout(clock_.ApproximateNow() -
- QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
- } else {
- // Delayed ack is scheduled.
- CheckAckTimeout(clock_.ApproximateNow() -
- QuicTime::Delta::FromMilliseconds(1) + kDelayedAckTime);
- }
+ // Verify ACK delay is based on packet receipt time.
+ CheckAckTimeout(clock_.ApproximateNow() -
+ QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
}
} // namespace