private-octopus / picoquic

Minimal implementation of the QUIC protocol
MIT License
527 stars 156 forks source link

Try wifi-shadow-rtt #1545

Closed huitema closed 9 months ago

huitema commented 10 months ago

This is an attempt to mitigate issue #1481.

An annoying side effect of "wifi-spikes" (in fact, wi-fi suspensions) is that the congestion window soon becomes exhausted, causing the stack to stop the "prepare packets" callbacks. The proposal adds a "shadow rtt" API, that could be used to tell BBR to allocated CWIN credits for at least that duration.

huitema commented 10 months ago

This is probably not ready for merging yet. Let's first get report of field trials with actual wi-fi networks.

huitema commented 10 months ago

I am thinking about this some more. There are a few open issues. For example, BBR reevaluates the data rate at the end of each "epoch", understood as "one RTT", but this is not well defined during error conditions. It could be:

I tried changing this in the implementation before, but it is one of those subtle changes with cascading effects, with some test cases improving and other worsening. Maybe we need to reconsider that if the "shadow RTT" is set, so the epoch only ends if either a packet is acked, or if a timer that includes the shadow RTT elapses. But then, that probably also requires including the shadow RTT in the management of repeat timers.

Before we do any of that, it would be good to get some practical results.