quinn-rs / quinn

Async-friendly QUIC implementation in Rust
Apache License 2.0
3.84k stars 394 forks source link

ACKs should be sent unilaterally when the number of unacknowledged packets is large #1760

Closed Ralith closed 8 months ago

Ralith commented 9 months ago

Sending ACKs is only required after receiving an ACK-eliciting packet, but an endpoint that mostly sends data might go arbitrarily long without that happening. In those cases, for the benefit of the receiver we should occasionally include ACK frames when sending ACK-eliciting data.

Spec:

When sending a packet for any reason, an endpoint SHOULD attempt to include an ACK frame if one has not been sent recently. Doing so helps with timely loss detection at the peer.

See also https://github.com/quinn-rs/quinn/issues/1756.