quicwg / base-drafts

Internet-Drafts that make up the base QUIC specification
https://quicwg.org
1.63k stars 205 forks source link

Crypto Retransmission Timeout interacts poorly with Congestion Control #2886

Closed marten-seemann closed 5 years ago

marten-seemann commented 5 years ago

The crypto retransmission timeout works similar to the PTO timeout. On each timer expiration, you are supposed to send some data, and do an exponential backoff. However, there's an important difference: PTO packets are not blocked by the congestion controller, whereas crypto retransmissions are.

This can lead to a deadlock: Consider the case where the CFIN is lost, and the client sends all the available window of application data. When the crypto retransmission timer fires, the client would be supposed to retransmit the CFIN, but the congestion controller will not allow that. Furthermore, since the CFIN was lost, the server won't be able to read any of the 1-RTT packets, so cwnd will never be cleared.

ianswett commented 5 years ago

It was not intended for crypto timeout retransmissions to be blocked by the congestion controller.

Does PR #2806 fix this by merging them?