Welcome! Log In Create A New Profile

Advanced

[PATCH 2 of 2] QUIC: removed "quic_mtu" directive

Roman Arutyunyan
May 11, 2023 02:28AM
# HG changeset patch
# User Roman Arutyunyan <arut@nginx.com>
# Date 1683783928 -14400
# Thu May 11 09:45:28 2023 +0400
# Branch quic
# Node ID 5db9c42c3d4bf862642b85d8f508257a1ad9c694
# Parent d2cc7adb261edc92988411ac7e0c8059419c201d
QUIC: removed "quic_mtu" directive.

The directive used to set the value of the "max_udp_payload_size" transport
parameter. According to RFC 9000, Section 18.2, the value specifies the size
of buffer for reading incoming datagrams:

This limit does act as an additional constraint on datagram size in
the same way as the path MTU, but it is a property of the endpoint
and not the path; see Section 14. It is expected that this is the
space an endpoint dedicates to holding incoming packets.

Current QUIC implementation uses the maximum possible buffer size (65527) for
reading datagrams.

diff --git a/src/event/quic/ngx_event_quic.h b/src/event/quic/ngx_event_quic.h
--- a/src/event/quic/ngx_event_quic.h
+++ b/src/event/quic/ngx_event_quic.h
@@ -69,7 +69,6 @@ typedef struct {
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;
diff --git a/src/event/quic/ngx_event_quic_transport.c b/src/event/quic/ngx_event_quic_transport.c
--- a/src/event/quic/ngx_event_quic_transport.c
+++ b/src/event/quic/ngx_event_quic_transport.c
@@ -1987,7 +1987,7 @@ ngx_quic_init_transport_params(ngx_quic_

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;
diff --git a/src/http/v3/ngx_http_v3_module.c b/src/http/v3/ngx_http_v3_module.c
--- a/src/http/v3/ngx_http_v3_module.c
+++ b/src/http/v3/ngx_http_v3_module.c
@@ -16,8 +16,6 @@ static ngx_int_t ngx_http_v3_add_variabl
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);
@@ -26,10 +24,6 @@ static char *ngx_http_v3_merge_loc_conf(
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"),
@@ -95,13 +89,6 @@ static ngx_command_t ngx_http_v3_comman
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,
@@ -240,7 +227,6 @@ ngx_http_v3_create_srv_conf(ngx_conf_t *
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;
@@ -277,9 +263,6 @@ ngx_http_v3_merge_srv_conf(ngx_conf_t *c

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);
@@ -335,26 +318,6 @@ ngx_http_v3_merge_srv_conf(ngx_conf_t *c


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)
{
ngx_http_v3_srv_conf_t *h3scf = conf;
diff --git a/src/stream/ngx_stream_quic_module.c b/src/stream/ngx_stream_quic_module.c
--- a/src/stream/ngx_stream_quic_module.c
+++ b/src/stream/ngx_stream_quic_module.c
@@ -16,12 +16,9 @@ static ngx_int_t ngx_stream_quic_add_var
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[] = {

@@ -32,13 +29,6 @@ static ngx_command_t ngx_stream_quic_co
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,
@@ -175,7 +165,6 @@ ngx_stream_quic_create_srv_conf(ngx_conf
*/

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;
@@ -199,9 +188,6 @@ ngx_stream_quic_merge_srv_conf(ngx_conf_

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);
@@ -260,26 +246,6 @@ ngx_stream_quic_merge_srv_conf(ngx_conf_


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)
{
ngx_quic_conf_t *qcf = conf;
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH 0 of 2] QUIC datagram size updates

Roman Arutyunyan 239 May 11, 2023 02:28AM

[PATCH 1 of 2] QUIC: resized input datagram buffer from 65535 to 65527

Roman Arutyunyan 84 May 11, 2023 02:28AM

[PATCH 2 of 2] QUIC: removed "quic_mtu" directive

Roman Arutyunyan 94 May 11, 2023 02:28AM

Re: [PATCH 2 of 2] QUIC: removed "quic_mtu" directive

Roman Arutyunyan 78 May 11, 2023 02:42AM

Re: [PATCH 2 of 2] QUIC: removed "quic_mtu" directive

Maxim Konovalov 106 May 11, 2023 11:22AM

Re: [PATCH 0 of 2] QUIC datagram size updates

Sergey Kandaurov 71 May 11, 2023 10:54AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 165
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready