quic_gso on;
- To limit maximum UDP payload size on receive path:
-
- quic_mtu <size>;
-
To set host key for various tokens:
quic_host_key <filename>;
Optimized sending is only supported on Linux featuring UDP_SEGMENT.
- Syntax: quic_mtu size;
- Default: quic_mtu 65527;
- Context: http | stream, server
-
- Sets the QUIC max_udp_payload_size transport parameter value.
- This is the maximum UDP payload that we are willing to receive.
-
-
Syntax: quic_host_key file;
Default: -
Context: http | stream, server
ngx_flag_t disable_active_migration;
ngx_msec_t timeout;
ngx_str_t host_key;
- size_t mtu;
size_t stream_buffer_size;
ngx_uint_t max_concurrent_streams_bidi;
ngx_uint_t max_concurrent_streams_uni;
tp->max_idle_timeout = qcf->timeout;
- tp->max_udp_payload_size = qcf->mtu;
+ tp->max_udp_payload_size = NGX_QUIC_MAX_UDP_PAYLOAD_SIZE;
nstreams = qcf->max_concurrent_streams_bidi
+ qcf->max_concurrent_streams_uni;
static void *ngx_http_v3_create_srv_conf(ngx_conf_t *cf);
static char *ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent,
void *child);
-static char *ngx_http_quic_mtu(ngx_conf_t *cf, void *post,
- void *data);
static char *ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
static void *ngx_http_v3_create_loc_conf(ngx_conf_t *cf);
static char *ngx_http_v3_push(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
-static ngx_conf_post_t ngx_http_quic_mtu_post =
- { ngx_http_quic_mtu };
-
-
static ngx_command_t ngx_http_v3_commands[] = {
{ ngx_string("http3"),
offsetof(ngx_http_v3_srv_conf_t, quic.gso_enabled),
NULL },
- { ngx_string("quic_mtu"),
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
- ngx_conf_set_size_slot,
- NGX_HTTP_SRV_CONF_OFFSET,
- offsetof(ngx_http_v3_srv_conf_t, quic.mtu),
- &ngx_http_quic_mtu_post },
-
{ ngx_string("quic_host_key"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
ngx_http_quic_host_key,
h3scf->max_concurrent_pushes = NGX_CONF_UNSET_UINT;
h3scf->max_concurrent_streams = NGX_CONF_UNSET_UINT;
- h3scf->quic.mtu = NGX_CONF_UNSET_SIZE;
h3scf->quic.stream_buffer_size = NGX_CONF_UNSET_SIZE;
h3scf->quic.max_concurrent_streams_bidi = NGX_CONF_UNSET_UINT;
h3scf->quic.max_concurrent_streams_uni = NGX_HTTP_V3_MAX_UNI_STREAMS;
conf->max_blocked_streams = conf->max_concurrent_streams;
- ngx_conf_merge_size_value(conf->quic.mtu, prev->quic.mtu,
- NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
-
ngx_conf_merge_size_value(conf->quic.stream_buffer_size,
prev->quic.stream_buffer_size,
65536);
}
-static char *
-ngx_http_quic_mtu(ngx_conf_t *cf, void *post, void *data)
-{
- size_t *sp = data;
-
- if (*sp < NGX_QUIC_MIN_INITIAL_SIZE
- || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE)
- {
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "\"quic_mtu\" must be between %d and %d",
- NGX_QUIC_MIN_INITIAL_SIZE,
- NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
-
- return NGX_CONF_ERROR;
- }
-
- return NGX_CONF_OK;
-}
-
-
static char *
ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
static void *ngx_stream_quic_create_srv_conf(ngx_conf_t *cf);
static char *ngx_stream_quic_merge_srv_conf(ngx_conf_t *cf, void *parent,
void *child);
-static char *ngx_stream_quic_mtu(ngx_conf_t *cf, void *post, void *data);
static char *ngx_stream_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
-static ngx_conf_post_t ngx_stream_quic_mtu_post =
- { ngx_stream_quic_mtu };
static ngx_command_t ngx_stream_quic_commands[] = {
offsetof(ngx_quic_conf_t, timeout),
NULL },
- { ngx_string("quic_mtu"),
- NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
- ngx_conf_set_size_slot,
- NGX_STREAM_SRV_CONF_OFFSET,
- offsetof(ngx_quic_conf_t, mtu),
- &ngx_stream_quic_mtu_post },
-
{ ngx_string("quic_stream_buffer_size"),
NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
ngx_conf_set_size_slot,
*/
conf->timeout = NGX_CONF_UNSET_MSEC;
- conf->mtu = NGX_CONF_UNSET_SIZE;
conf->stream_buffer_size = NGX_CONF_UNSET_SIZE;
conf->max_concurrent_streams_bidi = NGX_CONF_UNSET_UINT;
conf->max_concurrent_streams_uni = NGX_CONF_UNSET_UINT;
ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000);
- ngx_conf_merge_size_value(conf->mtu, prev->mtu,
- NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
-
ngx_conf_merge_size_value(conf->stream_buffer_size,
prev->stream_buffer_size,
65536);
}
-static char *
-ngx_stream_quic_mtu(ngx_conf_t *cf, void *post, void *data)
-{
- size_t *sp = data;
-
- if (*sp < NGX_QUIC_MIN_INITIAL_SIZE
- || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE)
- {
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "\"quic_mtu\" must be between %d and %d",
- NGX_QUIC_MIN_INITIAL_SIZE,
- NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
-
- return NGX_CONF_ERROR;
- }
-
- return NGX_CONF_OK;
-}
-
-
static char *
ngx_stream_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{