private-octopus / picoquic

Minimal implementation of the QUIC protocol
MIT License
523 stars 153 forks source link

Duplicate connection in QUIC Interop test L1 with NGTCP #1622

Closed huitema closed 3 months ago

huitema commented 5 months ago

Logs show "51 connections instead of 50". The root cause seems to be:

1) NGTCP formats a connection request (client Hello, etc.) 2) Picoquic sends a reply, but the reply is lost. 3) NGTCP repeats the request after a very long time (38 seconds!). At that point, the connection context for the previous connection has been released. Picoquic creates a new context. 4) New connection proceeds.

The bug would disappear if:

Same connection ID is hard to implement. Larger timeout may be simpler. NGTCP proposes a timeout delay of 180 seconds (3 minutes). Picoquic did not send the idle timeout value, which feels like a bug. If picoquic negotiated a timeout value larger than 30 seconds, the connection context would be present.

huitema commented 5 months ago

The simple solution is to increment the timeout delay parameter for the interop test runs. Increasing both the client and the server timeout allow other implementations to go through their slow repeat process and complete the connections.

huitema commented 3 months ago

Fixed, by PR #1618