Peer Stream Statistics Extension
Nobody has claimed this yet.
- 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
- 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.
- Implement the draft in MsQuic.
- Expose a new API for the app to query the peer stream statistics.
Additional context
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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