Skip to content

implement changes for quic multipath #2312

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

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

divagant-martian
Copy link

@divagant-martian divagant-martian commented Jan 23, 2025

At https://github.com/n0-computer we are working on implementing multipath in quinn. Multipath requires a few changes in the nonce calculation for packet protection (described in section 4.1).

This PR implements those changes to the best of my knowledge (which is fairly limited for this repo). The tests are based on the multipath implementation for picoquic

On an implementation note, I opted for separate functions to avoid disrupting implementations that do not support multipath. Let me know if you would rather have them merged

@ctz ctz added the next-major-release breaking changes put off until next major release label Jan 23, 2025
Copy link

codecov bot commented Jan 23, 2025

Codecov Report

Attention: Patch coverage is 83.33333% with 18 lines in your changes missing coverage. Please review.

Project coverage is 94.77%. Comparing base (9697e63) to head (7af032e).
Report is 82 commits behind head on main.

Files with missing lines Patch % Lines
rustls/src/quic.rs 0.00% 18 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2312      +/-   ##
==========================================
- Coverage   94.82%   94.77%   -0.06%     
==========================================
  Files         104      104              
  Lines       24100    24199      +99     
==========================================
+ Hits        22853    22934      +81     
- Misses       1247     1265      +18     

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

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ctz ctz removed the next-major-release breaking changes put off until next major release label Jan 23, 2025
@divagant-martian divagant-martian changed the title add changes for multipath with tests add changes for quic multipath with tests Jan 23, 2025
@divagant-martian divagant-martian changed the title add changes for quic multipath with tests implement changes for quic multipath Jan 23, 2025
Copy link
Member

@djc djc left a comment

Choose a reason for hiding this comment

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

I think this is looking pretty good modulo nits. Suggest you keep this as draft until you have something working end-to-end/need to depend on it in a published crate.

@divagant-martian
Copy link
Author

divagant-martian commented Jan 24, 2025

@djc thanks for the review, just updated based on suggestions.

I can make this a draft but we I think it would be benefit for everyone if this is included in the next release. I expect the API and implementation to not change since the spec changes are fairly simple unless there's something we are missing? I hope not but there's clearly that risk. That being said, keeping it open requires us to depend on a fork for development, find a timely release for rustls for when our fork of quinn, and eventually og quinn itself, are ready in terms of multipath. I would rather not try to rush the rustls team pestering you all with a release when we needed it but instead allow you to include it in the next one whenever that happens, since that will most likely happen before us having a full multipath implementation we are happy with.

Let me know what you think!

ETA: codecov is unhappy, but it wants me to test the default impl of the multipath methods. Should I add these tests?

@djc
Copy link
Member

djc commented Jan 24, 2025

I can make this a draft but we I think it would be benefit for everyone if this is included in the next release. I expect the API and implementation to not change since the spec changes are fairly simple unless there's something we are missing? I hope not but there's clearly that risk. That being said, keeping it open requires us to depend on a fork for development, find a timely release for rustls for when our fork of quinn, and eventually og quinn itself, are ready in terms of multipath. I would rather not try to rush the rustls team pestering you all with a release when we needed it but instead allow you to include it in the next one whenever that happens, since that will most likely happen before us having a full multipath implementation we are happy with.

We make semver-compatible releases quite often and are pretty fast at doing it. I can virtually guarantee that we can get it done within like one workday of whenever your downstream work is ready, but I would really prefer to hold off on merging this until that is done.

ETA: codecov is unhappy, but it wants me to test the default impl of the multipath methods. Should I add these tests?

Seems fine to me, but maybe @ctz has a different opinion?

Also, can you file a followup issue with the next-major-release label to drop these default impls?

@divagant-martian
Copy link
Author

But I would really prefer to hold off on merging this until that is done

Understood, we'll be knocking in your door hopefully not too far in the future

can you file a followup issue with the next-major-release label to drop these default impls?

Issue created #2315 but it's pending labels (I can't add them myself)

@djc
Copy link
Member

djc commented Jan 24, 2025

can you file a followup issue with the next-major-release label to drop these default impls?

Issue created #2315 but it's pending labels (I can't add them myself)

Thanks, added the label.

@ctz
Copy link
Member

ctz commented Jan 24, 2025

Seems fine to me, but maybe @ctz has a different opinion?

I generally do not write tests for trivial functions just for the coverage. This PR currently looks great to me coverage-wise.

@cpu
Copy link
Member

cpu commented Jan 24, 2025

the diff looks good to me too, thanks! If you had time I feel like this could be squashed into a singular commit instead of three.

@cpu
Copy link
Member

cpu commented Feb 10, 2025

Is this ready to be flipped out of draft status w/ a rebase & squash or would folks still prefer to see this held until the end-to-end feature works with Quinn?

If the latter, could someone link up the Quinn PR it's blocked on? I took a quick scan and didn't spot an obvious candidate.

@divagant-martian
Copy link
Author

divagant-martian commented Feb 10, 2025

@cpu we are working on this on our own fork for now and we are not close to be done, but we are progressing: n0-computer/quinn#28 so this will be held on the condition of finalizing for a couple months. That being said I don't expect anything in this pr to change since the api is imo obvious.

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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy