OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file intentionally does not have header guards, it's included | 5 // This file intentionally does not have header guards, it's included |
6 // inside a macro to generate values. | 6 // inside a macro to generate values. |
7 | 7 |
8 // This file contains the list of QUIC protocol flags. | 8 // This file contains the list of QUIC protocol flags. |
9 | 9 |
10 // Time period for which a given connection_id should live in the time-wait | 10 // Time period for which a given connection_id should live in the time-wait |
11 // state. | 11 // state. |
12 QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_seconds, 200) | 12 QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_seconds, 200) |
13 | 13 |
14 // Currently, this number is quite conservative. The max QPS limit for an | 14 // Currently, this number is quite conservative. The max QPS limit for an |
15 // individual server silo is currently set to 1000 qps, though the actual max | 15 // individual server silo is currently set to 1000 qps, though the actual max |
16 // that we see in the wild is closer to 450 qps. Regardless, this means that | 16 // that we see in the wild is closer to 450 qps. Regardless, this means that |
17 // the longest time-wait list we should see is 200 seconds * 1000 qps, 200000. | 17 // the longest time-wait list we should see is 200 seconds * 1000 qps, 200000. |
18 // Of course, there are usually many queries per QUIC connection, so we allow a | 18 // Of course, there are usually many queries per QUIC connection, so we allow a |
19 // factor of 3 leeway. | 19 // factor of 3 leeway. |
20 // | 20 // |
21 // Maximum number of connections on the time-wait list. A negative value implies | 21 // Maximum number of connections on the time-wait list. A negative value implies |
22 // no configured limit. | 22 // no configured limit. |
23 QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_max_connections, 600000) | 23 QUIC_FLAG(int64_t, FLAGS_quic_time_wait_list_max_connections, 600000) |
24 | 24 |
25 // Enables server-side support for QUIC stateless rejects. | 25 // Enables server-side support for QUIC stateless rejects. |
26 QUIC_FLAG(bool, | 26 QUIC_FLAG(bool, |
27 FLAGS_quic_reloadable_flag_enable_quic_stateless_reject_support, | 27 FLAGS_quic_reloadable_flag_enable_quic_stateless_reject_support, |
28 true) | 28 true) |
29 | 29 |
30 // If true, multipath is enabled for the connection. | |
31 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_multipath, false) | |
32 | |
33 // If true, require handshake confirmation for QUIC connections, functionally | 30 // If true, require handshake confirmation for QUIC connections, functionally |
34 // disabling 0-rtt handshakes. | 31 // disabling 0-rtt handshakes. |
35 // TODO(rtenneti): Enable this flag after CryptoServerTest's are fixed. | 32 // TODO(rtenneti): Enable this flag after CryptoServerTest's are fixed. |
36 QUIC_FLAG(bool, | 33 QUIC_FLAG(bool, |
37 FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, | 34 FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, |
38 false) | 35 false) |
39 | 36 |
40 // If true, disable pacing in QUIC. | 37 // If true, disable pacing in QUIC. |
41 QUIC_FLAG(bool, FLAGS_quic_disable_pacing_for_perf_tests, false) | 38 QUIC_FLAG(bool, FLAGS_quic_disable_pacing_for_perf_tests, false) |
42 | 39 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 // public flag. | 76 // public flag. |
80 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_remove_v33_hacks2, false) | 77 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_remove_v33_hacks2, false) |
81 | 78 |
82 // Enable QUIC force HOL blocking experiment. | 79 // Enable QUIC force HOL blocking experiment. |
83 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_force_hol_blocking, true) | 80 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_force_hol_blocking, true) |
84 | 81 |
85 // If true, allows packets to be buffered in anticipation of a future CHLO, and | 82 // If true, allows packets to be buffered in anticipation of a future CHLO, and |
86 // allow CHLO packets to be buffered until next iteration of the event loop. | 83 // allow CHLO packets to be buffered until next iteration of the event loop. |
87 QUIC_FLAG(bool, FLAGS_quic_allow_chlo_buffering, true) | 84 QUIC_FLAG(bool, FLAGS_quic_allow_chlo_buffering, true) |
88 | 85 |
89 // If true, fix some casts that were causing off-by-one errors in QUIC's cubic | |
90 // "convex" increases. | |
91 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_cubic_convex_mode, true) | |
92 | |
93 // If true, GFE sends SETTINGS_MAX_HEADER_LIST_SIZE to the client at the | 86 // If true, GFE sends SETTINGS_MAX_HEADER_LIST_SIZE to the client at the |
94 // beginning of a connection. | 87 // beginning of a connection. |
95 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_send_max_header_list_size, true) | 88 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_send_max_header_list_size, true) |
96 | 89 |
97 // If true, fix quantization of CubicBytes while performing convex increases. | |
98 QUIC_FLAG(bool, | |
99 FLAGS_quic_reloadable_flag_quic_fix_cubic_bytes_quantization, | |
100 true) | |
101 | |
102 // If true, fix Cubic\'s use of kBetaLastMax for n-connection emulation. | |
103 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_beta_last_max, true) | |
104 | |
105 // If greater than zero, mean RTT variation is multiplied by the specified | 90 // If greater than zero, mean RTT variation is multiplied by the specified |
106 // factor and added to the congestion window limit. | 91 // factor and added to the congestion window limit. |
107 QUIC_FLAG(double, FLAGS_quic_bbr_rtt_variation_weight, 0.0f) | 92 QUIC_FLAG(double, FLAGS_quic_bbr_rtt_variation_weight, 0.0f) |
108 | 93 |
109 // Congestion window gain for QUIC BBR during PROBE_BW phase. | 94 // Congestion window gain for QUIC BBR during PROBE_BW phase. |
110 QUIC_FLAG(double, FLAGS_quic_bbr_cwnd_gain, 2.0f) | 95 QUIC_FLAG(double, FLAGS_quic_bbr_cwnd_gain, 2.0f) |
111 | 96 |
112 // If true, do not send or process stop waiting frames in QUIC if the NSTP | 97 // If true, do not send or process stop waiting frames in QUIC if the NSTP |
113 // connection option is provided. | 98 // connection option is provided. |
114 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_no_stop_waiting_frames, false) | 99 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_no_stop_waiting_frames, false) |
115 | 100 |
116 // Allows one self address change. | 101 // Allows one self address change. |
117 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_allow_one_address_change, false) | 102 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_allow_one_address_change, false) |
118 | 103 |
119 // If true, QUIC BBR stores a max filtered number of bytes delivered at a rate | 104 // If true, QUIC BBR stores a max filtered number of bytes delivered at a rate |
120 // faster than the sending rate. | 105 // faster than the sending rate. |
121 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes, true) | 106 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes, true) |
122 | 107 |
123 // If true, allow cubic updates on every ack, rather than occasionally limiting | |
124 // the frequency to once every 30ms. | |
125 QUIC_FLAG(bool, | |
126 FLAGS_quic_reloadable_flag_quic_enable_cubic_per_ack_updates, | |
127 true) | |
128 | |
129 // Support bandwidth resumption in QUIC BBR. | 108 // Support bandwidth resumption in QUIC BBR. |
130 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_bandwidth_resumption, false) | 109 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_bandwidth_resumption, false) |
131 | 110 |
132 // Add the equivalent number of bytes as 3 TCP TSO segments to QUIC's BBR CWND. | 111 // Add the equivalent number of bytes as 3 TCP TSO segments to QUIC's BBR CWND. |
133 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd, false) | 112 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd, false) |
134 | 113 |
135 // If true, enable version 38 which supports new PADDING frame and respects NSTP | 114 // If true, enable version 38 which supports new PADDING frame and respects NSTP |
136 // connection option. | 115 // connection option. |
137 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_version_38, true) | 116 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_version_38, true) |
138 | 117 |
(...skipping 26 matching lines...) Expand all Loading... |
165 // If enabled, use refactored stream creation methods. | 144 // If enabled, use refactored stream creation methods. |
166 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_refactor_stream_creation, false) | 145 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_refactor_stream_creation, false) |
167 | 146 |
168 // A second take on fixing QUIC BBR packet conservation. | 147 // A second take on fixing QUIC BBR packet conservation. |
169 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_fix_conservation2, true) | 148 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_fix_conservation2, true) |
170 | 149 |
171 // If true, GFEs generate and validate source address token using the actual | 150 // If true, GFEs generate and validate source address token using the actual |
172 // client IP for proxied session. | 151 // client IP for proxied session. |
173 QUIC_FLAG(bool, | 152 QUIC_FLAG(bool, |
174 FLAGS_quic_reloadable_flag_quic_use_client_address_for_stk_in_proxy, | 153 FLAGS_quic_reloadable_flag_quic_use_client_address_for_stk_in_proxy, |
175 false) | 154 true) |
176 | 155 |
177 // If true, export a varz mapping QUIC non 0-rtt handshake with corresponding | 156 // If true, export a varz mapping QUIC non 0-rtt handshake with corresponding |
178 // frontend service. | 157 // frontend service. |
179 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_account_handshake, false) | 158 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_account_handshake, false) |
180 | 159 |
181 // Allows the 3RTO QUIC connection option to close a QUIC connection after | 160 // Allows the 3RTO QUIC connection option to close a QUIC connection after |
182 // 3RTOs if there are no open streams. | 161 // 3RTOs if there are no open streams. |
183 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_3rtos, false) | 162 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_3rtos, false) |
184 | 163 |
185 // If true, enable experiment for testing PCC congestion-control. | 164 // If true, enable experiment for testing PCC congestion-control. |
186 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_pcc, false) | 165 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_pcc, false) |
187 | 166 |
188 // If true, enable QUIC v40. | 167 // If true, enable QUIC v40. |
189 QUIC_FLAG(bool, FLAGS_quic_enable_version_40, false) | 168 QUIC_FLAG(bool, FLAGS_quic_enable_version_40, false) |
190 | 169 |
191 // If true, use the more CPU efficient bandwidth sampler datastructure. | 170 // If true, use the more CPU efficient bandwidth sampler datastructure. |
192 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_faster_bandwidth_sampler, false) | 171 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_faster_bandwidth_sampler, true) |
193 | 172 |
194 // In QUIC, QuicSession gets notified when stream frames are acked, discarded or | 173 // In QUIC, QuicSession gets notified when stream frames are acked, discarded or |
195 // retransmitted. | 174 // retransmitted. |
196 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_use_stream_notifier2, false) | 175 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_use_stream_notifier2, false) |
197 | 176 |
198 // When true, defaults to BBR congestion control instead of Cubic. | 177 // When true, defaults to BBR congestion control instead of Cubic. |
199 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_default_to_bbr, false) | 178 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_default_to_bbr, false) |
| 179 |
| 180 // Allow a new rate based recovery in QUIC BBR to be enabled via connection |
| 181 // option. |
| 182 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_rate_recovery, false) |
| 183 |
| 184 // If true, allow trailing headers with duplicate keys, and combine the values |
| 185 // from duplicate keys into a single delimted header. |
| 186 QUIC_FLAG(bool, |
| 187 FLAGS_quic_reloadable_flag_quic_handle_duplicate_trailers, |
| 188 false) |
| 189 |
| 190 // Allows QUIC BBR up to twice the previously measured ack aggregation to be |
| 191 // added to the CWND as long as bytes_in_flight goes below the target recently. |
| 192 QUIC_FLAG(bool, |
| 193 FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes2, |
| 194 false) |
OLD | NEW |