Default enable MTU discovery in QUIC server. Protected by --gfe2_reloadable_flag_quic_enable_mtu_discovery_at_server. PiperOrigin-RevId: 326728561 Change-Id: I1c054a439badecc47227fbc822e3241bac0bbf0f
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index b7c9bb4..99c7957 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -544,8 +544,10 @@ } max_undecryptable_packets_ = config.max_undecryptable_packets(); - if (config.HasClientRequestedIndependentOption(kMTUH, perspective_)) { - SetMtuDiscoveryTarget(kMtuDiscoveryTargetPacketSizeHigh); + if (!GetQuicReloadableFlag(quic_enable_mtu_discovery_at_server)) { + if (config.HasClientRequestedIndependentOption(kMTUH, perspective_)) { + SetMtuDiscoveryTarget(kMtuDiscoveryTargetPacketSizeHigh); + } } if (config.HasClientRequestedIndependentOption(kMTUL, perspective_)) { SetMtuDiscoveryTarget(kMtuDiscoveryTargetPacketSizeLow); @@ -719,6 +721,12 @@ void QuicConnection::OnConfigNegotiated() { sent_packet_manager_.OnConfigNegotiated(); + + if (GetQuicReloadableFlag(quic_enable_mtu_discovery_at_server) && + perspective_ == Perspective::IS_SERVER) { + QUIC_RELOADABLE_FLAG_COUNT(quic_enable_mtu_discovery_at_server); + SetMtuDiscoveryTarget(kMtuDiscoveryTargetPacketSizeHigh); + } } QuicBandwidth QuicConnection::MaxPacingRate() const { @@ -3992,6 +4000,11 @@ return true; } +void QuicConnection::DisableMtuDiscovery() { + mtu_discoverer_.Disable(); + mtu_discovery_alarm_->Cancel(); +} + void QuicConnection::DiscoverMtu() { DCHECK(!mtu_discovery_alarm_->IsSet());
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h index e72fb2c..29c29a8 100644 --- a/quic/core/quic_connection.h +++ b/quic/core/quic_connection.h
@@ -823,6 +823,9 @@ virtual void SendConnectivityProbingResponsePacket( const QuicSocketAddress& peer_address); + // Disable MTU discovery on this connection. + void DisableMtuDiscovery(); + // Sends an MTU discovery packet and updates the MTU discovery alarm. void DiscoverMtu();
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index d80ca65..8c12920 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -864,12 +864,16 @@ void EnablePathMtuDiscovery(MockSendAlgorithm* send_algorithm) { ASSERT_EQ(Perspective::IS_SERVER, perspective()); - QuicConfig config; - QuicTagVector connection_options; - connection_options.push_back(kMTUH); - config.SetInitialReceivedConnectionOptions(connection_options); - EXPECT_CALL(*send_algorithm, SetFromConfig(_, _)); - SetFromConfig(config); + if (GetQuicReloadableFlag(quic_enable_mtu_discovery_at_server)) { + OnConfigNegotiated(); + } else { + QuicConfig config; + QuicTagVector connection_options; + connection_options.push_back(kMTUH); + config.SetInitialReceivedConnectionOptions(connection_options); + EXPECT_CALL(*send_algorithm, SetFromConfig(_, _)); + SetFromConfig(config); + } // Normally, the pacing would be disabled in the test, but calling // SetFromConfig enables it. Set nearly-infinite bandwidth to make the
diff --git a/quic/test_tools/simulator/quic_endpoint.cc b/quic/test_tools/simulator/quic_endpoint.cc index aba7b46..0f04427 100644 --- a/quic/test_tools/simulator/quic_endpoint.cc +++ b/quic/test_tools/simulator/quic_endpoint.cc
@@ -88,6 +88,7 @@ } } connection_->SetFromConfig(config); + connection_->DisableMtuDiscovery(); } QuicByteCount QuicEndpoint::bytes_received() const {