-
Notifications
You must be signed in to change notification settings - Fork 4.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Monitoring QUIC/HTTP3 read and written bytes #84093
Comments
Tagging subscribers to this area: @dotnet/ncl Issue DetailsBackground and motivationI am looking for a reasonable way to monitor traffic (number of bytes received) on HTTP requests including HTTP/3. I found a previous issue #41949 that allows to use a custom stream implementation for H2 However, I don't see that being viable for What I would prefer is something similar as described in #31003 by @karelz using monitoring. However, the ReadAsync only seems to monitor the size of the buffer where the data is read into, but not the actual size of the received data. Is there an alternative approach to access this data? API ProposalI would be happy to use Ideally the event payload could store the size of the data without formatting it to string message. API UsageNo new public API would be required. Alternative DesignsNo response RisksNo response
|
Are you interested in HTTP payload size or bytes received on QUIC level? HTTP/3 has its own framing, which would count as part of QUIC bytes, but wouldn't count into actual HTTP payload bytes. |
I would be interested in the Quic bytes which includes the H3 frames. |
Tagging subscribers to this area: @dotnet/ncl Issue DetailsBackground and motivationI am looking for a reasonable way to monitor traffic (number of bytes received) on HTTP requests including HTTP/3. I found a previous issue #41949 that allows to use a custom stream implementation for H2 However, I don't see that being viable for What I would prefer is something similar as described in #31003 by @karelz using monitoring. However, the ReadAsync only seems to monitor the size of the buffer where the data is read into, but not the actual size of the received data: if (NetEventSource.Log.IsEnabled())
{
NetEventSource.Info(this, $"{this} Stream reading into memory of '{buffer.Length}' bytes.");
} Is there an alternative approach to access this data? API ProposalI would be happy to use Ideally the event payload could store the size of the data without formatting it to string message. API UsageNo new public API would be required. Alternative DesignsNo response RisksNo response
|
At the moment, no suggestions. This will need change in production code. If you were the one calling Quic, you'd now the amount of bytes. If you were interested in H/3 bytes, then this would be nice suggestion for HTTP telemetry. But this is neither, so I'm inclined to push this to future. If you really need this, we would take a contribution for 8.0. And if you'd be willing to do this, please let us know and talk about potential solutions before diving into implementation. |
I am busy in the coming weeks, but I can return here in the summer and discuss potential solutions before contributing. |
Awesome, thanks! |
Background and motivation
I am looking for a reasonable way to monitor traffic (number of bytes received) on HTTP requests including HTTP/3.
I found a previous issue #41949 that allows to use a custom stream implementation for H2
However, I don't see that being viable for
QuicConnetions
and H3.What I would prefer is something similar as described in #31003 by @karelz using monitoring.
However, the ReadAsync only seems to monitor the size of the buffer where the data is read into, but not the actual size of the received data:
Is there an alternative approach to access this data?
API Proposal
I would be happy to use
EventListener
to collect the described data.Ideally the event payload could store the size of the data without formatting it to string message.
API Usage
No new public API would be required.
Alternative Designs
No response
Risks
No response
The text was updated successfully, but these errors were encountered: