Open joergdeutschmann-i7 opened 4 months ago
The correction was meant to accelerate the growth of the window when the delay is large. The best I can say is that "it looked like a good idea at the time." Picoquic also implements two related ideas: the "safe resume" process to remember and reuse past conditions, and a version of chirping to detect the maximum observed data rate and use it as a target during slow start. It is entirely possible that the combination of safe resume and chirping reduces the need for pre-programmed delay thresholds.
I studied GEO transmissions for my doctorate, so I have a bit of emotional attachment there, but that was 40 years ago. It is possible that GEO satellite are becoming way less important, and that instead of the Geo delay we have to be concerned with a continuum of LEO, MEO, GEO, and then space communication.
In picoquic, there is a hard-coded
PICOQUIC_TARGET_SATELLITE_RTT
of 610ms.We wonder how this value was chosen:
https://github.com/private-octopus/picoquic/blob/c306ab45c1c6ae528e2877d8d69e98e5405b832a/picoquic/cubic.c#L273-L274 If
cubic_state->rtt_filter.rtt_filtered_min
is slightly above, e.g. 620ms,correction
is calculated to ~1, i.e., thepath_x->cwin
is hardly changed.https://github.com/private-octopus/picoquic/blob/c306ab45c1c6ae528e2877d8d69e98e5405b832a/picoquic/cubic.c#L277 If
cubic_state->rtt_filter.rtt_filtered_min
is slightly below, e.g. 600ms,correction
is calculated to ~1/6. This results in a significant reduction ofpath_x->cwin
.Both cases seem possible -- consider a GEO terminal connecting to a nearby server (< 610ms) vs. a far-distant server (> 610ms).