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

No IANA version registry #4280

Closed
larseggert opened this issue Oct 28, 2020 · 25 comments · Fixed by #4345
Closed

No IANA version registry #4280

larseggert opened this issue Oct 28, 2020 · 25 comments · Fixed by #4345
Assignees
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. ietf-lc An issue that was raised during IETF Last Call.

Comments

@larseggert
Copy link
Member

  1. Version Negotiation

I am surprised that there is no IANA version registry

@larseggert larseggert added -transport ietf-lc An issue that was raised during IETF Last Call. labels Oct 28, 2020
@larseggert larseggert added this to the transport-genart milestone Oct 28, 2020
@larseggert larseggert added this to Triage in Late Stage Processing via automation Oct 28, 2020
@larseggert
Copy link
Member Author

I think the wiki at https://github.com/quicwg/base-drafts/wiki/QUIC-Versions should be the basis for a registry here, given that it reserves some ranges.

@MikeBishop
Copy link
Contributor

Do you believe those registrations should be enshrined in the RFC, or simply submitted to IANA to seed the registry?

@gloinul
Copy link
Contributor

gloinul commented Nov 9, 2020

I support using the transport document for to create an IANA based version registry and its ranges. However, I think the proprietary registrations from the WIKI can just as easy be submitted at time of registry creation as the values are FCFS.
The IETF draft range maybe should be mentioned in the IANA consideration. However, the range is way larger than any single draft document can use. So it can fit multiple draft names.

@martinthomson
Copy link
Member

I'll take this and write up a FCFS policy. As for draft versions, I think that we can limit the range we take to the last 10 we used. 0xff00001d needs protection, and maybe some of those preceding it, but no deployments of 0xff000000 exist.

@martinthomson martinthomson self-assigned this Nov 10, 2020
@DavidSchinazi
Copy link
Contributor

It would be nice for the new registry to include the currently deployed Google QUIC versions if possible. In particular Q043, Q046, Q050 and T051 represent significant global traffic today.

@martinthomson
Copy link
Member

@DavidSchinazi, do you mind if I ask for an updated list when the time comes? @afrind, that probably goes for you too.

martinthomson added a commit that referenced this issue Nov 10, 2020
@DavidSchinazi
Copy link
Contributor

That's a good idea

@larseggert
Copy link
Member Author

I would keep the 0xff000000 range as is - we can reuse if we do a v2, and we don't know how many revs we will need

@gloinul
Copy link
Contributor

gloinul commented Nov 10, 2020

A question, shouldn't this registry actually be in Invariants? Version field is an invariant and not specific to V1.

@larseggert
Copy link
Member Author

That's what I thought, too. (I actually looked there as well when @StewartBryant flagged this in his review of -transport.)

@martinthomson
Copy link
Member

It is considerably easier to reference the general registry guidance and definitions in this document rather than find a way to reference or port them.

@larseggert
Copy link
Member Author

Fair point. Maybe a paragraph in -invariants explaining that a version registry exists and that it is defined in -transport would be good though?

@gloinul
Copy link
Contributor

gloinul commented Nov 10, 2020

@larseggert from my perspective, to define it in -transport and just reference it from Invariants clearly can be made to work. The only issue that might arises in the future is for example when QUIC v1 is declared historic. Then the registry rules become historic despite they being current for any other version. So from a RFC life cycle perspective the version registry aligns with invariants.

@larseggert
Copy link
Member Author

Do registries automatically become historic when the RFCs that define them do? I didn't know that.

@StewartBryant
Copy link

StewartBryant commented Nov 10, 2020 via email

@gloinul
Copy link
Contributor

gloinul commented Nov 11, 2020

No, the registries do not become historic. The issue, is that if you would declare QUICv1 obsolete in QUICv2, then you can't reference the RFC for draft-ietf-quic-transport as that is obsolete for the registry rules when you register the QUICv2 identifier. Thus, you need to copy them to v2. And assuming that we might have several in force QUIC versions this can jump around. By placing the registration rules in invariants this issues would be avoided. As that RFC will only be updated due to need to change invariants or these specific rules.

