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's roadmap to stable #688

Closed
4 of 5 tasks
Stebalien opened this issue Jul 23, 2019 · 6 comments
Closed
4 of 5 tasks

QUIC's roadmap to stable #688

Stebalien opened this issue Jul 23, 2019 · 6 comments
Assignees

Comments

@Stebalien
Copy link
Member

Stebalien commented Jul 23, 2019

QUIC is better than TCP+yamux, etc. in pretty much every way and we should try to make it the default ASAP, even if that means not waiting for the IETF to come out with the final spec.

Remaining questions/issues are:

Am I missing something?

@raulk
Copy link
Member

raulk commented Jul 23, 2019

Protocol Versioning: Do we need to use a /quic-alpha protocol/multicodec or can we rely on QUIC protocol version negotiation to catch protocol version mismatches. That is, is there any way to create "custom" protocol versions.

@marten-seemann - does the QUIC WG make any guarantees in terms of backwards compatibility of drafts?

@raulk
Copy link
Member

raulk commented Jul 23, 2019

Am I missing something?

@Stebalien – We need to settle on the stream closure discussion. Added a point for that. Update: I chatted with @marten-seemann a few days ago, and clarified a misunderstanding he had about the current behaviour of Stream#Close(). We're close to consensus on that issue.

@marten-seemann
Copy link
Contributor

Thanks for opening this issue @Stebalien. Unfortunately, it looks like the release of the RFC might take some more time, so I was about to suggest the same thing.

Protocol versioning is solved QUIC itself. Every new draft (which is published at least 3 times / year) bumps up the version number, so we won't even have to use custom version numbers here, we can just use the official draft version number. @raulk There's no backwards compatibility between draft versions (things are already complicated enough within one version), but an implementation may support multiple versions at the same time.

Ed25519 support and sharing the handshake with TLS is really the same issue, since the TLS handshake already has Ed25519 support. Implementing this will be messy, since on QUIC, we don't accept an underlying connection first, on which we then perform the handshake (and the tls.ClientHelloInfo doesn't come with a context). We can work around this by keeping some tracking data structure in go-libp2p-quic-transport. Won't be the nicest code, but we can get it working nevertheless. I'll start working on a PR when I'm back from the IETF meeting.

I'm not sure if we really need to block this on the connection reuse but if so, libp2p/go-libp2p-quic-transport#63 is a draft PR that I'd like to get some comments on before moving forward.

@Stebalien
Copy link
Member Author

Awesome! (well, not the RFC delays but getting the protocol right trumps everything).

I'm not sure if we really need to block this on the connection reuse but if so, libp2p/go-libp2p-quic-transport#63 is a draft PR that I'd like to get some comments on before moving forward.

I'd like feature parity with TCP if we're going to make this the default.

@marten-seemann
Copy link
Contributor

Settle on stream closure discussion (libp2p/go-libp2p-core#10)

I'm wondering if this should be separate from this issue. We already have a stream interface that works. Settling the stream closure discussion might or might not require us to change the wrapping of quic-go in go-libp2p-quic-transport, but that applies for the other stream multiplexers as well.

@marten-seemann
Copy link
Contributor

QUIC has been a default transport for a while now.

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

No branches or pull requests

3 participants