blob: c6ebbb0c264f863d2880e255efbe993ac6857e64 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file intentionally does not have header guards, it's included
// inside a macro to generate values. The following line silences a
// presubmit warning that would otherwise be triggered by this:
// no-include-guard-because-multiply-included
// NOLINT(build/header_guard)
// This file contains the list of QUIC reloadable and restart flags.
// If true, require handshake confirmation for QUIC connections, functionally
// disabling 0-rtt handshakes.
// TODO(rtenneti): Enable this flag after CryptoServerTest's are fixed.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, false)
// When true, defaults to BBR congestion control instead of Cubic.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_to_bbr, false)
// 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)
// When true, set the initial congestion control window from connection options
// in QuicSentPacketManager rather than TcpCubicSenderBytes.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_unified_iw_options, false)
// If true, QUIC offload pacing when using USPS as egress method.
QUIC_FLAG(FLAGS_quic_restart_flag_quic_offload_pacing_to_usps2, 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)
// When the STMP connection option is sent by the client, timestamps in the QUIC
// ACK frame are sent and processed.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_timestamps, false)
// If true and using Leto for QUIC shared-key calculations, GFE will react to a
// failure to contact Leto by sending a REJ containing a fallback ServerConfig,
// allowing the client to continue the handshake.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_send_quic_fallback_server_config_on_leto_error,
false)
// If true, GFE will not request private keys when fetching QUIC ServerConfigs
// from Leto.
QUIC_FLAG(FLAGS_quic_restart_flag_dont_fetch_quic_private_keys_from_leto, false)
// If true, set burst token to 2 in cwnd bootstrapping experiment.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_conservative_bursts, false)
// If true, uses conservative cwnd gain and pacing gain.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_conservative_cwnd_and_pacing_gains,
false)
// If true, allow client to enable BBRv2 on server via connection option 'B2ON'.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_allow_client_enabled_bbr_v2, false)
// If true, disable QUIC version Q043.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_q043, false)
// If true, disable QUIC version Q046.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_q046, false)
// If true, disable QUIC version Q050.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_q050, false)
// A testonly reloadable flag that will always default to false.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_testonly_default_false, false)
// A testonly reloadable flag that will always default to true.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_testonly_default_true, true)
// A testonly restart flag that will always default to false.
QUIC_FLAG(FLAGS_quic_restart_flag_quic_testonly_default_false, false)
// A testonly restart flag that will always default to true.
QUIC_FLAG(FLAGS_quic_restart_flag_quic_testonly_default_true, true)
// When true, ensure the ACK delay is never less than the alarm granularity when
// ACK decimation is enabled.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_ack_delay_alarm_granularity, false)
// If true, disable QUIC version h3-27.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_draft_27, true)
// If true, QUIC BBRv2\'s PROBE_BW mode will not reduce cwnd below
// BDP+ack_height.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_bbr2_avoid_too_low_probe_bw_cwnd,
false)
// When true, the 1RTT and 2RTT connection options decrease the number of round
// trips in BBRv2 STARTUP without a 25% bandwidth increase to 1 or 2 round trips
// respectively.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_bbr2_fewer_startup_round_trips, false)
// If true, support for IETF QUIC 0-rtt is enabled.
QUIC_FLAG(FLAGS_quic_restart_flag_quic_enable_zero_rtt_for_tls_v2, true)
// If true, default on PTO which unifies TLP + RTO loss recovery.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_on_pto, false)
// If true, disable QUIC version h3-T050.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_t050, true)
// If true, default-enable 5RTO blachole detection.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2,
true)
// If true, disable QUIC version h3-29.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_draft_29, false)
// If true, record the received min_ack_delay in transport parameters to QUIC
// config.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_record_received_min_ack_delay, true)
// If true, disable blackhole detection on server side.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_server_blackhole_detection,
false)
// If true, QUIC will default enable MTU discovery, with a target of 1450 bytes.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_enable_mtu_discovery_at_server, false)
// If true, while reading an IETF quic packet, start peer migration immediately
// when detecting the existence of any non-probing frame instead of at the end
// of the packet.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_start_peer_migration_earlier, false)
// If true, QuicStream::kDefaultUrgency is 3, otherwise 1.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_http3_new_default_urgency_value, true)
// If true, send PATH_RESPONSE upon receiving PATH_CHALLENGE regardless
// of perspective.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_path_response, false)
// If true, when switching from BBR to BBR2, use BBR's CWND as the initial CWND.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_copy_bbr_cwnd_to_bbr2, true)
// If true, send the lowest stream ID that can be retried by the client in a
// GOAWAY frame.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_http3_goaway_stream_id, true)
// If true, close connection if writer is still blocked when OnCanWrite is
// called.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_close_connection_in_on_can_write_with_blocked_writer,
true)
// If true, include stream information in idle timeout connection close detail.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_add_stream_info_to_idle_close_detail,
true)
// If true, use IETF QUIC application error codes in STOP_SENDING frames.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_stop_sending_uses_ietf_error_code,
true)
// If true, QuicSpdySession's destructor won't need to do cleanup.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_clean_up_spdy_session_destructor,
true)
// If true, discard INITIAL packet if the key has been dropped.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_discard_initial_packet_with_key_dropped,
true)
// If true, disable QUIC version h3-T051.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_t051, false)
// If true, make sure there is pending timer credit when trying to PTO
// retransmit any packets.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_pto_pending_timer_count, true)
// If true, QUIC connection will pass sent packet information to the debug
// visitor after a packet is recorded as sent in sent packet manager.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_give_sent_packet_to_debug_visitor_after_sent,
true)
// If true, abort async QPACK header decompression in QuicSpdyStream::OnClose().
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_abort_qpack_on_stream_close, true)
// If true, do not arm PTO for application data until handshake confirmed.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_arm_pto_for_application_data,
true)
// If true, fix a potential out of order sending caused by handshake gets
// confirmed while the coalescer is not empty.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_out_of_order_sending2, true)
// If true, remove processed undecryptable packets.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_undecryptable_packets2, true)
// If true, QUIC BBRv2 will use inflight byte after congestion event to detect
// queuing during PROBE_UP.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_bbr2_use_post_inflight_to_detect_queuing,
true)
// If true, QUIC BBRv2 will use 15% inflight_hi headroom, which is the default
// for TCP.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_bbr2_use_tcp_inflight_hi_headroom,
true)
// If true, HTTP/3 will treat HTTP/2 specific SETTINGS as error.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_settings, true)
// If true, for IETF QUIC, uses 2 * RTTVAR when calculating PTO delay.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_to_2_rttvar, true)
// Deallocate data in QuicMessageFrame right after the corresponding packet is
// sent.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_deallocate_message_right_after_sent,
true)
// If true, drop initial keys at the end of writing and unify the fixes for
// missing initial keys.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_missing_initial_keys2, true)
// If true, check whether framer has the right key before writing data.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_check_keys_before_writing, true)
// If true, received error codes larger than QUIC_LAST_ERROR are preserved.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_do_not_clip_received_error_code,
false)
// If true, HTTP/3 sesions will report error and close connection upon receiving
// HTTP/2 only frames.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_frames, true)
// If true, QuicConnection will initialize its self address to the self address
// of the first received packet, for all server connections and client
// connections that know its own address.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_connection_set_initial_self_address,
true)
// If true, let QUIC connection handle PINGs instead of going through session.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_let_connection_handle_pings, true)
// If true, use http2::HuffmanEncodeFast() instead of HuffmanEncode() and
// eliminate one string copy for QPACK encoding used in IETF QUIC.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_fast_huffman_encoder, true)
// When true, QUIC+TLS versions will support key updates.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_key_update_supported, true)
// If true, address is validated by successfully processing a HANDSHAKE or 1-RTT
// packet.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_address_validation, true)
// If true, QuicStream will explicitly specify which RST_STREAM, STOP_SENDING
// frame to send.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_split_up_send_rst, false)
// If true, send HTTP/3 GOAWAY frame when sending CONNECTION_CLOSE.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_goaway_with_connection_close,
false)
// If true, ack frequency frame can be sent from server to client.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_can_send_ack_frequency, true)
// If true, QUIC BBRv2 will support NetworkParams.max_initial_congestion_window
// when bootstrapping cwnd.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_bbr2_support_max_bootstrap_cwnd, true)
// If true, QUIC BBR2 will not exit STARTUP on excessive loss, if there was
// enough bandwidth growth in round.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_bbr2_no_exit_startup_on_loss_with_bw_growth,
true)
// Honor the AEAD confidentiality and integrity limits by initiating key update
// (if enabled) and/or closing the connection, as necessary.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_enable_aead_limits, true)
// If true, try to process undecryptable packets at the end of
// TlsServerHandshaker::DecryptCallback, if it is callback is run
// asynchronously.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_process_undecryptable_packets_after_async_decrypt_callback,
false)
// When true, QUIC server will send version negotiation packets even if the
// original connection ID was under 64bits in length.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_send_version_negotiation_for_short_connection_ids,
false)
// If true, use one of the 12 QPACK encoder stream error codes and 5 QPACK
// decoder stream error codes and QUIC_INTERNAL_ERROR instead of the two generic
// ones.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_granular_qpack_error_codes, false)
// When true, the server delays its Initial ACK-only packets the full
// max_ack_delay.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_delay_initial_ack, false)
// If true, session tickets will always be enabled in QUIC.
QUIC_FLAG(FLAGS_quic_restart_flag_quic_session_tickets_always_enabled, false)
// If true and B2SL connection option is set, when QUIC BBR2 exits STARTUP due
// to loss, it will set the inflight_hi to the max of bdp and
// max_bytes_delivered_in_round.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_bbr2_startup_loss_exit_use_max_delivered,
false)
// If true, fix QuicSession::WillingAndAbleToWrite to check write keys when
// using CRYPTO frames.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_willing_and_able_to_write2, true)
// If true, do not send control frames before encryption is established.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_encrypted_control_frames, false)
// If true, use WriteOrBufferDataAtLevel to send crypto data. Existing
// WriteOrBufferData is used to send application data.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_write_or_buffer_data_at_level,
false)
// When true, use quic::CertificateView to extract X.509 subjects from
// certificates.
QUIC_FLAG(
FLAGS_quic_reloadable_flag_quic_extract_x509_subject_using_certificate_view,
false)
// If true, use ScopedEncryptionLevelContext when sending data.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_encryption_level_context, false)