@larseggert
Copy link
Member Author

I don't think QUIC v2 would necessarily obsolete v1, FWIW.

@StewartBryant
Copy link

StewartBryant commented Nov 11, 2020 via email

@gloinul
Copy link
Contributor

gloinul commented Nov 11, 2020

@larseggert probably not, but maybe QUICv4 will obsolete v1. I do expect that the obsoleting version specifying documents are more likely than invariant becoming obsoleted. Clearly both approaches can be made to work, there are slightly different trade-offs what may need to happen down the line.

@mjoras
Copy link

mjoras commented Nov 19, 2020

For Facebook, we have never used a draft version for our traffic. Our strategy is that we use different versions that are essentially aliases to draft versions. So far that has consisted of:

0xfaceb000 (variously draft-9 or draft-17)
0xfaceb001 (draft-24)
0xfaceb002 (draft-27)
0xfaceb00e-f (experimental versions)

Since old clients take a while to upgrade, we support the -1 version for a few months before just disabling it and letting clients fallback to TCP. As for why we do this, it's because we want to retain control over mvfst <-> mvfst interactions without potentially messing up public clients. In the future I think we'd plan on keeping with this strategy and moving forward e.g. to 0xfaceb003 next time we want to iterate the version.

@janaiyengar
Copy link
Contributor

I think this one is reasonably resolved with #4345. Marking this proposal-ready.

@janaiyengar janaiyengar added the proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. label Nov 24, 2020
@project-bot project-bot bot moved this from Triage to Consensus Emerging in Late Stage Processing Nov 24, 2020
@martinthomson martinthomson added the design An issue that affects the design of the protocol; resolution requires consensus. label Dec 8, 2020
@project-bot project-bot bot moved this from Consensus Emerging to Design Issues in Late Stage Processing Dec 8, 2020
@LPardue
Copy link
Member

LPardue commented Dec 8, 2020

@gloinul we think that this can be resolved by merging the associated PR #4345, does that seem ok to you?

@LPardue LPardue moved this from Design Issues to Consensus Emerging in Late Stage Processing Dec 8, 2020
@gloinul
Copy link
Contributor

gloinul commented Dec 9, 2020

Yes, I am fine with the PR.

@LPardue
Copy link
Member

LPardue commented Dec 9, 2020

@martinthomson please land the associated PR when you are ready.

@LPardue LPardue removed their assignment Dec 9, 2020
Late Stage Processing automation moved this from Consensus Emerging to Issue Handled Dec 10, 2020
@LPardue LPardue added call-issued An issue that the Chairs have issued a Consensus call for. and removed proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. labels Dec 10, 2020
@project-bot project-bot bot moved this from Issue Handled to Consensus Call issued in Late Stage Processing Dec 10, 2020
@martinthomson martinthomson reopened this Dec 13, 2020
Late Stage Processing automation moved this from Consensus Call issued to Triage Dec 13, 2020
@larseggert larseggert moved this from Triage to Consensus Call issued in Late Stage Processing Dec 14, 2020
@LPardue
Copy link
Member

LPardue commented Feb 3, 2021

Closing this now that the IESG have approved the document(s).

@LPardue LPardue closed this as completed Feb 3, 2021
Late Stage Processing automation moved this from Consensus Call issued to Issue Handled Feb 3, 2021
@LPardue LPardue added has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. and removed call-issued An issue that the Chairs have issued a Consensus call for. labels Feb 21, 2021
@project-bot project-bot bot moved this from Issue Handled to Consensus Declared in Late Stage Processing Feb 21, 2021
@LPardue LPardue moved this from Consensus Declared to Issue Handled in Late Stage Processing Feb 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. ietf-lc An issue that was raised during IETF Last Call.
Projects
Late Stage Processing
  
Issue Handled
Development

Successfully merging a pull request may close this issue.

9 participants