aiortc / aioquic

QUIC and HTTP/3 implementation in Python
BSD 3-Clause "New" or "Revised" License
1.66k stars 236 forks source link

loss detection not triggering #17

Closed massvoice closed 5 years ago

massvoice commented 5 years ago

Hi,

I am currently using aioquic in a mobility simulation environment. There is a no connectivity zone for about 5 seconds, during which data transfer is still in place via aioquic.

In an ideal case, I am expecting packet losses when there is no connectivity for a few seconds during an ongoing transmission, but I am only getting sending probe messages and nothing else. Please help with this issue.

Thanks.

jlaine commented 5 years ago

Can you please give me steps to reproduce this? Note that QUIC uses ACK-based loss detection, which means loss is only declared once an ACK comes in which is missing some packets. In the face of 100% packet loss, no retransmission is expected:

https://tools.ietf.org/html/draft-ietf-quic-recovery-22#section-6.3.3

We have a test in place which tests the behavior in the face of random 25% packet loss (in both directions), and CI does occasionally fail, but I have yet to identify the specific case where this occurs

https://github.com/aiortc/aioquic/blob/2b9f0607e98e147d2524b21ff62cec859ca0f21a/tests/test_asyncio.py#L118

jlaine commented 5 years ago

I've revisited the recovery code and found some cases where the code did not behave as it should have. Could you give the latest code a spin please and report back?