Re: nginxQuic: максимальный размер MTU

Sergey Kandaurov pluknet на nginx.com
Вт Дек 26 10:33:11 UTC 2023


> On 21 Dec 2023, at 16:39, izorkin на gmail.com wrote:
> 
> Добрый день, Сергей.
> 
> При запросе через браузер в логах проскакивают такие строки:
> 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic transport parameters parsed ok
> 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp disable active migration: 0
> 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp idle_timeout:30000
> 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_udp_payload_size:1472

Собственно, причина в этом: клиент (браузер) передаёт максимальный размер
содержимого датаграммы (max_udp_payload_size), который он готов принимать.
Повлиять на это со стороны сервера никак нельзя.

> 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_data:15728640
> 
> 2023/12/21 14:55:03 [debug] 65503#65503: *154 quic path seq:0 send probe mtu:1472 pnum:2 tries:0
> 2023/12/21 14:55:05 [debug] 65503#65503: *154 quic path seq:0 ack mtu:1472
> 
> Происходит только одна попытка проверить значение MTU.

И это правильно, выбор MTU соответствует ограничению сверху:
min(1200 * 2, max_udp_payload_size) = 1472

> 
> Если делать запрос через curl локально с сервера:
> 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic transport parameters parsed ok
> 2023/12/21 14:56:30 [debug] 65924#65924: event timer add: 3: 60000:422067499
> 2023/12/21 14:56:30 [debug] 65958#65958: *207 post event 00006F782E142608
> 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp disable active migration: 0
> 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp idle_timeout:60000
> 2023/12/21 14:56:30 [debug] 65924#65924: recv: fd:25 -1 of 4096
> 2023/12/21 14:56:30 [debug] 65958#65958: *207 quic ngx_quic_set_encryption_secrets() level:2
> 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp max_udp_payload_size:65527
> 
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:2400 pnum:1 tries:0
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:2400
> 
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:4800 pnum:45 tries:0
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:4800
> 
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:9600 pnum:74 tries:0
> 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:9600
> 
> Получается, что через localhost работает.
> 

Здесь, в отличие от браузера, сurl не имеет подобных ограничений,
поэтому выбор MTU удваивается до фактического ограничения сети.

> В настройках сетевой карты установлено значение MTU 9000, но не понятно откуда берётся
> значение 1472.
> 
> Вы писали 21 декабря 2023 г., 13:36:21:
> 
>> Причины могут быть разные, необязательно тюнинг числа попыток/таймаута
>> может помочь.  Для начала неплохо бы понимать, что происходит в сети.
>> Для этого можно пронаблюдать процесс поиска MTU в debug log,
>> см. строчки "probe mtu" / "ack mtu" для выбранного соединения.
>> Клиентский лимит логгируется в "quic tp max_udp_payload_size".
> 
> 
> -- 
> С уважением,
> Izorkin                          mailto:izorkin на gmail.com
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru

-- 
Sergey Kandaurov


Подробная информация о списке рассылки nginx-ru