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

[QUIC] Implement MsQuicConfiguration cache #98354

Closed
rzikm opened this issue Feb 13, 2024 · 1 comment · Fixed by #99371
Closed

[QUIC] Implement MsQuicConfiguration cache #98354

rzikm opened this issue Feb 13, 2024 · 1 comment · Fixed by #99371
Assignees
Labels
area-System.Net.Quic in-pr There is an active PR which will close this issue when it is merged tenet-performance Performance related issue
Milestone

Comments

@rzikm
Copy link
Member

rzikm commented Feb 13, 2024

On linux, creating the MsQuicConfiguration object is expensive because we need to export the X509Certificate in PKCS12 format. Doing this for each connection separately is a waste of resources. MsQuicConfiguration objects are designed to be shared between connections. We should look into implementing a configuration cache similar to what we have for SslStream on Windows.

Preliminary benchmarks suggest this should significantly reduce handshake time and thus time-to-first-byte and related metrics in HTTP/3.

Implementing a cache for the MsQuicConfiguration objects will allow us to also later implement TLS Session resumption, allowing even faster handshake.

@rzikm rzikm added tenet-performance Performance related issue area-System.Net.Quic labels Feb 13, 2024
@ghost
Copy link

ghost commented Feb 13, 2024

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

On linux, creating the MsQuicConfiguration object is expensive because we need to export the X509Certificate in PKCS12 format. Doing this for each connection separately is a waste of resources. MsQuicConfiguration objects are designed to be shared between connections. We should look into implementing a configuration cache similar to what we have for SslStream on Windows.

Preliminary benchmarks suggest this should significantly reduce handshake time and thus time-to-first-byte and related metrics in HTTP/3.

Implementing a cache for the MsQuicConfiguration objects will allow us to also later implement TLS Session resumption, allowing even faster handshake.

Author: rzikm
Assignees: -
Labels:

tenet-performance, area-System.Net.Quic

Milestone: -

@ghost ghost added the untriaged New issue has not been triaged by the area owner label Feb 13, 2024
@ManickaP ManickaP added this to the 9.0.0 milestone Feb 13, 2024
@ghost ghost removed the untriaged New issue has not been triaged by the area owner label Feb 13, 2024
@rzikm rzikm self-assigned this Mar 6, 2024
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Mar 6, 2024
@github-actions github-actions bot locked and limited conversation to collaborators Apr 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Net.Quic in-pr There is an active PR which will close this issue when it is merged tenet-performance Performance related issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants