Re: nginxQuic: максимальный размер MTU
Добрый вечер, Сергей А со стороны сервере как долго сохраняется информация о MTU для текущего клиента? При новом соединении заново определяется размер? Вы писали 26 декабря 2023 г., 13:33:11: > Собственно, причина в этом: клиент (браузер) передаёт максимальный размер > содержимого датаграммы (max_udp_payload_size), который он готов принимать. > Повлиять на это со стороны сервера никак нельзя. -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
Добрый день, Сергей. Благодарю за объяснение. Жалко, что нельзя изменить параметры MTU в браузере. Вы писали 26 декабря 2023 г., 13:48:52: > При выборе, как часто выполнять шаги поиска MTU, важно соблюдать баланс > между временем схождения и нагрузкой на сеть. Поиск MTU - это такой же > трафик, поэтому текущий алгоритм старается не нагружать сеть попусту: > в текущей реализации поиск имеет отложенный старт и каждый шаг поиска > выполняется с задержкой, иначе это было бы особенно заметно на коротких > соединениях. Поэтому, если MTU замерять сразу после установки соединения > на первом запросе, это может выглядеть так, что поиск работает медленно. > Но в конечном итоге алгоритм поиска сходится за разумное время, учитывая > что, как правило, соединение HTTP/3 (как и HTTP/2) повторно используется > для нескольких (многих) запросов. -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
> On 22 Dec 2023, at 11:17, izor...@gmail.com wrote: > > Добрый день, Сергей. > > Удалось ещё немного поэкспериментировать. > Если использовать браузер, то сперва размер probe mtu составляет 1200, > а потом увеличивается до 1472. > Потом проверил через curl, там средний размер пакета составляет чуть > больше 1200, при скачивании файла только под конец размер пакета доходит > до 2400-2500. При размере файла чуть меньше 200 кб, где-то пакетов 10 > или меньше превышают 1500. Мне кажется алгоритм работает не слишком быстро. > Может ли браузер Chrome ограничивать размер QUIC пакетов? > При выборе, как часто выполнять шаги поиска MTU, важно соблюдать баланс между временем схождения и нагрузкой на сеть. Поиск MTU - это такой же трафик, поэтому текущий алгоритм старается не нагружать сеть попусту: в текущей реализации поиск имеет отложенный старт и каждый шаг поиска выполняется с задержкой, иначе это было бы особенно заметно на коротких соединениях. Поэтому, если MTU замерять сразу после установки соединения на первом запросе, это может выглядеть так, что поиск работает медленно. Но в конечном итоге алгоритм поиска сходится за разумное время, учитывая что, как правило, соединение HTTP/3 (как и HTTP/2) повторно используется для нескольких (многих) запросов. > Вы писали 21 декабря 2023 г., 13:36:21: > >> Причины могут быть разные, необязательно тюнинг числа попыток/таймаута >> может помочь. Для начала неплохо бы понимать, что происходит в сети. >> Для этого можно пронаблюдать процесс поиска MTU в debug log, >> см. строчки "probe mtu" / "ack mtu" для выбранного соединения. >> Клиентский лимит логгируется в "quic tp max_udp_payload_size". > > > -- > С уважением, > Izorkin mailto:izor...@gmail.com > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
> On 21 Dec 2023, at 16:39, izor...@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:3 > 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: 6:422067499 > 2023/12/21 14:56:30 [debug] 65958#65958: *207 post event 6F782E142608 > 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:6 > 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:izor...@gmail.com > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
Добрый день, Сергей. Удалось ещё немного поэкспериментировать. Если использовать браузер, то сперва размер probe mtu составляет 1200, а потом увеличивается до 1472. Потом проверил через curl, там средний размер пакета составляет чуть больше 1200, при скачивании файла только под конец размер пакета доходит до 2400-2500. При размере файла чуть меньше 200 кб, где-то пакетов 10 или меньше превышают 1500. Мне кажется алгоритм работает не слишком быстро. Может ли браузер Chrome ограничивать размер QUIC пакетов? Вы писали 21 декабря 2023 г., 13:36:21: > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута > может помочь. Для начала неплохо бы понимать, что происходит в сети. > Для этого можно пронаблюдать процесс поиска MTU в debug log, > см. строчки "probe mtu" / "ack mtu" для выбранного соединения. > Клиентский лимит логгируется в "quic tp max_udp_payload_size". -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
Добрый день, Сергей. При запросе через браузер в логах проскакивают такие строки: 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:3 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_udp_payload_size:1472 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. Если делать запрос через 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: 6:422067499 2023/12/21 14:56:30 [debug] 65958#65958: *207 post event 6F782E142608 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:6 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 работает. В настройках сетевой карты установлено значение MTU 9000, но не понятно откуда берётся значение 1472. Вы писали 21 декабря 2023 г., 13:36:21: > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута > может помочь. Для начала неплохо бы понимать, что происходит в сети. > Для этого можно пронаблюдать процесс поиска MTU в debug log, > см. строчки "probe mtu" / "ack mtu" для выбранного соединения. > Клиентский лимит логгируется в "quic tp max_udp_payload_size". -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
> On 21 Dec 2023, at 13:39, izor...@gmail.com wrote: > > Добрый день, Сергей. > > Проверил через Iperf по протоколу UDP? в итоге размер пакета > составляет 9002. Получается ограничений со стороны ОС нет. > > Как можно увеличить количество попыток и игнорировать тайм-аут, > и на время отключить метод двоичного поиска? > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута может помочь. Для начала неплохо бы понимать, что происходит в сети. Для этого можно пронаблюдать процесс поиска MTU в debug log, см. строчки "probe mtu" / "ack mtu" для выбранного соединения. Клиентский лимит логгируется в "quic tp max_udp_payload_size". > Вы писали 19 декабря 2023 г., 0:31:32: > >> PMTUD сейчас реализован так: >> пробный размер пакета удваивается до первой ошибки или таймаута >> (3 неудачные попытки), затем уточняется методом двоичного поиска. > >> Фактический размер может быть ограничен link/path mtu, >> системным лимитом на максимальный размер датаграммы, >> клиентским транспортным параметром протокола. > > > -- > С уважением, > Izorkin mailto:izor...@gmail.com > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
Добрый день, Сергей. Проверил через Iperf по протоколу UDP? в итоге размер пакета составляет 9002. Получается ограничений со стороны ОС нет. Как можно увеличить количество попыток и игнорировать тайм-аут, и на время отключить метод двоичного поиска? Вы писали 19 декабря 2023 г., 0:31:32: > PMTUD сейчас реализован так: > пробный размер пакета удваивается до первой ошибки или таймаута > (3 неудачные попытки), затем уточняется методом двоичного поиска. > Фактический размер может быть ограничен link/path mtu, > системным лимитом на максимальный размер датаграммы, > клиентским транспортным параметром протокола. -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
> On 16 Nov 2023, at 21:39, izor...@gmail.com wrote: > > Здравствуйте, Sergey. > > Тогда, теоретически размер должен был бы достичь до 9000. > А у метода DPLPMTUD есть ограничение на размер пакетов и/или количество > успешных и неудачных попыток? PMTUD сейчас реализован так: пробный размер пакета удваивается до первой ошибки или таймаута (3 неудачные попытки), затем уточняется методом двоичного поиска. Фактический размер может быть ограничен link/path mtu, системным лимитом на максимальный размер датаграммы, клиентским транспортным параметром протокола. > > Вы писали 16 ноября 2023 г., 20:24:25: > >> Это происходит автоматически посредством DPLPMTUD начиная с версии 1.25.2. > >> Изменения в nginx 1.25.2 15.08.2023 > >>*) Добавление: path MTU discovery при использовании HTTP/3. > > > -- > С уважением, > Izorkin mailto:izor...@gmail.com > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
Здравствуйте, Sergey. Тогда, теоретически размер должен был бы достичь до 9000. А у метода DPLPMTUD есть ограничение на размер пакетов и/или количество успешных и неудачных попыток? Вы писали 16 ноября 2023 г., 20:24:25: > Это происходит автоматически посредством DPLPMTUD начиная с версии 1.25.2. > Изменения в nginx 1.25.2 15.08.2023 > *) Добавление: path MTU discovery при использовании HTTP/3. -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginxQuic: максимальный размер MTU
> On 16 Nov 2023, at 21:06, izor...@gmail.com wrote: > > Здравствуйте. > Между сервером и компьютером настроена сеть с поддержкой MTU 9000. WEB сервер > Nginx > при запросе отдаёт QUIC пакеты максимум в 1534 байта. Можно ли как-то > увеличить размер > пакетов? > Это происходит автоматически посредством DPLPMTUD начиная с версии 1.25.2. Изменения в nginx 1.25.2 15.08.2023 *) Добавление: path MTU discovery при использовании HTTP/3. -- Sergey Kandaurov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
nginxQuic: максимальный размер MTU
Здравствуйте. Между сервером и компьютером настроена сеть с поддержкой MTU 9000. WEB сервер Nginx при запросе отдаёт QUIC пакеты максимум в 1534 байта. Можно ли как-то увеличить размер пакетов? -- С уважением, Izorkin mailto:izor...@gmail.com ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru