Skip to content

Commit 8859686

Browse files
authored
xds: Envoy proto sync to 2024-10-23 (#11664)
1 parent 1993e68 commit 8859686

File tree

15 files changed

+287
-61
lines changed

15 files changed

+287
-61
lines changed

repositories.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ def grpc_java_repositories(bzlmod = False):
141141
if not native.existing_rule("envoy_api"):
142142
http_archive(
143143
name = "envoy_api",
144-
sha256 = "cb7cd388eaa297320d392c872ceb82571dee71f4b6f1c4546b0c0a399636f523",
145-
strip_prefix = "data-plane-api-874e3aa8c3aa5086b6bffa2166e0e0077bb32f71",
144+
sha256 = "f439add0cc01f718d53d6feb4d0972ac0d48b3e145c18b53439a3b5148a0cb6e",
145+
strip_prefix = "data-plane-api-55f8b2351962d84c84a6534da67da1dd9f671c50",
146146
urls = [
147-
"https://github.com/envoyproxy/data-plane-api/archive/874e3aa8c3aa5086b6bffa2166e0e0077bb32f71.tar.gz",
147+
"https://github.com/envoyproxy/data-plane-api/archive/55f8b2351962d84c84a6534da67da1dd9f671c50.tar.gz",
148148
],
149149
)
150150

xds/third_party/envoy/import.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
set -e
1919
# import VERSION from the google internal copybara_version.txt for Envoy
20-
VERSION=ab911ac2ff971f805ec822ad4d4ff6b42a61cc7c
20+
VERSION=742a3b02e3b2a9dfb877a7e378607c6ed0c2aa53
2121
DOWNLOAD_URL="https://github.com/envoyproxy/envoy/archive/${VERSION}.tar.gz"
2222
DOWNLOAD_BASE_DIR="envoy-${VERSION}"
2323
SOURCE_PROTO_BASE_DIR="${DOWNLOAD_BASE_DIR}/api"

xds/third_party/envoy/src/main/proto/envoy/config/cluster/v3/cluster.proto

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ message ClusterCollection {
4545
}
4646

4747
// Configuration for a single upstream cluster.
48-
// [#next-free-field: 57]
48+
// [#next-free-field: 59]
4949
message Cluster {
5050
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Cluster";
5151

@@ -754,13 +754,13 @@ message Cluster {
754754

755755
reserved "hosts", "tls_context", "extension_protocol_options";
756756

757-
// Configuration to use different transport sockets for different endpoints. The entry of
757+
// Configuration to use different transport sockets for different endpoints. The entry of
758758
// ``envoy.transport_socket_match`` in the :ref:`LbEndpoint.Metadata
759759
// <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.metadata>` is used to match against the
760760
// transport sockets as they appear in the list. If a match is not found, the search continues in
761761
// :ref:`LocalityLbEndpoints.Metadata
762-
// <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.metadata>`. The first :ref:`match
763-
// <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>` is used. For example, with
762+
// <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.metadata>`. The first :ref:`match
763+
// <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>` is used. For example, with
764764
// the following match
765765
//
766766
// .. code-block:: yaml
@@ -956,6 +956,17 @@ message Cluster {
956956
google.protobuf.Duration dns_refresh_rate = 16
957957
[(validate.rules).duration = {gt {nanos: 1000000}}];
958958

959+
// DNS jitter can be optionally specified if the cluster type is either
960+
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`,
961+
// or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`.
962+
// DNS jitter causes the cluster to refresh DNS entries later by a random amount of time to avoid a
963+
// stampede of DNS requests. This value sets the upper bound (exclusive) for the random amount.
964+
// There will be no jitter if this value is omitted. For cluster types other than
965+
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`
966+
// and :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`
967+
// this setting is ignored.
968+
google.protobuf.Duration dns_jitter = 58;
969+
959970
// If the DNS failure refresh rate is specified and the cluster type is either
960971
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`,
961972
// or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`,
@@ -1151,6 +1162,23 @@ message Cluster {
11511162
// from the LRS stream here.]
11521163
core.v3.ConfigSource lrs_server = 42;
11531164

1165+
// A list of metric names from :ref:`ORCA load reports <envoy_v3_api_msg_.xds.data.orca.v3.OrcaLoadReport>` to propagate to LRS.
1166+
//
1167+
// If not specified, then ORCA load reports will not be propagated to LRS.
1168+
//
1169+
// For map fields in the ORCA proto, the string will be of the form ``<map_field_name>.<map_key>``.
1170+
// For example, the string ``named_metrics.foo`` will mean to look for the key ``foo`` in the ORCA
1171+
// :ref:`named_metrics <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.named_metrics>` field.
1172+
//
1173+
// The special map key ``*`` means to report all entries in the map (e.g., ``named_metrics.*`` means to
1174+
// report all entries in the ORCA named_metrics field). Note that this should be used only with trusted
1175+
// backends.
1176+
//
1177+
// The metric names in LRS will follow the same semantics as this field. In other words, if this field
1178+
// contains ``named_metrics.foo``, then the LRS load report will include the data with that same string
1179+
// as the key.
1180+
repeated string lrs_report_endpoint_metrics = 57;
1181+
11541182
// If track_timeout_budgets is true, the :ref:`timeout budget histograms
11551183
// <config_cluster_manager_cluster_stats_timeout_budgets>` will be published for each
11561184
// request. These show what percentage of a request's per try and global timeout was used. A value

xds/third_party/envoy/src/main/proto/envoy/config/core/v3/protocol.proto

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,24 +39,21 @@ message QuicKeepAliveSettings {
3939
//
4040
// If zero, disable keepalive probing.
4141
// If absent, use the QUICHE default interval to probe.
42-
google.protobuf.Duration max_interval = 1 [(validate.rules).duration = {
43-
lte {}
44-
gte {seconds: 1}
45-
}];
42+
google.protobuf.Duration max_interval = 1;
4643

4744
// The interval to send the first few keep-alive probing packets to prevent connection from hitting the idle timeout. Subsequent probes will be sent, each one with an interval exponentially longer than previous one, till it reaches :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`. And the probes afterwards will always use :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`.
4845
//
4946
// The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout and smaller than max_interval to take effect.
5047
//
51-
// If absent or zero, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>` is also zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.
48+
// If absent, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>` is zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.
5249
google.protobuf.Duration initial_interval = 2 [(validate.rules).duration = {
5350
lte {}
54-
gte {seconds: 1}
51+
gte {nanos: 1000000}
5552
}];
5653
}
5754

5855
// QUIC protocol options which apply to both downstream and upstream connections.
59-
// [#next-free-field: 9]
56+
// [#next-free-field: 10]
6057
message QuicProtocolOptions {
6158
// Maximum number of streams that the client can negotiate per connection. 100
6259
// if not specified.
@@ -111,6 +108,10 @@ message QuicProtocolOptions {
111108
lte {seconds: 600}
112109
gte {seconds: 1}
113110
}];
111+
112+
// Maximum packet length for QUIC connections. It refers to the largest size of a QUIC packet that can be transmitted over the connection.
113+
// If not specified, one of the `default values in QUICHE <https://github.com/google/quiche/blob/main/quiche/quic/core/quic_constants.h>`_ is used.
114+
google.protobuf.UInt64Value max_packet_length = 9;
114115
}
115116

116117
message UpstreamHttpProtocolOptions {
@@ -205,7 +206,7 @@ message AlternateProtocolsCacheOptions {
205206
repeated string canonical_suffixes = 5;
206207
}
207208

208-
// [#next-free-field: 7]
209+
// [#next-free-field: 8]
209210
message HttpProtocolOptions {
210211
option (udpa.annotations.versioning).previous_message_type =
211212
"envoy.api.v2.core.HttpProtocolOptions";
@@ -249,18 +250,37 @@ message HttpProtocolOptions {
249250
google.protobuf.Duration idle_timeout = 1;
250251

251252
// The maximum duration of a connection. The duration is defined as a period since a connection
252-
// was established. If not set, there is no max duration. When max_connection_duration is reached
253-
// and if there are no active streams, the connection will be closed. If the connection is a
254-
// downstream connection and there are any active streams, the drain sequence will kick-in,
255-
// and the connection will be force-closed after the drain period. See :ref:`drain_timeout
253+
// was established. If not set, there is no max duration. When max_connection_duration is reached,
254+
// the drain sequence will kick-in. The connection will be closed after the drain timeout period
255+
// if there are no active streams. See :ref:`drain_timeout
256256
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.
257257
google.protobuf.Duration max_connection_duration = 3;
258258

259-
// The maximum number of headers. If unconfigured, the default
260-
// maximum number of request headers allowed is 100. Requests that exceed this limit will receive
261-
// a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.
259+
// The maximum number of headers (request headers if configured on HttpConnectionManager,
260+
// response headers when configured on a cluster).
261+
// If unconfigured, the default maximum number of headers allowed is 100.
262+
// The default value for requests can be overridden by setting runtime key ``envoy.reloadable_features.max_request_headers_count``.
263+
// The default value for responses can be overridden by setting runtime key ``envoy.reloadable_features.max_response_headers_count``.
264+
// Downstream requests that exceed this limit will receive a 431 response for HTTP/1.x and cause a stream
265+
// reset for HTTP/2.
266+
// Upstream responses that exceed this limit will result in a 503 response.
262267
google.protobuf.UInt32Value max_headers_count = 2 [(validate.rules).uint32 = {gte: 1}];
263268

269+
// The maximum size of response headers.
270+
// If unconfigured, the default is 60 KiB, except for HTTP/1 response headers which have a default
271+
// of 80KiB.
272+
// The default value can be overridden by setting runtime key ``envoy.reloadable_features.max_response_headers_size_kb``.
273+
// Responses that exceed this limit will result in a 503 response.
274+
// In Envoy, this setting is only valid when configured on an upstream cluster, not on the
275+
// :ref:`HTTP Connection Manager
276+
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.common_http_protocol_options>`.
277+
//
278+
// Note: currently some protocol codecs impose limits on the maximum size of a single header:
279+
// HTTP/2 (when using nghttp2) limits a single header to around 100kb.
280+
// HTTP/3 limits a single header to around 1024kb.
281+
google.protobuf.UInt32Value max_response_headers_kb = 7
282+
[(validate.rules).uint32 = {lte: 8192 gt: 0}];
283+
264284
// Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
265285
// reset independent of any other timeouts. If not specified, this value is not set.
266286
google.protobuf.Duration max_stream_duration = 4;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
syntax = "proto3";
2+
3+
package envoy.config.core.v3;
4+
5+
import "google/protobuf/wrappers.proto";
6+
7+
import "udpa/annotations/status.proto";
8+
9+
option java_package = "io.envoyproxy.envoy.config.core.v3";
10+
option java_outer_classname = "SocketCmsgHeadersProto";
11+
option java_multiple_files = true;
12+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
13+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
14+
15+
// [#protodoc-title: Socket CMSG headers]
16+
17+
// Configuration for socket cmsg headers.
18+
// See `:ref:CMSG <https://man7.org/linux/man-pages/man3/cmsg.3.html>`_ for further information.
19+
message SocketCmsgHeaders {
20+
// cmsg level. Default is unset.
21+
google.protobuf.UInt32Value level = 1;
22+
23+
// cmsg type. Default is unset.
24+
google.protobuf.UInt32Value type = 2;
25+
26+
// Expected size of cmsg value. Default is zero.
27+
uint32 expected_size = 3;
28+
}

xds/third_party/envoy/src/main/proto/envoy/config/core/v3/socket_option.proto

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
3636
// :ref:`admin's <envoy_v3_api_field_config.bootstrap.v3.Admin.socket_options>` socket_options etc.
3737
//
3838
// It should be noted that the name or level may have different values on different platforms.
39-
// [#next-free-field: 7]
39+
// [#next-free-field: 8]
4040
message SocketOption {
4141
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.SocketOption";
4242

@@ -51,6 +51,29 @@ message SocketOption {
5151
STATE_LISTENING = 2;
5252
}
5353

54+
// The `socket type <https://linux.die.net/man/2/socket>`_ to apply the socket option to.
55+
// Only one field should be set. If multiple fields are set, the precedence order will determine
56+
// the selected one. If none of the fields is set, the socket option will be applied to all socket types.
57+
//
58+
// For example:
59+
// If :ref:`stream <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.stream>` is set,
60+
// it takes precedence over :ref:`datagram <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.datagram>`.
61+
message SocketType {
62+
// The stream socket type.
63+
message Stream {
64+
}
65+
66+
// The datagram socket type.
67+
message Datagram {
68+
}
69+
70+
// Apply the socket option to the stream socket type.
71+
Stream stream = 1;
72+
73+
// Apply the socket option to the datagram socket type.
74+
Datagram datagram = 2;
75+
}
76+
5477
// An optional name to give this socket option for debugging, etc.
5578
// Uniqueness is not required and no special meaning is assumed.
5679
string description = 1;
@@ -74,6 +97,10 @@ message SocketOption {
7497
// The state in which the option will be applied. When used in BindConfig
7598
// STATE_PREBIND is currently the only valid value.
7699
SocketState state = 6 [(validate.rules).enum = {defined_only: true}];
100+
101+
// Apply the socket option to the specified `socket type <https://linux.die.net/man/2/socket>`_.
102+
// If not specified, the socket option will be applied to all socket types.
103+
SocketType type = 7;
77104
}
78105

79106
message SocketOptionsOverride {

xds/third_party/envoy/src/main/proto/envoy/config/endpoint/v3/load_report.proto

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
2525
// These are stats Envoy reports to the management server at a frequency defined by
2626
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.load_reporting_interval>`.
2727
// Stats per upstream region/zone and optionally per subzone.
28-
// [#next-free-field: 12]
28+
// [#next-free-field: 15]
2929
message UpstreamLocalityStats {
3030
option (udpa.annotations.versioning).previous_message_type =
3131
"envoy.api.v2.endpoint.UpstreamLocalityStats";
@@ -75,7 +75,20 @@ message UpstreamLocalityStats {
7575
// [#not-implemented-hide:]
7676
uint64 total_fail_connections = 11 [(xds.annotations.v3.field_status).work_in_progress = true];
7777

78-
// Stats for multi-dimensional load balancing.
78+
// CPU utilization stats for multi-dimensional load balancing.
79+
// This typically comes from endpoint metrics reported via ORCA.
80+
UnnamedEndpointLoadMetricStats cpu_utilization = 12;
81+
82+
// Memory utilization for multi-dimensional load balancing.
83+
// This typically comes from endpoint metrics reported via ORCA.
84+
UnnamedEndpointLoadMetricStats mem_utilization = 13;
85+
86+
// Blended application-defined utilization for multi-dimensional load balancing.
87+
// This typically comes from endpoint metrics reported via ORCA.
88+
UnnamedEndpointLoadMetricStats application_utilization = 14;
89+
90+
// Named stats for multi-dimensional load balancing.
91+
// These typically come from endpoint metrics reported via ORCA.
7992
repeated EndpointLoadMetricStats load_metric_stats = 5;
8093

8194
// Endpoint granularity stats information for this locality. This information
@@ -145,6 +158,16 @@ message EndpointLoadMetricStats {
145158
double total_metric_value = 3;
146159
}
147160

161+
// Same as EndpointLoadMetricStats, except without the metric_name field.
162+
message UnnamedEndpointLoadMetricStats {
163+
// Number of calls that finished and included this metric.
164+
uint64 num_requests_finished_with_metric = 1;
165+
166+
// Sum of metric values across all calls that finished with this metric for
167+
// load_reporting_interval.
168+
double total_metric_value = 2;
169+
}
170+
148171
// Per cluster load stats. Envoy reports these stats a management server in a
149172
// :ref:`LoadStatsRequest<envoy_v3_api_msg_service.load_stats.v3.LoadStatsRequest>`
150173
// Next ID: 7

xds/third_party/envoy/src/main/proto/envoy/config/listener/v3/quic_config.proto

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package envoy.config.listener.v3;
55
import "envoy/config/core/v3/base.proto";
66
import "envoy/config/core/v3/extension.proto";
77
import "envoy/config/core/v3/protocol.proto";
8+
import "envoy/config/core/v3/socket_cmsg_headers.proto";
89

910
import "google/protobuf/duration.proto";
1011
import "google/protobuf/wrappers.proto";
@@ -24,7 +25,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
2425
// [#protodoc-title: QUIC listener config]
2526

2627
// Configuration specific to the UDP QUIC listener.
27-
// [#next-free-field: 12]
28+
// [#next-free-field: 14]
2829
message QuicProtocolOptions {
2930
option (udpa.annotations.versioning).previous_message_type =
3031
"envoy.api.v2.listener.QuicProtocolOptions";
@@ -86,4 +87,16 @@ message QuicProtocolOptions {
8687
// If not specified, no debug visitor will be attached to connections.
8788
// [#extension-category: envoy.quic.connection_debug_visitor]
8889
core.v3.TypedExtensionConfig connection_debug_visitor_config = 11;
90+
91+
// Configure a type of UDP cmsg to pass to listener filters via QuicReceivedPacket.
92+
// Both level and type must be specified for cmsg to be saved.
93+
// Cmsg may be truncated or omitted if expected size is not set.
94+
// If not specified, no cmsg will be saved to QuicReceivedPacket.
95+
repeated core.v3.SocketCmsgHeaders save_cmsg_config = 12
96+
[(validate.rules).repeated = {max_items: 1}];
97+
98+
// If true, the listener will reject connection-establishing packets at the
99+
// QUIC layer by replying with an empty version negotiation packet to the
100+
// client.
101+
bool reject_new_connections = 13;
89102
}

xds/third_party/envoy/src/main/proto/envoy/config/route/v3/route_components.proto

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import "google/protobuf/any.proto";
1717
import "google/protobuf/duration.proto";
1818
import "google/protobuf/wrappers.proto";
1919

20-
import "xds/annotations/v3/status.proto";
2120
import "xds/type/matcher/v3/matcher.proto";
2221

2322
import "envoy/annotations/deprecation.proto";
@@ -92,13 +91,12 @@ message VirtualHost {
9291
// The list of routes that will be matched, in order, for incoming requests.
9392
// The first route that matches will be used.
9493
// Only one of this and ``matcher`` can be specified.
95-
repeated Route routes = 3;
94+
repeated Route routes = 3 [(udpa.annotations.field_migrate).oneof_promotion = "route_selection"];
9695

97-
// [#next-major-version: This should be included in a oneof with routes wrapped in a message.]
9896
// The match tree to use when resolving route actions for incoming requests. Only one of this and ``routes``
9997
// can be specified.
10098
xds.type.matcher.v3.Matcher matcher = 21
101-
[(xds.annotations.v3.field_status).work_in_progress = true];
99+
[(udpa.annotations.field_migrate).oneof_promotion = "route_selection"];
102100

103101
// Specifies the type of TLS enforcement the virtual host expects. If this option is not
104102
// specified, there is no TLS requirement for the virtual host.

0 commit comments

Comments
 (0)