Subject: [quicwg/base-drafts] Crypto retx timeout should have higher priority than time based loss detection (#2565)

From: Yang Chi <[email-masked]>
Date: Fri, 29 Mar 2019 09:06:44 -0700

In both SetLossDetectionTimer() and OnLossDetectionTimeout(), the loss_time based timer setup and loss detection happens before the crypto loss recovery logics. That seems at the cross road with the idea that crypto packets having higher priority in loss recovery. In fact in OnLossDetectionTimerou(), if loss_time is present and we go into DetectLostPackets(), then we will only decect loss of one packet number space between Initial and Handshake. Plus the loss_time used to set the timer is the earliest among all possible values, which means even if only one of Initial and Handshake space has inflight packets, we may still not retransmit all the inflight packets when this timer fires. So this current code really doesn't follow the idea that when crypto is inflight and loss timer fires, all inflight crypto needs to be retransmitted.

If we change the code so that crypto is handled the first, we can also reduce the states need to be maintained and simplify some of the functions. Current draft 3 loss_times, one per packet number space. By always handling crypto first, we will need such loss_time for AppData space only, and no need to have the helper function to GetEarliestLossTime().

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2565