Skip to content

Commit 7032d4c

Browse files
authored
xds: sync envoy proto to commit 1c27396b1f7e756ba79eed72b47f485d44da1d41 (#7480)
1 parent 594cc76 commit 7032d4c

File tree

8 files changed

+102
-33
lines changed

8 files changed

+102
-33
lines changed

xds/third_party/envoy/import.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
set -e
1919
BRANCH=master
2020
# import VERSION from one of the google internal CLs
21-
VERSION=fd28e42f31730f5ed6f13f52999692a4885dd312
21+
VERSION=1c27396b1f7e756ba79eed72b47f485d44da1d41
2222
GIT_REPO="https://github.com/envoyproxy/envoy.git"
2323
GIT_BASE_DIR=envoy
2424
SOURCE_PROTO_BASE_DIR=envoy/api

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ message ResponseFlagFilter {
254254
in: "UMSDR"
255255
in: "RFCF"
256256
in: "NFCF"
257+
in: "DT"
257258
}
258259
}
259260
}];

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,32 @@ message Cluster {
612612
//
613613
// This is limited somewhat arbitrarily to 3 because prefetching connections too aggressively can
614614
// harm latency more than the prefetching helps.
615-
google.protobuf.DoubleValue prefetch_ratio = 1 [(validate.rules).double = {lte: 3.0 gte: 1.0}];
615+
google.protobuf.DoubleValue per_upstream_prefetch_ratio = 1
616+
[(validate.rules).double = {lte: 3.0 gte: 1.0}];
617+
618+
// Indicates how many many streams (rounded up) can be anticipated across a cluster for each
619+
// stream, useful for low QPS services. This is currently supported for a subset of
620+
// deterministic non-hash-based load-balancing algorithms (weighted round robin, random).
621+
// Unlike per_upstream_prefetch_ratio this prefetches across the upstream instances in a
622+
// cluster, doing best effort predictions of what upstream would be picked next and
623+
// pre-establishing a connection.
624+
//
625+
// For example if prefetching is set to 2 for a round robin HTTP/2 cluster, on the first
626+
// incoming stream, 2 connections will be prefetched - one to the first upstream for this
627+
// cluster, one to the second on the assumption there will be a follow-up stream.
628+
//
629+
// Prefetching will be limited to one prefetch per configured upstream in the cluster.
630+
//
631+
// If this value is not set, or set explicitly to one, Envoy will fetch as many connections
632+
// as needed to serve streams in flight, so during warm up and in steady state if a connection
633+
// is closed (and per_upstream_prefetch_ratio is not set), there will be a latency hit for
634+
// connection establishment.
635+
//
636+
// If both this and prefetch_ratio are set, Envoy will make sure both predicted needs are met,
637+
// basically prefetching max(predictive-prefetch, per-upstream-prefetch), for each upstream.
638+
// TODO(alyssawilk) per LB docs and LB overview docs when unhiding.
639+
google.protobuf.DoubleValue predictive_prefetch_ratio = 2
640+
[(validate.rules).double = {lte: 3.0 gte: 1.0}];
616641
}
617642

