blob: de0df477889fe86956fcdca15f848109c4718ce1 [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.
// This file contains the list of QUIC protocol flags.
// If true, QUIC BBR congestion control may be enabled via Finch and/or via QUIC
// connection options.
QUIC_FLAG(bool, FLAGS_quic_allow_new_bbr, true)
// Time period for which a given connection_id should live in the time-wait
// state.
QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_seconds, 200)
// Currently, this number is quite conservative. The max QPS limit for an
// individual server silo is currently set to 1000 qps, though the actual max
// that we see in the wild is closer to 450 qps. Regardless, this means that
// the longest time-wait list we should see is 200 seconds * 1000 qps, 200000.
// Of course, there are usually many queries per QUIC connection, so we allow a
// factor of 3 leeway.
//
// Maximum number of connections on the time-wait list. A negative value implies
// no configured limit.
QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_max_connections, 600000)
// Enables server-side support for QUIC stateless rejects.
QUIC_FLAG(bool, FLAGS_enable_quic_stateless_reject_support, true)
// This flag is not in use, just to keep consistency for shared code.
QUIC_FLAG(bool, FLAGS_quic_always_log_bugs_for_tests, true)
// If true, multipath is enabled for the connection.
QUIC_FLAG(bool, FLAGS_quic_enable_multipath, false)
// 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(bool, FLAGS_quic_require_handshake_confirmation, false)
// If true, disable pacing in QUIC.
QUIC_FLAG(bool, FLAGS_quic_disable_pacing_for_perf_tests, false)
// If true, QUIC public reset packets will have the \"pre-v33\" public header
// flags.
QUIC_FLAG(bool, FLAGS_quic_use_old_public_reset_packets, true)
// If true, QUIC will use cheap stateless rejects without creating a full
// connection.
QUIC_FLAG(bool, FLAGS_quic_use_cheap_stateless_rejects, true)
// If true, QUIC respect HTTP2 SETTINGS frame rather than always close the
// connection.
QUIC_FLAG(bool, FLAGS_quic_respect_http2_settings_frame, true)
// If true, enables QUIC_VERSION_35.
QUIC_FLAG(bool, FLAGS_quic_enable_version_35, true)
// If true, re-enables QUIC_VERSION_36.
QUIC_FLAG(bool, FLAGS_quic_enable_version_36_v2, true)
// If true, use async codepaths to invoke ProofSource::GetProof.
QUIC_FLAG(bool, FLAGS_enable_async_get_proof, false)
// If true, requires handshake confirmations for all QUIC handshakes with
// versions less than 33.
QUIC_FLAG(bool, FLAGS_quic_require_handshake_confirmation_pre33, false)
// If true, defer creation of new connection till its CHLO arrives.
QUIC_FLAG(bool, FLAGS_quic_buffer_packet_till_chlo, true)
// Disable MTU probing if MTU probe causes ERR_MSG_TOO_BIG instead of aborting
// the connection.
QUIC_FLAG(bool, FLAGS_graceful_emsgsize_on_mtu_probe, true)
// If true, only open limited number of quic sessions per epoll event. Leave the
// rest to next event. This flag can be turned on only if
// --quic_buffer_packet_till_chlo is true.
QUIC_FLAG(bool, FLAGS_quic_limit_num_new_sessions_per_epoll_loop, true)
// If true, lazy allocate and early release memeory used in
// QuicStreamSequencerBuffer to buffer incoming data.
QUIC_FLAG(bool, FLAGS_quic_reduce_sequencer_buffer_memory_life_time, true)
// If true, allow server address change if it is because of mapped ipv4 address.
QUIC_FLAG(bool, FLAGS_quic_allow_server_address_change_for_mapped_ipv4, true)
// If true, disables QUIC version less than 34.
QUIC_FLAG(bool, FLAGS_quic_disable_pre_34, false)
// When true, decode the packet number from the largest received packet, rather
// than the most recent.
QUIC_FLAG(bool, FLAGS_quic_packet_numbers_largest_received, true)
// Only close the connection on the 5th RTO client side when the 5RTO option
// is enabled.
QUIC_FLAG(bool, FLAGS_quic_only_5rto_client_side, true)
// If true, QUIC server push will enabled by default.
QUIC_FLAG(bool, FLAGS_quic_enable_server_push_by_default, true)
// Only inform the QuicSentPacketManager of packets that were sent,
// not those that we tried to send.
QUIC_FLAG(bool, FLAGS_quic_only_track_sent_packets, true)
// If true, connection is closed when packet generator is trying to
// add a frame which alone cannot fit into a packet.
QUIC_FLAG(bool, FLAGS_quic_close_connection_on_huge_frames, true)
// As the Linux kernel does, limit QUIC's Cubic congestion control to
// only increase the CWND 1 packet for every two packets acked.
QUIC_FLAG(bool, FLAGS_quic_limit_cubic_cwnd_increase, true)
// If true, export reject reasons for all rejects, i.e., rejects,
// stateless rejects and cheap stateless rejects.
QUIC_FLAG(bool, FLAGS_quic_export_rej_for_all_rejects, true)
// Allow large send deltas to be used as RTT samples.
QUIC_FLAG(bool, FLAGS_quic_allow_large_send_deltas, true)
// Engage early retransmit anytime the largest acked is greater than
// or equal to the largest retransmittable packet.
QUIC_FLAG(bool, FLAGS_quic_largest_sent_retransmittable, true)
// If true, close connection when sequencer buffer enter into unexpected state.
QUIC_FLAG(bool, FLAGS_quic_stream_sequencer_buffer_debug, true)
// If true, release QuicCryptoStream\'s read buffer when stream are less
// frequently used.
QUIC_FLAG(bool, FLAGS_quic_release_crypto_stream_buffer, false)
// Use a more conservative backoff of 2x instead of 1.5x for handshake
// retransmissions, as well as a larger minimum.
QUIC_FLAG(bool, FLAGS_quic_conservative_handshake_retransmits, true)
// If true, buffer packets while parsing public headers instead of parsing down
// if CHLO is already buffered.
QUIC_FLAG(bool, FLAGS_quic_buffer_packets_after_chlo, false)
// Previously QUIC didn't register a packet as received until it was fully
// processed, but now that flow control is implemented, it can be received once
// decrypted.
QUIC_FLAG(bool, FLAGS_quic_receive_packet_once_decrypted, false)
// If true, enable the Lazy FACK style loss detection in QUIC.
QUIC_FLAG(bool, FLAGS_quic_enable_lazy_fack, true)
// If true, do not override a connection in global map if exists. Only create
// QUIC session if it is successfully inserted to the global map. Toss the
// packet if insertion fails.
QUIC_FLAG(bool, FLAGS_quic_create_session_after_insertion, false)
// If true, rejected packet number is removed from public reset packet.
QUIC_FLAG(bool, FLAGS_quic_remove_packet_number_from_public_reset, false)
// If true, will send QUIC_PUSH_STREAM_TIMED_OUT when push stream is unclaimed
// and times out.
QUIC_FLAG(bool, FLAGS_quic_send_push_stream_timed_out_error, true)