Skip to content
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

feat(qlog): log version_information on client #1505

Merged
merged 7 commits into from
Jan 11, 2024

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Dec 10, 2023

👋 Hi there

This is Max, first time contributor.

Let me know if this tiny pull request is of some help. Would appreciate a review and pointers to what to tackle next.

Thank you for QUIC support in Firefox!


This commit adds support for the qlog version_information QUIC event on the client.

Depends on #1504

Depends on cloudflare/quiche#1684

Meta issue: #528

This commit does not add server-side support. I was unsure where to add the qlog::xxx call. With my limited knowledge of the code base, I would place it in the TransportParametersHandler, though as of today, it does not have access to the connection's NeqoQlog. Thoughts?

This commit upgrades all `neqo-*` crates to use `qlog` `v0.10.0`.

See also `qlog` `v0.10.0` release pull request cloudflare/quiche#1647
This commit adds support for the qlog [`version_information` QUIC
event](https://quicwg.org/qlog/draft-ietf-quic-qlog-quic-events.html#name-version_information)
on the client.

Depends on mozilla#1504

Depends on cloudflare/quiche#1684

Meta issue: mozilla#528
Copy link
Member

@martinthomson martinthomson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the server, look in server.rs for fn accept_connection(...). That is where a new connection is handled. There shouldn't be a negotiated equivalent on the server, but the recording of failed version negotiation can be recorded.

For VN, you can make a call in fn process_input(...) right where it calls PacketBuilder::version_negotiation(...), which is where the Version Negotiation packet is sent. For that, you'll need to create a new QLog instance with self.create_qlog_trace(attempt_key). You will have to follow other code for that. I probably wouldn't bother trying to reduce the number of logging events from the same remote address and DCID, because that just creates a cleanup hazard.

That won't catch all cases, but enough.

@codecov-commenter
Copy link

codecov-commenter commented Dec 20, 2023

Codecov Report

Attention: 21 lines in your changes are missing coverage. Please review.

Comparison is base (d1639a4) 87.61% compared to head (3f52896) 87.56%.

Files Patch % Lines
neqo-transport/src/qlog.rs 38.23% 21 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1505      +/-   ##
==========================================
- Coverage   87.61%   87.56%   -0.05%     
==========================================
  Files         117      117              
  Lines       37848    37841       -7     
==========================================
- Hits        33160    33135      -25     
- Misses       4688     4706      +18     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Patch no longer needed since upgrade to neqo v0.11.0 mozilla#1547.
@mxinden
Copy link
Collaborator Author

mxinden commented Jan 11, 2024

With #1547 merged, all outstanding comments are addressed. @martinthomson or @larseggert could either of you take another look?

@martinthomson martinthomson merged commit abf2636 into mozilla:main Jan 11, 2024
9 checks passed
@martinthomson
Copy link
Member

I opened #1549 for the server side. I was waiting to see what you planned there, that's all.

@mxinden
Copy link
Collaborator Author

mxinden commented Jan 13, 2024

I opened #1549 for the server side. I was waiting to see what you planned there, that's all.

Sorry, badly communicated from my end. I prepared the server side in #1531.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants