-
Notifications
You must be signed in to change notification settings - Fork 218
Description
CC algorithms have different states and different implementations of these states.
RENO, CUBIC: SS, CA, Recovery
BBRv1: Startup, Drain, ProbeBW, ProbeRTT
C4: Initial, Recovery, Cruising, Pushing
In addition to the recovery_metrics_updated qlog event (already implemented), the qlog event draft specifies an congestion_state_updated event to log these states to a qlog file, even though the implementation of these states varies across CC algorithms.
qlog-quic-events-draft (version-00, as picoquic currently supports that version)
The current implementation of the CCs and qlog makes it difficult to implement this event, because the states and key parameters aren't accessible from the qlog code. There are two options to fix this:
-
Expose an API by the CC code to retrieve the current state and key parameters.
There is already apicoquic_congestion_algorithm_observefunction, but it only supports one parameter. And I don't know if it is suitable/intended to do this job. -
Let the CC code call the qlog logging API itself.
Is the solution I prefer, but we have to avoid blocking the execution due to writing to the qlog file.