Opened 20 months ago
Closed 19 months ago
#2492 closed defect (invalid)
QUIC:The quic connection was not closed, when max_idle_timeout arrived.
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | http/3 | Version: | 1.23.x |
Keywords: | quic | Cc: | |
uname -a: | Linux dev.na61 4.19.91-008.x86_64 #1 SMP Fri Sep 4 17:33:26 CST 2020 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.23.4
built by gcc 9.3.0 (GCC) built with OpenSSL 1.1.0 (compatible; BoringSSL) (running with BoringSSL) TLS SNI support enabled configure arguments: --with-debug --with-http_v3_module --prefix=/home/yefei.dyf/nginx --with-cc-opt=-I/home/yefei.dyf/boringssl/include --with-ld-opt='-L/home/yefei.dyf/boringssl/ssl -L/home/yefei.dyf/boringssl/crypto' |
Description (last modified by )
The triggering logic was as follows:
- The quic connection was terminated by
ngx_quic_close_connection(c, NGX_OK)
, then setqc->close
event to three times PTO timer. - The
c->read
event was set max_idle_timeout timer. - When
c->read
was timeout, callngx_quic_close_connection(c, NGX_DONE)
, but the quic connection was not close for waitingqc->close
timer.
Change History (3)
follow-up: 2 comment:1 by , 19 months ago
Description: | modified (diff) |
---|
comment:2 by , 19 months ago
Replying to Sergey Kandaurov:
I do not see a problem there, can you elaborate?
In particular:
- idle timeout is expected to be way longer than three times PTO.
- even if idle timeout is still happens before three times PTO as set by close handler, it waits for close timer to expire
- RFC 9000, 10.1 has a related statement regarding idle timeout vs. PTO:
To avoid excessively small idle timeout periods, endpoints MUST increase the idle timeout period to be at least three times the current Probe Timeout (PTO). This allows for multiple PTOs to expire, and therefore multiple probes to be sent and lost, prior to idle timeout.
OK, Thanks for the rfc9000 details from you.
In my case, the pto time was tens of seconds calculated by ngx_quic_pto
, and the max_idle_timeout was less than three times the pto time.
According to the RFC description, this situation meets the criteria.
And this patchhttps://hg.nginx.org/nginx-quic/rev/c6db94ec3841 can help alleviate such situation.
comment:3 by , 19 months ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Tens of seconds looks quite high to be normal.
Anyway, thanks for confirming, closing this ticket.
Note:
See TracTickets
for help on using tickets.
I do not see a problem there, can you elaborate?
In particular: