Re: nginxQuic: медленный ответ от сервера.

izorkin на gmail.com izorkin на gmail.com
Вс Июн 12 18:35:48 UTC 2022


Здравствуйте, Роман.

Спасибо за помощь в поиске и устранении проблемы!
Отключение директивы ssl_ecdh_curve в Nginx помогло.

Планируется ли делать баг-репорт в Chrome?

Вы писали 12 июня 2022 г., 21:27:53:

> Добрый день,

> Удалось выяснить следующее.  Имеет место проблема на стороне Хрома.  Если
> точнее, в гугловой библиотоке 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
> arut на nginx.com
> _______________________________________________
> nginx-ru mailing list -- nginx-ru на nginx.org
> To unsubscribe send an email to nginx-ru-leave на nginx.org


-- 
С уважением,
 Izorkin                          mailto:izorkin на gmail.com



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