microsoft / microsoft/msquic

Peer Stream Statistics Extension

Open
#4,606 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
C
Stars
4.8k
Forks
699
Avg merge
2d 22h
Merged PRs (30d)
35

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing QUIC_STREAM_STATISTICS definition and the issue's proposed three-part scope. The work would require an IETF draft, an MsQuic implementation, and a new application API for querying peer stream statistics. Done means all three are specified and implemented, with validation that peer timing values can be obtained when a stream's send path shuts down.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.