[PATCH 4 of 4] QUIC: path MTU discovery

Roman Arutyunyan arut at nginx.com
Fri Jul 7 07:58:13 UTC 2023


On Thu, Jul 06, 2023 at 05:57:17PM +0400, Roman Arutyunyan wrote:
> # HG changeset patch
> # User Roman Arutyunyan <arut at nginx.com>
> # Date 1688481216 -14400
> #      Tue Jul 04 18:33:36 2023 +0400
> # Node ID 1a49fd5d2013b6c8d50263499e6ced440927e949
> # Parent  a1ea543d009311765144351b2557c00c8e6445bf
> QUIC: path MTU discovery.
> 
> MTU selection starts by stepping up until the first failure.  Then binary
>in search is used to find the path MTU.

[..]

As an alternative, the ascending part can be changed from additive to
multiplicative, which would work better on the off chance MTU is really high.

diff --git a/src/event/quic/ngx_event_quic_migration.c b/src/event/quic/ngx_event_quic_migration.c
--- a/src/event/quic/ngx_event_quic_migration.c
+++ b/src/event/quic/ngx_event_quic_migration.c
@@ -11,7 +11,6 @@
 
 
 #define NGX_QUIC_PATH_MTU_DELAY       1000
-#define NGX_QUIC_PATH_MTU_STEP        256
 #define NGX_QUIC_PATH_MTU_PRECISION   16
 
 
@@ -592,7 +591,7 @@ ngx_quic_discover_path_mtu(ngx_connectio
         path->mtud = (path->mtu + path->max_mtu) / 2;
 
     } else {
-        path->mtud = path->mtu + NGX_QUIC_PATH_MTU_STEP;
+        path->mtud = path->mtu * 2;
 
         if (path->mtud >= qc->ctp.max_udp_payload_size) {
             path->mtud = qc->ctp.max_udp_payload_size;

--
Roman Arutyunyan


More information about the nginx-devel mailing list