blob: b63a0e525788a73e1e9eccf8178e8d30218bd426 [file] [log] [blame]
[email protected]9bb57c72014-03-31 20:36:041// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/quic/quic_flags.h"
6
[email protected]9bb57c72014-03-31 20:36:047bool FLAGS_quic_allow_oversized_packets_for_test = false;
[email protected]6d9ca3b2014-05-13 07:44:228
[email protected]c5cc9bd2014-03-31 23:17:149// When true, the use time based loss detection instead of nack.
10bool FLAGS_quic_use_time_loss_detection = false;
[email protected]6d9ca3b2014-05-13 07:44:2211
[email protected]19886aaf2014-06-19 23:03:1812// If true, it will return as soon as an error is detected while validating
13// CHLO.
14bool FLAGS_use_early_return_when_verifying_chlo = true;
15
[email protected]cc1aa272014-06-30 19:48:2216// If true, QUIC connections will support FEC protection of data while sending
17// packets, to reduce latency of data delivery to the application. The client
18// must also request FEC protection for the server to use FEC.
19bool FLAGS_enable_quic_fec = false;
[email protected]9693157b2014-08-08 11:13:4920
[email protected]672631c2014-08-16 06:11:4521// When true, defaults to BBR congestion control instead of Cubic.
22bool FLAGS_quic_use_bbr_congestion_control = false;
rtenneti31e9fd62014-09-16 05:22:1523
rtenneti08b014382014-10-29 14:03:1924// If true, QUIC BBR congestion control may be enabled via Finch and/or via QUIC
25// connection options.
26bool FLAGS_quic_allow_bbr = false;
rtenneti23186682014-10-30 01:49:3327
rtennetif4bdb542015-01-21 14:33:0528// Time period for which a given connection_id should live in the time-wait
29// state.
rtenneti581b6ae82015-07-20 20:48:0130int64 FLAGS_quic_time_wait_list_seconds = 200;
rtennetif4bdb542015-01-21 14:33:0531
32// Currently, this number is quite conservative. The max QPS limit for an
33// individual server silo is currently set to 1000 qps, though the actual max
rtenneti581b6ae82015-07-20 20:48:0134// that we see in the wild is closer to 450 qps. Regardless, this means that
35// the longest time-wait list we should see is 200 seconds * 1000 qps = 200000.
36// Of course, there are usually many queries per QUIC connection, so we allow a
37// factor of 3 leeway.
rtennetif4bdb542015-01-21 14:33:0538//
39// Maximum number of connections on the time-wait list. A negative value implies
40// no configured limit.
rtenneti581b6ae82015-07-20 20:48:0141int64 FLAGS_quic_time_wait_list_max_connections = 600000;
rtennetif4bdb542015-01-21 14:33:0542
rtennetie0ee6eb2015-05-01 00:55:0943// Enables server-side support for QUIC stateless rejects.
rtenneti1ab11fb2015-07-01 17:29:5444bool FLAGS_enable_quic_stateless_reject_support = true;
rtennetia2ea9162015-05-15 19:26:4445
zhongyib8677022015-12-01 05:51:3046// If ture, allow Ack Decimation to be used for QUIC when requested by the
47// client connection option ACKD.
48bool FLAGS_quic_ack_decimation = true;
49
rtennetid39bd762015-06-12 01:05:5250// If true, flow controller may grow the receive window size if necessary.
51bool FLAGS_quic_auto_tune_receive_window = true;
52
zhongyib8677022015-12-01 05:51:3053// If true, record received connection options to TransportConnectionStats.
54bool FLAGS_quic_connection_options_to_transport_stats = true;
55
rtenneti581b6ae82015-07-20 20:48:0156// Limits QUIC's max CWND to 200 packets.
57bool FLAGS_quic_limit_max_cwnd = true;
rtenneti852d6fb42015-07-24 23:09:2258
rtenneti44f4a2e2015-08-07 14:00:0759// If true, require handshake confirmation for QUIC connections, functionally
60// disabling 0-rtt handshakes.
rtenneti5ca6eee2015-10-15 21:54:3061// TODO(rtenneti): Enable this flag after CryptoServerTest's are fixed.
rtenneti44f4a2e2015-08-07 14:00:0762bool FLAGS_quic_require_handshake_confirmation = false;
rtenneti9bd5d4b2015-08-21 05:44:5263
rtenneti48f371c682015-08-27 05:34:2664// If true, after a server silo receives a packet from a migrated QUIC
65// client, a GO_AWAY frame is sent to the client.
66bool FLAGS_send_goaway_after_client_migration = true;
rtennetia8fb60cb2015-09-10 18:17:5767
rtenneti4efd55dd2015-09-18 01:12:0468// If true, use an interval set as the internal representation of a packet queue
69// instead of a set.
70bool FLAGS_quic_packet_queue_use_interval_set = true;
rtenneti159828f2015-10-13 06:58:0971
72// If true, Cubic's epoch is shifted when the sender is application-limited.
73bool FLAGS_shift_quic_cubic_epoch_when_app_limited = true;
74
ckrasic99850b32015-10-16 21:15:5875// If true, QUIC will measure head of line (HOL) blocking due between
76// streams due to packet losses on the headers stream. The
77// measurements will be surfaced via UMA histogram
78// Net.QuicSession.HeadersHOLBlockedTime.
79bool FLAGS_quic_measure_headers_hol_blocking_time = true;
rtenneti8a4a0732015-10-18 00:45:5180
rtenneti71133202015-10-19 20:24:0181// Disable QUIC's userspace pacing.
82bool FLAGS_quic_disable_pacing = false;
rtenneti1535e3a2015-10-20 06:14:2083
zhongyi1fb9bc52015-11-24 23:09:4284// If true, Use QUIC's GeneralLossAlgorithm implementation instead of
85// TcpLossAlgorithm or TimeLossAlgorithm.
86bool FLAGS_quic_general_loss_algorithm = true;
87
rtenneti8dd12b22015-10-21 01:26:3888// Invoke the QuicAckListener directly, instead of going through the AckNotifier
89// and AckNotifierManager.
90bool FLAGS_quic_no_ack_notifier = true;
ckrasicea295fe2015-10-31 05:03:2791
ckrasicea295fe2015-10-31 05:03:2792// If true, use the unrolled prefetch path in QuicPacketCreator::CopyToBuffer.
93bool FLAGS_quic_packet_creator_prefetch = false;
rch99b644c2015-11-04 05:25:2894
95// If true, only migrate QUIC connections when client address changes are
96// considered to be caused by NATs.
97bool FLAGS_quic_disable_non_nat_address_migration = true;
rch8a71b7e2015-11-06 23:58:1998
99// If true, QUIC connections will timeout when packets are not being recieved,
100// even if they are being sent.
101bool FLAGS_quic_use_new_idle_timeout = true;
rjshadec86dbfa2015-11-12 20:16:25102
103// If true, replace QuicFrameList with StreamSequencerBuffer as underlying data
104// structure for QuicStreamSequencer bufferring.
105bool FLAGS_quic_use_stream_sequencer_buffer = true;
106
107// If true, don't send QUIC packets if the send alarm is set.
ianswett0888cff2015-11-24 17:42:16108bool FLAGS_quic_respect_send_alarm = true;
109
zhongyib8677022015-12-01 05:51:30110// If ture, sets callback pointer to nullptr after calling Cancel() in
111// QuicCryptoServerStream::CancelOutstandingCallbacks.
112bool FLAGS_quic_set_client_hello_cb_nullptr = true;
113
zhongyi1fb9bc52015-11-24 23:09:42114// If treu, Only track a single retransmission in QUIC's TransmissionInfo
115// struct.
116bool FLAGS_quic_track_single_retransmission = true;
117
ianswett0888cff2015-11-24 17:42:16118// If true, allow each quic stream to write 16k blocks rather than doing a round
119// robin of one packet per session when ack clocked or paced.
120bool FLAGS_quic_batch_writes = true;