Switch QUIC version negotiation to RFC codepoint

This CL replaces the codepoint from draft-ietf-quic-version-negotiation-13 with the one from RFC 9368. The flag protection is designed so that we'll be fully switched over once we deprecate the quic_version_negotiation_rfc flag.

It's worth noting that this means that older software won't interoperate with new software when it comes to this extension. This is acceptable because this extension is currently not relied upon: since we don't support compatible version negotiation, the only benefit of this extension is to prevent version downgrades, but right now our code only supports versions of IETF QUIC with equal security properties, so it does not actually provide any protections at the moment.

Note that this also means that the strings and logs don't differentiate between the old and new value, so logs will be slightly ambiguous during the transition period if we get a log without knowing the value of the flag.

Alternatively, we could have instead used a succession of flags with support for multiple versions throughout a lengthy transition, but that would have significantly increased the engineering work and delayed the transition for no observable benefit.

Protected by FLAGS_quic_reloadable_flag_quic_version_negotiation_rfc.

PiperOrigin-RevId: 708402132
3 files changed
tree: d866c38cf87525d7fe37919d29a61d8b87d81ba7
  1. build/
  2. depstool/
  3. quiche/
  4. .bazelrc
  5. .bazelversion
  6. BUILD.bazel
  7. CONTRIBUTING.md
  8. LICENSE
  9. README.md
  10. WHITESPACE
  11. WORKSPACE.bazel
README.md

QUICHE

QUICHE stands for QUIC, Http, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.

There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:

To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:

To contribute to QUICHE, follow instructions at CONTRIBUTING.md.

QUICHE is only supported on little-endian platforms.