- tune.quic.frontend.conn-tx-buffers.limit
- tune.quic.frontend.max-idle-timeout
- tune.quic.frontend.max-streams-bidi
+ - tune.quic.max-frame-loss
- tune.quic.retry-threshold
- tune.quic.socket-owner
- tune.rcvbuf.client
The default value is 100.
+tune.quic.max-frame-loss <number>
+ Warning: QUIC support in HAProxy is currently experimental. Configuration may
+ change without deprecation in the future.
+
+ Sets the limit for which a single QUIC frame can be marked as lost. If
+ exceeded, the connection is considered as failing and is closed immediately.
+
+ The default value is 10.
+
tune.quic.retry-threshold <number>
Warning: QUIC support in HAProxy is currently experimental. Configuration may
change without deprecation in the future.
unsigned int quic_frontend_max_streams_bidi;
unsigned int quic_retry_threshold;
unsigned int quic_streams_buf;
+ unsigned int quic_max_frame_loss;
#endif /* USE_QUIC */
} tune;
struct {
global.tune.quic_streams_buf = arg;
else if (strcmp(suffix, "frontend.max-streams-bidi") == 0)
global.tune.quic_frontend_max_streams_bidi = arg;
+ else if (strcmp(suffix, "max-frame-loss") == 0)
+ global.tune.quic_max_frame_loss = arg;
else if (strcmp(suffix, "retry-threshold") == 0)
global.tune.quic_retry_threshold = arg;
else {
{ CFG_GLOBAL, "tune.quic.frontend.conn-tx-buffers.limit", cfg_parse_quic_tune_setting },
{ CFG_GLOBAL, "tune.quic.frontend.max-streams-bidi", cfg_parse_quic_tune_setting },
{ CFG_GLOBAL, "tune.quic.frontend.max-idle-timeout", cfg_parse_quic_time },
+ { CFG_GLOBAL, "tune.quic.max-frame-loss", cfg_parse_quic_tune_setting },
{ CFG_GLOBAL, "tune.quic.retry-threshold", cfg_parse_quic_tune_setting },
{ 0, NULL, NULL }
}};
.quic_frontend_max_idle_timeout = QUIC_TP_DFLT_FRONT_MAX_IDLE_TIMEOUT,
.quic_frontend_max_streams_bidi = QUIC_TP_DFLT_FRONT_MAX_STREAMS_BIDI,
.quic_retry_threshold = QUIC_DFLT_RETRY_THRESHOLD,
+ .quic_max_frame_loss = QUIC_DFLT_MAX_FRAME_LOSS,
.quic_streams_buf = 30,
#endif /* USE_QUIC */
},
qc_frm_free(&frm);
}
else {
- if (++frm->loss_count >= QUIC_DFLT_MAX_FRAME_LOSS) {
+ if (++frm->loss_count >= global.tune.quic_max_frame_loss) {
TRACE_ERROR("retransmission limit reached, closing the connection", QUIC_EV_CONN_PRSAFRM, qc);
quic_set_connection_close(qc, quic_err_transport(QC_ERR_INTERNAL_ERROR));
close = 1;