Добрый день, On Mon, May 30, 2022 at 04:27:54PM +0400, Roman Arutyunyan wrote: > Добрый день, > > Да, я видел. спасибо. > > > On 30 May 2022, at 16:22, [email protected] wrote: > > > > Добрый день Роман. > > > > Скинул ссылку с дампом на личную почту. > > Вероятно, что могло попасть в спам, т.к. предыдущее письмо тоже осталось > > без ответа > > > > > > -- > > С уважением, > > Izorkin mailto:[email protected] > > > > _______________________________________________ > > nginx-ru mailing list -- [email protected] > > To unsubscribe send an email to [email protected] > > ---- > Roman Arutyunyan > [email protected]
> _______________________________________________ > nginx-ru mailing list -- [email protected] > To unsubscribe send an email to [email protected] Удалось выяснить следующее. Имеет место проблема на стороне Хрома. Если точнее, в гугловой библиотоке QUICHE. Проблемa триггерится комбинацией EarlyData + HelloRetryRequest. Если Хром отправил EarlyData, которую сервер проигнорировал, то далее клиент не шлет новый ClientHello в ответ на HelloRetryRequest т.к. зачем-то ждет подтверждения EarlyData. В итоге соединение зависает и таймаутится. ClientHello -> EarlyData -> (ignore) <- HelloRetryRequest (timeout) Самый простой способ обойти проблему - избежать отправки HelloRetryRequest. В рассматриваемом случае для этого достаточно было убрать из конфигурации nginx директиву ssl_ecdh_curve. Заткнуть это также можно и в QUICHE при помощи следующего патча: diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc index d2976006..ad5c4d3c 100644 --- a/quiche/quic/core/quic_session.cc +++ b/quiche/quic/core/quic_session.cc @@ -2404,6 +2404,9 @@ bool QuicSession::RetransmitLostData() { return false; } } + if (connection()->encryption_level() == ENCRYPTION_ZERO_RTT) { + return true; + } while (!streams_with_pending_retransmission_.empty()) { if (!CanWriteStreamData()) { break; ---- Roman Arutyunyan [email protected] _______________________________________________ nginx-ru mailing list -- [email protected] To unsubscribe send an email to [email protected]