618643
reserved 12, 15, 7, 11, 35;

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

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,18 @@ message SubstitutionFormatString {
2323
// Specify a format with command operators to form a text string.
2424
// Its details is described in :ref:`format string<config_access_log_format_strings>`.
2525
//
26-
// .. code-block::
26+
// For example, setting ``text_format`` like below,
2727
//
28-
// text_format: %LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=$REQ(:path)%
28+
// .. validated-code-block:: yaml
29+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
2930
//
30-
// The following plain text will be created:
31+
// text_format: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
3132
//
32-
// .. code-block::
33+
// generates plain text similar to:
3334
//
34-
// upstream connect error:204:path=/foo
35+
// .. code-block:: text
36+
//
37+
// upstream connect error:503:path=/foo
3538
//
3639
string text_format = 1 [(validate.rules).string = {min_bytes: 1}];
3740

@@ -41,11 +44,12 @@ message SubstitutionFormatString {
4144
// Nested JSON objects may be produced by some command operators (e.g. FILTER_STATE or DYNAMIC_METADATA).
4245
// See the documentation for a specific command operator for details.
4346
//
44-
// .. code-block::
47+
// .. validated-code-block:: yaml
48+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
4549
//
46-
// json_format:
47-
// status: %RESPONSE_CODE%
48-
// message: %LOCAL_REPLY_BODY%
50+
// json_format:
51+
// status: "%RESPONSE_CODE%"
52+
// message: "%LOCAL_REPLY_BODY%"
4953
//
5054
// The following JSON object would be created:
5155
//
@@ -65,4 +69,15 @@ message SubstitutionFormatString {
6569
// empty string, so that empty values are omitted entirely.
6670
// * for ``json_format`` the keys with null values are omitted in the output structure.
6771
bool omit_empty_values = 3;
72+
73+
// Specify a *content_type* field.
74+
// If this field is not set then ``text/plain`` is used for *text_format* and
75+
// ``application/json`` is used for *json_format*.
76+
//
77+
// .. validated-code-block:: yaml
78+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
79+
//
80+
// content_type: "text/html; charset=UTF-8"
81+
//
82+
string content_type = 4;
6883
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -778,15 +778,15 @@ message RouteAction {
778778
// <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, use that value as the
779779
// *max_stream_duration*, but limit the applied timeout to the maximum value specified here.
780780
// If set to 0, the `grpc-timeout` header is used without modification.
781-
google.protobuf.Duration grpc_max_timeout = 2;
781+
google.protobuf.Duration grpc_timeout_header_max = 2;
782782

783783
// If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by
784784
// subtracting the provided duration from the header. This is useful for allowing Envoy to set
785785
// its global timeout to be less than that of the deadline imposed by the calling client, which
786786
// makes it more likely that Envoy will handle the timeout instead of having the call canceled
787787
// by the client. If, after applying the offset, the resulting timeout is zero or negative,
788788
// the stream will timeout immediately.
789-
google.protobuf.Duration grpc_timeout_offset = 3;
789+
google.protobuf.Duration grpc_timeout_header_offset = 3;
790790
}
791791

792792
reserved 12, 18, 19, 16, 22, 21, 10;

xds/third_party/envoy/src/main/proto/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -571,27 +571,29 @@ message LocalReplyConfig {
571571
// The configuration to form response body from the :ref:`command operators <config_access_log_command_operators>`
572572
// and to specify response content type as one of: plain/text or application/json.
573573
//
574-
// Example one: plain/text body_format.
574+
// Example one: "plain/text" ``body_format``.
575575
//
576-
// .. code-block::
576+
// .. validated-code-block:: yaml
577+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
577578
//
578-
// text_format: %LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=$REQ(:path)%
579+
// text_format: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
579580
//
580-
// The following response body in `plain/text` format will be generated for a request with
581+
// The following response body in "plain/text" format will be generated for a request with
581582
// local reply body of "upstream connection error", response_code=503 and path=/foo.
582583
//
583-
// .. code-block::
584+
// .. code-block:: text
584585
//
585586
// upstream connect error:503:path=/foo
586587
//
587-
// Example two: application/json body_format.
588+
// Example two: "application/json" ``body_format``.
588589
//
589-
// .. code-block::
590+
// .. validated-code-block:: yaml
591+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
590592
//
591-
// json_format:
592-
// status: %RESPONSE_CODE%
593-
// message: %LOCAL_REPLY_BODY%
594-
// path: $REQ(:path)%
593+
// json_format:
594+
// status: "%RESPONSE_CODE%"
595+
// message: "%LOCAL_REPLY_BODY%"
596+
// path: "%REQ(:path)%"
595597
//
596598
// The following response body in "application/json" format would be generated for a request with
597599
// local reply body of "upstream connection error", response_code=503 and path=/foo.
@@ -809,13 +811,13 @@ message HttpFilter {
809811
// sufficient. It also serves as a resource name in ExtensionConfigDS.
810812
string name = 1 [(validate.rules).string = {min_bytes: 1}];
811813

812-
// Filter specific configuration which depends on the filter being instantiated. See the supported
813-
// filters for further documentation.
814814
oneof config_type {
815+
// Filter specific configuration which depends on the filter being instantiated. See the supported
816+
// filters for further documentation.
815817
google.protobuf.Any typed_config = 4;
816818

817819
// Configuration source specifier for an extension configuration discovery service.
818-
// In case of a failure and without the default configuration, the HTTP listener responds with 500.
820+
// In case of a failure and without the default configuration, the HTTP listener responds with code 500.
819821
// Extension configs delivered through this mechanism are not expected to require warming (see https://github.com/envoyproxy/envoy/issues/12061).
820822
config.core.v3.ExtensionConfigSource config_discovery = 5;
821823
}

xds/third_party/envoy/src/main/proto/envoy/extensions/transport_sockets/tls/v3/common.proto

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ message TlsCertificate {
151151
// TLS private key is not password encrypted.
152152
config.core.v3.DataSource password = 3 [(udpa.annotations.sensitive) = true];
153153

154-
// [#not-implemented-hide:]
154+
// The OCSP response to be stapled with this certificate during the handshake.
155+
// The response must be DER-encoded and may only be provided via ``filename`` or
156+
// ``inline_bytes``. The response may pertain to only one certificate.
155157
config.core.v3.DataSource ocsp_staple = 4;
156158

157159
// [#not-implemented-hide:]
@@ -205,7 +207,7 @@ message CertificateValidationContext {
205207
ACCEPT_UNTRUSTED = 1;
206208
}
207209

208-
reserved 4;
210+
reserved 4, 5;
209211

210212
reserved "verify_subject_alt_name";
211213

@@ -315,9 +317,6 @@ message CertificateValidationContext {
315317
// <envoy_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.trusted_ca>`.
316318
repeated type.matcher.v3.StringMatcher match_subject_alt_names = 9;
317319

318-
// [#not-implemented-hide:] Must present a signed time-stamped OCSP response.
319-
google.protobuf.BoolValue require_ocsp_staple = 5;
320-
321320
// [#not-implemented-hide:] Must present signed certificate time-stamp.
322321
google.protobuf.BoolValue require_signed_certificate_timestamp = 6;
323322

xds/third_party/envoy/src/main/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,33 @@ message UpstreamTlsContext {
5454
google.protobuf.UInt32Value max_session_keys = 4;
5555
}
5656

57-
// [#next-free-field: 8]
57+
// [#next-free-field: 9]
5858
message DownstreamTlsContext {
5959
option (udpa.annotations.versioning).previous_message_type =
6060
"envoy.api.v2.auth.DownstreamTlsContext";
6161

62+
enum OcspStaplePolicy {
63+
// OCSP responses are optional. If an OCSP response is absent
64+
// or expired, the associated certificate will be used for
65+
// connections without an OCSP staple.
66+
LENIENT_STAPLING = 0;
67+
68+
// OCSP responses are optional. If an OCSP response is absent,
69+
// the associated certificate will be used without an
70+
// OCSP staple. If a response is provided but is expired,
71+
// the associated certificate will not be used for
72+
// subsequent connections. If no suitable certificate is found,
73+
// the connection is rejected.
74+
STRICT_STAPLING = 1;
75+
76+
// OCSP responses are required. Configuration will fail if
77+
// a certificate is provided without an OCSP response. If a
78+
// response expires, the associated certificate will not be
79+
// used connections. If no suitable certificate is found, the
80+
// connection is rejected.
81+
MUST_STAPLE = 2;
82+
}
83+
6284
// Common TLS context settings.
6385
CommonTlsContext common_tls_context = 1;
6486

@@ -96,6 +118,11 @@ message DownstreamTlsContext {
96118
lt {seconds: 4294967296}
97119
gte {}
98120
}];
121+
122+
// Config for whether to use certificates if they do not have
123+
// an accompanying OCSP response or if the response expires at runtime.
124+
// Defaults to LENIENT_STAPLING
125+
OcspStaplePolicy ocsp_staple_policy = 8 [(validate.rules).enum = {defined_only: true}];
99126
}
100127

101128
// TLS context shared by both client and server TLS contexts.

0 commit comments

Comments
 (0)