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.
On linux, creating the
MsQuicConfigurationobject 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.