Commit f278cccc authored by Renjie Tang's avatar Renjie Tang Committed by Commit Bot

Add Finch experiment option to turn on/off QUIC 0-RTT in TLS versions.

Change-Id: I96e42510e0282b52a5aa5abc8529bd38807e3549
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2248478Reviewed-by: default avatarNick Harper <nharper@chromium.org>
Reviewed-by: default avatarDavid Schinazi <dschinazi@chromium.org>
Commit-Queue: Renjie Tang <renjietang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#779591}
parent c2e91393
...@@ -346,6 +346,11 @@ bool ShouldQuicMigrateIdleSessions( ...@@ -346,6 +346,11 @@ bool ShouldQuicMigrateIdleSessions(
GetVariationParam(quic_trial_params, "migrate_idle_sessions"), "true"); GetVariationParam(quic_trial_params, "migrate_idle_sessions"), "true");
} }
bool ShouldQuicDisableTlsZeroRtt(const VariationParameters& quic_trial_params) {
return base::LowerCaseEqualsASCII(
GetVariationParam(quic_trial_params, "disable_tls_zero_rtt"), "true");
}
int GetQuicRetransmittableOnWireTimeoutMilliseconds( int GetQuicRetransmittableOnWireTimeoutMilliseconds(
const VariationParameters& quic_trial_params) { const VariationParameters& quic_trial_params) {
int value; int value;
...@@ -528,6 +533,10 @@ void ConfigureQuicParams(base::StringPiece quic_trial_group, ...@@ -528,6 +533,10 @@ void ConfigureQuicParams(base::StringPiece quic_trial_group,
base::TimeDelta::FromMilliseconds( base::TimeDelta::FromMilliseconds(
initial_rtt_for_handshake_milliseconds); initial_rtt_for_handshake_milliseconds);
} }
quic_params->disable_tls_zero_rtt =
ShouldQuicDisableTlsZeroRtt(quic_trial_params);
int retransmittable_on_wire_timeout_milliseconds = int retransmittable_on_wire_timeout_milliseconds =
GetQuicRetransmittableOnWireTimeoutMilliseconds(quic_trial_params); GetQuicRetransmittableOnWireTimeoutMilliseconds(quic_trial_params);
if (retransmittable_on_wire_timeout_milliseconds > 0) { if (retransmittable_on_wire_timeout_milliseconds > 0) {
......
...@@ -94,6 +94,7 @@ TEST_F(NetworkSessionConfiguratorTest, Defaults) { ...@@ -94,6 +94,7 @@ TEST_F(NetworkSessionConfiguratorTest, Defaults) {
EXPECT_FALSE(quic_params_.allow_server_migration); EXPECT_FALSE(quic_params_.allow_server_migration);
EXPECT_TRUE(params_.quic_host_allowlist.empty()); EXPECT_TRUE(params_.quic_host_allowlist.empty());
EXPECT_TRUE(quic_params_.retransmittable_on_wire_timeout.is_zero()); EXPECT_TRUE(quic_params_.retransmittable_on_wire_timeout.is_zero());
EXPECT_FALSE(quic_params_.disable_tls_zero_rtt);
EXPECT_EQ(net::DefaultSupportedQuicVersions(), EXPECT_EQ(net::DefaultSupportedQuicVersions(),
quic_params_.supported_versions); quic_params_.supported_versions);
...@@ -443,6 +444,18 @@ TEST_F(NetworkSessionConfiguratorTest, ...@@ -443,6 +444,18 @@ TEST_F(NetworkSessionConfiguratorTest,
EXPECT_TRUE(quic_params_.allow_port_migration); EXPECT_TRUE(quic_params_.allow_port_migration);
} }
TEST_F(NetworkSessionConfiguratorTest,
QuicDisableTlsZeroRttFromFieldTrialParams) {
std::map<std::string, std::string> field_trial_params;
field_trial_params["disable_tls_zero_rtt"] = "true";
variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
ParseFieldTrials();
EXPECT_TRUE(quic_params_.disable_tls_zero_rtt);
}
TEST_F(NetworkSessionConfiguratorTest, PacketLengthFromFieldTrialParams) { TEST_F(NetworkSessionConfiguratorTest, PacketLengthFromFieldTrialParams) {
std::map<std::string, std::string> field_trial_params; std::map<std::string, std::string> field_trial_params;
field_trial_params["max_packet_length"] = "1450"; field_trial_params["max_packet_length"] = "1450";
......
...@@ -165,6 +165,8 @@ struct NET_EXPORT QuicParams { ...@@ -165,6 +165,8 @@ struct NET_EXPORT QuicParams {
// The initial rtt that will be used in crypto handshake if no cached // The initial rtt that will be used in crypto handshake if no cached
// smoothed rtt is present. // smoothed rtt is present.
base::TimeDelta initial_rtt_for_handshake; base::TimeDelta initial_rtt_for_handshake;
// If true, QUIC with TLS will not try 0-RTT connection.
bool disable_tls_zero_rtt = false;
}; };
// QuicContext contains QUIC-related variables that are shared across all of the // QuicContext contains QUIC-related variables that are shared across all of the
......
...@@ -1097,6 +1097,8 @@ QuicStreamFactory::QuicStreamFactory( ...@@ -1097,6 +1097,8 @@ QuicStreamFactory::QuicStreamFactory(
features::kPartitionHttpServerPropertiesByNetworkIsolationKey)) { features::kPartitionHttpServerPropertiesByNetworkIsolationKey)) {
DCHECK(transport_security_state_); DCHECK(transport_security_state_);
DCHECK(http_server_properties_); DCHECK(http_server_properties_);
if (params_.disable_tls_zero_rtt)
SetQuicReloadableFlag(quic_enable_zero_rtt_for_tls, false);
InitializeMigrationOptions(); InitializeMigrationOptions();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment