quicwg / base-drafts Public
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 advertisement description #87
Comments
|
Yes, we'll need to sort this out; they're currently both absent from the IANA section. I haven't changed the original text, and I know it needs some work yet. The ALPN identifier probably needs to change, not just be registered. @martinthomson and I need to sort this out around #13, because HTTP/QUIC isn't the only "quic" there will be. We also need to incorporate some draft-version negotiation as part of that, as HTTP/2 did (and TLS 1.3 is doing, I believe), so that implementations can negotiate appropriate versions / fail cleanly. Let's use this issue to track those work items -- thanks for filing it! |
Indeed, I'm really interested in this area. Do you think there is argument for doing away with the |
|
Perhaps. Here's the thing: QUIC version and app-layer protocol aren't the same. So the question is whether there needs to be a hint from the application layer into QUIC's version negotiation about what versions the server supports. Here are the paths I see that we need to support:
Having a v= parameter in Alt-Svc does solve all of these. It gives a useful springboard if TLS allows 0-RTT using data obtained over TCP. The client will cache the list of supported versions with the Alt-Svc header and will learn about new ones when the Alt-Svc entry gets refreshed periodically. Ideally, I'd like to see these solved for QUIC independent of HTTP, though -- if/when we manage that, the Alt-Svc parameter could become unnecessary. |
|
Actually, thinking about this further, I'm wrong on (at least) one point above: Version negotiation adds an RTT to whatever TLS requires. So if the client guesses incorrectly, 1-RTT handshakes will take 2 RTTs to complete, because the TLS ClientHello can't be delivered successfully until client and server agree on the format. That means the first time worst case is 2 RTTs, and eliminating one of them is worthwhile. |
|
I agree with your points here. The new text in #90 is looking pretty good and refreshed my memory about some of the discussions on how to utilise the version information bytes (address-space). |
|
I've posted a PR for the transport/TLS layers (#99) that describes what I think the version negotiation model could look like to solve this. There may (for better or worse) still be some value in having the hint in Alt-Svc. If a client is able to reuse the 0-RTT context it got from TLS/TCP with QUIC+TLS, then having the correct version from the start is the key to first-time 0-RTT. If the 0-RTT context isn't portable (or isn't sufficient, e.g. the STK is missing), it still gets us mostly-guaranteed 1-RTT setup instead of 1-2 RTT, which is worth something. |
|
Merged PR #90; adding confirm-consensus tag. |
|
I have two minor comments about the text added to address this original issue:
|
|
The text in #235 already says the quic= parameter is optional. I've modified the text to be more host-neutral. |
|
Over a week since I e-mailed the list, and no objections. Closing. |
Hi @MikeBishop,
The QUIC advertisement section of the HTTP mapping document introduces two terms:
quicvAre these to be defined as part of the mapping document? If so, they should be registered in line with the policies set out in RFC 7301 or RFC 7838 respectively.
The text was updated successfully, but these errors were encountered: