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

Webtransport transport should use quic-go's EarlyConnection #3161

Open
MarcoPolo opened this issue Jan 29, 2025 · 1 comment
Open

Webtransport transport should use quic-go's EarlyConnection #3161

MarcoPolo opened this issue Jan 29, 2025 · 1 comment
Labels
effort/days Estimated to take multiple days, but less than a week effort/hours Estimated to take one or several hours exp/expert Having worked on the specific codebase is important

Comments

@MarcoPolo
Copy link
Collaborator

Right now we are adding an extra roundtrip to WebTransport connections because the server waits for the TLS handshake to complete before sending the h3 SettingsFrame.

This isn't necessary, and doesn't give us anything useful. In WebTransport we are authenticating the client with a Noise handshake, so it's okay to send the SettingsFrame to an unauthenticated client (it would also be okay otherwise as well, since by the time we have the client's h3 Settings frame we've already finished our handshake).

The implementation of this is a bit complicated because of the QUIC connection reuse code. The simplest thing is likely to only use .ListenEarly and wait for the handshake to complete in the case of non-Webtransport transports.

@MarcoPolo MarcoPolo added effort/days Estimated to take multiple days, but less than a week effort/hours Estimated to take one or several hours exp/expert Having worked on the specific codebase is important labels Jan 29, 2025
@sukunrt
Copy link
Member

sukunrt commented Jan 29, 2025

A Connection establishment RTT test would've helped prevent this:

libp2p/test-plans#52

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/days Estimated to take multiple days, but less than a week effort/hours Estimated to take one or several hours exp/expert Having worked on the specific codebase is important
Projects
None yet
Development

No branches or pull requests

2 participants