Skip to content

Implement congestion_state_updated qlog event #2026

@hfstco

Description

@hfstco

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:

  1. Expose an API by the CC code to retrieve the current state and key parameters.
    There is already a picoquic_congestion_algorithm_observe function, but it only supports one parameter. And I don't know if it is suitable/intended to do this job.

  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions