For TLS QUIC handshakes, reduce the GFE<=>Alia round trip down to 1 using BoringSSL's handshake hints. This change includes the following pieces:
- Send ssl_capabilities and ALPS from GFE to Alia, and send handshake_hints from Alia to GFE.
- Change QUIC's TlsServerHandshaker to set ALPS earlier, and set handshake hints if present.
- Change Alia's TLSHandshakeV2 handler to generate handshake hints.
- Change SelectCertRequest's next_protocol from a repeated string to repeated ProtocolInfo, each ProtocolInfo contains a protocol name and an optional ALPS.

See http://go/handshake-hints for the high level design.

Tested:
- Update standalone_handshaker_end_to_end_test.cc to verify that when handshake hints are enabled, GFE only talks to Alia once for both 1RTT and 0RTT handshakes.
- Update tls_handshake_v2_test.cc to use a LetoCrypter on the edge server, and verify the ticket can be decrypted by Alia.

Protected by FLAGS_quic_reloadable_flag_quic_tls_server_use_handshake_hints.

PiperOrigin-RevId: 371340778
Change-Id: I1b70c37b57c5e3d365628c236da8cbfdc81ea07a
8 files changed
tree: c3aa7785dcd08b33561258706bb87c31eeefeacb
  1. common/
  2. epoll_server/
  3. http2/
  4. quic/
  5. spdy/
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
README.md

QUICHE

QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.

Code can be viewed in CodeSearch in Quiche and is imported into Chromium.