-
Notifications
You must be signed in to change notification settings - Fork 673
Add support of QMux #5984
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
masa-koz
wants to merge
33
commits into
microsoft:main
Choose a base branch
from
masa-koz:masa-koz/qmux-01
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Add support of QMux #5984
Changes from all commits
Commits
Show all changes
33 commits
Select commit
Hold shift + click to select a range
837e9fa
Implement draft-ietf-quic-qmux-01
masa-koz c3b44b1
Improve sending code
masa-koz d91f9e0
Improve receiving code
masa-koz c76eae9
refactoring TLS API
masa-koz efd3c82
refactoring TLS API
masa-koz 889af0e
refactoring TLS API
masa-koz 4b6b25c
cleanup
masa-koz fd56bdf
fix for windows
masa-koz 0275f94
WIP in schannel
masa-koz 5e70ee3
schannel for QMux works
masa-koz df9098a
fix openssl for latest API change
masa-koz a3ef139
handle connect error correctly
masa-koz d42a322
fix for linux
masa-koz 9a451a4
copy a correct address when QMux is used
masa-koz 45db8b4
use %I64u
masa-koz 3fcc98e
use PRIu64
masa-koz 2be39bf
free encode TP
masa-koz 17b1460
delete unnecessary uninitialization
masa-koz 41d1485
add missing uninitialization
masa-koz ff7b0d8
delete its own initializer
masa-koz 7ff8bdc
set ALPN correctly
masa-koz 55d9b9a
rename,etc
masa-koz 558a56b
WIP in quictls
masa-koz bf8adf8
QMux by openssl works
masa-koz db160aa
fix for CI
masa-koz f06b5c1
fix for CI
masa-koz f6a20d0
revert change in CxPlatTlsProcessData
masa-koz 1ef8b90
clog
masa-koz 9509354
fix in MsQuicEtw.man
masa-koz c01965d
Merge remote-tracking branch 'origin/main' into masa-koz/qmux-01
masa-koz e5849b1
support resumption and early data
masa-koz 8df260a
change for Rust ffi and a nit fix
masa-koz 7adc417
rename variables, add comment, fix nits
masa-koz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -34,6 +34,7 @@ set(SOURCES | |
| packet_builder.c | ||
| packet_space.c | ||
| path.c | ||
| qmux.c | ||
| range.c | ||
| recv_buffer.c | ||
| registration.c | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we will want to avoid these API change.
QMux should be useable by the app transparently, with some initial configuration to enable it, but using the usual APIs for everything else.
We currently have some work that also involve underlying transport configuration and should define how we want this config to look like.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I largely agree with the direction of avoiding API changes and keeping QMux transparent to applications, with only minimal initial configuration.
However, I think there are some cases where we need to decide in advance whether we are using regular QUIC or QMux. In particular, for cryptographic operations, regular QUIC relies on the built-in QUIC crypto mechanisms, whereas QMux would handle these aspects differently within its own layer.
This could become problematic when configuration must be done prior to connection start. For example, settings related to resumption tickets or other crypto-related parameters may depend on whether the underlying transport is standard QUIC or QMux. If that distinction is not known early enough, it may be unclear how or where such configurations should be applied.
So while I agree with keeping the APIs unified, we may need to consider how to handle these pre-start configurations in a way that accounts for the transport differences.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's the challenge. Our current thinking is to add some more configuration at the registration level to decide which underlying transport to use. We are looking for something flexible enough to allow for a variety of underlying transport configurations. But that is early thinking.