http3: add quic hints (#19433)

Allowing auto_http to assume some domains support HTTP/3 without trying TCP first.

Risk Level: low
Testing: unit test
Docs Changes: API docs
Release Notes: not yet
Fixes #19427

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>

Mirrored from https://github.com/envoyproxy/envoy @ 7c60c855ba9e1264604ff5e8b7809d99589de03e
pull/626/head
data-plane-api(Azure Pipelines) 3 years ago
parent c2a9991735
commit 0ecde31360
  1. 22
      envoy/config/core/v3/protocol.proto

@ -128,6 +128,24 @@ message UpstreamHttpProtocolOptions {
// HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04
// for the "HTTPS" DNS resource record.
message AlternateProtocolsCacheOptions {
// Allows pre-populating the cache with HTTP/3 alternate protocols entries with a 7 day lifetime.
// This will cause Envoy to attempt HTTP/3 to those upstreams, even if the upstreams have not
// advertised HTTP/3 support. These entries will be overwritten by alt-svc
// response headers or cached values.
// As with regular cached entries, if the origin response would result in clearing an existing
// alternate protocol cache entry, pre-populated entries will also be cleared.
// Adding a cache entry with hostname=foo.com port=123 is the equivalent of getting
// response headers
// alt-svc: h3=:"123"; ma=86400" in a response to a request to foo.com:123
message AlternateProtocolsCacheEntry {
// The host name for the alternate protocol entry.
string hostname = 1
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
// The port for the alternate protocol entry.
uint32 port = 2 [(validate.rules).uint32 = {lt: 65535 gt: 0}];
}
// The name of the cache. Multiple named caches allow independent alternate protocols cache
// configurations to operate within a single Envoy process using different configurations. All
// alternate protocols cache options with the same name *must* be equal in all fields when
@ -148,7 +166,11 @@ message AlternateProtocolsCacheOptions {
// :ref:`key value store <envoy_v3_api_msg_config.common.key_value.v3.KeyValueStoreConfig>` to flush
// alternate protocols entries to disk.
// This function is currently only supported if concurrency is 1
// Cached entries will take precedence over pre-populated entries below.
TypedExtensionConfig key_value_store_config = 3;
// Allows pre-populating the cache with entries, as described above.
repeated AlternateProtocolsCacheEntry prepopulated_entries = 4;
}
// [#next-free-field: 7]

Loading…
Cancel
Save