Skip to content

Peer Stream Statistics Extension #4606

@nibanks

Description

@nibanks

Describe the feature you'd like supported

Currently we expose a number of (timing) statistics on a stream that is really useful for a sender side, but it doesn't help much for the receiver side:

typedef struct QUIC_STREAM_STATISTICS {
    uint64_t ConnBlockedBySchedulingUs;
    uint64_t ConnBlockedByPacingUs;
    uint64_t ConnBlockedByAmplificationProtUs;
    uint64_t ConnBlockedByCongestionControlUs;
    uint64_t ConnBlockedByFlowControlUs;
    uint64_t StreamBlockedByIdFlowControlUs;
    uint64_t StreamBlockedByFlowControlUs;
    uint64_t StreamBlockedByAppUs;
} QUIC_STREAM_STATISTICS;

It would be great if we could standardize a solution where the peer could give us its timing values too. This would allow a single side (i.e. the server) to get better understanding of where time is getting spent.

Proposed solution

  1. Define a new QUIC extension to send peer timing statistics on shutdown of the send path of each stream by writing an IETF draft for it.
  2. Implement the draft in MsQuic.
  3. Expose a new API for the app to query the peer stream statistics.

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestA request for new functionality

    Type

    Projects

    Status

    Planned

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions