All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.armeria.grpc.armeria-main.dsc Maven / Gradle / Ivy

Go to download

Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2 (centraldogma-xds)

The newest version!

?.
google/protobuf/any.protogoogle.protobuf"6
Any
type_url (	RtypeUrl
value (RvalueBv
com.google.protobufBAnyProtoPZ,google.golang.org/protobuf/types/known/anypb?GPB?Google.Protobuf.WellKnownTypesJ?,
?
?
2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 

"C
	
"C

#,
	
#,

$)
	
$)

%"
	

%"

&!
	
$&!

';
	
%';
?
?? `Any` contains an arbitrary serialized protocol buffer message along with a
 URL that describes the type of the serialized message.

 Protobuf library provides support to pack/unpack Any values in the form
 of utility functions or additional generated methods of the Any type.

 Example 1: Pack and unpack a message in C++.

     Foo foo = ...;
     Any any;
     any.PackFrom(foo);
     ...
     if (any.UnpackTo(&foo)) {
       ...
     }

 Example 2: Pack and unpack a message in Java.

     Foo foo = ...;
     Any any = Any.pack(foo);
     ...
     if (any.is(Foo.class)) {
       foo = any.unpack(Foo.class);
     }
     // or ...
     if (any.isSameTypeAs(Foo.getDefaultInstance())) {
       foo = any.unpack(Foo.getDefaultInstance());
     }

  Example 3: Pack and unpack a message in Python.

     foo = Foo(...)
     any = Any()
     any.Pack(foo)
     ...
     if any.Is(Foo.DESCRIPTOR):
       any.Unpack(foo)
       ...

  Example 4: Pack and unpack a message in Go

      foo := &pb.Foo{...}
      any, err := anypb.New(foo)
      if err != nil {
        ...
      }
      ...
      foo := &pb.Foo{}
      if err := any.UnmarshalTo(foo); err != nil {
        ...
      }

 The pack methods provided by protobuf library will by default use
 'type.googleapis.com/full.type.name' as the type URL and the unpack
 methods only use the fully qualified type name after the last '/'
 in the type URL, for example "foo.bar.com/x/y.z" will yield type
 name "y.z".

 JSON
 ====
 The JSON representation of an `Any` value uses the regular
 representation of the deserialized, embedded message, with an
 additional field `@type` which contains the type URL. Example:

     package google.profile;
     message Person {
       string first_name = 1;
       string last_name = 2;
     }

     {
       "@type": "type.googleapis.com/google.profile.Person",
       "firstName": ,
       "lastName": 
     }

 If the embedded message type is well-known and has a custom JSON
 representation, that representation will be embedded adding a field
 `value` which holds the custom JSON in addition to the `@type`
 field. Example (for message [google.protobuf.Duration][]):

     {
       "@type": "type.googleapis.com/google.protobuf.Duration",
       "value": "1.212s"
     }





?
?? A URL/resource name that uniquely identifies the type of the serialized
 protocol buffer message. This string must contain at least
 one "/" character. The last segment of the URL's path must represent
 the fully qualified name of the type (as in
 `path/google.protobuf.Duration`). The name should be in a canonical form
 (e.g., leading "." is not accepted).

 In practice, teams usually precompile into the binary all types that they
 expect it to use in the context of Any. However, for URLs which use the
 scheme `http`, `https`, or no scheme, one can optionally set up a type
 server that maps type URLs to message definitions as follows:

 * If no scheme is provided, `https` is assumed.
 * An HTTP GET on the URL must yield a [google.protobuf.Type][]
   value in binary format, or produce an error.
 * Applications are allowed to cache lookup results based on the
   URL, or have them precompiled into a binary to avoid any
   lookup. Therefore, binary compatibility needs to be preserved
   on changes to types. (Use versioned type names to manage
   breaking changes.)

 Note: this functionality is not currently available in the official
 protobuf release, and it is not used for type URLs beginning with
 type.googleapis.com. As of May 2023, there are no widely used type server
 implementations and no plans to implement one.

 Schemes other than `http`, `https` (or the empty scheme) might be
 used with implementation specific semantics.



?

?	

?
W
?I Must be a valid serialized protocol buffer of the above specified type.


?

?

?bproto3
??
 google/protobuf/descriptor.protogoogle.protobuf"M
FileDescriptorSet8
file (2$.google.protobuf.FileDescriptorProtoRfile"?
FileDescriptorProto
name (	Rname
package (	Rpackage

dependency (	R
dependency+
public_dependency
 (RpublicDependency'
weak_dependency (RweakDependencyC
message_type (2 .google.protobuf.DescriptorProtoRmessageTypeA
	enum_type (2$.google.protobuf.EnumDescriptorProtoRenumTypeA
service (2'.google.protobuf.ServiceDescriptorProtoRserviceC
	extension (2%.google.protobuf.FieldDescriptorProtoR	extension6
options (2.google.protobuf.FileOptionsRoptionsI
source_code_info	 (2.google.protobuf.SourceCodeInfoRsourceCodeInfo
syntax (	Rsyntax2
edition (2.google.protobuf.EditionRedition"?
DescriptorProto
name (	Rname;
field (2%.google.protobuf.FieldDescriptorProtoRfieldC
	extension (2%.google.protobuf.FieldDescriptorProtoR	extensionA
nested_type (2 .google.protobuf.DescriptorProtoR
nestedTypeA
	enum_type (2$.google.protobuf.EnumDescriptorProtoRenumTypeX
extension_range (2/.google.protobuf.DescriptorProto.ExtensionRangeRextensionRangeD

oneof_decl (2%.google.protobuf.OneofDescriptorProtoR	oneofDecl9
options (2.google.protobuf.MessageOptionsRoptionsU
reserved_range	 (2..google.protobuf.DescriptorProto.ReservedRangeR
reservedRange#

reserved_name
 (	RreservedNamez
ExtensionRange
start (Rstart
end (Rend@
options (2&.google.protobuf.ExtensionRangeOptionsRoptions7

ReservedRange
start (Rstart
end (Rend"?
ExtensionRangeOptionsX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOptionY
declaration (22.google.protobuf.ExtensionRangeOptions.DeclarationB?Rdeclaration7
features2 (2.google.protobuf.FeatureSetRfeaturesh
verification (28.google.protobuf.ExtensionRangeOptions.VerificationState:
UNVERIFIEDRverification?
Declaration
number (Rnumber
	full_name (	RfullName
type (	Rtype
reserved (Rreserved
repeated (RrepeatedJ"4
VerificationState
DECLARATION

UNVERIFIED*	?????"?
FieldDescriptorProto
name (	Rname
number (RnumberA
label (2+.google.protobuf.FieldDescriptorProto.LabelRlabel>
type (2*.google.protobuf.FieldDescriptorProto.TypeRtype
	type_name (	RtypeName
extendee (	Rextendee#

default_value (	RdefaultValue
oneof_index	 (R
oneofIndex
	json_name
 (	RjsonName7
options (2.google.protobuf.FieldOptionsRoptions'
proto3_optional (Rproto3Optional"?
Type
TYPE_DOUBLE

TYPE_FLOAT

TYPE_INT64
TYPE_UINT64

TYPE_INT32
TYPE_FIXED64
TYPE_FIXED32
	TYPE_BOOL
TYPE_STRING	

TYPE_GROUP

TYPE_MESSAGE

TYPE_BYTES
TYPE_UINT32

	TYPE_ENUM

TYPE_SFIXED32

TYPE_SFIXED64
TYPE_SINT32
TYPE_SINT64"C
Label
LABEL_OPTIONAL
LABEL_REPEATED
LABEL_REQUIRED"c
OneofDescriptorProto
name (	Rname7
options (2.google.protobuf.OneofOptionsRoptions"?
EnumDescriptorProto
name (	Rname?
value (2).google.protobuf.EnumValueDescriptorProtoRvalue6
options (2.google.protobuf.EnumOptionsRoptions]
reserved_range (26.google.protobuf.EnumDescriptorProto.EnumReservedRangeR
reservedRange#

reserved_name (	RreservedName;
EnumReservedRange
start (Rstart
end (Rend"?
EnumValueDescriptorProto
name (	Rname
number (Rnumber;
options (2!.google.protobuf.EnumValueOptionsRoptions"?
ServiceDescriptorProto
name (	Rname>
method (2&.google.protobuf.MethodDescriptorProtoRmethod9
options (2.google.protobuf.ServiceOptionsRoptions"?
MethodDescriptorProto
name (	Rname

input_type (	R	inputType
output_type (	R
outputType8
options (2.google.protobuf.MethodOptionsRoptions0
client_streaming (:falseRclientStreaming0
server_streaming (:falseRserverStreaming"?	
FileOptions!
java_package (	RjavaPackage0
java_outer_classname (	RjavaOuterClassname5
java_multiple_files
 (:falseRjavaMultipleFilesD
java_generate_equals_and_hash (BRjavaGenerateEqualsAndHash:
java_string_check_utf8 (:falseRjavaStringCheckUtf8S
optimize_for	 (2).google.protobuf.FileOptions.OptimizeMode:SPEEDRoptimizeFor

go_package (	R	goPackage5
cc_generic_services (:falseRccGenericServices9
java_generic_services (:falseRjavaGenericServices5
py_generic_services (:falseRpyGenericServices7
php_generic_services* (:falseRphpGenericServices%

deprecated (:falseR
deprecated.
cc_enable_arenas (:trueRccEnableArenas*
objc_class_prefix$ (	RobjcClassPrefix)
csharp_namespace% (	RcsharpNamespace!
swift_prefix' (	RswiftPrefix(
php_class_prefix( (	RphpClassPrefix#

php_namespace) (	RphpNamespace4
php_metadata_namespace, (	RphpMetadataNamespace!
ruby_package- (	RrubyPackage7
features2 (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption":
OptimizeMode	
SPEED
	CODE_SIZE
LITE_RUNTIME*	?????J&'"?
MessageOptions<
message_set_wire_format (:falseRmessageSetWireFormatL
no_standard_descriptor_accessor (:falseRnoStandardDescriptorAccessor%

deprecated (:falseR
deprecated
	map_entry (RmapEntryV
&deprecated_legacy_json_field_conflicts (BR"deprecatedLegacyJsonFieldConflicts7
features (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption*	?????JJJJ	J	
"?

FieldOptionsA
ctype (2#.google.protobuf.FieldOptions.CType:STRINGRctype
packed (RpackedG
jstype (2$.google.protobuf.FieldOptions.JSType:	JS_NORMALRjstype
lazy (:falseRlazy.
unverified_lazy (:falseRunverifiedLazy%

deprecated (:falseR
deprecated
weak
 (:falseRweak(
debug_redact (:falseRdebugRedactK
	retention (2-.google.protobuf.FieldOptions.OptionRetentionR	retentionH
targets (2..google.protobuf.FieldOptions.OptionTargetTypeRtargetsW
edition_defaults (2,.google.protobuf.FieldOptions.EditionDefaultReditionDefaults7
features (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOptionZ
EditionDefault2
edition (2.google.protobuf.EditionRedition
value (	Rvalue"/
CType

STRING
CORD
STRING_PIECE"5
JSType
	JS_NORMAL
	JS_STRING
	JS_NUMBER"U
OptionRetention
RETENTION_UNKNOWN
RETENTION_RUNTIME
RETENTION_SOURCE"?
OptionTargetType
TARGET_TYPE_UNKNOWN
TARGET_TYPE_FILE
TARGET_TYPE_EXTENSION_RANGE
TARGET_TYPE_MESSAGE
TARGET_TYPE_FIELD
TARGET_TYPE_ONEOF
TARGET_TYPE_ENUM
TARGET_TYPE_ENUM_ENTRY
TARGET_TYPE_SERVICE
TARGET_TYPE_METHOD	*	?????JJ"?
OneofOptions7
features (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption*	?????"?
EnumOptions
allow_alias (R
allowAlias%

deprecated (:falseR
deprecatedV
&deprecated_legacy_json_field_conflicts (BR"deprecatedLegacyJsonFieldConflicts7
features (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption*	?????J"?
EnumValueOptions%

deprecated (:falseR
deprecated7
features (2.google.protobuf.FeatureSetRfeatures(
debug_redact (:falseRdebugRedactX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption*	?????"?
ServiceOptions7
features" (2.google.protobuf.FeatureSetRfeatures%

deprecated! (:falseR
deprecatedX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption*	?????"?

MethodOptions%

deprecated! (:falseR
deprecatedq
idempotency_level" (2/.google.protobuf.MethodOptions.IdempotencyLevel:IDEMPOTENCY_UNKNOWNRidempotencyLevel7
features# (2.google.protobuf.FeatureSetRfeaturesX
uninterpreted_option? (2$.google.protobuf.UninterpretedOptionRuninterpretedOption"P
IdempotencyLevel
IDEMPOTENCY_UNKNOWN
NO_SIDE_EFFECTS

IDEMPOTENT*	?????"?
UninterpretedOptionA
name (2-.google.protobuf.UninterpretedOption.NamePartRname)
identifier_value (	RidentifierValue,
positive_int_value (RpositiveIntValue,
negative_int_value (RnegativeIntValue!
double_value (RdoubleValue!
string_value (RstringValue'
aggregate_value (	RaggregateValueJ
NamePart
	name_part (	RnamePart!
is_extension (RisExtension"?	

FeatureSet?
field_presence (2).google.protobuf.FeatureSet.FieldPresenceB9????
EXPLICIT??
IMPLICIT??
EXPLICIT?R
fieldPresencef
	enum_type (2$.google.protobuf.FeatureSet.EnumTypeB#????CLOSED??	OPEN?RenumType?
repeated_field_encoding (21.google.protobuf.FeatureSet.RepeatedFieldEncodingB'????
EXPANDED??PACKED?RrepeatedFieldEncodingx
utf8_validation (2*.google.protobuf.FeatureSet.Utf8ValidationB#????	NONE??VERIFY?Rutf8Validationx
message_encoding (2+.google.protobuf.FeatureSet.MessageEncodingB ????LENGTH_PREFIXED?RmessageEncoding|
json_format (2&.google.protobuf.FeatureSet.JsonFormatB3?????LEGACY_BEST_EFFORT??
ALLOW?R
jsonFormat"\

FieldPresence
FIELD_PRESENCE_UNKNOWN
EXPLICIT
IMPLICIT
LEGACY_REQUIRED"7
EnumType
ENUM_TYPE_UNKNOWN
OPEN

CLOSED"V
RepeatedFieldEncoding#
REPEATED_FIELD_ENCODING_UNKNOWN

PACKED
EXPANDED"C
Utf8Validation
UTF8_VALIDATION_UNKNOWN
NONE

VERIFY"S
MessageEncoding
MESSAGE_ENCODING_UNKNOWN
LENGTH_PREFIXED
	DELIMITED"H

JsonFormat
JSON_FORMAT_UNKNOWN	
ALLOW
LEGACY_BEST_EFFORT*??*??*?N?NJ??"?
FeatureSetDefaultsX
defaults (2<.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefaultRdefaultsA
minimum_edition (2.google.protobuf.EditionRminimumEditionA
maximum_edition (2.google.protobuf.EditionRmaximumEdition?
FeatureSetEditionDefault2
edition (2.google.protobuf.EditionRedition7
features (2.google.protobuf.FeatureSetRfeatures"?
SourceCodeInfoD
location (2(.google.protobuf.SourceCodeInfo.LocationRlocation?
Location
path (BRpath
span (BRspan)
leading_comments (	RleadingComments+
trailing_comments (	RtrailingComments:
leading_detached_comments (	RleadingDetachedComments"?
GeneratedCodeInfoM

annotation (2-.google.protobuf.GeneratedCodeInfo.AnnotationR
annotation?

Annotation
path (BRpath
source_file (	R
sourceFile
begin (Rbegin
end (RendR
semantic (26.google.protobuf.GeneratedCodeInfo.Annotation.SemanticRsemantic"(
Semantic
NONE
SET	
ALIAS*?
Edition
EDITION_UNKNOWN
EDITION_PROTO2?
EDITION_PROTO3?
EDITION_2023?
EDITION_1_TEST_ONLY
EDITION_2_TEST_ONLY
EDITION_99997_TEST_ONLY??
EDITION_99998_TEST_ONLY??
EDITION_99999_TEST_ONLY??B~
com.google.protobufBDescriptorProtosHZ-google.golang.org/protobuf/types/descriptorpb??GPB?Google.Protobuf.ReflectionJ??
&?	
?
&2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2? Author: [email protected] (Kenton Varda)
  Based on original Protocol Buffers design by
  Sanjay Ghemawat, Jeff Dean, and others.

 The messages in this file describe the definitions found in .proto files.
 A valid .proto file can be translated directly to a FileDescriptorProto
 without any other information (e.g. without reading its imports).


(

*D
	
*D

+,
	
+,

,1
	
,1

-7
	
%-7

.!
	
$.!

/
	
/

3

	3t descriptor.proto must be optimized for speed because reflection-based
 algorithms don't work during bootstrapping.

j
79^ The protocol compiler can output a FileDescriptorSet containing the .proto
 files it parses.



7

8(

8


8

8#

8&'
-
<S! The full set of known editions.



<
:
>- A placeholder for an unknown edition value.


>

>
?
D? Legacy syntax "editions".  These pre-date editions, but behave much like
 distinct editions.  These can't be used to specify the edition of proto
 files, but feature definitions must supply proto2/proto3 defaults for
 backwards compatibility.


D

D

E

E

E
?
J? Editions that have been released.  The specific values are arbitrary and
 should not be depended on, but they will always be time-ordered for easy
 comparison.


J

J
}
Np Placeholder editions for testing feature resolution.  These should not be
 used or relyed on outside of tests.


N

N

O

O

O

P"

P

P!

Q"

Q

Q!

R"

R

R!
/
Vx# Describes a complete .proto file.



V
9
W", file name, relative to root of source tree


W


W

W

W
*
X" e.g. "foo", "foo.bar", etc.


X


X

X

X
4
[!' Names of files imported by this file.


[


[

[

[ 
Q
](D Indexes of the public imported files in the dependency list above.


]


]

]"

]%'
z
`&m Indexes of the weak imported files in the dependency list.
 For Google-internal migration only. Do not use.


`


`

` 

`#%
6
c,) All top-level definitions in this file.


c


c

c'

c*+

d-

d


d

d(

d+,

e.

e


e!

e")

e,-

f.

f


f

f )

f,-

	h#

	h


	h

	h

	h!"
?

n/? This field contains optional information about the original source code.
 You may safely remove this entire field without harming runtime
 functionality of the descriptors -- the information is needed only by
 development tools.



n



n


n*


n-.
?
t? The syntax of the proto file.
 The supported values are "proto2", "proto3", and "editions".

 If `edition` is present, this value must be "editions".


t


t

t

t
-
w   The edition of the proto file.


w


w

w

w
(
{? Describes a message type.



{

|

|


|

|

|

~*

~


~

~ %

~()

.






 )

,-

?+

?


?

?&

?)*

?-

?


?

?(

?+,

??

?


?" Inclusive.


?

?


?

?

?" Exclusive.


?

?


?

?

?/

?

?
"

?#*

?-.

?.

?


?

?)

?,-

?/

?


?

? *

?-.

?&

?


?

?!

?$%
?
??? Range of reserved tag numbers. Reserved tag numbers may not be used by
 fields or extension ranges in the same message. Reserved ranges may
 not overlap.


?


?" Inclusive.


?

?


?

?

?" Exclusive.


?

?


?

?

?,

?


?

?'

?*+
?
	?%u Reserved field names, which may not be used by fields in the same message.
 A given name may only be reserved once.


	?


	?

	?

	?"$

??

?
O
?:A The parser stores options it doesn't recognize here. See above.


?


?

?3

?69

??

?

K
?; The extension number declared within the extension range.


?

?


?

?
z
?"j The fully-qualified name of the extension field. There must be a leading
 dot in front of the full name.


?

?


?

? !
?
?? The fully-qualified type name of the extension field. Unlike
 Metadata.type, Declaration.type must have a leading dot for messages
 and enums.


?

?


?

?
?
?? If true, indicates that the number is reserved in the extension range,
 and any extension field with the number will fail to compile. Set this
 when a declared extension field is deleted.


?

?


?

?
?
?z If true, indicates that the extension must be defined as repeated.
 Otherwise the extension must be defined as optional.


?

?


?

?
$
	?" removed is_repeated


	?


	?


	?

?
?F? For external users: DO NOT USE. We are in the process of open sourcing
 extension declaration and executing internal cleanups before it can be
 used externally.


?


?

?"

?%&

?'E

?(D
=
?$/ Any features defined in the specific edition.


?


?

?

?!#
@
??0 The verification state of the extension range.


?
C
?3 All the extensions of the range must be declared.


?

?

?

?

?
?
?E~ The verification state of the range.
 TODO: flip the default to DECLARATION once all empty ranges
 are marked as UNVERIFIED.


?


?

?)

?,-

?.D

?9C
Z
?M Clients can define custom options in extensions of this message. See above.


?


?


?
3
??% Describes a field within a message.


?

??

?
S
?C 0 is reserved for errors.
 Order is weird for historical reasons.


?

?

?

?

?
w
?g Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
 negative values are likely.


?

?

?

?

?
w
?g Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
 negative values are likely.


?

?

?

?

?

?

?

?

?

?

?

?

?

?
?
	?? Tag-delimited aggregate.
 Group type is deprecated and not supported after google.protobuf. However, Proto3
 implementations should still be able to parse the group wire format and
 treat group fields as unknown fields.  In Editions, the group wire format
 can be enabled via the `message_encoding` feature.


	?

	?
-

?" Length-delimited aggregate.



?


?
#
? New in version 2.


?

?

?

?

?


?


?


?

?

?

?

?

?

?
'
?" Uses ZigZag encoding.


?

?
'
?" Uses ZigZag encoding.


?

?

??

?
*
? 0 is reserved for errors


?

?

?

?

?
?
?? The required label is only allowed in google.protobuf.  In proto3 and Editions
 it's explicitly prohibited.  In Editions, the `field_presence` feature
 can be used to get this behavior.


?

?

?

?


?

?

?

?

?


?

?

?

?

?


?

?

?
?
?? If type_name is set, this need not be set.  If both this and type_name
 are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.


?


?

?

?
?
? ? For message and enum types, this is the name of the type.  If the name
 starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
 rules are used to find the type (i.e. first the nested types within this
 message are searched, then within the parent, on up to the root
 namespace).


?


?

?

?
~
?p For extensions, this is the name of the type being extended.  It is
 resolved in the same manner as type_name.


?


?

?

?
?
?$? For numeric types, contains the original text representation of the value.
 For booleans, "true" or "false".
 For strings, contains the default text contents (not escaped in any way).
 For bytes, contains the C escaped value.  All bytes >= 128 are escaped.


?


?

?

?"#
?
?!v If set, gives the index of a oneof in the containing type's oneof_decl
 list.  This field is a member of that oneof.


?


?

?

? 
?
?!? JSON name of this field. The value is set by protocol compiler. If the
 user has set a "json_name" option on this field, that option's value
 will be used. Otherwise, it's deduced from the field's name by converting
 it to camelCase.


?


?

?

? 

	?$

	?


	?

	?

	?"#
?	

?%?	 If true, this is a proto3 "optional". When a proto3 field is optional, it
 tracks presence regardless of field type.

 When proto3_optional is true, this field must be belong to a oneof to
 signal to old proto3 clients that presence is tracked for this field. This
 oneof is known as a "synthetic" oneof, and this field must be its sole
 member (each proto3 optional field gets its own synthetic oneof). Synthetic
 oneofs exist in the descriptor only, and do not generate any API. Synthetic
 oneofs must be ordered after all "real" oneofs.

 For message fields, proto3_optional doesn't create any semantic change,
 since non-repeated message fields always track presence. However it still
 indicates the semantic detail of whether the user wrote "optional" or not.
 This can be useful for round-tripping the .proto file. For consistency we
 give message fields a synthetic oneof also, even though it is not required
 to track presence. This is especially important because the parser can't
 tell if a field is a message or an enum, so it must always create a
 synthetic oneof.

 Proto2 optional fields do not set this flag, because they already indicate
 optional with `LABEL_OPTIONAL`.



?



?


?


?"$
"
?? Describes a oneof.


?

?

?


?

?

?

?$

?


?

?

?"#
'
?? Describes an enum type.


?

?

?


?

?

?

?.

?


?#

?$)

?,-

?#

?


?

?

?!"
?
??? Range of reserved numeric values. Reserved values may not be used by
 entries in the same enum. Reserved ranges may not overlap.

 Note that this is distinct from DescriptorProto.ReservedRange in that it
 is inclusive such that it can appropriately represent the entire int32
 domain.


?


?" Inclusive.


?

?


?

?

?" Inclusive.


?

?


?

?
?
?0? Range of reserved numeric values. Reserved numeric values may not be used
 by enum values in the same enum declaration. Reserved ranges may not
 overlap.


?


?

?+

?./
l
?$^ Reserved enum value names, which may not be reused. A given name may only
 be reserved once.


?


?

?

?"#
1
??# Describes a value within an enum.


? 

?

?


?

?

?

?

?


?

?

?

?(

?


?

?#

?&'
$
?? Describes a service.


?

?

?


?

?

?

?,

?


? 

?!'

?*+

?&

?


?

?!

?$%
0
	??" Describes a method of a service.


	?

	?

	?


	?

	?

	?
?
	?!? Input and output type names.  These are resolved in the same way as
 FieldDescriptorProto.type_name, but must refer to a message type.


	?


	?

	?

	? 

	?"

	?


	?

	?

	? !

	?%

	?


	?

	? 

	?#$
E
	?77 Identifies if client streams multiple client messages


	?


	?

	? 

	?#$

	?%6

	?05
E
	?77 Identifies if server streams multiple server messages


	?


	?

	? 

	?#$

	?%6

	?05
?

??2N ===================================================================
 Options
2?
 Each of the definitions above may have "options" attached.  These are
 just annotations which may cause code to be generated slightly differently
 or may contain hints for code that manipulates protocol messages.

 Clients may define custom options as extensions of the *Options messages.
 These extensions may not yet be known at parsing time, so the parser cannot
 store the values in them.  Instead it stores them in a field in the *Options
 message called uninterpreted_option. This field must have the same name
 across all *Options messages. We then use this field to populate the
 extensions when we build a descriptor, at which point all protos have been
 parsed and so all extensions are known.

 Extension numbers for custom options may be chosen as follows:
 * For options which will only be used within a single application or
   organization, or for experimental options, use field numbers 50000
   through 99999.  It is up to you to ensure that you do not use the
   same number for multiple options.
 * For options which will be published and used publicly by multiple
   independent entities, e-mail [email protected]
   to reserve extension numbers. Simply provide your project name (e.g.
   Objective-C plugin) and your project website (if available) -- there's no
   need to explain how you intend to use them. Usually you only need one
   extension number. You can declare multiple options with only one extension
   number by putting them in a sub-message. See the Custom Options section of
   the docs for examples:
   https://developers.google.com/protocol-buffers/docs/proto#options
   If this turns out to be popular, a web service will be set up
   to automatically assign option numbers.



?
?

?#? Sets the Java package where classes generated from this .proto will be
 placed.  By default, the proto package is used, but this is often
 inappropriate because proto packages do not normally start with backwards
 domain names.



?



?


?


?!"
?

?+? Controls the name of the wrapper Java class generated for the .proto file.
 That class will always contain the .proto file's getDescriptor() method as
 well as any top-level extensions defined in the .proto file.
 If java_multiple_files is disabled, then all the other classes from the
 .proto file will be nested inside the single wrapper outer class.



?



?


?&


?)*
?

?;? If enabled, then the Java code generator will generate a separate .java
 file for each top-level message, enum, and service defined in the .proto
 file.  Thus, these types will *not* be nested inside the wrapper class
 named by java_outer_classname.  However, the wrapper class will still be
 generated to contain the file's getDescriptor() method as well as any
 top-level extensions defined in the file.



?



?


?#


?&(


?):


?49
)

?E This option does nothing.



?



?


?-


?02


?3D


?4C
?

?>? If set true, then the Java2 code generator will generate code that
 throws an exception whenever an attempt is made to assign a non-UTF-8
 byte sequence to a string field.
 Message reflection will do the same.
 However, an extension field still accepts non-UTF-8 byte sequences.
 This option has no effect on when used with the lite runtime.



?



?


?&


?)+


?,=


?7<
L

??< Generated classes can be optimized for speed or code size.



?
D

?"4 Generate complete code for parsing, serialization,



?	


?
G

? etc.
"/ Use ReflectionOps to implement these methods.



?


?
G

?"7 Generate code using MessageLite and the lite runtime.



?


?


?;


?



?


?$


?'(


?):


?49
?

?"? Sets the Go package where structs generated from this .proto will be
 placed. If omitted, the Go package will be derived from the following:
   - The basename of the package import path, if provided.
   - Otherwise, the package statement in the .proto file, if present.
   - Otherwise, the basename of the .proto file, without extension.



?



?


?


?!
?

?;? Should generic services be generated in each language?  "Generic" services
 are not specific to any particular RPC system.  They are generated by the
 main code generators in each language (without additional plugins).
 Generic services were the only kind of service generation supported by
 early versions of google.protobuf.

 Generic services are now considered deprecated in favor of using plugins
 that generate code specific to your particular RPC system.  Therefore,
 these default to false.  Old code which depends on generic services should
 explicitly set them to true.



?



?


?#


?&(


?):


?49


?=


?



?


?%


?(*


?+<


?6;


	?;


	?



	?


	?#


	?&(


	?):


	?49



?<



?




?



?$



?')



?*;



?5:
?

?2? Is this file deprecated?
 Depending on the target platform, this can emit Deprecated annotations
 for everything in the file, or it will be completely ignored; in the very
 least, this is a formalization for deprecating files.



?



?


?


?


? 1


?+0


?7q Enables the use of arenas for the proto messages in this file. This applies
 only to generated classes for C++.



?



?


? 


?#%


?&6


?15
?


?)? Sets the objective c class prefix which is prepended to all objective c
 generated classes from this .proto. There is no default.




?




?



?#



?&(
I

?(; Namespace for generated classes; defaults to the package.



?



?


?"


?%'
?

?$? By default Swift generators will take the proto package and CamelCase it
 replacing '.' with underscore and use that to prefix the types/symbols
 defined. When this options is provided, they will use this value instead
 to prefix the types/symbols defined.



?



?


?


?!#
~

?(p Sets the php class prefix which is prepended to all php generated classes
 from this .proto. Default is empty.



?



?


?"


?%'
?

?%? Use this option to change the namespace of php generated classes. Default
 is empty. When this option is empty, the package name will be used for
 determining the namespace.



?



?


?


?"$
?

?.? Use this option to change the namespace of php generated metadata classes.
 Default is empty. When this option is empty, the proto file name will be
 used for determining the namespace.



?



?


?(


?+-
?

?$? Use this option to change the package of ruby generated classes. Default
 is empty. When this option is not set, the package name will be used for
 determining the ruby package.



?



?


?


?!#
=

?$/ Any features defined in the specific edition.



?



?


?


?!#
|

?:n The parser stores options it doesn't recognize here.
 See the documentation for the "Options" section above.



?



?


?3


?69
?

?z Clients can define custom options in extensions of this message.
 See the documentation for the "Options" section above.



?



?



?


	?


	?


	?


	?

??

?
?
?>? Set true to use the old proto1 MessageSet wire format for extensions.
 This is provided for backwards-compatibility with the MessageSet wire
 format.  You should not use this for any other reason:  It's less
 efficient, has fewer features, and is more complicated.

 The message must be defined exactly as follows:
   message Foo {
     option message_set_wire_format = true;
     extensions 4 to max;
   }
 Note that the message cannot have any defined fields; MessageSets only
 have extensions.

 All extensions of your type must be singular messages; e.g. they cannot
 be int32s, enums, or repeated messages.

 Because this is an option, the above two restrictions are not enforced by
 the protocol compiler.


?


?

?'

?*+

?,=

?7<
?
?F? Disables the generation of the standard "descriptor()" accessor, which can
 conflict with a field of the same name.  This is meant to make migration
 from proto1 easier; new code should avoid fields named "descriptor".


?


?

?/

?23

?4E

??D
?
?1? Is this message deprecated?
 Depending on the target platform, this can emit Deprecated annotations
 for the message, or it will be completely ignored; in the very least,
 this is a formalization for deprecating messages.


?


?

?

?

?0

?*/

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?
?
?? NOTE: Do not set the option in .proto files. Always use the maps syntax
 instead. The option should only be implicitly set by the proto compiler
 parser.

 Whether the message is an automatically generated map entry type for the
 maps field.

 For maps fields:
     map map_field = 1;
 The parsed descriptor looks like:
     message MapFieldEntry {
         option map_entry = true;
         optional KeyType key = 1;
         optional ValueType value = 2;
     }
     repeated MapFieldEntry map_field = 1;

 Implementations may choose not to generate the map_entry=true message, but
 use a native map in the target language to hold the keys and values.
 The reflection APIs in such implementations still need to work as
 if the field is a repeated message field.


?


?

?

?
$
	?
" javalite_serializable


	?

	?

	?

	?
" javanano_as_lite


	?

	?

	?
?
?P? Enable the legacy handling of JSON field name conflicts.  This lowercases
 and strips underscored from the fields before comparison in proto3 only.
 The new behavior takes `json_name` into account and applies to proto2 as
 well.

 This should only be used as a temporary measure against broken builds due
 to the change in behavior for JSON field name conflicts.

 TODO This is legacy behavior we plan to remove once downstream
 teams have had time to migrate.


?


?

?6

?9;

?
	

>
l
a Magic number in this file derived from top 28bit of SHA256 digest of
 "udpa.annotation.status".

	
+


"








!*






.
! Unknown package version status.


	


5

( This version of the package is frozen.





M

@ This version of the package is the active development version.





?
#? This version of the package is the candidate for the next major version. It
 is typically machine generated from the active development version.




!"


!'


!
N
#A The entity is work-in-progress and subject to breaking changes.


#

#

#
M
&2@ The entity belongs to a package with the given version status.


&

&-

&01bproto3
?%
google/protobuf/duration.protogoogle.protobuf":
Duration
seconds (Rseconds
nanos (RnanosB?
com.google.protobufB
DurationProtoPZ1google.golang.org/protobuf/types/known/durationpb??GPB?Google.Protobuf.WellKnownTypesJ?#
r
?
2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 

"
	
"

#H
	
#H

$,
	
$,

%.
	
%.

&"
	

&"

'!
	
$'!

(;
	
%(;
?
er? A Duration represents a signed, fixed-length span of time represented
 as a count of seconds and fractions of seconds at nanosecond
 resolution. It is independent of any calendar and concepts like "day"
 or "month". It is related to Timestamp in that the difference between
 two Timestamp values is a Duration and it can be added or subtracted
 from a Timestamp. Range is approximately +-10,000 years.

 # Examples

 Example 1: Compute Duration from two Timestamps in pseudo code.

     Timestamp start = ...;
     Timestamp end = ...;
     Duration duration = ...;

     duration.seconds = end.seconds - start.seconds;
     duration.nanos = end.nanos - start.nanos;

     if (duration.seconds < 0 && duration.nanos > 0) {
       duration.seconds += 1;
       duration.nanos -= 1000000000;
     } else if (duration.seconds > 0 && duration.nanos < 0) {
       duration.seconds -= 1;
       duration.nanos += 1000000000;
     }

 Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.

     Timestamp start = ...;
     Duration duration = ...;
     Timestamp end = ...;

     end.seconds = start.seconds + duration.seconds;
     end.nanos = start.nanos + duration.nanos;

     if (end.nanos < 0) {
       end.seconds -= 1;
       end.nanos += 1000000000;
     } else if (end.nanos >= 1000000000) {
       end.seconds += 1;
       end.nanos -= 1000000000;
     }

 Example 3: Compute Duration from datetime.timedelta in Python.

     td = datetime.timedelta(days=3, minutes=10)
     duration = Duration()
     duration.FromTimedelta(td)

 # JSON Mapping

 In JSON format, the Duration type is encoded as a string rather than an
 object, where the string ends in the suffix "s" (indicating seconds) and
 is preceded by the number of seconds, with nanoseconds expressed as
 fractional seconds. For example, 3 seconds with 0 nanoseconds should be
 encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
 be expressed in JSON format as "3.000000001s", and 3 seconds and 1
 microsecond should be expressed in JSON format as "3.000001s".




e
?
i? Signed seconds of the span of time. Must be from -315,576,000,000
 to +315,576,000,000 inclusive. Note: these bounds are computed from:
 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years


i

i

i
?
q? Signed fractions of a second at nanosecond resolution of the span
 of time. Durations less than one second are represented with a 0
 `seconds` field and a positive or negative `nanos` field. For durations
 of one second or more, a non-zero value for the `nanos` field must be
 of the same sign as the `seconds` field. Must be from -999,999,999
 to +999,999,999 inclusive.


q

q

qbproto3
?1
google/protobuf/timestamp.protogoogle.protobuf";
	Timestamp
seconds (Rseconds
nanos (RnanosB?
com.google.protobufBTimestampProtoPZ2google.golang.org/protobuf/types/known/timestamppb??GPB?Google.Protobuf.WellKnownTypesJ?/
?
?
2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 

"
	
"

#I
	
#I

$,
	
$,

%/
	
%/

&"
	

&"

'!
	
$'!

(;
	
%(;
?
??? A Timestamp represents a point in time independent of any time zone or local
 calendar, encoded as a count of seconds and fractions of seconds at
 nanosecond resolution. The count is relative to an epoch at UTC midnight on
 January 1, 1970, in the proleptic Gregorian calendar which extends the
 Gregorian calendar backwards to year one.

 All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
 second table is needed for interpretation, using a [24-hour linear
 smear](https://developers.google.com/time/smear).

 The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
 restricting to that range, we ensure that we can convert to and from [RFC
 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.

 # Examples

 Example 1: Compute Timestamp from POSIX `time()`.

     Timestamp timestamp;
     timestamp.set_seconds(time(NULL));
     timestamp.set_nanos(0);

 Example 2: Compute Timestamp from POSIX `gettimeofday()`.

     struct timeval tv;
     gettimeofday(&tv, NULL);

     Timestamp timestamp;
     timestamp.set_seconds(tv.tv_sec);
     timestamp.set_nanos(tv.tv_usec * 1000);

 Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.

     FILETIME ft;
     GetSystemTimeAsFileTime(&ft);
     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;

     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
     Timestamp timestamp;
     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

 Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.

     long millis = System.currentTimeMillis();

     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
         .setNanos((int) ((millis % 1000) * 1000000)).build();

 Example 5: Compute Timestamp from Java `Instant.now()`.

     Instant now = Instant.now();

     Timestamp timestamp =
         Timestamp.newBuilder().setSeconds(now.getEpochSecond())
             .setNanos(now.getNano()).build();

 Example 6: Compute Timestamp from current time in Python.

     timestamp = Timestamp()
     timestamp.GetCurrentTime()

 # JSON Mapping

 In JSON format, the Timestamp type is encoded as a string in the
 [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
 format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
 where {year} is always expressed using four digits while {month}, {day},
 {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
 seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
 are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
 is required. A proto3 JSON serializer should always use UTC (as indicated by
 "Z") when printing the Timestamp type and a proto3 JSON parser should be
 able to accept both UTC and other timezones (as indicated by an offset).

 For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
 01:30 UTC on January 15, 2017.

 In JavaScript, one can convert a Date object to this format using the
 standard
 [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
 method. In Python, a standard `datetime.datetime` object can be converted
 to this format using
 [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
 the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
 the Joda Time's [`ISODateTimeFormat.dateTime()`](
 http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
 ) to obtain a formatter capable of generating timestamps in this format.



?
?
?? Represents seconds of UTC time since Unix epoch
 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
 9999-12-31T23:59:59Z inclusive.


?

?

?
?
?? Non-negative fractions of a second at nanosecond resolution. Negative
 second values with fractions must still have non-negative nanos values
 that count forward in time. Must be from 0 to 999,999,999
 inclusive.


?

?

?bproto3
??
validate/validate.protovalidate google/protobuf/descriptor.protogoogle/protobuf/duration.protogoogle/protobuf/timestamp.proto"?

FieldRules0
message (2.validate.MessageRulesRmessage,
float (2.validate.FloatRulesHRfloat/
double (2.validate.DoubleRulesHRdouble,
int32 (2.validate.Int32RulesHRint32,
int64 (2.validate.Int64RulesHRint64/
uint32 (2.validate.UInt32RulesHRuint32/
uint64 (2.validate.UInt64RulesHRuint64/
sint32 (2.validate.SInt32RulesHRsint32/
sint64 (2.validate.SInt64RulesHRsint642
fixed32	 (2.validate.Fixed32RulesHRfixed322
fixed64
 (2.validate.Fixed64RulesHRfixed645
sfixed32 (2.validate.SFixed32RulesHRsfixed325
sfixed64 (2.validate.SFixed64RulesHRsfixed64)
bool
 (2.validate.BoolRulesHRbool/
string (2.validate.StringRulesHRstring,
bytes (2.validate.BytesRulesHRbytes)
enum (2.validate.EnumRulesHRenum5
repeated (2.validate.RepeatedRulesHRrepeated&
map (2.validate.MapRulesHRmap&
any (2.validate.AnyRulesHRany5
duration (2.validate.DurationRulesHRduration8
	timestamp (2.validate.TimestampRulesHR	timestampB
type"?

FloatRules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
DoubleRules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?

Int32Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?

Int64Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
UInt32Rules
const (
Rconst
lt (
Rlt
lte (
Rlte
gt (
Rgt
gte (
Rgte
in (
Rin
not_in (
RnotIn!
ignore_empty (RignoreEmpty"?
UInt64Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
SInt32Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
SInt64Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
Fixed32Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?
Fixed64Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?

SFixed32Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"?

SFixed64Rules
const (Rconst
lt (Rlt
lte (Rlte
gt (Rgt
gte (Rgte
in (Rin
not_in (RnotIn!
ignore_empty (RignoreEmpty"!
	BoolRules
const (Rconst"?
StringRules
const (	Rconst
len (Rlen
min_len (RminLen
max_len (RmaxLen
	len_bytes (RlenBytes
	min_bytes (RminBytes
	max_bytes (RmaxBytes
pattern (	Rpattern
prefix (	Rprefix
suffix (	Rsuffix
contains	 (	Rcontains!
not_contains (	RnotContains
in
 (	Rin
not_in (	RnotIn
email (HRemail
hostname
 (HRhostname
ip (HRip
ipv4 (HRipv4
ipv6 (HRipv6
uri (HRuri
uri_ref (HRuriRef
address (HRaddress
uuid (HRuuid@
well_known_regex (2.validate.KnownRegexHRwellKnownRegex
strict (:trueRstrict!
ignore_empty (RignoreEmptyB

well_known"?

BytesRules
const (Rconst
len
 (Rlen
min_len (RminLen
max_len (RmaxLen
pattern (	Rpattern
prefix (Rprefix
suffix (Rsuffix
contains (Rcontains
in (Rin
not_in	 (RnotIn
ip
 (HRip
ipv4 (HRipv4
ipv6 (HRipv6!
ignore_empty (RignoreEmptyB

well_known"k
	EnumRules
const (Rconst!
defined_only (RdefinedOnly
in (Rin
not_in (RnotIn">
MessageRules
skip (Rskip
required (Rrequired"?

RepeatedRules
	min_items (RminItems
	max_items (RmaxItems
unique (Runique*
items (2.validate.FieldRulesRitems!
ignore_empty (RignoreEmpty"?
MapRules
	min_pairs (RminPairs
	max_pairs (RmaxPairs
	no_sparse (RnoSparse(
keys (2.validate.FieldRulesRkeys,
values (2.validate.FieldRulesRvalues!
ignore_empty (RignoreEmpty"M
AnyRules
required (Rrequired
in (	Rin
not_in (	RnotIn"?

DurationRules
required (Rrequired/
const (2.google.protobuf.DurationRconst)
lt (2.google.protobuf.DurationRlt+
lte (2.google.protobuf.DurationRlte)
gt (2.google.protobuf.DurationRgt+
gte (2.google.protobuf.DurationRgte)
in (2.google.protobuf.DurationRin0
not_in (2.google.protobuf.DurationRnotIn"?
TimestampRules
required (Rrequired0
const (2.google.protobuf.TimestampRconst*
lt (2.google.protobuf.TimestampRlt,
lte (2.google.protobuf.TimestampRlte*
gt (2.google.protobuf.TimestampRgt,
gte (2.google.protobuf.TimestampRgte
lt_now (RltNow
gt_now (RgtNow1
within	 (2.google.protobuf.DurationRwithin*F

KnownRegex
UNKNOWN
HTTP_HEADER_NAME
HTTP_HEADER_VALUE:<
disabled.google.protobuf.MessageOptions? (Rdisabled::
ignored.google.protobuf.MessageOptions? (Rignored::
required.google.protobuf.OneofOptions? (Rrequired:J
rules.google.protobuf.FieldOptions? (2.validate.FieldRulesRrulesBP
io.envoyproxy.pgv.validateZ2github.com/envoyproxy/protoc-gen-validate/validateJ?
?





I
	
I

3
	
3
	
*
	
(
	
)
:
/ Validation rules applied at the message level

?
"? Disabled nullifies any validation rules for this message, including any
 message fields associated with it that do support validation.



%












!
L
!A Ignore skips generation of validation methods for this message.



%












 
8
- Validation rules applied at the oneof level

?
"} Required ensures that exactly one the field options in a oneof is set;
 validation fails if no fields in the oneof are set.



#












!
8
- Validation rules applied at the field level

?
%w Rules specify the validations to be performed on this field. By default,
 no validation is performed against a field.



#












 $
?
#A? FieldRules encapsulates the rules for each type of field. Depending on the
 field, the correct set should be used to ensure proper validations.



#

$'

$

$


$!

$$&

%@

%

!
'# Scalar Field Types


'

'

'!"

(#

(

(

(!"

)#

)

)

)!"

*#

*

*

*!"

+#

+

+

+!"

,#

,

,

,!"

-#

-

-

-!"

.#

.

.

.!"

	/#

	/

	/

	/!"


0$


0


0


0!#

1$

1

1

1!#

2$

2

2

2!#


3$


3


3


3!#

4$

4

4

4!#

5$

5

5

5!#
"
8$ Complex Field Types


8

8

8!#

9$

9

9

9!#

:$

:

:

:!#
%
=& Well-Known Field Types


=

=

=#%

>&

>

>

>#%

?&

?

? 

?#%
L
De@ FloatRules describes the constraints applied to `float` values



D
R
FE Const specifies that this field must be exactly the specified value


F

F


F

F
]
JP Lt specifies that this field must be less than the specified value,
 exclusive


J

J


J

J
j
N] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


N

N


N

N
?
S? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


S

S


S

S
?
X? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


X

X


X

X
Y
\L In specifies that this field must be equal to one of the specified
 values


\

\


\

\
^
`Q NotIn specifies that this field cannot be equal to one of the specified
 values


`

`


`

`
?
d#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


d

d


d

d!"
O
h?B DoubleRules describes the constraints applied to `double` values



h
R
jE Const specifies that this field must be exactly the specified value


j

j


j

j
]
nP Lt specifies that this field must be less than the specified value,
 exclusive


n

n


n

n
j
r] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


r

r


r

r
?
w? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


w

w


w

w
?
|? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


|

|


|

|
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
N
??@ Int32Rules describes the constraints applied to `int32` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
N
??@ Int64Rules describes the constraints applied to `int64` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
P
??B UInt32Rules describes the constraints applied to `uint32` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
P
??B UInt64Rules describes the constraints applied to `uint64` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
P
??B SInt32Rules describes the constraints applied to `sint32` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
P
??B SInt64Rules describes the constraints applied to `sint64` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
R
	??D Fixed32Rules describes the constraints applied to `fixed32` values


	?
S
	?E Const specifies that this field must be exactly the specified value


	?

	?


	?

	?
^
	?P Lt specifies that this field must be less than the specified value,
 exclusive


	?

	?


	?

	?
k
	?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


	?

	?


	?

	?
?
	?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


	?

	?


	?

	?
?
	?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


	?

	?


	?

	?
Z
	?L In specifies that this field must be equal to one of the specified
 values


	?

	?


	?

	?
_
	? Q NotIn specifies that this field cannot be equal to one of the specified
 values


	?

	?


	?

	?
?
	?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


	?

	?


	?

	?!"
R

??D Fixed64Rules describes the constraints applied to `fixed64` values



?
S

?E Const specifies that this field must be exactly the specified value



?


?



?


?
^

?P Lt specifies that this field must be less than the specified value,
 exclusive



?


?



?


?
k

?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive



?


?



?


?
?

?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.



?


?



?


?
?

?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.



?


?



?


?
Z

?L In specifies that this field must be equal to one of the specified
 values



?


?



?


?
_

? Q NotIn specifies that this field cannot be equal to one of the specified
 values



?


?



?


?
?

?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty



?


?



?


?!"
T
??F SFixed32Rules describes the constraints applied to `sfixed32` values


?
S
? E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?!Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

? 
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
T
??F SFixed64Rules describes the constraints applied to `sfixed64` values


?
S
? E Const specifies that this field must be exactly the specified value


?

?


?

?
^
?P Lt specifies that this field must be less than the specified value,
 exclusive


?

?


?

?
k
?] Lte specifies that this field must be less than or equal to the
 specified value, inclusive


?

?


?

?
?
?? Gt specifies that this field must be greater than the specified value,
 exclusive. If the value of Gt is larger than a specified Lt or Lte, the
 range is reversed.


?

?


?

?
?
?? Gte specifies that this field must be greater than or equal to the
 specified value, inclusive. If the value of Gte is larger than a
 specified Lt or Lte, the range is reversed.


?

?


?

?
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
?!Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

? 
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
L

??> BoolRules describes the constraints applied to `bool` values



?
S

?E Const specifies that this field must be exactly the specified value



?


?



?


?
O
??A StringRules describe the constraints applied to `string` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
?
?? Len specifies that this field must be the specified number of
 characters (Unicode code points). Note that the number of
 characters may differ from the number of bytes in the string.


?

?


?

?
?
? ? MinLen specifies that this field must be the specified number of
 characters (Unicode code points) at a minimum. Note that the number of
 characters may differ from the number of bytes in the string.


?

?


?

?
?
? ? MaxLen specifies that this field must be the specified number of
 characters (Unicode code points) at a maximum. Note that the number of
 characters may differ from the number of bytes in the string.


?

?


?

?
X
?#J LenBytes specifies that this field must be the specified number of bytes


?

?


?

? "
f
?"X MinBytes specifies that this field must be the specified number of bytes
 at a minimum


?

?


?

? !
f
?"X MaxBytes specifies that this field must be the specified number of bytes
 at a maximum


?

?


?

? !
?
?!? Pattern specifies that this field must match against the specified
 regular expression (RE2 syntax). The included expression should elide
 any delimiters.


?

?


?

? 
s
?!e Prefix specifies that this field must have the specified substring at
 the beginning of the string.


?

?


?

? 
m
	?!_ Suffix specifies that this field must have the specified substring at
 the end of the string.


	?

	?


	?

	? 
m

?!_ Contains specifies that this field must have the specified substring
 anywhere in the string.



?


?



?


? 
r
?&d NotContains specifies that this field cannot have the specified substring
 anywhere in the string.


?

?


? 

?#%
Z
? L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_

? Q NotIn specifies that this field cannot be equal to one of the specified
 values



?


?



?


?
^
??N WellKnown rules provide advanced constraints against common string
 patterns


?

d
?V Email specifies that the field must be a valid email address as
 defined by RFC 5322


?

?


?
?
?? Hostname specifies that the field must be a valid hostname as
 defined by RFC 1034. This constraint does not support
 internationalized domain names (IDNs).


?

?


?
?
?? Ip specifies that the field must be a valid IP (v4 or v6) address.
 Valid IPv6 addresses should not include surrounding square brackets.


?

?


?
K
?= Ipv4 specifies that the field must be a valid IPv4 address.


?

?


?
?
?? Ipv6 specifies that the field must be a valid IPv6 address. Valid
 IPv6 addresses should not include surrounding square brackets.


?

?


?
b
?T Uri specifies that the field must be a valid, absolute URI as defined
 by RFC 3986


?

?


?
|
?n UriRef specifies that the field must be a valid URI as defined by RFC
 3986 and may be relative or absolute.


?

?


?
?
?? Address specifies that the field must be either a valid hostname as
 defined by RFC 1034 (which does not support internationalized domain
 names or IDNs), or it can be a valid IP (v4 or v6).


?

?


?
Z
?L Uuid specifies that the field must be a valid UUID as defined by
 RFC 4122


?

?


?
X
?)J WellKnownRegex specifies a common well known pattern defined as a regex.


?

?#

?&(
?
?-? This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable
 strict header validation.
 By default, this is true, and HTTP header validations are RFC-compliant.
 Setting to false will enable a looser validations that only disallows
 \r\n\0 characters, which can be used to bypass header matching rules.


?


?

?

?

?,

?'+
?
?"s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?


?

?

?!
@
??2 WellKnownRegex contain some well-known patterns.


?

?

?	

?
8
?* HTTP header name as defined by RFC 7230.


?

?
9
?+ HTTP header value as defined by RFC 7230.


?

?
M
??? BytesRules describe the constraints applied to `bytes` values


?
S
?E Const specifies that this field must be exactly the specified value


?

?


?

?
S
?E Len specifies that this field must be the specified number of bytes


?

?


?

?
d
? V MinLen specifies that this field must be the specified number of bytes
 at a minimum


?

?


?

?
d
? V MaxLen specifies that this field must be the specified number of bytes
 at a maximum


?

?


?

?
?
?!? Pattern specifies that this field must match against the specified
 regular expression (RE2 syntax). The included expression should elide
 any delimiters.


?

?


?

? 
o
?!a Prefix specifies that this field must have the specified bytes at the
 beginning of the string.


?

?


?

? 
i
?![ Suffix specifies that this field must have the specified bytes at the
 end of the string.


?

?


?

? 
i
?![ Contains specifies that this field must have the specified bytes
 anywhere in the string.


?

?


?

? 
Z
?L In specifies that this field must be equal to one of the specified
 values


?

?


?

?
_
	?Q NotIn specifies that this field cannot be equal to one of the specified
 values


	?

	?


	?

	?
\
??L WellKnown rules provide advanced constraints against common byte
 patterns


?

a

?S Ip specifies that the field must be a valid IP (v4 or v6) address in
 byte format



?


?



?
Z
?L Ipv4 specifies that the field must be a valid IPv4 address in byte
 format


?

?


?
Z
?L Ipv6 specifies that the field must be a valid IPv6 address in byte
 format


?

?


?
?

?$s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty



?


?



?


?!#
I
??; EnumRules describe the constraints applied to enum values


?
S
?$E Const specifies that this field must be exactly the specified value


?

?


?

?"#
?
?$~ DefinedOnly specifies that this field must be only one of the defined
 values for this enum, failing on any undefined value.


?

?


?

?"#
Z
?$L In specifies that this field must be equal to one of the specified
 values


?

?


?

?"#
_
?$Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?


?

?"#
?
??? MessageRules describe the constraints applied to embedded message values.
 For message-type fields, validation is performed recursively.


?
_
?Q Skip specifies that the validation rules of this field should not be
 evaluated


?

?


?

?
>
?0 Required specifies that this field must be set


?

?


?

?
S
??E RepeatedRules describe the constraints applied to `repeated` values


?
h
?"Z MinItems specifies that this field must have the specified number of
 items at a minimum


?

?


?

? !
h
?"Z MaxItems specifies that this field must have the specified number of
 items at a maximum


?

?


?

? !
?
?"? Unique specifies that all elements in this field must be unique. This
 constraint is only applicable to scalar and enum types (messages are not
 supported).


?

?


?

? !
?
?"? Items specifies the constraints to be applied to each item in the field.
 Repeated message fields will still execute validation against each item
 unless skip is specified here.


?

?


?

? !
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
I
??; MapRules describe the constraints applied to `map` values


?
f
?"X MinPairs specifies that this field must have the specified number of
 KVs at a minimum


?

?


?

? !
f
?"X MaxPairs specifies that this field must have the specified number of
 KVs at a maximum


?

?


?

? !
~
? p NoSparse specifies values in this field cannot be unset. This only
 applies to map's with message value types.


?

?


?

?
V
?#H Keys specifies the constraints to be applied to each key in the field.


?

?


?

?!"
?
?#? Values specifies the constraints to be applied to the value of each key
 in the field. Message values will still have their validations evaluated
 unless skip is specified here.


?

?


?

?!"
?
?#s IgnoreEmpty specifies that the validation rules of this field should be
 evaluated only if the field is not empty


?

?


?

?!"
o
??a AnyRules describe constraints applied exclusively to the
 `google.protobuf.Any` well-known type


?
>
?0 Required specifies that this field must be set


?

?


?

?
h
?Z In specifies that this field's `type_url` must be equal to one of the
 specified values.


?

?


?

?
o
?a NotIn specifies that this field's `type_url` must not be equal to any of
 the specified values.


?

?


?

?
}
??o DurationRules describe the constraints applied exclusively to the
 `google.protobuf.Duration` well-known type


?
>
?0 Required specifies that this field must be set


?

?


?

?
S
?0E Const specifies that this field must be exactly the specified value


?

?
%

?&+

?./
^
?-P Lt specifies that this field must be less than the specified value,
 exclusive


?

?
%

?&(

?+,
^
?.P Lt specifies that this field must be less than the specified value,
 inclusive


?

?
%

?&)

?,-
a
?-S Gt specifies that this field must be greater than the specified value,
 exclusive


?

?
%

?&(

?+,
b
?.T Gte specifies that this field must be greater than the specified value,
 inclusive


?

?
%

?&)

?,-
Z
?-L In specifies that this field must be equal to one of the specified
 values


?

?
%

?&(

?+,
_
?1Q NotIn specifies that this field cannot be equal to one of the specified
 values


?

?
%

?&,

?/0

??q TimestampRules describe the constraints applied exclusively to the
 `google.protobuf.Timestamp` well-known type


?
>
?0 Required specifies that this field must be set


?

?


?

?
S
?1E Const specifies that this field must be exactly the specified value


?

?
&

?',

?/0
^
?.P Lt specifies that this field must be less than the specified value,
 exclusive


?

?
&

?')

?,-
_
?/Q Lte specifies that this field must be less than the specified value,
 inclusive


?

?
&

?'*

?-.
a
?.S Gt specifies that this field must be greater than the specified value,
 exclusive


?

?
&

?')

?,-
b
?/T Gte specifies that this field must be greater than the specified value,
 inclusive


?

?
&

?'*

?-.
{
?m LtNow specifies that this must be less than the current time. LtNow
 can only be used with the Within rule.


?

?


?

?
~
?p GtNow specifies that this must be greater than the current time. GtNow
 can only be used with the Within rule.


?

?


?

?
?
?1? Within specifies that this field must be within this duration of the
 current time. This constraint can be used alone or with the LtNow and
 GtNow rules.


?

?
%

?&,

?/0
?
$envoy/config/core/v3/extension.protoenvoy.config.core.v3google/protobuf/any.protoudpa/annotations/status.protovalidate/validate.proto"v
TypedExtensionConfig
name (	B?BrRnameA
typed_config (2.google.protobuf.AnyB?B?RtypedConfigB?
"io.envoyproxy.envoy.config.core.v3BExtensionProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?





	
#
	
'
	
!

	;
	
	;


/
	

/

"
	

"

Y
	
Y


F

???j
F
?
? Message type for extension configuration.
 [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.].
2, [#protodoc-title: Extension configuration]




?
;z The name of an extension. This is not used to select the extension, instead
 it serves the role of an opaque identifier.




	



:

?9
?
Q? The typed config for the extension. The type URL will be used to identify
 the extension. In the case that the type URL is ``xds.type.v3.TypedStruct``
 (or, for historical reasons, ``udpa.type.v1.TypedStruct``), the inner type
 URL of ``TypedStruct`` will be utilized. See the
 :ref:`extension configuration overview
 ` for further details.




"

%&

'P

?(Obproto3
?
!udpa/annotations/versioning.protoudpa.annotations google/protobuf/descriptor.proto"J
VersioningAnnotation2
previous_message_type (	RpreviousMessageType:j

versioning.google.protobuf.MessageOptionsӈ? (2&.udpa.annotations.VersioningAnnotationR
versioningB)Z'github.com/cncf/xds/go/udpa/annotationsJ?

?
2? THIS FILE IS DEPRECATED
 Users should instead use the corresponding proto in the xds tree.
 No new changes will be accepted here.



	
*


>
	

>
	

G
,< Magic number derived from 0x78 ('x') 0x44 ('D') 0x53 ('S')



%





!


$+






?
#? Track the previous message type. E.g. this message might be
 udpa.foo.v3alpha.Foo and it was previously udpa.bar.v2.Bar. This
 information is consumed by UDPA via proto descriptors.




	

!"bproto3
?
(envoy/config/core/v3/socket_option.protoenvoy.config.core.v3udpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
SocketOption 
description (	Rdescription
level (Rlevel
name (Rname
	int_value (HRintValue
	buf_value (HRbufValueN
state (2..envoy.config.core.v3.SocketOption.SocketStateB?B?Rstate"F
SocketState

STATE_PREBIND
STATE_BOUND
STATE_LISTENING:%?ň 
envoy.api.v2.core.SocketOptionB
value?B"b
SocketOptionsOverrideI
socket_options (2".envoy.config.core.v3.SocketOptionR
socketOptionsB?
"io.envoyproxy.envoy.config.core.v3BSocketOptionProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?
P




	
'
	
+
	
!

;
	
;

	2
	
	2


"
	


"

Y
	
Y

F

???jF
?
'L? Generic socket option message. This would be used to set socket options that
 might not exist in upstream kernels or precompiled Envoy binaries.

 For example:

 .. code-block:: json

  {
    "description": "support tcp keep alive",
    "state": 0,
    "level": 1,
    "name": 9,
    "int_value": 1,
  }

 1 means SOL_SOCKET and 9 means SO_KEEPALIVE on Linux.
 With the above configuration, `TCP Keep-Alives `_
 can be enabled in socket with Linux, which can be used in
 :ref:`listener's` or
 :ref:`admin's ` socket_options etc.

 It should be noted that the name or level may have different values on different platforms.
 [#next-free-field: 7]
2" [#protodoc-title: Socket option]



'


(`

ӈ?(`

*3

*
i
,Z Socket options are applied after socket creation but before binding the socket to a port


,

,
j
/[ Socket options are applied after binding the socket to a port but before calling listen()


/

/
B
23 Socket options are applied after calling listen()


2

2
?
7? An optional name to give this socket option for debugging, etc.
 Uniqueness is not required and no special meaning is assumed.


7

7	

7
Y
:L Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP


:

:

:
7
=* The numeric name as passed to setsockopt


=

=

=

?G

?

@&

?@&
7
C* Because many sockopts take an int value.


C	

C


C
,
F Otherwise it's a byte buffer.


F	

F


F
?
KGz The state in which the option will be applied. When used in BindConfig
 STATE_PREBIND is currently the only valid value.


K

K

K

KF

?KE


NP


N

O+

O


O

O&

O)*bproto3
?#
google/protobuf/wrappers.protogoogle.protobuf"#
DoubleValue
value (Rvalue""

FloatValue
value (Rvalue""

Int64Value
value (Rvalue"#
UInt64Value
value (Rvalue""

Int32Value
value (Rvalue"#
UInt32Value
value (
Rvalue"!
	BoolValue
value (Rvalue"#
StringValue
value (	Rvalue""

BytesValue
value (RvalueB?
com.google.protobufB
WrappersProtoPZ1google.golang.org/protobuf/types/known/wrapperspb??GPB?Google.Protobuf.WellKnownTypesJ?
(z
?
(2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 Wrappers for primitive (non-message) types. These types are useful
 for embedding primitives in the `google.protobuf.Any` type and for places
 where we need to distinguish between the absence of a primitive
 typed field and its default value.

 These wrappers have no meaningful use within repeated fields as they lack
 the ability to detect presence on individual elements.
 These wrappers have no meaningful use within a map or a oneof since
 individual entries of a map or fields of a oneof can already detect presence.


*

,
	
,

-H
	
-H

.,
	
.,

/.
	
/.

0"
	

0"

1!
	
$1!

2;
	
%2;
g
7:[ Wrapper message for `double`.

 The JSON representation for `DoubleValue` is JSON number.



7
 
9 The double value.


9

9	

9
e
?BY Wrapper message for `float`.

 The JSON representation for `FloatValue` is JSON number.



?

A The float value.


A

A

A
e
GJY Wrapper message for `int64`.

 The JSON representation for `Int64Value` is JSON string.



G

I The int64 value.


I

I

I
g
OR[ Wrapper message for `uint64`.

 The JSON representation for `UInt64Value` is JSON string.



O
 
Q The uint64 value.


Q

Q	

Q
e
WZY Wrapper message for `int32`.

 The JSON representation for `Int32Value` is JSON number.



W

Y The int32 value.


Y

Y

Y
g
_b[ Wrapper message for `uint32`.

 The JSON representation for `UInt32Value` is JSON number.



_
 
a The uint32 value.


a

a	

a
o
gjc Wrapper message for `bool`.

 The JSON representation for `BoolValue` is JSON `true` and `false`.



g

i The bool value.


i

i

i
g
or[ Wrapper message for `string`.

 The JSON representation for `StringValue` is JSON string.



o
 
q The string value.


q

q	

q
e
wzY Wrapper message for `bytes`.

 The JSON representation for `BytesValue` is JSON string.



w

y The bytes value.


y

y

ybproto3
?
#envoy/annotations/deprecation.protoenvoy.annotations google/protobuf/descriptor.proto:T
disallowed_by_default.google.protobuf.FieldOptions筮Z (RdisallowedByDefault:_
deprecated_at_minor_version.google.protobuf.FieldOptions??K (	RdeprecatedAtMinorVersion:a
disallowed_by_default_enum!.google.protobuf.EnumValueOptions?ζ! (RdisallowedByDefaultEnum:l
 deprecated_at_minor_version_enum!.google.protobuf.EnumValueOptions???V (	RdeprecatedAtMinorVersionEnumB:Z8github.com/envoyproxy/go-control-plane/envoy/annotationsJ?

!





O
	
O
	
*
?
? Magic number in this file derived from top 28bit of SHA256 digest of
 "envoy.annotation.disallowed_by_default" and "envoy.annotation.deprecated_at_minor_version"
2? [#protodoc-title: Deprecation]
 Adds annotations for deprecated fields and enums to allow tagging proto
 fields as fatal by default and the minor version on which the field was
 deprecated. One Envoy release after deprecation, deprecated fields will be
 disallowed by default, a state which is reversible with
 :ref:`runtime overrides `.

	
)


#








(
?
1{ The API major and minor version on which the field was deprecated
 (e.g., "3.5" for major version 3 and minor version 5).



#





	$


'0
?
!? Magic number in this file derived from top 28bit of SHA256 digest of
 "envoy.annotation.disallowed_by_default_enum" and
 "envoy.annotation.deprecated_at_minor_version_eum"

	
-


'





!


$,
?
 6? The API major and minor version on which the enum value was deprecated
 (e.g., "3.5" for major version 3 and minor version 5).



'


 


 	)


 ,5bproto3
?U
"envoy/config/core/v3/address.protoenvoy.config.core.v3$envoy/config/core/v3/extension.proto(envoy/config/core/v3/socket_option.protogoogle/protobuf/wrappers.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"`
Pipe
path (	B?BrRpath
mode (
B?B*?Rmode:?ň
envoy.api.v2.core.Pipe"?
EnvoyInternalAddress2
server_listener_name (	HRserverListenerName
endpoint_id (	R
endpointIdB
address_name_specifier?B"?

SocketAddressR
protocol (2,.envoy.config.core.v3.SocketAddress.ProtocolB?B?Rprotocol!
address (	B?BrRaddress*

port_value (
B	?B*??HR	portValue

named_port (	HR	namedPort#

resolver_name (	RresolverName
ipv4_compat (R
ipv4Compat"
Protocol
TCP
UDP:&?ň!
envoy.api.v2.core.SocketAddressB
port_specifier?B"?
TcpKeepaliveG
keepalive_probes (2.google.protobuf.UInt32ValueRkeepaliveProbesC
keepalive_time (2.google.protobuf.UInt32ValueR
keepaliveTimeK
keepalive_interval (2.google.protobuf.UInt32ValueRkeepaliveInterval:%?ň 
envoy.api.v2.core.TcpKeepalive"?
ExtraSourceAddressG
address (2#.envoy.config.core.v3.SocketAddressB?B?RaddressR
socket_options (2+.envoy.config.core.v3.SocketOptionsOverrideR
socketOptions"?

BindConfigJ
source_address (2#.envoy.config.core.v3.SocketAddressR
sourceAddress6
freebind (2.google.protobuf.BoolValueRfreebindI
socket_options (2".envoy.config.core.v3.SocketOptionR
socketOptions^
extra_source_addresses (2(.envoy.config.core.v3.ExtraSourceAddressRextraSourceAddressesp
additional_source_addresses (2#.envoy.config.core.v3.SocketAddressB?dž?3.0RadditionalSourceAddresses`
local_address_selector (2*.envoy.config.core.v3.TypedExtensionConfigRlocalAddressSelector:#?ň
envoy.api.v2.core.BindConfig"?
AddressL
socket_address (2#.envoy.config.core.v3.SocketAddressHR
socketAddress0
pipe (2.envoy.config.core.v3.PipeHRpipeb
envoy_internal_address (2*.envoy.config.core.v3.EnvoyInternalAddressHRenvoyInternalAddress: ?ň
envoy.api.v2.core.AddressB
address?B"?
	CidrRange.
address_prefix (	B?BrR
addressPrefixE

prefix_len (2.google.protobuf.UInt32ValueB?B*?R	prefixLen:"?ň
envoy.api.v2.core.CidrRangeB?
"io.envoyproxy.envoy.config.core.v3BAddressProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?B
?




	
.
	
2
	
(
	
	-
	

'
	
+
	
!

;
	
;

-
	
-

"
	

"

Y
	
Y

F

???jF
2
!2& [#protodoc-title: Network addresses]






X

ӈ?X
?
;? Unix Domain Socket path. On Linux, paths starting with '@' will use the
 abstract namespace. The starting '@' is replaced by a null byte by Envoy.
 Paths starting with '@' will result in an error in environments other than
 Linux.




	



:

?9
J
 9= The mode for the Pipe. Not applicable for abstract sockets.


 

 	

 

 8

? 7
?
%2? The address represents an envoy internal listener.
 [#comment: TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.]



%

&,

&

'&

?'&
y
+$l Specifies the :ref:`name ` of the
 internal listener.


+


+

+"#
?
1? Specifies an endpoint identifier to distinguish between multiple endpoints for the same internal listener in a
 single upstream pool. Only used in the upstream addresses for tracking changes to individual endpoints. This, for
 example, may be set to the final destination IP for the target internal listener.


1

1	

1
#
5c [#next-free-field: 7]



5


6a

ӈ?6a

8;

8

9

9

9


:

:

:


=G

=


=

=

=F

?=E
?
J>? The address for this socket. :ref:`Listeners ` will bind
 to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
 to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
 It is possible to distinguish a Listener address via the prefix/suffix matching
 in :ref:`FilterChainMatch `.] When used
 within an upstream :ref:`BindConfig `, the address
 controls the source address of outbound connections. For :ref:`clusters
 `, the cluster type determines whether the
 address must be an IP (``STATIC`` or ``EDS`` clusters) or a hostname resolved by DNS
 (``STRICT_DNS`` or ``LOGICAL_DNS`` clusters). Address resolution can be customized
 via :ref:`resolver_name `.


J

J	

J

J=

?J<

LU

L

M&

?M&

OC

O


O

O

OB

?OA
?
T? This is only valid if :ref:`resolver_name
 ` is specified below and the
 named resolver is capable of named port resolution.


T


T

T
?
\? The name of the custom resolver. This must have been registered with Envoy. If
 this is empty, a context dependent default applies. If the address is a concrete
 IP address, no resolution will occur. If address is a hostname this
 should be set for resolution other than DNS. Specifying a custom resolver with
 ``STRICT_DNS`` or ``LOGICAL_DNS`` will generate an error at runtime.


\

\	

\
?
b? When binding to an IPv6 address above, this enables `IPv4 compatibility
 `_. Binding to ``::`` will
 allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
 IPv6 space as ``::FFFF:``.


b

b

b


eu


e


f`

ӈ?f`
?
k3? Maximum number of keepalive probes to send without response before deciding
 the connection is dead. Default is to use the OS level configuration (unless
 overridden, Linux defaults to 9.)


k

k.

k12
?
p1? The number of seconds a connection needs to be idle before keep-alive probes
 start being sent. Default is to use the OS level configuration (unless
 overridden, Linux defaults to 7200s (i.e., 2 hours.)


p

p,

p/0
?
t5? The number of seconds between keep-alive probes. Default is to use the OS
 level configuration (unless overridden, Linux defaults to 75s.)


t

t0

t34

w?


w
.
yJ! The additional address to bind.


y

y

y

yI

?yH
?
?+? Additional socket options that may not be present in Envoy source code or
 precompiled binaries. If specified, this will override the
 :ref:`socket_options `
 in the BindConfig. If specified with no
 :ref:`socket_options `
 or an empty list of :ref:`socket_options `,
 it means no socket option will apply.


?

?&

?)*
%
?? [#next-free-field: 7]


?

?^

ӈ??^
>
?#0 The address to bind to when creating a socket.


?

?

?!"
?
?)? Whether to set the ``IP_FREEBIND`` option when creating the socket. When this
 flag is set to true, allows the :ref:`source_address
 ` to be an IP address
 that is not configured on the system running Envoy. When this flag is set
 to false, the option ``IP_FREEBIND`` is disabled on the socket. When this
 flag is not set (default), the socket is not modified, i.e. the option is
 neither enabled nor disabled.


?

?$

?'(
p
?+b Additional socket options that may not be present in Envoy source code or
 precompiled binaries.


?


?

?&

?)*
?
?9? Extra source addresses appended to the address specified in the ``source_address``
 field. This enables to specify multiple source addresses.
 The source address selection is determined by :ref:`local_address_selector
 `.


?


?

?4

?78
?
??St Deprecated by
 :ref:`extra_source_addresses `


?


?

?4

?78

?R

?

	??K?Q
?
?2? Custom local address selector to override the default (i.e.
 :ref:`DefaultLocalAddressSelector
 `).
 [#extension-category: envoy.upstream.local_address_selector]


?

?-

?01
?
??? Addresses specify either a logical or physical address and port, which are
 used to tell Envoy where to bind/listen, connect to upstream and find
 management servers.


?

?[

ӈ??[

??

?

?&

??&

?%

?

? 

?#$

?

?

?	

?
?
?4? Specifies a user-space address handled by :ref:`internal listeners
 `.


?

?/

?23
?
??? CidrRange specifies an IP Address and a prefix length to construct
 the subnet mask for a `CIDR `_ range.


?

?]

ӈ??]
K
?E= IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.


?

?	

?

?D

??C
G
?T9 Length of prefix, e.g. 0, 32. Defaults to 0 when unset.


?

?(

?+,

?-S

??.Rbproto3
?
"envoy/config/core/v3/backoff.protoenvoy.config.core.v3google/protobuf/duration.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
BackoffStrategyN

base_interval (2.google.protobuf.DurationB?B?2??=RbaseIntervalF
max_interval (2.google.protobuf.DurationB?B?*RmaxInterval:(?ň#
!envoy.api.v2.core.BackoffStrategyB?
"io.envoyproxy.envoy.config.core.v3BBackoffProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?
$




	
(
	
'
	
+
	
!


;
	

;

-
	
-

"
	

"


Y
	

Y

F

???jF
u
$B Configuration defining a jittered exponential back off strategy.
2% [#protodoc-title: Backoff strategy]






c

ӈ?c
?
? The base interval to be used for the next back off computation. It should
 be greater than zero and less than or equal to :ref:`max_interval
 `.




(

+,

-

?.
?
#R? Specifies the maximum interval between retries. This parameter is optional,
 but must be greater than or equal to the :ref:`base_interval
 ` if set. The default
 is 10 times the :ref:`base_interval
 `.


#

#'

#*+

#,Q

?#-Pbproto3
?
#envoy/config/core/v3/http_uri.protoenvoy.config.core.v3google/protobuf/duration.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
HttpUri
uri (	B?BrRuri#
cluster (	B?BrHRclusterG
timeout (2.google.protobuf.DurationB?B?????2Rtimeout: ?ň
envoy.api.v2.core.HttpUriB
http_upstream_type?BB?
"io.envoyproxy.envoy.config.core.v3BHttpUriProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?

9




	
(
	
'
	
+
	
!


;
	

;

-
	
-

"
	

"


Y
	

Y

F

???jF
S
9 Envoy external URI descriptor
2& [#protodoc-title: HTTP service URI ]






[

ӈ?[
?
:? The HTTP server URI. It should be a full FQDN with protocol, host and path.

 Example:

 .. code-block:: yaml

    uri: https://www.googleapis.com/oauth2/v1/certs





	



9

?8
?
$1? Specify how ``uri`` is to be fetched. Today, this requires an explicit
 cluster, but in the future we may support dynamic cluster creation or
 inline DNS resolution. See `issue
 `_.


$

%&

?%&
?
0@? A cluster is created in the Envoy "cluster_manager" config
 section. This field specifies the cluster name.

 Example:

 .. code-block:: yaml

    cluster: jwks_cluster



0


0

0

0?

?0>
j
48\ Sets the maximum duration in milliseconds that a response can take to arrive upon request.


4

4"

4%&

4'8

?4(8bproto3
?
envoy/type/v3/percent.proto
envoy.type.v3udpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"S
Percent-
value (B?BY@)Rvalue:?ň
envoy.type.Percent"?
FractionalPercent
	numerator (
R	numerator\
denominator (20.envoy.type.v3.FractionalPercent.DenominatorTypeB?B?Rdenominator"=
DenominatorType
HUNDRED
TEN_THOUSAND
MILLION:#?ň
envoy.type.FractionalPercentBr
io.envoyproxy.envoy.type.v3BPercentProtoPZ;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3????J?
8




	
'
	
+
	
!

4
	
4

	-
	
	-


"
	


"

R
	
R

F

???jF
_
5 Identifies a percentage, in the range [0.0, 100.0].
2 [#protodoc-title: Percent]






T

ӈ?T

E



	



D

?C
?
8? A fractional percentage is used in cases in which for performance reasons performing floating
 point to integer conversions during randomness calculations is undesirable. The message includes
 both a numerator and denominator that together determine the final fractional value.

 * **Example**: 1/100 = 1%.
 * **Example**: 3/10000 = 0.03%.






^

ӈ?^
N
!0@ Fraction percentages support several fixed denominator values.


!
0
%! 100.

 **Example**: 1/100 = 1%.


%

%
8
*) 10,000.

 **Example**: 1/10000 = 0.01%.


*

*
?
/0 1,000,000.

 **Example**: 1/1000000 = 0.0001%.


/

/
6
3) Specifies the numerator. Defaults to 0.


3

3	

3
?
7Q? Specifies the denominator. If the denominator specified is less than the numerator, the final
 fractional percentage is capped at 1 (100%).


7

7

7 !

7"P

?7#Obproto3
?
$envoy/type/v3/semantic_version.proto
envoy.type.v3udpa/annotations/status.proto!udpa/annotations/versioning.proto"?
SemanticVersion!
major_number (
RmajorNumber!
minor_number (
RminorNumber
patch (
Rpatch:!?ň
envoy.type.SemanticVersionBz
io.envoyproxy.envoy.type.v3BSemanticVersionProtoPZ;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3????J?





	
'
	
+

4
	
4

5
	
5

	"
	

	"


R
	

R

F

???jF
?
? Envoy uses SemVer (https://semver.org/). Major/minor versions indicate
 expected behaviors and APIs, the patch version field is used only
 for security fixes and can be generally ignored.
2% [#protodoc-title: Semantic version]






\

ӈ?\





	







	







	

bproto3
?"
google/protobuf/struct.protogoogle.protobuf"?
Struct;
fields (2#.google.protobuf.Struct.FieldsEntryRfieldsQ
FieldsEntry
key (	Rkey,
value (2.google.protobuf.ValueRvalue:8"?
Value;

null_value (2.google.protobuf.NullValueHR	nullValue#
number_value (HRnumberValue#
string_value (	HRstringValue

bool_value (HR	boolValue<
struct_value (2.google.protobuf.StructHRstructValue;

list_value (2.google.protobuf.ListValueHR	listValueB
kind";
	ListValue.
values (2.google.protobuf.ValueRvalues*
	NullValue

NULL_VALUEB
com.google.protobufBStructProtoPZ/google.golang.org/protobuf/types/known/structpb??GPB?Google.Protobuf.WellKnownTypesJ?
^
?
2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 

"
	
"

#F
	
#F

$,
	
$,

%,
	
%,

&"
	

&"

'!
	
$'!

(;
	
%(;
?
25? `Struct` represents a structured data value, consisting of fields
 which map to dynamically typed values. In some languages, `Struct`
 might be supported by a native representation. For example, in
 scripting languages like JS a struct is represented as an
 object. The details of that representation are described together
 with the proto support for the language.

 The JSON representation for `Struct` is JSON object.



2
9
4 , Unordered map of dynamically typed values.


4

4

4
?
=M? `Value` represents a dynamically typed value which can be either
 null, a number, a string, a boolean, a recursive struct value, or a
 list of values. A producer of value is expected to set one of these
 variants. Absence of any variant indicates an error.

 The JSON representation for `Value` is JSON value.



=
"
?L The kind of value.


?
'
A Represents a null value.


A

A

A
)
C Represents a double value.


C


C

C
)
E Represents a string value.


E


E

E
*
G Represents a boolean value.


G

G	

G
-
I  Represents a structured value.


I


I

I
-
K  Represents a repeated `Value`.


K

K

K
?
SV? `NullValue` is a singleton enumeration to represent the null value for the
 `Value` type union.

 The JSON representation for `NullValue` is JSON `null`.



S

U
 Null value.


U

U
?
[^v `ListValue` is a wrapper around a repeated field of values.

 The JSON representation for `ListValue` is JSON array.



[
:
]- Repeated field of dynamically typed values.


]


]

]

]bproto3
?
xds/annotations/v3/status.protoxds.annotations.v3 google/protobuf/descriptor.proto"@
FileStatusAnnotation(
work_in_progress (RworkInProgress"C
MessageStatusAnnotation(
work_in_progress (RworkInProgress"A
FieldStatusAnnotation(
work_in_progress (RworkInProgress"?
StatusAnnotation(
work_in_progress (RworkInProgress^
package_version_status (2(.xds.annotations.v3.PackageVersionStatusRpackageVersionStatus*]
PackageVersionStatus
UNKNOWN

FROZEN

ACTIVE 
NEXT_MAJOR_VERSION_CANDIDATE:j
file_status.google.protobuf.FileOptions?Ȕl (2(.xds.annotations.v3.FileStatusAnnotationR
fileStatus:v
message_status.google.protobuf.MessageOptions?Ȕl (2+.xds.annotations.v3.MessageStatusAnnotationR
messageStatus:n
field_status.google.protobuf.FieldOptions?Ȕl (2).xds.annotations.v3.FieldStatusAnnotationRfieldStatusB+Z)github.com/cncf/xds/go/xds/annotations/v3J?
:




	
*

@
	
@
o

d Magic number in this file derived from top 28bit of SHA256 digest of
 "xds.annotations.v3.status".

	
/



"





"


%.
	

	
5


%





(


+4
	

	
1


#





$


'0






N
A The entity is work-in-progress and subject to breaking changes.













N
A The entity is work-in-progress and subject to breaking changes.









 #


 
N
"A The entity is work-in-progress and subject to breaking changes.


"

"

"


%2


%
.
'! Unknown package version status.


'	

'
5
*
( This version of the package is frozen.


*

*
M
-
@ This version of the package is the active development version.


-

-
?
1#? This version of the package is the candidate for the next major version. It
 is typically machine generated from the active development version.


1

1!"


4:


4
N
6A The entity is work-in-progress and subject to breaking changes.


6

6

6
M
92@ The entity belongs to a package with the given version status.


9

9-

901bproto3
?
 xds/core/v3/context_params.protoxds.core.v3xds/annotations/v3/status.proto"?

ContextParams>
params (2&.xds.core.v3.ContextParams.ParamsEntryRparams9
ParamsEntry
key (	Rkey
value (	Rvalue:8BZ
com.github.xds.core.v3BContextParamsProtoPZ"github.com/cncf/xds/go/xds/core/v3?Ƥ?J?





	
)

3
	
3

"
	

"

/
	
/

	9
	
	9

@

?Ȕl@
?
? Additional parameters that can be used to select resource variants. These include any
 global context parameters, per-resource type client feature capabilities and per-resource
 type functional attributes. All per-resource type attributes will be `xds.resource.`
 prefixed and some of these are documented below:

 `xds.resource.listening_address`: The value is "IP:port" (e.g. "10.1.1.3:8080") which is
   the listening address of a Listener. Used in a Listener resource query.





#





!"bproto3
?
udpa/annotations/migrate.protoudpa.annotations google/protobuf/descriptor.proto"+
MigrateAnnotation
rename (	Rrename"Y
FieldMigrateAnnotation
rename (	Rrename'
oneof_promotion (	RoneofPromotion"?
FileMigrateAnnotation&
move_to_package (	R
moveToPackage:p
message_migrate.google.protobuf.MessageOptions???Q (2#.udpa.annotations.MigrateAnnotationRmessageMigrate:o

field_migrate.google.protobuf.FieldOptions???Q (2(.udpa.annotations.FieldMigrateAnnotationRfieldMigrate:g
enum_migrate.google.protobuf.EnumOptions???Q (2#.udpa.annotations.MigrateAnnotationRenumMigrate:w
enum_value_migrate!.google.protobuf.EnumValueOptions???Q (2#.udpa.annotations.MigrateAnnotationRenumValueMigrate:k
file_migrate.google.protobuf.FileOptions???Q (2'.udpa.annotations.FileMigrateAnnotationRfileMigrateB)Z'github.com/cncf/xds/go/udpa/annotationsJ?

6
?
2? THIS FILE IS DEPRECATED
 Users should instead use the corresponding proto in the xds tree.
 No new changes will be accepted here.



	
*


>
	

>
m
2b Magic number in this file derived from top 28bit of SHA256 digest of
 "udpa.annotation.migrate".

	
0


%





#


&/
	

	
3


#





&


)2
	

	
-


"





 


#,
	

	
3


'





&


)2
	
!
	
 1


"


 


 $


 '0


#&


#
B
%5 Rename the message/enum/enum value in next version.


%

%	

%


(0


(
0
*# Rename the field in next version.


*

*	

*
?
/? Add the field to a named oneof in next version. If this already exists, the
 field will join its siblings under the oneof, otherwise a new oneof will be
 created with the given name.


/

/	

/


26


2
e
5X Move all types in the file to another package, this implies changing proto
 file path.


5

5	

5bproto3
??
envoy/config/core/v3/base.protoenvoy.config.core.v3"envoy/config/core/v3/address.proto"envoy/config/core/v3/backoff.proto#envoy/config/core/v3/http_uri.protoenvoy/type/v3/percent.proto$envoy/type/v3/semantic_version.protogoogle/protobuf/any.protogoogle/protobuf/struct.protogoogle/protobuf/wrappers.proto xds/core/v3/context_params.proto#envoy/annotations/deprecation.protoudpa/annotations/migrate.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"t
Locality
region (	Rregion
zone (	Rzone
sub_zone (	RsubZone:!?ň
envoy.api.v2.core.Locality"?
BuildVersion8
version (2.envoy.type.v3.SemanticVersionRversion3
metadata (2.google.protobuf.StructRmetadata:%?ň 
envoy.api.v2.core.BuildVersion"?
	Extension
name (	Rname
category (	Rcategory4
type_descriptor (	B?dž?3.0RtypeDescriptor<
version (2".envoy.config.core.v3.BuildVersionRversion
disabled (Rdisabled
	type_urls (	RtypeUrls:"?ň
envoy.api.v2.core.Extension"?
Node
id (	Rid
cluster (	Rcluster3
metadata (2.google.protobuf.StructRmetadata`
dynamic_parameters (21.envoy.config.core.v3.Node.DynamicParametersEntryRdynamicParameters:
locality (2.envoy.config.core.v3.LocalityRlocality&
user_agent_name (	R
userAgentName.
user_agent_version (	HRuserAgentVersion]
user_agent_build_version (2".envoy.config.core.v3.BuildVersionHRuserAgentBuildVersion?

extensions	 (2.envoy.config.core.v3.ExtensionR
extensions'
client_features
 (	RclientFeatures[
listening_addresses (2.envoy.config.core.v3.AddressB?dž?3.0RlisteningAddresses`
DynamicParametersEntry
key (	Rkey0
value (2.xds.core.v3.ContextParamsRvalue:8:?ň
envoy.api.v2.core.NodeB
user_agent_version_typeJR
build_version"?
Metadatai
filter_metadata (22.envoy.config.core.v3.Metadata.FilterMetadataEntryB?B	?"rRfilterMetadatay
typed_filter_metadata (27.envoy.config.core.v3.Metadata.TypedFilterMetadataEntryB?B	?"rRtypedFilterMetadataZ
FilterMetadataEntry
key (	Rkey-
value (2.google.protobuf.StructRvalue:8\
TypedFilterMetadataEntry
key (	Rkey*
value (2.google.protobuf.AnyRvalue:8:!?ň
envoy.api.v2.core.Metadata"?

RuntimeUInt32#

default_value (
RdefaultValue(
runtime_key (	B?BrR
runtimeKey:&?ň!
envoy.api.v2.core.RuntimeUInt32"w
RuntimePercent;

default_value (2.envoy.type.v3.PercentRdefaultValue(
runtime_key (	B?BrR
runtimeKey"?

RuntimeDouble#

default_value (RdefaultValue(
runtime_key (	B?BrR
runtimeKey:&?ň!
envoy.api.v2.core.RuntimeDouble"?
RuntimeFeatureFlagI

default_value (2.google.protobuf.BoolValueB?B?RdefaultValue(
runtime_key (	B?BrR
runtimeKey:+?ň&
$envoy.api.v2.core.RuntimeFeatureFlag"A
QueryParameter
key (	B?BrRkey
value (	Rvalue"?
HeaderValue#
key (	B?Br(????Rkey7
value (	B!?Br
(???????
value_typeRvalue:
	raw_value (B?Bz?????
value_typeRrawValue:$?ň
envoy.api.v2.core.HeaderValue"?
HeaderValueOptionC
header (2!.envoy.config.core.v3.HeaderValueB?B?Rheader?
append (2.google.protobuf.BoolValueB?dž?3.0Rappendi

append_action (2:.envoy.config.core.v3.HeaderValueOption.HeaderAppendActionB?B?RappendAction(
keep_empty_value (RkeepEmptyValue"}
HeaderAppendAction
APPEND_IF_EXISTS_OR_ADD

ADD_IF_ABSENT
OVERWRITE_IF_EXISTS_OR_ADD
OVERWRITE_IF_EXISTS:*?ň%
#envoy.api.v2.core.HeaderValueOption"l
	HeaderMap;
headers (2!.envoy.config.core.v3.HeaderValueRheaders:"?ň
envoy.api.v2.core.HeaderMap"/
WatchedDirectory
path (	B?BrRpath"?

DataSource%
filename (	B?BrHRfilename#
inline_bytes (HRinlineBytes%

inline_string (	HRinlineString<
environment_variable (	B?BrHRenvironmentVariable:#?ň
envoy.api.v2.core.DataSourceB
	specifier?B"?
RetryPolicyK
retry_back_off (2%.envoy.config.core.v3.BackoffStrategyRretryBackOffR
num_retries (2.google.protobuf.UInt32ValueB???
max_retriesR
numRetries
retry_on (	RretryOnV
retry_priority (2/.envoy.config.core.v3.RetryPolicy.RetryPriorityR
retryPriorityf
retry_host_predicate (24.envoy.config.core.v3.RetryPolicy.RetryHostPredicateRretryHostPredicateH
!host_selection_retry_max_attempts (RhostSelectionRetryMaxAttemptsv

RetryPriority
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfigB
config_type{
RetryHostPredicate
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfigB
config_type:$?ň
envoy.api.v2.core.RetryPolicy"?
RemoteDataSourceB
http_uri (2.envoy.config.core.v3.HttpUriB?B?RhttpUri
sha256 (	B?BrRsha256D
retry_policy (2!.envoy.config.core.v3.RetryPolicyRretryPolicy:)?ň$
"envoy.api.v2.core.RemoteDataSource"?
AsyncDataSource8
local (2 .envoy.config.core.v3.DataSourceHRlocal@
remote (2&.envoy.config.core.v3.RemoteDataSourceHRremote:(?ň#
!envoy.api.v2.core.AsyncDataSourceB
	specifier?B"?
TransportSocket
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfig:(?ň#
!envoy.api.v2.core.TransportSocketB
config_typeJRconfig"?
RuntimeFractionalPercentO

default_value (2 .envoy.type.v3.FractionalPercentB?B?RdefaultValue
runtime_key (	R
runtimeKey:1?ň,
*envoy.api.v2.core.RuntimeFractionalPercent"U
ControlPlane

identifier (	R
identifier:%?ň 
envoy.api.v2.core.ControlPlane*(
RoutingPriority
DEFAULT
HIGH*?

RequestMethod
METHOD_UNSPECIFIED
GET
HEAD
POST
PUT

DELETE
CONNECT
OPTIONS	
TRACE	
PATCH	*>
TrafficDirection
UNSPECIFIED
INBOUND
OUTBOUNDB}
"io.envoyproxy.envoy.config.core.v3B	BaseProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?
?




	
,
	
,
	
-
	
%
	
.
	

#
	
&
	
(
	
*
	
	-
	

(
	
'
	
+
	

!

;
	
;

*
	
*

"
	

"

Y
	
Y

F

???jF
?
%(? Envoy supports :ref:`upstream priority routing
 ` both at the route and the virtual
 cluster level. The current priority implementation uses different connection
 pool and circuit breaking settings for each priority level. This means that
 even for HTTP/2 requests, two physical connections will be used to an
 upstream host. In the future Envoy will likely support true HTTP/2 priority
 over a single upstream connection.
2! [#protodoc-title: Common types]



%

&

&	

&

'

'

'	

"
+6 HTTP request method.



+

,

,

,

-


-

-	

.

.

.	


/

/

/	


0


0

0	

1

1

1

2

2	

2

3

3	

3

4

4

4


	5

	5

	5

R
9BF Identifies the direction of the traffic relative to the local Envoy.



9
-
;  Default option is unspecified.


;

;
:
>- The transport is used for incoming traffic.


>	

>
:
A- The transport is used for outgoing traffic.


A


A

Y
EYM Identifies location of where either Envoy runs or where upstream hosts run.



E


F\

ӈ?F\
d
IW Region this :ref:`zone ` belongs to.


I

I	

I
?
S? Defines the local service zone where Envoy is running. Though optional, it
 should be set if discovery service routing is used and the discovery
 service exposes :ref:`zone data `,
 either in this message or via :option:`--service-zone`. The meaning of zone
 is context dependent, e.g. `Availability Zone (AZ)
 `_
 on AWS, `Zone `_ on
 GCP, etc.


S

S	

S
?
X? When used for locality of upstream hosts, this field further splits zone
 into smaller chunks of sub-zones so they can be load balanced
 independently.


X

X	

X
?
]f? BuildVersion combines SemVer version of extension with free-form build information
 (i.e. 'alpha', 'private-build') as a set of strings.



]


^`

ӈ?^`
+
a& SemVer version of extension.


a

a!

a$%
~
e&q Free-form build information.
 Envoy defines several well known keys in the source/common/version/version.h file


e

e!

e$%
X
j?K Version and identification for an Envoy extension.
 [#next-free-field: 7]



j


k]

ӈ?k]
?
o? This is the name of the Envoy filter as specified in the Envoy
 configuration, e.g. envoy.filters.http.router, com.acme.widget.


o

o	

o
?
v? Category of the extension.
 Extension category names use reverse DNS notation. For instance "envoy.filters.listener"
 for Envoy's built-in listener filters or "com.acme.filters.http" for HTTP filters from
 acme.com vendor.
 [#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.]


v

v	

v
?
{|S? [#not-implemented-hide:] Type descriptor of extension configuration proto.
 [#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.]
 [#comment:TODO(yanavlasov): Add tests when PR #9391 lands.]


{

{	

{

|R

|

	??K|Q
?
?? The version is a property of the extension and maintained independently
 of other extensions and the Envoy API.
 This field is not set when extension did not provide version information.


?

?

?
c
?U Indicates that the extension is present but was disabled via dynamic configuration.


?

?

?
<
? . Type URLs of extension configuration protos.


?


?

?

?
?
??? Identifies a specific Envoy instance. The node identifier is presented to the
 management server, which may use this identifier to distinguish per Envoy
 configuration for serving.
 [#next-free-field: 13]


?

?X

ӈ??X

	?

	?

	?

	?


?


?
?
?? An opaque node identifier for the Envoy node. This also provides the local
 service node name. It should be set if any of the following features are
 used: :ref:`statsd `, :ref:`CDS
 `, and :ref:`HTTP tracing
 `, either in this message or via
 :option:`--service-node`.


?

?	

?
?
?? Defines the local service cluster name where Envoy is running. Though
 optional, it should be set if any of the following features are used:
 :ref:`statsd `, :ref:`health check cluster
 verification
 `,
 :ref:`runtime override directory `,
 :ref:`user agent addition
 `,
 :ref:`HTTP global rate limiting `,
 :ref:`CDS `, and :ref:`HTTP tracing
 `, either in this message or via
 :option:`--service-cluster`.


?

?	

?
w
?&i Opaque metadata extending the node identifier. Envoy will pass this
 directly to the management server.


?

?!

?$%
?
?A? Map from xDS resource type URL to dynamic context parameters. These may vary at runtime (unlike
 other fields in this message). For example, the xDS client may have a shard identifier that
 changes during the lifetime of the xDS client. In Envoy, this would be achieved by updating the
 dynamic context on the Server::Instance's LocalInfo context provider. The shard ID dynamic
 parameter then appears in this field during future discovery requests.


?(

?);

?>@
H
?: Locality specifying where the Envoy instance is running.


?


?

?
f
?X Free-form string that identifies the entity requesting config.
 E.g. "envoy" or "grpc"


?

?	

?

??

?
?
?"? Free-form string that identifies the version of the entity requesting config.
 E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"


?


?

? !
C
?.5 Structured version of the entity requesting config.


?

?)

?,-
L
?$> List of extensions and their versions supported by the node.


?


?

?

?"#
?
	?'? Client feature support list. These are well known features described
 in the Envoy API repository for a given major version of an API. Client features
 use reverse DNS naming scheme, for example ``com.acme.feature``.
 See :ref:`the list of features ` that xDS client may
 support.


	?


	?

	?!

	?$&
?

??S? Known listening ports on the node as a generic hint to the management server
 for filtering :ref:`listeners ` to be returned. For example,
 if there is a listener bound to port 80, the list can optionally contain the
 SocketAddress ``(0.0.0.0,80)``. The field is optional and just a hint.



?



?


?&


?)+


?R


?

	
??K?Q
?	
??? Metadata provides additional inputs to filters based on matched listeners,
 filter chains, routes and endpoints. It is structured as a map, usually from
 filter name (in reverse DNS format) to metadata specific to the filter. Metadata
 key-values for a filter are merged as connection and request handling occurs,
 with later values for the same key overriding earlier values.

 An example use of metadata is providing additional values to
 http_connection_manager in the envoy.http_connection_manager.access_log
 namespace.

 Another example use of metadata is to per service config info in cluster metadata, which may get
 consumed by multiple filters.

 For load balancing, Metadata provides a means to subset cluster endpoints.
 Endpoints have a Metadata object associated and routes contain a Metadata
 object to match against. There are some well defined metadata used today for
 this purpose:

 * ``{"envoy.lb": {"canary":  }}`` This indicates the canary status of an
   endpoint and is also used during header processing
   (x-envoy-upstream-canary) and for stats purposes.
 [#next-major-version: move to type/metadata/v2]


?

?\

ӈ??\
?
??<? Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
 namespace is reserved for Envoy's built-in filters.
 If both ``filter_metadata`` and
 :ref:`typed_filter_metadata `
 fields are present in the metadata with same keys,
 only ``typed_filter_metadata`` field will be parsed.


?%

?&5

?89

?;

??:
?
??<? Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
 namespace is reserved for Envoy's built-in filters.
 The value is encoded as google.protobuf.Any.
 If both :ref:`filter_metadata `
 and ``typed_filter_metadata`` fields are present in the metadata with same keys,
 only ``typed_filter_metadata`` field will be parsed.


?"

?#8

?;<

?;

??:
I
??; Runtime derived uint32 with a default when not specified.


?

?a

ӈ??a
@
?2 Default value if runtime value is not available.


?

?	

?
W
?BI Runtime key to get value for comparison. This value is used if defined.


?

?	

?

?A

??@
M
??? Runtime derived percentage with a default when not specified.


?
@
?$2 Default value if runtime value is not available.


?

?

?"#
W
?BI Runtime key to get value for comparison. This value is used if defined.


?

?	

?

?A

??@
I
??; Runtime derived double with a default when not specified.


?

?a

ӈ??a
@
?2 Default value if runtime value is not available.


?

?	

?
W
?BI Runtime key to get value for comparison. This value is used if defined.


?

?	

?

?A

??@
G
??9 Runtime derived bool with a default when not specified.


?

??-

ӈ???-
@
?\2 Default value if runtime value is not available.


?

?)

?,-

?.[

??/Z
?
?B? Runtime key to get value for comparison. This value is used if defined. The boolean value must
 be represented via its
 `canonical JSON encoding `_.


?

?	

?

?A

??@
0
	??" Query parameter name/value pair.


	?
?
	?:1 The key of the query parameter. Case sensitive.


	?

	?	

	?

	?9

	??8
1
	?# The value of the query parameter.


	?

	?	

	?
'

?? Header name/value pair.



?


?_


ӈ??_


??[ Header name.



?


?	


?


??Z


???Y
?

??? Header value.

 The same :ref:`format specifier ` as used for
 :ref:`HTTP access logging ` applies here, however
 unknown header values are replaced with the empty string instead of ``-``.
 Header value is encoded as string. This does not work for non-utf8 characters.
 Only one of ``value`` or ``raw_value`` can be set.



?


?	


?


??


??b



???Q?C
?

??} Header value is encoded as bytes which can support non-utf8 characters.
 Only one of ``value`` or ``raw_value`` can be set.



?


?


?


??


??8



???Q?C
N
??@ Header name/value pair plus option to control append behavior.


?

??,

ӈ???,
Q
??A Describes the supported actions types for header append action.


?
?
? ? If the header already exists, this action will result in:

 - Comma-concatenated for predefined inline headers.
 - Duplicate header added in the ``HeaderMap`` for other headers.

 If the header doesn't exist then this will add new header with specified key and value.


?

?
?
?w This action will add the header if it doesn't already exist. If the header
 already exists then this will be a no-op.


?

?
?
?#? This action will overwrite the specified value by discarding any existing values if
 the header already exists. If the header doesn't exist then this will add the header
 with specified key and value.


?

?!"
?
?? This action will overwrite the specified value by discarding any existing values if
 the header already exists. If the header doesn't exist then this will be no-op.


?

?
C
?G5 Header name/value pair that this option applies to.


?

?

?

?F

??E
?
??S? Should the value be appended? If true (default), the value is appended to
 existing values. Otherwise it replaces any existing values.
 This field is deprecated and please use
 :ref:`append_action ` as replacement.

 .. note::
   The :ref:`external authorization service ` and
   :ref:`external processor service ` have
   default value (``false``) for this field.


?

?"

?%&

?R

?

	??K?Q
?
?V? Describes the action taken to append/overwrite the given value for an existing header
 or to only add this header if it's absent.
 Value defaults to :ref:`APPEND_IF_EXISTS_OR_ADD
 `.


?

?"

?%&

?'U

??(T
?
?? Is the header value allowed to be empty? If false (default), custom headers with empty values are dropped,
 otherwise they are added.


?

?

?
-
?? Wrapper for a set of headers.


?

?]

ӈ??]

?#

?


?

?

?!"
?

??? A directory that is watched for changes, e.g. by inotify on Linux. Move/rename
 events inside this directory trigger the watch.



?
(

?; Directory path to watch.



?


?	


?


?:


??9
^
??P Data source consisting of a file, an inline value, or an environment variable.


?

?^

ӈ??^

??

?

?&

??&
-
?A Local filesystem data source.


?


?

?

?@

???
3
?% Bytes inlined in the configuration.


?	

?


?
4
?& String inlined in the configuration.


?


?

?
1
?M# Environment variable data source.


?


?

?"#

?$L

??%K
x
??j The message specifies the retry policy of remote data source when fetching fails.
 [#next-free-field: 7]


?

?_

ӈ??_
k
??[ See :ref:`RetryPriority `.


?


?=

?


?

?

?<


??;

??

?


?+

?

?&

?)*
v
??f See :ref:`RetryHostPredicate `.


?


?=

?


?

?

?<


??;

??

?


?+

?

?&

?)*
?
?%? Specifies parameters that control :ref:`retry backoff strategy `.
 This parameter is optional, in which case the default base interval is 1000 milliseconds. The
 default maximum interval is 10 times the base interval.


?

? 

?#$
i
??@Y Specifies the allowed number of retries. This parameter is optional and
 defaults to 1.


?

?)

?,-

??


???Q?>
k
?] For details, see :ref:`retry_on `.


?

?	

?
w
?#i For details, see :ref:`retry_priority `.


?

?

?!"
?
?7s For details, see :ref:`RetryHostPredicate `.


?


?

?2

?56
?
?.? For details, see :ref:`host_selection_retry_max_attempts `.


?

?)

?,-
Y
??K The message specifies how to fetch data from remote and how to verify it.


?

?d

ӈ??d
6
?E( The HTTP URI to fetch the remote data.


?	

?


?

?D

??C
1
?=# SHA256 string for verifying data.


?

?	

?

?<

??;
6
?( Retry policy for fetching remote data.


?

?

?
A
??3 Async data source which support async data fetch.


?

?c

ӈ??c

??

?

?&

??&
(
? Local async data source.


?

?

?
)
?  Remote async data source.


?

?

?
?
??? Configuration for transport socket in :ref:`listeners ` and
 :ref:`clusters `. If the configuration is
 empty, a default transport socket implementation and configuration will be
 chosen based on the platform and existence of tls_context.


?

?c

ӈ??c

	?

	?

	?

	?


?


?
?
?;t The name of the transport socket to instantiate. The name must match a supported transport
 socket implementation.


?

?	

?

?:

??9
?
??? Implementation specific configuration which depends on the implementation being instantiated.
 See the supported transport socket implementations for further documentation.


?

?)

?

?$

?'(
?
??? Runtime derived FractionalPercent with defaults for when the numerator or denominator is not
 specified via a runtime key.

 .. note::

   Parsing of the runtime key's data is implemented such that it may be represented as a
   :ref:`FractionalPercent ` proto represented as JSON/YAML
   and may also be represented as an integer with the assumption that the value is an integral
   percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse
   as a ``FractionalPercent`` whose numerator is 42 and denominator is HUNDRED.


? 

??3

ӈ???3
j
?\\ Default value if the runtime value's for the numerator/denominator keys are not available.


?

?)

?,-

?.[

??/Z
M
?? Runtime key for a YAML representation of a FractionalPercent.


?

?	

?
W
??I Identifies a specific ControlPlane instance that Envoy is connected to.


?

?`

ӈ??`
?
?? An opaque control plane identifier that uniquely identifies an instance
 of control plane. This can be used to identify which control plane instance,
 the Envoy is connected to.


?

?	

?bproto3
?0
-envoy/config/cluster/v3/circuit_breaker.protoenvoy.config.cluster.v3envoy/config/core/v3/base.protoenvoy/type/v3/percent.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
CircuitBreakersS

thresholds (23.envoy.config.cluster.v3.CircuitBreakers.ThresholdsR
thresholdsc
per_host_thresholds (23.envoy.config.cluster.v3.CircuitBreakers.ThresholdsRperHostThresholds?

ThresholdsK
priority (2%.envoy.config.core.v3.RoutingPriorityB?B?RpriorityE
max_connections (2.google.protobuf.UInt32ValueRmaxConnectionsN
max_pending_requests (2.google.protobuf.UInt32ValueRmaxPendingRequests?
max_requests (2.google.protobuf.UInt32ValueRmaxRequests=
max_retries (2.google.protobuf.UInt32ValueR
maxRetriesb
retry_budget (2?.envoy.config.cluster.v3.CircuitBreakers.Thresholds.RetryBudgetRretryBudget'
track_remaining (RtrackRemainingN
max_connection_pools (2.google.protobuf.UInt32ValueRmaxConnectionPools?
RetryBudget=
budget_percent (2.envoy.type.v3.PercentR
budgetPercentP
min_retry_concurrency (2.google.protobuf.UInt32ValueRminRetryConcurrency:B?ň=
;envoy.api.v2.cluster.CircuitBreakers.Thresholds.RetryBudget:6?ň1
/envoy.api.v2.cluster.CircuitBreakers.Thresholds:+?ň&
$envoy.api.v2.cluster.CircuitBreakersB?
%io.envoyproxy.envoy.config.cluster.v3BCircuitBreakerProtoPZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3????J?$
x



 
	
)
	
%
	
(
	
	'
	

+
	
!


>
	

>

4
	
4

"
	

"

_
	
_

F

???jF
?
xy :ref:`Circuit breaking` settings can be
 specified individually for each defined priority.
2% [#protodoc-title: Circuit breakers]





-

ӈ?-
?
c? A Thresholds defines CircuitBreaker settings for a
 :ref:`RoutingPriority`.
 [#next-free-field: 9]





 :


ӈ? :

"2

"

#$H

ӈ?#$H
?
+)? Specifies the limit on concurrent retries as a percentage of the sum of active requests and
 active pending requests. For example, if there are 100 active requests and the
 budget_percent is set to 25, there may be 25 active retries.

 This parameter is optional. Defaults to 20%.


	+

	+$

	+'(
?
1<? Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
 number of active retries may never go below this number.

 This parameter is optional. Defaults to 3.


	1!

	1"7

	1:;
?
6X The :ref:`RoutingPriority`
 the specified CircuitBreaker settings apply to.


6

6$

6'(

6)W


?6*V
?
:4y The maximum number of connections that Envoy will make to the upstream
 cluster. If not specified, the default is 1024.


:

: /

:23
?
?9? The maximum number of pending requests that Envoy will allow to the
 upstream cluster. If not specified, the default is 1024.
 This limit is applied as a connection limit for non-HTTP traffic.


?

? 4

?78
?
D1? The maximum number of parallel requests that Envoy will make to the
 upstream cluster. If not specified, the default is 1024.
 This limit does not apply to non-HTTP traffic.


D

D ,

D/0
?
H0| The maximum number of parallel retries that Envoy will allow to the
 upstream cluster. If not specified, the default is 3.


H

H +

H./
?
Q!? Specifies a limit on concurrent retries in relation to the number of active requests. This
 parameter is optional.

 .. note::

    If this field is set, the retry budget will override any configured retry circuit
    breaker.


Q

Q

Q 
?
[? If track_remaining is true, then stats will be published that expose
 the number of resources remaining until the circuit breakers open. If
 not specified, the default is false.

 .. note::

    If a retry budget is used in lieu of the max_retries circuit breaker,
    the remaining retry resources remaining will not be tracked.


[

[	

[
?
b9? The maximum number of connection pools per cluster that Envoy will concurrently support at
 once. If not specified, the default is unlimited. Set this for clusters which create a
 large number of connection pools. See
 :ref:`Circuit Breaking ` for
 more details.


b

b 4

b78
?
j%? If multiple :ref:`Thresholds`
 are defined with the same :ref:`RoutingPriority`,
 the first one in the list is used. If no Thresholds is defined for a given
 :ref:`RoutingPriority`, the default values
 are used.


j


j

j 

j#$
?
w.? Optional per-host limits which apply to each individual host in a cluster.

 .. note::
  currently only the :ref:`max_connections
  ` field is supported for per-host limits.

 If multiple per-host :ref:`Thresholds`
 are defined with the same :ref:`RoutingPriority`,
 the first one in the list is used. If no per-host Thresholds are defined for a given
 :ref:`RoutingPriority`,
 the cluster will not have per-host limits.


w


w

w)

w,-bproto3
?
google/protobuf/empty.protogoogle.protobuf"
EmptyB}
com.google.protobufB
EmptyProtoPZ.google.golang.org/protobuf/types/known/emptypb??GPB?Google.Protobuf.WellKnownTypesJ?
2
?
2? Protocol Buffers - Google's data interchange format
 Copyright 2008 Google Inc.  All rights reserved.
 https://developers.google.com/protocol-buffers/

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:

     * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
     * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 

"E
	
"E

#,
	
#,

$+
	
$+

%"
	

%"

&!
	
$&!

';
	
%';

(
	
(
?
2? A generic empty message that you can re-use to avoid defining duplicated
 empty messages in your APIs. A typical example is to use it as the request
 or the response type of an API method. For instance:

     service Foo {
       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
     }




2
bproto3
?
 udpa/annotations/sensitive.protoudpa.annotations google/protobuf/descriptor.proto:>
	sensitive.google.protobuf.FieldOptions???$ (R	sensitiveB)Z'github.com/cncf/xds/go/udpa/annotationsJ?

?
2? THIS FILE IS DEPRECATED
 Users should instead use the corresponding proto in the xds tree.
 No new changes will be accepted here.



	
*


>
	

>
	

?
? Magic number is the 28 most significant bits in the sha256sum of "udpa.annotations.sensitive".
 When set to true, `sensitive` indicates that this field contains sensitive data, such as
 personally identifiable information, passwords, or private keys, and should be redacted for
 display by tools aware of this annotation. Note that that this has no effect on standard
 Protobuf functions such as `TextFormat::PrintToString`.



#








bproto3
??
'envoy/config/core/v3/grpc_service.protoenvoy.config.core.v3envoy/config/core/v3/base.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/empty.protogoogle/protobuf/struct.protogoogle/protobuf/wrappers.proto udpa/annotations/sensitive.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?"
GrpcServiceL

envoy_grpc (2+.envoy.config.core.v3.GrpcService.EnvoyGrpcHR	envoyGrpcO
google_grpc (2,.envoy.config.core.v3.GrpcService.GoogleGrpcHR
googleGrpc3
timeout (2.google.protobuf.DurationRtimeoutL
initial_metadata (2!.envoy.config.core.v3.HeaderValueRinitialMetadataD
retry_policy (2!.envoy.config.core.v3.RetryPolicyRretryPolicy?
	EnvoyGrpc*
cluster_name (	B?BrRclusterName/
	authority (	B?Br(????R	authorityD
retry_policy (2!.envoy.config.core.v3.RetryPolicyRretryPolicyY
max_receive_message_length (2.google.protobuf.UInt32ValueRmaxReceiveMessageLength:.?ň)
'envoy.api.v2.core.GrpcService.EnvoyGrpc?

GoogleGrpc&

target_uri (	B?BrR	targetUrip
channel_credentials (2?.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentialsRchannelCredentialsg
call_credentials (2<.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentialsRcallCredentials(
stat_prefix (	B?BrR
statPrefix8
credentials_factory_name (	RcredentialsFactoryName/
config (2.google.protobuf.StructRconfig^
per_stream_buffer_limit_bytes (2.google.protobuf.UInt32ValueRperStreamBufferLimitBytes[
channel_args (28.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgsRchannelArgs?
SslCredentials?

root_certs (2 .envoy.config.core.v3.DataSourceR	rootCertsI
private_key (2 .envoy.config.core.v3.DataSourceB????R
privateKey?

cert_chain (2 .envoy.config.core.v3.DataSourceR	certChain:>?ň9
7envoy.api.v2.core.GrpcService.GoogleGrpc.SslCredentials`
GoogleLocalCredentials:F?ňA
?envoy.api.v2.core.GrpcService.GoogleGrpc.GoogleLocalCredentials?
ChannelCredentialsf
ssl_credentials (2;.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentialsHRsslCredentials?
google_default (2.google.protobuf.EmptyHR
googleDefaultr
local_credentials (2C.envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentialsHRlocalCredentials:B?ň=
;envoy.api.v2.core.GrpcService.GoogleGrpc.ChannelCredentialsB
credential_specifier?B?
CallCredentials#
access_token (	HRaccessTokenL
google_compute_engine (2.google.protobuf.EmptyHRgoogleComputeEngine2
google_refresh_token (	HRgoogleRefreshToken?
service_account_jwt_access (2_.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentialsHRserviceAccountJwtAccessr

google_iam (2Q.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentialsHR	googleIam}
from_plugin (2Z.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPluginHR
fromPluginj
sts_service (2G.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsServiceHR
stsService?
"ServiceAccountJWTAccessCredentials
json_key (	RjsonKey4
token_lifetime_seconds (RtokenLifetimeSeconds:b?ň]
[envoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials?
GoogleIAMCredentials/
authorization_token (	RauthorizationToken-
authority_selector (	RauthoritySelector:T?ňO
Menvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials?
MetadataCredentialsFromPlugin
name (	Rname9
typed_config (2.google.protobuf.AnyHRtypedConfig:]?ňX
Venvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPluginB
config_typeJRconfig?

StsService;
token_exchange_service_uri (	RtokenExchangeServiceUri
resource (	Rresource
audience (	Raudience
scope (	Rscope0
requested_token_type (	RrequestedTokenType5
subject_token_path (	B?BrRsubjectTokenPath5
subject_token_type (	B?BrRsubjectTokenType(
actor_token_path (	RactorTokenPath(
actor_token_type	 (	RactorTokenType:J?ňE
Cenvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.StsService:??ň:
8envoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentialsB
credential_specifier?B?
ChannelArgsV
args (2B.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntryRargsc
Value#
string_value (	HRstringValue
	int_value (HRintValueB
value_specifier?Bw
	ArgsEntry
key (	RkeyT
value (2>.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ValueRvalue:8:/?ň*
(envoy.api.v2.core.GrpcService.GoogleGrpc:$?ň
envoy.api.v2.core.GrpcServiceB
target_specifier?BJB?
"io.envoyproxy.envoy.config.core.v3BGrpcServiceProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?]
?




	
)
	
#
	
(
	
%
	
	&
	

(
	
*
	

'
	
+
	
	!

;
	
;

1
	
1

"
	

"

Y
	
Y

F

???jF
?
?? gRPC service configuration. This is used by :ref:`ApiConfigSource
 ` and filter configurations.
 [#next-free-field: 7]
2" [#protodoc-title: gRPC services]






_

ӈ?_

9




 !2


ӈ? !2
?
&E? The name of the upstream gRPC cluster. SSL credentials will be supplied
 in the :ref:`Cluster ` :ref:`transport_socket
 `.


&


&

&

&D


?&C
?
*,^? The ``:authority`` header in the grpc request. If this field is not set, the authority header value will be ``cluster_name``.
 Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster.


*


*

*

+,]


?+	,\
?
2!? Indicates the retry policy for re-establishing the gRPC stream
 This field is optional. If max interval is not provided, it will be set to ten times the provided base interval.
 Currently only supported for xDS gRPC streams.
 If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied.


2

2

2 
?
8?? Maximum gRPC message size that is allowed to be received.
 If a message over this limit is received, the gRPC stream is terminated with the RESOURCE_EXHAUSTED error.
 This limit is applied to individual messages in the streaming response and not the total size of streaming response.
 Defaults to 0, which means unlimited.


8

8 :

8=>
&
<? [#next-free-field: 9]


<


=>3


ӈ?=>3
[
AMK See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.


A

BCD

ӈ?BCD
8
F ' PEM encoded server root certificates.


	F

	F

	F
2
IG! PEM encoded client private key.


	I

	I

	I 

	I!F


???$I"E
8
L ' PEM encoded client certificate chain.


	L

	L

	L
y
QTi Local channel credentials. Only UDS is supported for now.
 See https://github.com/grpc/grpc/pull/15909.


Q"

RSL

ӈ?RSL
~
Xfn See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
 credential types.


X

YZH

ӈ?YZH

\e

	\ 

	]*

?]*

_+

	_

	_&

	_)*
`
b1O https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61


	b

	b,

	b/0

d5

	d

	d0

	d34
(
i? [#next-free-field: 8]


i

jkE

ӈ?jkE

mu

	m0

	np1

ӈ?np1


r

r

r

r


t*

t

t%

t()

w~

	w"

	xy\

ӈ?xy\


{'

{

{"

{%&


}&

}

}!

}$%

??

	?+

	??,

ӈ???,

		?


	?

	?

	?

	
?



?


?

?

?

?
E

??	/ [#extension-category: envoy.grpc_credentials]


?


?
/

?


?*

?-.
?
??? Security token service configuration that allows Google gRPC to
 fetch security token from an OAuth 2.0 authorization server.
 See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and
 https://github.com/grpc/grpc/pull/19587.
 [#next-free-field: 10]


	?

	??R

ӈ???R
?

?.? URI of the token exchange service that handles token exchange requests.
 [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
 https://github.com/bufbuild/protoc-gen-validate/issues/303]


?

?)

?,-


?k Location of the target service or resource where the client
 intends to use the requested security token.


?

?

?
w

?c Logical name of the target service where the client intends to
 use the requested security token.


?

?

?
?

?| The desired scope of the requested security token in the
 context of the service or resource where the token will be used.


?

?

?
;

?(' Type of the requested security token.


?

?#

?&'
?

?O? The path of subject token, a security token that represents the
 identity of the party on behalf of whom the request is being made.


?

?!

?$%

?&N

??'M
0

?O Type of the subject token.


?

?!

?$%

?&N

??'M
?

?$? The path of actor token, a security token that represents the identity
 of the acting party. The acting party is authorized to use the
 requested security token and act on behalf of the subject.


?

?

?"#
.

?$ Type of the actor token.


?

?

?"#

??

	? 

	?*

??*
}
? k Access token credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.


	?

	?

	?
?
?8s Google Compute Engine credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61


	?

	?3

	?67
?
?(s Google refresh token credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.


	?

	?#

	?&'
?
?Jy Service Account JWT Access credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.


	?*

	?+E

	?HI
{
?,i Google IAM credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.


	?

	?'

	?*+
?
?6? Custom authenticator credentials.
 https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
 https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.


	?%

	?&1

	?45
?
?#? Custom security token service which implements OAuth 2.0 token exchange.
 https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
 See https://github.com/grpc/grpc/pull/19587.


	?

	?

	?!"
&
?? Channel arguments.


?

??

	?
v

??	` Pointer values are not supported, since they don't make any sense when
 delivered via the API.


?

?
,


??
,


?
"

?


?

? !


?


?


?

?
O
?"= See grpc_types.h GRPC_ARG #defines for keys that work here.


	?

	?

	? !
?
?C? The target URI when using the `Google C++ gRPC client
 `_. SSL credentials will be supplied in
 :ref:`channel_credentials `.


?


?

?

?B


??A

?/

?

?*

?-.
?
?2? A set of call credentials that can be composed with `channel credentials
 `_.


?

?


?-

?01
?
?D? The human readable prefix to use when emitting statistics for the gRPC
 service.

 .. csv-table::
    :header: Name, Type, Description
    :widths: 1, 1, 2

    streams_total, Counter, Total number of streams opened
    streams_closed_, Counter, Total streams closed with 


?


?

?

?C


??B
?
?(? The name of the Google gRPC credentials factory to use. This must have been registered with
 Envoy. If this is empty, a default credentials factory will be used that sets up channel
 credentials based on other configuration parameters.


?


?#

?&'
h
?&X Additional configuration for site-specific customizations of the Google
 gRPC library.


?

?!

?$%
?
?Bt How many bytes each stream can buffer internally.
 If not set an implementation defined default is applied (1MiB).


?

? =

?@A
'
?! Custom channels args.


?

?

? 

	?

	?

	?

	?

??

?

?&

??&
?
?? Envoy's in-built gRPC client.
 See the :ref:`gRPC services overview `
 documentation for discussion on gRPC client selection.


?

?

?
?
?? `Google C++ gRPC client `_
 See the :ref:`gRPC services overview `
 documentation for discussion on gRPC client selection.


?

?

?
^
?'P The timeout for the gRPC request. This is the timeout for a specific
 request.


?

?"

?%&
?
?,? Additional metadata to include in streams initiated to the GrpcService. This can be used for
 scenarios in which additional ad hoc authorization headers (e.g. ``x-foo-bar: baz-key``) are to
 be injected. For more information, including details on header value syntax, see the
 documentation on :ref:`custom request headers
 `.


?


?

?'

?*+
?
?? Optional default retry policy for streams toward the service.
 If an async stream doesn't have retry policy configured in its stream options, this retry policy is used.


?

?

?bproto3
?
xds/core/v3/authority.protoxds.core.v3xds/annotations/v3/status.protovalidate/validate.proto"(
	Authority
name (	B?BrRnameBV
com.github.xds.core.v3BAuthorityProtoPZ"github.com/cncf/xds/go/xds/core/v3?Ƥ?J?





	
)
	
!

/
	
/

	"
	

	"


/
	

/

9
	
9


@

?Ȕl
@
(
 xDS authority information.





;



	



:

?9bproto3
?{
(envoy/config/core/v3/config_source.protoenvoy.config.core.v3envoy/config/core/v3/base.proto$envoy/config/core/v3/extension.proto'envoy/config/core/v3/grpc_service.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoxds/core/v3/authority.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
ApiConfigSourceR
api_type (2-.envoy.config.core.v3.ApiConfigSource.ApiTypeB?B?RapiType^
transport_api_version (2 .envoy.config.core.v3.ApiVersionB?B?RtransportApiVersion#

cluster_names (	RclusterNamesF

grpc_services (2!.envoy.config.core.v3.GrpcServiceRgrpcServices>

refresh_delay (2.google.protobuf.DurationRrefreshDelayL
request_timeout (2.google.protobuf.DurationB?B?*RrequestTimeoutW
rate_limit_settings (2'.envoy.config.core.v3.RateLimitSettingsRrateLimitSettingsA
set_node_on_first_message_only (RsetNodeOnFirstMessageOnlyW
config_validators	 (2*.envoy.config.core.v3.TypedExtensionConfigRconfigValidators"?
ApiType3
%DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE????
REST
GRPC

DELTA_GRPC
AGGREGATED_GRPC
AGGREGATED_DELTA_GRPC:(?ň#
!envoy.api.v2.core.ApiConfigSource"I
AggregatedConfigSource:/?ň*
(envoy.api.v2.core.AggregatedConfigSource"?
SelfConfigSource^
transport_api_version (2 .envoy.config.core.v3.ApiVersionB?B?RtransportApiVersion:)?ň$
"envoy.api.v2.core.SelfConfigSource"?
RateLimitSettings;

max_tokens (2.google.protobuf.UInt32ValueR	maxTokensI
	fill_rate (2.google.protobuf.DoubleValueB?B	!RfillRate:*?ň%
#envoy.api.v2.core.RateLimitSettings"?
PathConfigSource
path (	B?BrRpathS
watched_directory (2&.envoy.config.core.v3.WatchedDirectoryRwatchedDirectory"?
ConfigSource8
authorities (2.xds.core.v3.AuthorityRauthorities!
path (	B?dž?3.0HRpathV
path_config_source (2&.envoy.config.core.v3.PathConfigSourceHRpathConfigSourceS
api_config_source (2%.envoy.config.core.v3.ApiConfigSourceHRapiConfigSource@
ads (2,.envoy.config.core.v3.AggregatedConfigSourceHRads<
self (2&.envoy.config.core.v3.SelfConfigSourceHRselfM
initial_fetch_timeout (2.google.protobuf.DurationRinitialFetchTimeout\
resource_api_version (2 .envoy.config.core.v3.ApiVersionB?B?RresourceApiVersion:%?ň 
envoy.api.v2.core.ConfigSourceB
config_source_specifier?B"?
ExtensionConfigSourceQ

config_source (2".envoy.config.core.v3.ConfigSourceB?B?RconfigSource;
default_config (2.google.protobuf.AnyR
defaultConfigN
$apply_default_config_without_warming (R applyDefaultConfigWithoutWarming%
	type_urls (	B?B?RtypeUrls*@

ApiVersion
AUTO????3.0
V2????3.0
V3B?
"io.envoyproxy.envoy.config.core.v3BConfigSourceProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?c
?




	
)
	
.
	
1
	
#
	
	(
	

(
	
%
	
-
	
'
	
	+
	

!

;
	
;

2
	
2

"
	

"

Y
	
Y

F

???jF
?
(? xDS API and non-xDS services version. This is used to describe both resource and transport
 protocol versions (in distinct configuration fields).
2* [#protodoc-title: Configuration sources]




?
!]? When not specified, we assume v2, to ease migration to Envoy's stable API
 versioning. If a client does not support v2 (e.g. due to deprecation), this
 is an invalid value.


!

!	


!\

!

	???V![

$[ Use xDS v2 API.


$

$

$	Z

$


	???V$Y

'	 Use xDS v3 API.


'

'
?
-z? API configuration source. This identifies the API type and cluster that Envoy
 will use to fetch an xDS API.
 [#next-free-field: 10]



-


.c

ӈ?.c
<
1M. APIs may be fetched via either REST or gRPC.


1
?
45S? Ideally this would be 'reserved 0' but one can't reserve the default
 value. Instead we throw an exception if this is ever used.


4)

4,-

5R

5	

?ζ!5Q
?
:
? REST-JSON v2 API. The `canonical JSON encoding
 `_ for
 the v2 protos is used.


:

:
#
=
 SotW gRPC service.


=

=
?
B? Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}
 rather than Discovery{Request,Response}. Rather than sending Envoy the entire state
 with every update, the xDS server only sends what has changed since the last update.


B

B
?
G? SotW xDS gRPC with ADS. All resources which resolve to this configuration source will be
 multiplexed on a single connection to an ADS endpoint.
 [#not-implemented-hide:]


G

G
?
L? Delta xDS gRPC with ADS. All resources which resolve to this configuration source will be
 multiplexed on a single connection to an ADS endpoint.
 [#not-implemented-hide:]


L

L
0
PF# API type (gRPC, REST, delta gRPC)


P	

P


P

PE

?PD
?
TV? API version for xDS transport protocol. This describes the xDS gRPC/REST
 endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.


T

T
"

T%&

T'U

?T(T
?
^$? Cluster names should be used only with REST. If > 1
 cluster is defined, clusters will be cycled through if any kind of failure
 occurs.

 .. note::

  The cluster with name ``cluster_name`` must be statically defined and its
  type must not be ``EDS``.


^


^

^

^"#
?
b)? Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
 services will be cycled through if any kind of failure occurs.


b


b

b$

b'(
A
e-4 For REST APIs, the delay between successive polls.


e

e(

e+,
b
hUU For REST APIs, the request timeout. If not set, a default value of 1s will be used.


h

h*

h-.

h/T

?h0S
z
l,m For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
 rate limited.


l

l'

l*+
i
o*\ Skip the node identifier in subsequent discovery requests for streaming gRPC config types.


o

o%

o()
?
y6? A list of config validators that will be executed when a new update is
 received from the ApiConfigSource. Note that each validator handles a
 specific xDS service type, and only the validators corresponding to the
 type url (in ``:ref: DiscoveryResponse`` or ``:ref: DeltaDiscoveryResponse``)
 will be invoked.
 If the validator returns false or throws an exception, the config will be rejected by
 the client, and a NACK will be sent.
 [#extension-category: envoy.config.validators]


y


y

y 1

y45
?
?? Aggregated Discovery Service (ADS) options. This is currently empty, but when
 set in :ref:`ConfigSource ` can be used to
 specify that ADS is to be used.





??1

ӈ???1
?
??? [#not-implemented-hide:]
 Self-referencing config source options. This is currently empty, but when
 set in :ref:`ConfigSource ` can be used to
 specify that other data can be obtained from the same server.


?

?d

ӈ??d
?
?V? API version for xDS transport protocol. This describes the xDS gRPC/REST
 endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.


?

?
"

?%&

?'U

??(T
W
??I Rate Limit settings to be applied for discovery requests made by Envoy.


?

??,

ӈ???,
?
?-? Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
 default value of 100 will be used.


?

?(

?+,
?
?R? Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
 per second will be used. The minimal fill rate is once per year. Lower
 fill rates will be set to once per year.


?

?'

?*+

?,Q

??-P
;
??- Local filesystem path configuration source.


?
?
?;? Path on the filesystem to source and watch for configuration updates.
 When sourcing configuration for a :ref:`secret `,
 the certificate and key files are also watched for updates.

 .. note::

  The path to the source must exist at config load time.

 .. note::

   If ``watched_directory`` is *not* configured, Envoy will watch the file path for *moves*.
   This is because in general only moves are atomic. The same method of swapping files as is
   demonstrated in the :ref:`runtime documentation ` can be
   used here also. If ``watched_directory`` is configured, no watch will be placed directly on
   this path. Instead, the configured ``watched_directory`` will be used to trigger reloads of
   this path. This is required in certain deployment scenarios. See below for more information.


?

?	

?

?:

??9
?
?)? If configured, this directory will be watched for *moves*. When an entry in this directory is
 moved to, the ``path`` will be reloaded. This is required in certain deployment scenarios.

 Specifically, if trying to load an xDS resource using a
 `Kubernetes ConfigMap `_, the
 following configuration might be used:
 1. Store xds.yaml inside a ConfigMap.
 2. Mount the ConfigMap to ``/config_map/xds``
 3. Configure path ``/config_map/xds/xds.yaml``
 4. Configure watched directory ``/config_map/xds``

 The above configuration will ensure that Envoy watches the owning directory for moves which is
 required due to how Kubernetes manages ConfigMap symbolic links during atomic updates.


?

?$

?'(
?
??? Configuration for :ref:`listeners `, :ref:`clusters
 `, :ref:`routes
 `, :ref:`endpoints
 ` etc. may either be sourced from the
 filesystem or from an xDS API source. Filesystem configs are watched with
 inotify for updates.
 [#next-free-field: 9]


?

?`

ӈ??`
?
?1? Authorities that this config source may be used for. An authority specified in a xdstp:// URL
 is resolved to a ``ConfigSource`` prior to configuration fetch. This field provides the
 association between authority name and configuration source.
 [#not-implemented-hide:]


?


? 

?!,

?/0

??

?

?&

??&
V
?aH Deprecated in favor of ``path_config_source``. Use that field instead.


?


?

?

?`

?&

	??K?(_
;
?,- Local filesystem path configuration source.


?

?'

?*+
)
?* API configuration source.


?

?%

?()
?
?#z When set, ADS will be used to fetch resources. The ADS API configuration
 source in the bootstrap configuration is used.


?

?

?!"
?
?? [#not-implemented-hide:]
 When set, the client will access the resources from the same server it got the
 ConfigSource from, although not necessarily from the same stream. This is similar to the
 :ref:`ads` field, except that the client may use a
 different stream to the same server. As a result, this field can be used for things
 like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
 LDS to RDS on the same server without requiring the management server to know its name
 or required credentials.
 [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
 this field can implicitly mean to use the same stream in the case where the ConfigSource
 is provided via ADS and the specified data can also be obtained via ADS.]


?

?

?
?
?5? When this timeout is specified, Envoy will wait no longer than the specified time for first
 config response on this xDS subscription during the :ref:`initialization process
 `. After reaching the timeout, Envoy will move to the next
 initialization phase, even if the first config is not delivered yet. The timer is activated
 when the xDS API subscription starts, and is disarmed on first config update or on error. 0
 means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
 timeout applies). The default is 15s.


?

?0

?34
?
?U? API version for xDS resources. This implies the type URLs that the client
 will request for resources and the resource type that the client will in
 turn expect to be delivered.


?

?
!

?$%

?&T

??'S
?
??? Configuration source specifier for a late-bound extension configuration. The
 parent resource is warmed until all the initial extension configurations are
 received, unless the flag to apply the default configuration is set.
 Subsequent extension updates are atomic on a per-worker basis. Once an
 extension configuration is applied to a request or a connection, it remains
 constant for the duration of processing. If the initial delivery of the
 extension configuration fails, due to a timeout for example, the optional
 default configuration is applied. Without a default configuration, the
 extension is disabled, until an extension configuration is received. The
 behavior of a disabled extension depends on the context. For example, a
 filter chain with a disabled extension filter rejects all incoming streams.


?

?K

?

?

? 

?!J

??"I
?
?)? Optional default configuration to use as the initial configuration if
 there is a failure to receive the initial extension configuration or if
 ``apply_default_config_without_warming`` flag is set.


?

?$

?'(
?
?0? Use the default config as the initial configuration without warming and
 waiting for the first discovery response. Requires the default configuration
 to be supplied.


?

?+

?./
?
?M? A set of permitted extension type URLs. Extension configuration updates are rejected
 if they do not match any type URL in the set.


?


?

?

?

? L

??!Kbproto3
?
$envoy/config/cluster/v3/filter.protoenvoy.config.cluster.v3(envoy/config/core/v3/config_source.protogoogle/protobuf/any.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
Filter
name (	B?BrRname7
typed_config (2.google.protobuf.AnyRtypedConfigV
config_discovery (2+.envoy.config.core.v3.ExtensionConfigSourceRconfigDiscovery:"?ň
envoy.api.v2.cluster.FilterB?
%io.envoyproxy.envoy.config.cluster.v3BFilterProtoPZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3????J?	
'



 
	
2
	
#
	
'
	
	+
	

!

>
	
>


,
	

,

"
	

"

_
	
_

F

???jF
?
'2 [#protodoc-title: Upstream network filters]
 Upstream network filters apply to the connections to the upstream cluster hosts.






]

ӈ?]
4
;' The name of the filter configuration.




	



:

?9
?
 '? Filter specific configuration which depends on the filter being
 instantiated. See the supported filters for further documentation.
 Note that Envoy's :ref:`downstream network
 filters ` are not valid upstream network filters.
 Only one of typed_config or config_discovery can be used.


 

 "

 %&
?
&5? Configuration source specifier for an extension configuration discovery
 service. In case of a failure and without the default configuration, the
 listener closes the connections.
 Only one of typed_config or config_discovery can be used.


&

& 0

&34bproto3
?\
/envoy/config/cluster/v3/outlier_detection.protoenvoy.config.cluster.v3$envoy/config/core/v3/extension.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
OutlierDetectionE
consecutive_5xx (2.google.protobuf.UInt32ValueRconsecutive5xx?
interval (2.google.protobuf.DurationB?B?*RintervalQ
base_ejection_time (2.google.protobuf.DurationB?B?*RbaseEjectionTimeW
max_ejection_percent (2.google.protobuf.UInt32ValueB?B*dRmaxEjectionPercenta
enforcing_consecutive_5xx (2.google.protobuf.UInt32ValueB?B*dRenforcingConsecutive5xx[
enforcing_success_rate (2.google.protobuf.UInt32ValueB?B*dRenforcingSuccessRateY
success_rate_minimum_hosts (2.google.protobuf.UInt32ValueRsuccessRateMinimumHosts[
success_rate_request_volume (2.google.protobuf.UInt32ValueRsuccessRateRequestVolumeW
success_rate_stdev_factor	 (2.google.protobuf.UInt32ValueRsuccessRateStdevFactor\
consecutive_gateway_failure
 (2.google.protobuf.UInt32ValueRconsecutiveGatewayFailurex
%enforcing_consecutive_gateway_failure (2.google.protobuf.UInt32ValueB?B*dR"enforcingConsecutiveGatewayFailureJ
"split_external_local_origin_errors (RsplitExternalLocalOriginErrorse
 consecutive_local_origin_failure
 (2.google.protobuf.UInt32ValueRconsecutiveLocalOriginFailure?
*enforcing_consecutive_local_origin_failure (2.google.protobuf.UInt32ValueB?B*dR&enforcingConsecutiveLocalOriginFailures
#enforcing_local_origin_success_rate (2.google.protobuf.UInt32ValueB?B*dRenforcingLocalOriginSuccessRateg
failure_percentage_threshold (2.google.protobuf.UInt32ValueB?B*dRfailurePercentageThresholdg
enforcing_failure_percentage (2.google.protobuf.UInt32ValueB?B*dRenforcingFailurePercentage
)enforcing_failure_percentage_local_origin (2.google.protobuf.UInt32ValueB?B*dR%enforcingFailurePercentageLocalOrigine
 failure_percentage_minimum_hosts (2.google.protobuf.UInt32ValueRfailurePercentageMinimumHostsg
!failure_percentage_request_volume (2.google.protobuf.UInt32ValueRfailurePercentageRequestVolumeO
max_ejection_time (2.google.protobuf.DurationB?B?*RmaxEjectionTimeR
max_ejection_time_jitter (2.google.protobuf.DurationRmaxEjectionTimeJitterw
+successful_active_health_check_uneject_host (2.google.protobuf.BoolValueR&successfulActiveHealthCheckUnejectHostF
monitors (2*.envoy.config.core.v3.TypedExtensionConfigRmonitors:,?ň'
%envoy.api.v2.cluster.OutlierDetectionB?
%io.envoyproxy.envoy.config.cluster.v3BOutlierDetectionProtoPZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3????J?F
?



 
	
.
	
(
	
(
	
	'
	

+
	
!


>
	

>

6
	
6

"
	

"

_
	
_

F

???jF
?
?? See the :ref:`architecture overview ` for
 more information on outlier detection.
 [#next-free-field: 25]
2& [#protodoc-title: Outlier detection]





.

ӈ?.
?
2? The number of consecutive server-side error responses (for HTTP traffic,
 5xx responses; for TCP traffic, connection failures; for Redis, failure to
 respond PONG; etc.) before a consecutive 5xx ejection occurs. Defaults to 5.




-

01
?
$N? The time interval between ejection analysis sweeps. This can result in
 both new ejections as well as hosts being returned to service. Defaults
 to 10000ms or 10s.


$

$#

$&'

$(M

?$)L
?
*X? The base time that a host is ejected for. The real time is equal to the
 base time multiplied by the number of times the host has been ejected and is
 capped by :ref:`max_ejection_time`.
 Defaults to 30000ms or 30s.


*

*-

*01

*2W

?*3V
?
.^? The maximum % of an upstream cluster that can be ejected due to outlier
 detection. Defaults to 10% but will eject at least one host regardless of the value.


.

.2

.56

.7]

?.8\
?
3c? The % chance that a host will be actually ejected when an outlier status
 is detected through consecutive 5xx. This setting can be used to disable
 ejection or to ramp it up slowly. Defaults to 100.


3

37

3:;

3=? The number of hosts in a cluster that must have enough request volume to
 detect success rate outliers. If the number of hosts is less than this
 setting, outlier detection via success rate statistics is not performed
 for any host in the cluster. Defaults to 5.


>

>8

>;<
?
E>? The minimum number of total requests that must be collected in one
 interval (as defined by the interval duration above) to include this host
 in success rate based outlier detection. If the volume is lower than this
 setting, outlier detection via success rate statistics is not performed
 for that host. Defaults to 100.


E

E9

E<=
?
N<? This factor is used to determine the ejection threshold for success rate
 outlier ejection. The ejection threshold is the difference between the
 mean success rate, and the product of this factor and the standard
 deviation of the mean success rate: mean - (stdev *
 success_rate_stdev_factor). This factor is divided by a thousand to get a
 double. That is, if the desired factor is 1.9, the runtime value should
 be 1900. Defaults to 1900.


N

N7

N:;
?
	R?? The number of consecutive gateway failures (502, 503, 504 status codes)
 before a consecutive gateway failure ejection occurs. Defaults to 5.


	R

	R9

	R<>
?

WX-? The % chance that a host will be actually ejected when an outlier status
 is detected through consecutive gateway failures. This setting can be
 used to disable ejection or to ramp it up slowly. Defaults to 0.



W


WC


WFH


X,


?X+
?
a/? Determines whether to distinguish local origin failures from external errors. If set to true
 the following configuration parameters are taken into account:
 :ref:`consecutive_local_origin_failure`,
 :ref:`enforcing_consecutive_local_origin_failure`
 and
 :ref:`enforcing_local_origin_success_rate`.
 Defaults to false.


a

a)

a,.
?
gD? The number of consecutive locally originated failures before ejection
 occurs. Defaults to 5. Parameter takes effect only when
 :ref:`split_external_local_origin_errors`
 is set to true.


g

g>

gAC
?

op-? The % chance that a host will be actually ejected when an outlier status
 is detected through consecutive locally originated failures. This setting can be
 used to disable ejection or to ramp it up slowly. Defaults to 100.
 Parameter takes effect only when
 :ref:`split_external_local_origin_errors`
 is set to true.



o


oH


oKM


p,


?p+
?
xy-? The % chance that a host will be actually ejected when an outlier status
 is detected through success rate statistics for locally originated errors.
 This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
 Parameter takes effect only when
 :ref:`split_external_local_origin_errors`
 is set to true.


x

xA

xDF

y,

?y+
?
~-? The failure percentage to use when determining failure percentage-based outlier detection. If
 the failure percentage of a given host is greater than or equal to this value, it will be
 ejected. Defaults to 85.


~

~:

~=?

,

?+
?
??-? The % chance that a host will be actually ejected when an outlier status is detected through
 failure percentage statistics. This setting can be used to disable ejection or to ramp it up
 slowly. Defaults to 0.

 [#next-major-version: setting this without setting failure_percentage_threshold should be
 invalid in v4.]


?

?:

?=?

?,

??+
?
??-? The % chance that a host will be actually ejected when an outlier status is detected through
 local-origin failure percentage statistics. This setting can be used to disable ejection or to
 ramp it up slowly. Defaults to 0.


?

?G

?JL

?,

??+
?
?D? The minimum number of hosts in a cluster in order to perform failure percentage-based ejection.
 If the total number of hosts in the cluster is less than this value, failure percentage-based
 ejection will not be performed. Defaults to 5.


?

?>

?AC
?
?E? The minimum number of total requests that must be collected in one interval (as defined by the
 interval duration above) to perform failure percentage-based ejection for this host. If the
 volume is lower than this setting, failure percentage-based ejection will not be performed for
 this host. Defaults to 50.


?

??

?BD
?
?X? The maximum time that a host is ejected for. See :ref:`base_ejection_time`
 for more information. If not specified, the default value (300000ms or 300s) or
 :ref:`base_ejection_time` value is applied, whatever is larger.


?

?,

?/1

?2W

??3V
?
?9? The maximum amount of jitter to add to the ejection time, in order to prevent
 a 'thundering herd' effect where all proxies try to reconnect to host at the same time.
 See :ref:`max_ejection_time_jitter`
 Defaults to 0s.


?

?3

?68
?
?M? If active health checking is enabled and a host is ejected by outlier detection, a successful active health check
 unejects the host by default and considers it as healthy. Unejection also clears all the outlier detection counters.
 To change this default behavior set this config to ``false`` where active health checking will not uneject the host.
 Defaults to true.


?

?G

?JL
I
?6; Set of host's passive monitors.
 [#not-implemented-hide:]


?


?'

?(0

?35bproto3
?
/envoy/config/core/v3/event_service_config.protoenvoy.config.core.v3'envoy/config/core/v3/grpc_service.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
EventServiceConfigF
grpc_service (2!.envoy.config.core.v3.GrpcServiceHRgrpcService:+?ň&
$envoy.api.v2.core.EventServiceConfigB
config_source_specifier?BB?
"io.envoyproxy.envoy.config.core.v3BEventServiceConfigProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?





	
1
	
'
	
+
	
!


;
	

;

8
	
8

"
	

"


Y
	

Y

F

???jF
^
R [#not-implemented-hide:]
 Configuration of the event reporting service endpoint.





-

ӈ?-





&

?&
Q
!D Specifies the gRPC service that hosts the event reporting service.






 bproto3
?'
!envoy/type/matcher/v3/regex.protoenvoy.type.matcher.v3google/protobuf/wrappers.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
RegexMatcher[

google_re2 (2-.envoy.type.matcher.v3.RegexMatcher.GoogleRE2B?dž?3.0HR	googleRe2
regex (	B?BrRregex?
	GoogleRE2S
max_program_size (2.google.protobuf.UInt32ValueB?dž?3.0RmaxProgramSize:0?ň+
)envoy.type.matcher.RegexMatcher.GoogleRE2:&?ň!
envoy.type.matcher.RegexMatcherB
engine_type"?
RegexMatchAndSubstituteG
pattern (2#.envoy.type.matcher.v3.RegexMatcherB?B?Rpattern/
substitution (	B?Br??Rsubstitution:1?ň,
*envoy.type.matcher.RegexMatchAndSubstituteB?
#io.envoyproxy.envoy.type.matcher.v3B
RegexProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3????J? 
`




	
(
	
-
	
'
	
+
	
	!

<
	
<

+
	
+


"
	


"

]
	
]

F

???jF
u
BE A regex matcher designed for safety when used with untrusted input.
2" [#protodoc-title: Regex matcher]






a

ӈ?a
?
$7? Google's `RE2 `_ regex engine. The regex string must adhere to
 the documented `syntax `_. The engine is designed
 to complete execution in linear time as well as limit the amount of memory used.

 Envoy supports program size checking via runtime. The runtime keys ``re2.max_program_size.error_level``
 and ``re2.max_program_size.warn_level`` can be set to integers as the maximum program size or
 complexity that a compiled regex can have before an exception is thrown or a warning is
 logged, respectively. ``re2.max_program_size.error_level`` defaults to 100, and
 ``re2.max_program_size.warn_level`` has no default if unset (will not check/log a warning).

 Envoy emits two stats for tracking the program size of regexes: the histogram ``re2.program_size``,
 which records the program size, and the counter ``re2.exceeded_warn_level``, which is incremented
 each time the program size exceeds the warn level threshold.


$


%&4


ӈ?%&4
?
56U? This field controls the RE2 "program size" which is a rough estimate of how complex a
 compiled regex is to evaluate. A regex that has a program size greater than the configured
 value will fail to compile. In this case, the configured max program size can be increased
 or the regex can be simplified. If not specified, the default is 100.

 This field is deprecated; regexp validation should be performed on the management server
 instead of being done by each individual client.

 .. note::

  Although this field is deprecated, the program size will still be checked against the
  global ``re2.max_program_size.error_level`` runtime value.



5

5 0

534

6T

6	

??K6S

9=

9
*
;`_ regular expression engine uses a
 backslash followed by the capture group number to denote a numbered
 capture group. E.g., ``\1`` refers to capture group 1, and ``\2`` refers
 to capture group 2.


^

^	

^

_U

?_Tbproto3
?	
xds/core/v3/extension.protoxds.core.v3validate/validate.protogoogle/protobuf/any.proto"v
TypedExtensionConfig
name (	B?BrRnameA
typed_config (2.google.protobuf.AnyB?B?RtypedConfigBN
com.github.xds.core.v3BExtensionProtoPZ"github.com/cncf/xds/go/xds/core/v3J?






/
	
/

"
	

"

/
	
/

9
	
9
	
	!
	

#
7

+ Message type for extension configuration.





?
;z The name of an extension. This is not used to select the extension, instead
 it serves the role of an opaque identifier.




	



:

?9
?
Q? The typed config for the extension. The type URL will be used to identify
 the extension. In the case that the type URL is *xds.type.v3.TypedStruct*
 (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type
 URL of *TypedStruct* will be utilized. See the
 :ref:`extension configuration overview
 ` for further details.




"

%&

'P

?(Obproto3
?
"envoy/type/matcher/v3/string.protoenvoy.type.matcher.v3!envoy/type/matcher/v3/regex.protoxds/core/v3/extension.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?

StringMatcher
exact (	HRexact!
prefix (	B?BrHRprefix!
suffix (	B?BrHRsuffixN

safe_regex (2#.envoy.type.matcher.v3.RegexMatcherB?B?HR	safeRegex%
contains (	B?BrHRcontains;
custom (2!.xds.core.v3.TypedExtensionConfigHRcustom
ignore_case (R
ignoreCase:'?ň"
 envoy.type.matcher.StringMatcherB

match_pattern?BJRregex"?
ListStringMatcherJ
patterns (2$.envoy.type.matcher.v3.StringMatcherB?B?Rpatterns:+?ň&
$envoy.type.matcher.ListStringMatcherB?
#io.envoyproxy.envoy.type.matcher.v3BStringProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3????J?
S




	
+
	
%
	
'
	
	+
	

!

<
	
<


,
	

,

"
	

"

]
	
]

F

???jF
n
K= Specifies the way to match a string.
 [#next-free-field: 9]
2# [#protodoc-title: String matcher]






b

ӈ?b


	

	

	

	








E



&

?&
?
%x The input string must match exactly the string specified here.

 Examples:

 * ``abc`` only matches the value ``abc``.


%


%

%
?
-?? The input string must have the prefix specified here.
 Note: empty prefix is not allowed, please use regex instead.

 Examples:

 * ``abc`` matches the value ``abc.xyz``


-


-

-

->

?-=
?
5?? The input string must have the suffix specified here.
 Note: empty prefix is not allowed, please use regex instead.

 Examples:

 * ``abc`` matches the value ``xyz.abc``


5


5

5

5>

?5=
Q
8ND The input string must match the regular expression specified here.


8

8

8

8 M

?8!L
?
@A? The input string must have the substring specified here.
 Note: empty contains match is not allowed, please use regex instead.

 Examples:

 * ``abc`` matches the value ``xyz.abc.def``


@


@

@

@@

?@?
a
D0T Use an extension as the matcher type.
 [#extension-category: envoy.string_matcher]


D$

D%+

D./
?
J? If true, indicates the exact/prefix/suffix/contains matching should be case insensitive. This
 has no effect for the safe_regex match.
 For example, the matcher ``data`` will match both input string ``Data`` and ``data`` if set to true.


J

J

J
9
NS- Specifies a list of ways to match a string.



N

OP-

ӈ?OP-

RS

R


R

R!

R$%

R&R

?R'Qbproto3
?
envoy/type/v3/http.proto
envoy.type.v3udpa/annotations/status.proto*2
CodecClientType	
HTTP1	
HTTP2	
HTTP3Bo
io.envoyproxy.envoy.type.v3B	HttpProtoPZ;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3????J?





	
'

4
	
4

*
	
*

"
	

"

	R
	
	R


F

???j
F
%
2 [#protodoc-title: HTTP]


















?
? [#not-implemented-hide:] QUIC implementation is not production ready yet. Use this enum with
 caution to prevent accidental execution of QUIC code. I.e. `!= HTTP2` is no longer sufficient
 to distinguish HTTP1 and HTTP2 traffic.





bproto3
?
envoy/type/v3/range.proto
envoy.type.v3udpa/annotations/status.proto!udpa/annotations/versioning.proto"R

Int64Range
start (Rstart
end (Rend:?ň
envoy.type.Int64Range"R

Int32Range
start (Rstart
end (Rend:?ň
envoy.type.Int32Range"T
DoubleRange
start (Rstart
end (Rend:?ň
envoy.type.DoubleRangeBp
io.envoyproxy.envoy.type.v3B
RangeProtoPZ;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3????J?	
1




	
'
	
+

4
	
4

+
	
+

	"
	

	"


R
	

R

F

???jF
?
b Specifies the int64 start and end of the range using half-open interval semantics [start,
 end).
2 [#protodoc-title: Range]






W

ӈ?W
-
  start of the range (inclusive)







+
 end of the range (exclusive)







n
%b Specifies the int32 start and end of the range using half-open interval semantics [start,
 end).






W

ӈ?W
-
!  start of the range (inclusive)


!

!

!
+
$ end of the range (exclusive)


$

$

$
o
)1c Specifies the double start and end of the range using half-open interval semantics [start,
 end).



)


*X

ӈ?*X
-
-  start of the range (inclusive)


-

-	

-
+
0 end of the range (exclusive)


0

0	

0bproto3
??
'envoy/config/core/v3/health_check.protoenvoy.config.core.v3envoy/config/core/v3/base.proto/envoy/config/core/v3/event_service_config.proto$envoy/config/core/v3/extension.proto"envoy/type/matcher/v3/string.protoenvoy/type/v3/http.protoenvoy/type/v3/range.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/struct.protogoogle/protobuf/wrappers.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"`
HealthStatusSetM
statuses (2".envoy.config.core.v3.HealthStatusB
?B
?"?Rstatuses"?
HealthCheck?
timeout (2.google.protobuf.DurationB
?B?*RtimeoutA
interval (2.google.protobuf.DurationB
?B?*Rinterval@
initial_jitter (2.google.protobuf.DurationR
initialJitterB
interval_jitter (2.google.protobuf.DurationRintervalJitter6
interval_jitter_percent (
RintervalJitterPercentW
unhealthy_threshold (2.google.protobuf.UInt32ValueB?B?RunhealthyThresholdS
healthy_threshold (2.google.protobuf.UInt32ValueB?B?RhealthyThreshold7
alt_port (2.google.protobuf.UInt32ValueRaltPortE
reuse_connection (2.google.protobuf.BoolValueRreuseConnection_
http_health_check (21.envoy.config.core.v3.HealthCheck.HttpHealthCheckHRhttpHealthCheck\
tcp_health_check	 (20.envoy.config.core.v3.HealthCheck.TcpHealthCheckHRtcpHealthCheck_
grpc_health_check (21.envoy.config.core.v3.HealthCheck.GrpcHealthCheckHRgrpcHealthChecke
custom_health_check
 (23.envoy.config.core.v3.HealthCheck.CustomHealthCheckHRcustomHealthCheckS
no_traffic_interval (2.google.protobuf.DurationB?B?*RnoTrafficIntervalb
no_traffic_healthy_interval (2.google.protobuf.DurationB?B?*RnoTrafficHealthyIntervalR
unhealthy_interval (2.google.protobuf.DurationB?B?*RunhealthyInterval[
unhealthy_edge_interval (2.google.protobuf.DurationB?B?*RunhealthyEdgeIntervalW
healthy_edge_interval (2.google.protobuf.DurationB?B?*RhealthyEdgeInterval1
event_log_path (	B?dž?3.0ReventLogPathM
event_logger (2*.envoy.config.core.v3.TypedExtensionConfigReventLoggerM

event_service (2(.envoy.config.core.v3.EventServiceConfigReventServiceF
 always_log_health_check_failures (RalwaysLogHealthCheckFailuresD
always_log_health_check_success (RalwaysLogHealthCheckSuccessM
tls_options (2,.envoy.config.core.v3.HealthCheck.TlsOptionsR
tlsOptions^
transport_socket_match_criteria (2.google.protobuf.StructRtransportSocketMatchCriteria?
Payload
text (	B?BrHRtext
binary (HRbinary:,?ň'
%envoy.api.v2.core.HealthCheck.PayloadB
payload?B?
HttpHealthCheck
host (	B?Br?Rhost
path (	B
?Br?Rpath=
send (2).envoy.config.core.v3.HealthCheck.PayloadRsendC
receive (2).envoy.config.core.v3.HealthCheck.PayloadRreceiveW
response_buffer_size (2.google.protobuf.UInt64ValueB?B2(RresponseBufferSizeg
request_headers_to_add (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RrequestHeadersToAddK
request_headers_to_remove (	B?B
?
"r??RrequestHeadersToRemoveF
expected_statuses	 (2.envoy.type.v3.Int64RangeRexpectedStatusesH
retriable_statuses (2.envoy.type.v3.Int64RangeRretriableStatusesT
codec_client_type
 (2.envoy.type.v3.CodecClientTypeB?B?RcodecClientTypeV
service_name_matcher (2$.envoy.type.matcher.v3.StringMatcherRserviceNameMatcherG
method
 (2#.envoy.config.core.v3.RequestMethodB
?B? Rmethod:4?ň/
-envoy.api.v2.core.HealthCheck.HttpHealthCheckJJRservice_nameR	use_http2?
TcpHealthCheck=
send (2).envoy.config.core.v3.HealthCheck.PayloadRsendC
receive (2).envoy.config.core.v3.HealthCheck.PayloadRreceive:3?ň.
,envoy.api.v2.core.HealthCheck.TcpHealthCheck[
RedisHealthCheck
key (	Rkey:5?ň0
.envoy.api.v2.core.HealthCheck.RedisHealthCheck?
GrpcHealthCheck!
service_name (	RserviceName)
	authority (	B?Br??R	authority]
initial_metadata (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RinitialMetadata:4?ň/
-envoy.api.v2.core.HealthCheck.GrpcHealthCheck?
CustomHealthCheck
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfig:6?ň1
/envoy.api.v2.core.HealthCheck.CustomHealthCheckB
config_typeJRconfigd

TlsOptions%
alpn_protocols (	R
alpnProtocols:/?ň*
(envoy.api.v2.core.HealthCheck.TlsOptions:$?ň
envoy.api.v2.core.HealthCheckB
health_checker?BJ
*`
HealthStatus
UNKNOWN
HEALTHY
	UNHEALTHY
DRAINING
TIMEOUT
DEGRADEDB?
"io.envoyproxy.envoy.config.core.v3BHealthCheckProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J??
?




	
)
	
9
	
.
	
,
	
"
	
	#
	
#
	
(
	

&
	
	(
	

-
	
'
	
+
	

!

;
	
;

1
	
1

"
	

"

Y
	
Y

F

???jF
?
!8 Endpoint health status.
2? [#protodoc-title: Health check]
 * Health checking :ref:`architecture overview `.
 * If health checking is configured for a cluster, additional statistics are emitted. They are
   documented :ref:`here `.



!
[
#N The health status is not known. This is interpreted by Envoy as ``HEALTHY``.


#	

#

&
 Healthy.


&	

&

) Unhealthy.


)

)
?
0? Connection draining in progress. E.g.,
 ``_
 or
 ``_.
 This is interpreted by Envoy as ``UNHEALTHY``.


0


0

i
4\ Health check timed out. This is part of HDS and is interpreted by Envoy as
 ``UNHEALTHY``.


4	

4

7 Degraded.


7


7



:>


:
:
<=H, An order-independent set of health status.


<


<

< 

<#$

=G

?=F
%
A? [#next-free-field: 27]



A


B_

ӈ?B_
K
ER= Describes the encoding of the payload bytes in the payload.


E


FG0


ӈ?FG0

IQ

I


J(

	?J(
7
M?( Hex encoded payload. E.g., "000000FF".


M

M


M

M>


?M=
 
P Binary payload.


P

P

P
'
U? [#next-free-field: 15]


U


VW8


ӈ?VW8

	Y

	Y


	Y


	Y


	Y

	Y

	Y


[)


[



[(
?
aV? The value of the host header in the HTTP health check request. If
 left empty (default value), the name of the cluster this health check is associated
 with will be used. The host header can be customized for a specific endpoint by setting the
 :ref:`hostname ` field.


a


a

a

aU


?aT
v
eag Specifies the HTTP path that will be requested during health checking. For example
 ``/healthcheck``.


e


e

e

e`


?e_
@
h1 [#not-implemented-hide:] HTTP specific payload.


h

h

h
?
s!? Specifies a list of HTTP expected responses to match in the first ``response_buffer_size`` bytes of the response body.
 If it is set, both the expected response check and status code determine the health check.
 When checking the response, “fuzzy” matching is performed such that each payload block must be found,
 and in the order specified, but not necessarily contiguous.

 .. note::

   It is recommended to set ``response_buffer_size`` based on the total Payload size for efficiency.
   The default buffer size is 1024 bytes when it is not set.


s

s


s

s 
?
w_? Specifies the size of response buffer in bytes that is used to Payload match.
 The default value is 1024. Setting to 0 implies that the Payload will be matched against the entire response.


w

w 4

w79

w:^


?w;]
?
}~8? Specifies a list of HTTP headers that should be added to each request that is sent to the
 health checked cluster. For more information, including details on header value syntax, see
 the documentation on :ref:`custom request headers
 `.


}

}


}5

}89

~7


?~	6
?
??x Specifies a list of HTTP headers that should be removed from each request that is sent to the
 health checked cluster.


?

?


?-

?01

?2?


??3?
?
?6? Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
 semantics of :ref:`Int64Range `. The start and end of each
 range are required. Only statuses in the range [100, 600) are allowed.


?

?


? 1

?45
?	
?8? Specifies a list of HTTP response statuses considered retriable. If provided, responses in this range
 will count towards the configured :ref:`unhealthy_threshold `,
 but will not result in the host being considered immediately unhealthy. Ranges follow half-open semantics of
 :ref:`Int64Range `. The start and end of each range are required.
 Only statuses in the range [100, 600) are allowed. The :ref:`expected_statuses `
 field takes precedence for any range overlaps with this field i.e. if status code 200 is both retriable and expected, a 200 response will
 be considered a successful health check. By default all responses not in
 :ref:`expected_statuses ` will result in
 the host being considered immediately unhealthy i.e. if status code 200 is expected and there are no configured retriable statuses, any
 non-200 response will result in the host being marked unhealthy.


?

?


? 2

?57
G
	?b7 Use specified application protocol for health checks.


	?

	?-

	?02

	?3a


	??4`
?

?<? An optional service name parameter which is used to validate the identity of
 the health checked cluster using a :ref:`StringMatcher
 `. See the :ref:`architecture overview
 ` for more information.



?!


?"6


?9;
?
?W? HTTP Method that will be used for health checking, default is "GET".
 GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported.
 CONNECT method is disallowed because it is not appropriate for health check request.
 If a non-200 response is expected by the method, it needs to be set in :ref:`expected_statuses `.


?

?

?

?V


??U

??

?


??7


ӈ???7
C
?3 Empty payloads imply a connect-only health check.


?

?

?
?
?!? When checking the response, “fuzzy” matching is performed such that each
 payload block must be found, and in the order specified, but not
 necessarily contiguous.


?

?


?

? 

??

?


??9


ӈ???9
?
?? If set, optionally perform ``EXISTS `` instead of ``PING``. A return value
 from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
 than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
 by setting the specified key to any value and waiting for traffic to drain.


?


?

?
?
??? `grpc.health.v1.Health
 `_-based
 healthcheck. See `gRPC doc `_
 for details.


?


??8


ӈ???8
?
?? An optional service name parameter which will be sent to gRPC service in
 `grpc.health.v1.HealthCheckRequest
 `_.
 message. See `gRPC health-checking overview
 `_ for more information.


?


?

?
?
??X? The value of the :authority header in the gRPC health check request. If
 left empty (default value), the name of the cluster this health check is associated
 with will be used. The authority header can be customized for a specific endpoint by setting
 the :ref:`hostname ` field.


?


?

?

?W


??	V
?
?d? Specifies a list of key-value pairs that should be added to the metadata of each GRPC call
 that is sent to the health checked cluster. For more information, including details on header value syntax,
 see the documentation on :ref:`custom request headers
 `.


?

?


?/

?23

?4c


??5b
&
?? Custom health check.


?


??:


ӈ???:

	?

	?


	?


	?



?


?

C
?=3 The registered name of the custom health checker.


?


?

?

?<


??;
?
??? A custom health checker specific configuration which depends on the custom health checker
 being instantiated. See :api:`envoy/config/health_checker` for reference.
 [#extension-category: envoy.health_checkers]


?


?+

?

?&

?)*
?
??? Health checks occur over the transport socket specified for the cluster. This implies that if a
 cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.

 This allows overriding the cluster TLS settings, just for health check connections.


?


??3


ӈ???3
?
?'? Specifies the ALPN protocols for health check connections. This is useful if the
 corresponding upstream is using ALPN-based :ref:`FilterChainMatch
 ` along with different protocols for health checks
 versus data connections. If empty, no ALPN protocols will be set on health check connections.


?

?


?"

?%&

	?

	?

	?

	?
?
??? The time to wait for a health check response. If the timeout is reached the
 health check attempt will be considered a failure.


?

?"

?%&

?'?

??(?
5
??% The interval between health checks.


?

?#

?&'

?(?

??)?
?
?/? An optional jitter amount in milliseconds. If specified, Envoy will start health
 checking after for a random time in ms between 0 and initial_jitter. This only
 applies to the first health check.


?

?)

?,.
?
?/? An optional jitter amount in milliseconds. If specified, during every
 interval Envoy will add interval_jitter to the wait time.


?

?*

?-.
?
?&? An optional jitter amount as a percentage of interval_ms. If specified,
 during every interval Envoy will add ``interval_ms`` *
 ``interval_jitter_percent`` / 100 to the wait time.

 If interval_jitter_ms and interval_jitter_percent are both set, both of
 them will be used to increase the wait time.


?

?	 

?#%
?
?d? The number of unhealthy health checks required before a host is marked
 unhealthy. Note that for ``http`` health checking if a host responds with a code not in
 :ref:`expected_statuses `
 or :ref:`retriable_statuses `,
 this threshold is ignored and the host is considered immediately unhealthy.


?

?1

?45

?6c

??7b
?
?b? The number of healthy health checks required before a host is marked
 healthy. Note that during startup, only a single successful health check is
 required to mark a host healthy.


?

?/

?23

?4a

??5`
N
?+@ [#not-implemented-hide:] Non-serving port for health checking.


?

?&

?)*
U
?1G Reuse health check connection between health checks. Default is true.


?

?,

?/0

??

?

?&

??&
"
	?* HTTP health check.


	?

	?%

	?()
!

?( TCP health check.



?


?#


?&'
"
?+ gRPC health check.


?

?%

?(*
$
?/ Custom health check.


?

?)

?,.
?

?Z? The "no traffic interval" is a special health check interval that is used when a cluster has
 never had traffic routed to it. This lower interval allows cluster information to be kept up to
 date, without sending a potentially large amount of active health checking traffic for no
 reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the
 standard health check interval that is defined. Note that this interval takes precedence over
 any other.

 The default value for "no traffic interval" is 60 seconds.



?


?.


?13


?4Y


??5X
?
?b? The "no traffic healthy interval" is a special health check interval that
 is used for hosts that are currently passing active health checking
 (including new hosts) when the cluster has received no traffic.

 This is useful for when we want to send frequent health checks with
 ``no_traffic_interval`` but then revert to lower frequency ``no_traffic_healthy_interval`` once
 a host in the cluster is marked as healthy.

 Once a cluster has been used for traffic routing, Envoy will shift back to using the
 standard health check interval that is defined.

 If no_traffic_healthy_interval is not set, it will default to the
 no traffic interval and send that interval regardless of health state.


?

?6

?9;

?` and
 :ref:`event_log_path `
 in the file sink extension.

 Specifies the path to the :ref:`health check event log `.


?

?	

?

?R

?

	??K?Q
?
?2u A list of event log sinks to process the health check event.
 [#extension-category: envoy.health_check.event_sinks]


?


?

? ,

?/1
?
?(? [#not-implemented-hide:]
 The gRPC service for the health check event service.
 If empty, health check events won't be sent to a remote endpoint.


?

?"

?%'
?
?-? If set to true, health check failure events will always be logged. If set to false, only the
 initial health check failure event will be logged.
 The default value is false.


?

?'

?*,
?
?,? If set to true, health check success events will always be logged. If set to false, only host addition event will be logged
 if it is the first successful health check, or if the healthy threshold is reached.
 The default value is false.


?

?&

?)+
c
?U This allows overriding the cluster TLS settings, just for health check connections.


?

?


?
?

?>?
 Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's
 :ref:`tranport socket matches `.
 For example, the following match criteria

 .. code-block:: yaml

  transport_socket_match_criteria:
    useMTLS: true

 Will match the following :ref:`cluster socket match `

 .. code-block:: yaml

  transport_socket_matches:
  - name: "useMTLS"
    match:
      useMTLS: true
    transport_socket:
      name: envoy.transport_sockets.tls
      config: { ... } # tls socket configuration

 If this field is set, then for health checks it will supersede an entry of ``envoy.transport_socket`` in the
 :ref:`LbEndpoint.Metadata `.
 This allows using different transport socket capabilities for health checking versus proxying to the
 endpoint.

 If the key/values pairs specified do not match any
 :ref:`transport socket matches `,
 the cluster's :ref:`transport socket `
 will be used for health check socket configuration.


?

?8

?;=bproto3
??
#envoy/config/core/v3/protocol.protoenvoy.config.core.v3$envoy/config/core/v3/extension.protoenvoy/type/v3/percent.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoxds/annotations/v3/status.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"A
TcpProtocolOptions:+?ň&
$envoy.api.v2.core.TcpProtocolOptions"?
QuicKeepAliveSettingsJ
max_interval (2.google.protobuf.DurationB?B	?"2RmaxIntervalR
initial_interval (2.google.protobuf.DurationB?B	?"2RinitialInterval"?
QuicProtocolOptions[
max_concurrent_streams (2.google.protobuf.UInt32ValueB?B*(RmaxConcurrentStreamsg
initial_stream_window_size (2.google.protobuf.UInt32ValueB?B	*???(RinitialStreamWindowSizeo
initial_connection_window_size (2.google.protobuf.UInt32ValueB?B	*???(RinitialConnectionWindowSizez
&num_timeouts_to_trigger_port_migration (2.google.protobuf.UInt32ValueB	?B*(R!numTimeoutsToTriggerPortMigration^
connection_keepalive (2+.envoy.config.core.v3.QuicKeepAliveSettingsRconnectionKeepalive-
connection_options (	RconnectionOptions:
client_connection_options (	RclientConnectionOptions\
idle_network_timeout (2.google.protobuf.DurationB?B?	"?2RidleNetworkTimeout"?
UpstreamHttpProtocolOptions
auto_sni (RautoSni.
auto_san_validation (RautoSanValidationD
override_auto_sni_header (	B?Br??RoverrideAutoSniHeader:4?ň/
-envoy.api.v2.core.UpstreamHttpProtocolOptions"?
AlternateProtocolsCacheOptions
name (	B?BrRnameF
max_entries (2.google.protobuf.UInt32ValueB?B* R
maxEntries_
key_value_store_config (2*.envoy.config.core.v3.TypedExtensionConfigRkeyValueStoreConfig?
prepopulated_entries (2Q.envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntryRprepopulatedEntries-
canonical_suffixes (	RcanonicalSuffixesh
AlternateProtocolsCacheEntry'
hostname (	B?Br??Rhostname
port (
B?B*?? Rport"?
HttpProtocolOptions<
idle_timeout (2.google.protobuf.DurationRidleTimeoutQ
max_connection_duration (2.google.protobuf.DurationRmaxConnectionDurationQ
max_headers_count (2.google.protobuf.UInt32ValueB?B*(RmaxHeadersCountI
max_stream_duration (2.google.protobuf.DurationRmaxStreamDuration?
headers_with_underscores_action (2F.envoy.config.core.v3.HttpProtocolOptions.HeadersWithUnderscoresActionRheadersWithUnderscoresAction[
max_requests_per_connection (2.google.protobuf.UInt32ValueRmaxRequestsPerConnection"N
HeadersWithUnderscoresAction	
ALLOW
REJECT_REQUEST
DROP_HEADER:,?ň'
%envoy.api.v2.core.HttpProtocolOptions"?	
Http1ProtocolOptionsH
allow_absolute_url (2.google.protobuf.BoolValueRallowAbsoluteUrl$
accept_http_10 (RacceptHttp106
default_host_for_http_10 (	RdefaultHostForHttp10f
header_key_format (2:.envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormatRheaderKeyFormat'
enable_trailers (RenableTrailers0
allow_chunked_length (RallowChunkedLengthz
-override_stream_error_on_invalid_http_message (2.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessage7
send_fully_qualified_url (RsendFullyQualifiedUrlN
use_balsa_parser	 (2.google.protobuf.BoolValueB?Ƥ?RuseBalsaParser:
allow_custom_methods
 (B?Ƥ?RallowCustomMethods?
HeaderKeyFormatx
proper_case_words (2J.envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWordsHRproperCaseWords[
stateful_formatter (2*.envoy.config.core.v3.TypedExtensionConfigHRstatefulFormatter`
ProperCaseWords:M?ňH
Fenvoy.api.v2.core.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords:=?ň8
6envoy.api.v2.core.Http1ProtocolOptions.HeaderKeyFormatB

header_format?B:-?ň(
&envoy.api.v2.core.Http1ProtocolOptions"?
KeepaliveSettingsC
interval (2.google.protobuf.DurationB?B	?2??=RintervalC
timeout (2.google.protobuf.DurationB?B?2??=Rtimeout?
interval_jitter (2.envoy.type.v3.PercentRintervalJittera
connection_idle_interval (2.google.protobuf.DurationB?B	?2??=RconnectionIdleInterval"?
Http2ProtocolOptionsF
hpack_table_size (2.google.protobuf.UInt32ValueRhpackTableSizea
max_concurrent_streams (2.google.protobuf.UInt32ValueB
?B
*????(RmaxConcurrentStreamsj
initial_stream_window_size (2.google.protobuf.UInt32ValueB?B*
????(??RinitialStreamWindowSizer
initial_connection_window_size (2.google.protobuf.UInt32ValueB?B*
????(??RinitialConnectionWindowSize#

allow_connect (RallowConnect%
allow_metadata (R
allowMetadataU
max_outbound_frames (2.google.protobuf.UInt32ValueB?B*(RmaxOutboundFramesd
max_outbound_control_frames (2.google.protobuf.UInt32ValueB?B*(RmaxOutboundControlFrames?
1max_consecutive_inbound_frames_with_empty_payload	 (2.google.protobuf.UInt32ValueR+maxConsecutiveInboundFramesWithEmptyPayloado
&max_inbound_priority_frames_per_stream
 (2.google.protobuf.UInt32ValueR!maxInboundPriorityFramesPerStream?
4max_inbound_window_update_frames_per_data_frame_sent (2.google.protobuf.UInt32ValueB?B*(R,maxInboundWindowUpdateFramesPerDataFrameSent^
&stream_error_on_invalid_http_messaging (B?dž?3.0R!streamErrorOnInvalidHttpMessagingz
-override_stream_error_on_invalid_http_message (2.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessagez
custom_settings_parameters
 (2<.envoy.config.core.v3.Http2ProtocolOptions.SettingsParameterRcustomSettingsParametersZ
connection_keepalive (2'.envoy.config.core.v3.KeepaliveSettingsRconnectionKeepaliveP
use_oghttp2_codec (2.google.protobuf.BoolValueB?Ƥ?RuseOghttp2Codec?
SettingsParameterN

identifier (2.google.protobuf.UInt32ValueB?B
*??(?R
identifier<
value (2.google.protobuf.UInt32ValueB?B?Rvalue:??ň:
8envoy.api.v2.core.Http2ProtocolOptions.SettingsParameter:-?ň(
&envoy.api.v2.core.Http2ProtocolOptions"?
GrpcProtocolOptions`
http2_protocol_options (2*.envoy.config.core.v3.Http2ProtocolOptionsRhttp2ProtocolOptions:,?ň'
%envoy.api.v2.core.GrpcProtocolOptions"?
Http3ProtocolOptions]
quic_protocol_options (2).envoy.config.core.v3.QuicProtocolOptionsRquicProtocolOptionsz
-override_stream_error_on_invalid_http_message (2.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessage>
allow_extended_connect (B?Ƥ?RallowExtendedConnect%
allow_metadata (R
allowMetadata"t
SchemeHeaderTransformationD
scheme_to_overwrite (	B?Br
RhttpRhttpsHRschemeToOverwriteB
transformationB?
"io.envoyproxy.envoy.config.core.v3B
ProtocolProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J??
?




	
.
	
%
	
(
	
(
	

)
	
-
	

'
	
+
	
!

;
	
;

.
	
.

"
	

"

Y
	
Y

F

???jF
M
 [#not-implemented-hide:]
2% [#protodoc-title: Protocol options]





-

ӈ?-
?
"7? Config for keepalive probes in a QUIC connection.
 Note that QUIC keep-alive probing packets work differently from HTTP/2 keep-alive PINGs in a sense that the probing packet
 itself doesn't timeout waiting for a probing response. Quic has a shorter idle timeout than TCP, so it doesn't rely on such probing to discover dead connections. If the peer fails to respond, the connection will idle timeout eventually. Thus, they are configured differently from :ref:`connection_keepalive `.



"
?
),? The max interval for a connection to send keep-alive probing packets (with PING or PATH_RESPONSE). The value should be smaller than :ref:`connection idle_timeout ` to prevent idle timeout while not less than 1s to avoid throttling the connection or flooding the peer with probes.

 If :ref:`initial_interval ` is absent or zero, a client connection will use this value to start probing.

 If zero, disable keepalive probing.
 If absent, use the QUICHE default interval to probe.


)

)'

)*+

),,

?)-,
?
36? 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 `. And the probes afterwards will always use :ref:`max_interval `.

 The value should be smaller than :ref:`connection idle_timeout ` to prevent idle timeout and smaller than max_interval to take effect.

 If absent or zero, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval `  is also zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.


3

3+

3./

306

?316
s
;qg QUIC protocol options which apply to both downstream and upstream connections.
 [#next-free-field: 9]



;
m
>^` Maximum number of streams that the client can negotiate per connection. 100
 if not specified.


>

>4

>78

>9]

?>:\
?
JK9? `Initial stream-level flow-control receive window
 `_ size. Valid values range from
 1 to 16777216 (2^24, maximum supported by QUICHE) and defaults to 16777216 (16 * 1024 * 1024).

 NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. If configured smaller than it, we will use 16384 instead.
 QUICHE IETF Quic implementation supports 1 bytes window. We only support increasing the default window size now, so it's also the minimum.

 This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
 QUIC stream send and receive buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
 stop the flow of data to the stream buffers.


J

J8

J;<

K8

?K7
?
ST9? Similar to ``initial_stream_window_size``, but for connection-level
 flow-control. Valid values rage from 1 to 25165824 (24MB, maximum supported by QUICHE) and defaults
 to 25165824 (24 * 1024 * 1024).

 NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. We only support increasing the default
 window size now, so it's also the minimum.


S

S<

S?@

T8

?T7
?
Z[2? The number of timeouts that can occur before port migration is triggered for QUIC clients.
 This defaults to 4. If set to 0, port migration will not occur on path degrading.
 Timeout here refers to QUIC internal path degrading timeout mechanism, such as PTO.
 This has no effect on server sessions.


Z

ZD

ZGH

[1

?[0
?
_1? Probes the peer at the configured interval to solicit traffic, i.e. ACK or PATH_RESPONSE, from the peer to push back connection idle timeout.
 If absent, use the default keepalive behavior of which a client connection sends PINGs every 15s, and a server connection doesn't do anything.


_

_,

_/0
?
c ? A comma-separated list of strings representing QUIC connection options defined in
 `QUICHE `_ and to be sent by upstream connections.


c

c	

c
?
g'? A comma-separated list of strings representing QUIC client connection options defined in
 `QUICHE `_ and to be sent by upstream connections.


g

g	"

g%&
?
mp? The duration that a QUIC connection stays idle before it closes itself. If this field is not present, QUICHE
 default 600s will be applied.
 For internal corporate network, a long timeout is often fine.
 But for client facing network, 30s is usually a good choice.


m

m/

m23

m4p

?m5p

s?


s#

tu6

ӈ?tu6
?
|? Set transport socket `SNI `_ for new
 upstream connections based on the downstream HTTP host/authority header or any other arbitrary
 header when :ref:`override_auto_sni_header `
 is set, as seen by the :ref:`router filter `.
 Does nothing if a filter before the http router filter sets the corresponding metadata.


|

|

|
?
?? Automatic validate upstream presented certificate for new upstream connections based on the
 downstream HTTP host/authority header or any other arbitrary header when :ref:`override_auto_sni_header `
 is set, as seen by the :ref:`router filter `.
 This field is intended to be set with ``auto_sni`` field.
 Does nothing if a filter before the http router filter sets the corresponding metadata.


?

?

?
?
??Z? An optional alternative to the host/authority header to be used for setting the SNI value.
 It should be a valid downstream HTTP header, as seen by the
 :ref:`router filter `.
 If unset, host/authority header will be used for populating the SNI. If the specified header
 is not found or the value is empty, host/authority header will be used instead.
 This field is intended to be set with ``auto_sni`` and/or ``auto_san_validation`` fields.
 If none of these fields are set then setting this would be a no-op.
 Does nothing if a filter before the http router filter sets the corresponding metadata.


?

?	!

?$%

?Y

??X
?
??? Configures the alternate protocols cache which tracks alternate protocols that can be used to
 make an HTTP connection to an origin server. See https://tools.ietf.org/html/rfc7838 for
 HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04
 for the "HTTPS" DNS resource record.
 [#next-free-field: 6]


?&
?
??? 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


?
&
C
??\1 The host name for the alternate protocol entry.


?


?

?

?[


??	Z
<
?B, The port for the alternate protocol entry.


?


?

?

?A


??@
?
?;? 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
 referenced from different configuration components. Configuration will fail to load if this is
 not the case.


?

?	

?

?:

??9
?
?R? The maximum number of entries that the cache will hold. If not specified defaults to 1024.

 .. note:

   The implementation is approximate and enforced independently on each worker thread, thus
   it is possible for the maximum entries in the cache to go slightly above the configured
   value depending on timing. This is similar to how other circuit breakers work.


?

?)

?,-

?.Q

??/P
?
?2? Allows configuring a persistent
 :ref:`key value store ` 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.


?

?-

?01
Q
?AC Allows pre-populating the cache with entries, as described above.


?


?'

?(<

??@
?
?)? Optional list of hostnames suffixes for which Alt-Svc entries can be shared. For example, if
 this list contained the value ``.c.example.com``, then an Alt-Svc entry for ``foo.c.example.com``
 could be shared with ``bar.c.example.com`` but would not be shared with ``baz.example.com``. On
 the other hand, if the list contained the value ``.example.com`` then all three hosts could share
 Alt-Svc entries. Each entry must start with ``.``. If a hostname matches multiple suffixes, the
 first listed suffix will be used.

 Since lookup in this list is O(n), it is recommended that the number of suffixes be limited.
 [#not-implemented-hide:]


?


?

?$

?'(
%
?? [#next-free-field: 7]


?

??.

ӈ???.
?
??? Action to take when Envoy receives client request with header names containing underscore
 characters.
 Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented
 as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore
 characters.


?#
O
?? Allow headers with underscores. This is the default behavior.


?	

?
?
?? Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests
 end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter
 is incremented for each rejected request.


?

?
?
?? Drop the client header with name containing underscores. The header is dropped before the filter chain is
 invoked and as such filters will not see dropped headers. The
 "httpN.dropped_headers_with_underscores" is incremented for each dropped header.


?

?
?
?,? The idle timeout for connections. The idle timeout is defined as the
 period in which there are no active requests. When the
 idle timeout is reached the connection will be closed. If the connection is an HTTP/2
 downstream connection a drain sequence will occur prior to closing the connection, see
 :ref:`drain_timeout
 `.
 Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive.
 If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0.

 .. warning::
   Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
   FIN packets, etc.

 If the :ref:`overload action ` "envoy.overload_actions.reduce_timeouts"
 is configured, this timeout is scaled for downstream connections according to the value for
 :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE `.


?

?'

?*+
?
?7? The maximum duration of a connection. The duration is defined as a period since a connection
 was established. If not set, there is no max duration. When max_connection_duration is reached
 and if there are no active streams, the connection will be closed. If the connection is a
 downstream connection and there are any active streams, the drain sequence will kick-in,
 and the connection will be force-closed after the drain period. See :ref:`drain_timeout
 `.


?

?2

?56
?
?Y? The maximum number of headers. If unconfigured, the default
 maximum number of request headers allowed is 100. Requests that exceed this limit will receive
 a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.


?

?/

?23

?4X

??5W
?
?3? Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
 reset independent of any other timeouts. If not specified, this value is not set.


?

?.

?12
?
?C? Action to take when a client request with a header name containing underscore characters is received.
 If this setting is not specified, the value defaults to ALLOW.
 Note: upstream responses are not affected by this setting.
 Note: this only affects client headers. It does not affect headers added
 by Envoy filters and does not have any impact if added to cluster config.


?

?>

?AB
?
?>? Optional maximum requests for both upstream and downstream connections.
 If not specified, there is no limit.
 Setting this parameter to 1 will effectively disable keep alive.
 For HTTP/2 and HTTP/3, due to concurrent stream processing, the limit is approximate.


?

?9

?<=
&
?? [#next-free-field: 11]


?

??/

ӈ???/
'
?? [#next-free-field: 9]


?


??A


ӈ???A

??

?

??S

ӈ???S

??

?


?(

	??(
?
?,? Formats the header by proper casing words: the first character and any character following
 a special character will be capitalized if it's an alpha character. For example,
 "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are".
 Note that while this results in most headers following conventional casing, certain headers
 are not covered. For example, the "TE" header will be formatted as "Te".


?

?'

?*+
?
?2? Configuration for stateful formatter extensions that allow using received headers to
 affect the output of encoding headers. E.g., preserving case during proxying.
 [#extension-category: envoy.http.stateful_header_formatters]


?

?-

?01
?
?3? Handle HTTP requests with absolute URLs in the requests. These requests
 are generally sent by clients to forward/explicit proxies. This allows clients to configure
 envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
 ``http_proxy`` environment variable.


?

?.

?12
?
?? Handle incoming HTTP/1.0 and HTTP 0.9 requests.
 This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
 style connect logic, dechunking, and handling lack of client host iff
 ``default_host_for_http_10`` is configured.


?

?

?
?
?&? A default host for HTTP/1.0 requests. This is highly suggested if ``accept_http_10`` is true as
 Envoy does not otherwise support HTTP/1.0 without a Host header.
 This is a no-op if ``accept_http_10`` is not true.


?

?	!

?$%
~
?(p Describes how the keys for response headers should be formatted. By default, all header keys
 are lower cased.


?

?#

?&'
?
?? Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.

 .. attention::

   Note that this only happens when Envoy is chunk encoding which occurs when:
   - The request is HTTP/1.1.
   - Is neither a HEAD only request nor a HTTP Upgrade.
   - Not a response to a HEAD request.
   - The content length header is not present.


?

?

?
?
? ? Allows Envoy to process requests/responses with both ``Content-Length`` and ``Transfer-Encoding``
 headers set. By default such messages are rejected, but if option is enabled - Envoy will
 remove Content-Length header and process message.
 See `RFC7230, sec. 3.3.3 `_ for details.

 .. attention::
   Enabling this option might lead to request smuggling vulnerability, especially if traffic
   is proxied via multiple layers of proxies.
 [#comment:TODO: This field is ignored when the
 :ref:`header validation configuration `
 is present.]


?

?

?
?
?N? Allows invalid HTTP messaging. When this option is false, then Envoy will terminate
 HTTP/1.1 connections upon receiving an invalid HTTP message. However,
 when this option is true, then Envoy will leave the HTTP/1.1 connection
 open where possible.
 If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
 `.


?

?I

?LM
?
?$? Allows sending fully qualified URLs when proxying the first line of the
 response. By default, Envoy will only send the path components in the first line.
 If this is true, Envoy will create a fully qualified URI composing scheme
 (inferred if not present), host (from the host/:authority header) and path
 (from first line or :path header).


?

?

?"#
?
??B? [#not-implemented-hide:] Hiding so that field can be removed after BalsaParser is rolled out.
 If set, force HTTP/1 parser: BalsaParser if true, http-parser if false.
 If unset, HTTP/1 parser is selected based on
 envoy.reloadable_features.http1_use_balsa_parser.
 See issue #21245.


?

?,

?/0

?A


?Ȕl?@
?
	?]? [#not-implemented-hide:] Hiding so that field can be removed.
 If true, and BalsaParser is used (either `use_balsa_parser` above is true,
 or `envoy.reloadable_features.http1_use_balsa_parser` is true and
 `use_balsa_parser` is unset), then every non-empty method with only valid
 characters is accepted. Otherwise, methods not on the hard-coded list are
 rejected.
 Once UHV is enabled, this field should be removed, and BalsaParser should
 allow any method. UHV validates the method, rejecting empty string or
 invalid characters, and provides :ref:`restrict_http_methods
 `
 to reject custom methods.


	?

	?

	? 

	?!\


	?Ȕl?"[

??

?
?
?]? Send HTTP/2 PING frames at this period, in order to test that the connection is still alive.
 If this is zero, interval PINGs will not be sent.


?

?#

?&'

?(\

??)[
?
??? How long to wait for a response to a keepalive PING. If a response is not received within this
 time period, the connection will be aborted. Note that in order to prevent the influence of
 Head-of-line (HOL) blocking the timeout period is extended when *any* frame is received on
 the connection, under the assumption that if a frame is received the connection is healthy.


?

?"

?%&

?'?

??(?
?
?&? A random jitter amount as a percentage of interval that will be added to each interval.
 A value of zero means there will be no jitter.
 The default value is 15%.


?

?!

?$%
?
??;? If the connection has been idle for this duration, send a HTTP/2 ping ahead
 of new stream creation, to quickly detect dead connections.
 If this is zero, this type of PING will not be sent.
 If an interval ping is outstanding, a second ping will not be sent as the
 interval ping will determine if the connection is dead.

 The same feature for HTTP/3 is given by inheritance from QUICHE which uses :ref:`connection idle_timeout ` and the current PTO of the connection to decide whether to probe before sending a new request.


?

?3

?67

?:

??9
&
?? [#next-free-field: 17]


?

??/

ӈ???/
?
??? Defines a parameter to be sent in the SETTINGS frame.
 See `RFC7540, sec. 6.5.1 `_ for details.


?


??C


ӈ???C
4
??" The 16 bit parameter identifier.


?

? *

?-.

?/?


??3


??1
-
?X The 32 bit parameter value.


?

? %

?()

?*W


??+V
?
?3? `Maximum table size `_
 (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values
 range from 0 to 4294967295 (2^32 - 1) and defaults to 4096. 0 effectively disables header
 compression.


?

?.

?12
?
??;? `Maximum concurrent streams `_
 allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
 and defaults to 2147483647.

 For upstream connections, this also limits how many streams Envoy will initiate concurrently
 on a single connection. If the limit is reached, Envoy may queue requests or establish
 additional connections (as allowed per circuit breaker limits).

 This acts as an upper bound: Envoy will lower the max concurrent streams allowed on a given
 connection based on upstream settings. Config dumps will reflect the configured upper bound,
 not the per-connection negotiated limits.


?

?4

?78

?:

??9
?
???? `Initial stream-level flow-control window
 `_ size. Valid values range from 65535
 (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
 (256 * 1024 * 1024).

 NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
 window size now, so it's also the minimum.

 This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
 HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
 stop the flow of data to the codec buffers.


?

?8

?;<

?>

??=
?
???? Similar to ``initial_stream_window_size``, but for connection-level flow-control
 window. Currently, this has the same minimum/maximum/default as ``initial_stream_window_size``.


?

?<

??@

?>

??=
M
?? Allows proxying Websocket and other upgrades over H2 connect.


?

?

?
?
?? [#not-implemented-hide:] Hiding until Envoy has full metadata support.
 Still under implementation. DO NOT USE.

 Allows sending and receiving HTTP/2 METADATA frames. See [metadata
 docs](https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md) for more
 information.


?

?

?
?
?[? Limit the number of pending outbound downstream frames of all types (frames that are waiting to
 be written into the socket). Exceeding this limit triggers flood mitigation and connection is
 terminated. The ``http2.outbound_flood`` stat tracks the number of terminated connections due
 to flood mitigation. The default limit is 10000.


?

?1

?45

?6Z

??7Y
?
?c? Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
 preventing high memory utilization when receiving continuous stream of these frames. Exceeding
 this limit triggers flood mitigation and connection is terminated. The
 ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
 mitigation. The default limit is 1000.


?

?9

?<=

?>b

???a
?
?T? Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
 empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but
 might be a result of a broken HTTP/2 implementation. The `http2.inbound_empty_frames_flood``
 stat tracks the number of connections terminated due to flood mitigation.
 Setting this to 0 will terminate connection upon receiving first frame with an empty payload
 and no end stream flag. The default limit is 1.


?

?O

?RS
?
	?J? Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
 of PRIORITY frames received over the lifetime of connection exceeds the value calculated
 using this formula::

   ``max_inbound_priority_frames_per_stream`` * (1 + ``opened_streams``)

 the connection is terminated. For downstream connections the ``opened_streams`` is incremented when
 Envoy receives complete response headers from the upstream server. For upstream connection the
 ``opened_streams`` is incremented when Envoy send the HEADERS frame for a new stream. The
 ``http2.inbound_priority_frames_flood`` stat tracks
 the number of connections terminated due to flood mitigation. The default limit is 100.


	?

	?D

	?GI
?

??+? Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
 of WINDOW_UPDATE frames received over the lifetime of connection exceeds the value calculated
 using this formula::

   5 + 2 * (``opened_streams`` +
            ``max_inbound_window_update_frames_per_data_frame_sent`` * ``outbound_data_frames``)

 the connection is terminated. For downstream connections the ``opened_streams`` is incremented when
 Envoy receives complete response headers from the upstream server. For upstream connections the
 ``opened_streams`` is incremented when Envoy sends the HEADERS frame for a new stream. The
 ``http2.inbound_priority_frames_flood`` stat tracks the number of connections terminated due to
 flood mitigation. The default max_inbound_window_update_frames_per_data_frame_sent value is 10.
 Setting this to 1 should be enough to support HTTP/2 implementations with basic flow control,
 but more complex implementations that try to estimate available bandwidth require at least 2.



?


?R


?UW


?*


??)
?
??S? Allows invalid HTTP messaging and headers. When this option is disabled (default), then
 the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
 when this option is enabled, only the offending stream is terminated.

 This is overridden by HCM :ref:`stream_error_on_invalid_http_messaging
 `
 iff present.

 This is deprecated in favor of :ref:`override_stream_error_on_invalid_http_message
 `

 See `RFC7540, sec. 8.1 `_ for details.


?

?-

?02

?R

?

	??K?Q
?
?O? Allows invalid HTTP messaging and headers. When this option is disabled (default), then
 the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
 when this option is enabled, only the offending stream is terminated.

 This overrides any HCM :ref:`stream_error_on_invalid_http_messaging
 `

 See `RFC7540, sec. 8.1 `_ for details.


?

?I

?LN
?

?=? [#not-implemented-hide:]
 Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:

 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by
 Envoy.

 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field
 'allow_connect'.

 Note that custom parameters specified through this field can not also be set in the
 corresponding named parameters:

 .. code-block:: text

   ID    Field Name
   ----------------
   0x1   hpack_table_size
   0x3   max_concurrent_streams
   0x4   initial_stream_window_size

 Collisions will trigger config validation failure on load/update. Likewise, inconsistencies
 between custom parameters with the same identifier will trigger a failure.

 See `IANA HTTP/2 Settings
 `_ for
 standardized identifiers.



?



?


?7


?:<
?
?.? Send HTTP/2 PING frames to verify that the connection is still healthy. If the remote peer
 does not respond within the configured timeout, the connection will be aborted.


?

?(

?+-
?
??B? [#not-implemented-hide:] Hiding so that the field can be removed after oghttp2 is rolled out.
 If set, force use of a particular HTTP/2 codec: oghttp2 if true, nghttp2 if false.
 If unset, HTTP/2 codec is selected based on envoy.reloadable_features.http2_use_oghttp2.


?

?-

?02

?A


?Ȕl?@
(
	?? [#not-implemented-hide:]


	?

	??.

	ӈ???.

	?2

	?

	?-

	?01
K

??= A message which allows using HTTP/3.
 [#next-free-field: 7]



?


?0


?


?+


?./
?

?N? Allows invalid HTTP messaging and headers. When this option is disabled (default), then
 the whole HTTP/3 connection is terminated upon receiving invalid HEADERS frame. However,
 when this option is enabled, only the offending stream is terminated.

 If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
 `.



?


?I


?LM
?

?^? Allows proxying Websocket and other upgrades over HTTP/3 CONNECT using
 the header mechanisms from the `HTTP/2 extended connect RFC
 `_
 and settings `proposed for HTTP/3
 `_
 Note that HTTP/3 CONNECT is not yet an RFC.



?


?


? !


?"]



?Ȕl?#\
?

?? [#not-implemented-hide:] Hiding until Envoy has full metadata support.
 Still under implementation. DO NOT USE.

 Allows sending and receiving HTTP/3 METADATA frames. See [metadata
 docs](https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md) for more
 information.



?


?


?
J
??< A message to control transformations to the :scheme header


?"

??

?
M
?X? Overwrite any Scheme header with the contents of this string.


?


?

?!"

?#W

??$Vbproto3
?
#envoy/config/core/v3/resolver.protoenvoy.config.core.v3"envoy/config/core/v3/address.protoudpa/annotations/status.protovalidate/validate.proto"?
DnsResolverOptions4
use_tcp_for_dns_lookups (RuseTcpForDnsLookups7
no_default_search_domain (RnoDefaultSearchDomain"?
DnsResolutionConfigE
	resolvers (2.envoy.config.core.v3.AddressB?B?R	resolversZ
dns_resolver_options (2(.envoy.config.core.v3.DnsResolverOptionsRdnsResolverOptionsB?
"io.envoyproxy.envoy.config.core.v3B
ResolverProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?	
#




	
,
	
'
	
!

	;
	
	;


.
	

.

"
	

"

Y
	
Y


F

???j
F
?
\ Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
2 [#protodoc-title: Resolver]




O
#B Use TCP for all DNS queries instead of the default protocol UDP.






!"
_
$R Do not use the default search domains; only query hostnames as-is or as aliases.






"#
l
#` DNS resolution configuration which includes the underlying dns resolver addresses and options.




?
N? A list of dns resolver addresses. If specified, the DNS client library will perform resolution
 via the underlying DNS resolvers. Otherwise, the default system resolvers
 (e.g., /etc/resolv.conf) will be used.









 

!M

?"L
i
".\ Configuration of DNS resolver option flags which control the behavior of the DNS resolver.


"

")

",-bproto3
?V
2envoy/config/endpoint/v3/endpoint_components.protoenvoy.config.endpoint.v3"envoy/config/core/v3/address.protoenvoy/config/core/v3/base.proto(envoy/config/core/v3/config_source.proto'envoy/config/core/v3/health_check.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
Endpoint7
address (2.envoy.config.core.v3.AddressRaddressd
health_check_config (24.envoy.config.endpoint.v3.Endpoint.HealthCheckConfigRhealthCheckConfig
hostname (	Rhostnameg
additional_addresses (24.envoy.config.endpoint.v3.Endpoint.AdditionalAddressRadditionalAddresses?
HealthCheckConfig(

port_value (
B	?B*??R	portValue
hostname (	Rhostname7
address (2.envoy.config.core.v3.AddressRaddress=
disable_active_health_check (RdisableActiveHealthCheck:7?ň2
0envoy.api.v2.endpoint.Endpoint.HealthCheckConfigL
AdditionalAddress7
address (2.envoy.config.core.v3.AddressRaddress:%?ň 
envoy.api.v2.endpoint.Endpoint"?

LbEndpoint@
endpoint (2".envoy.config.endpoint.v3.EndpointHRendpoint%

endpoint_name (	HRendpointNameG

health_status (2".envoy.config.core.v3.HealthStatusRhealthStatus:
metadata (2.envoy.config.core.v3.MetadataRmetadataY
load_balancing_weight (2.google.protobuf.UInt32ValueB?B*(RloadBalancingWeight:'?ň"
 envoy.api.v2.endpoint.LbEndpointB
host_identifier"?
LedsClusterLocalityConfigC
leds_config (2".envoy.config.core.v3.ConfigSourceR
ledsConfig0
leds_collection_name (	RledsCollectionName"?
LocalityLbEndpoints:
locality (2.envoy.config.core.v3.LocalityRlocalityG
lb_endpoints (2$.envoy.config.endpoint.v3.LbEndpointRlbEndpointsv
load_balancer_endpoints (2<.envoy.config.endpoint.v3.LocalityLbEndpoints.LbEndpointListHRloadBalancerEndpointsv
leds_cluster_locality_config (23.envoy.config.endpoint.v3.LedsClusterLocalityConfigHRledsClusterLocalityConfigY
load_balancing_weight (2.google.protobuf.UInt32ValueB?B*(RloadBalancingWeight$
priority (
B?B*?Rpriority:
	proximity (2.google.protobuf.UInt32ValueR	proximityY
LbEndpointListG
lb_endpoints (2$.envoy.config.endpoint.v3.LbEndpointRlbEndpoints:0?ň+
)envoy.api.v2.endpoint.LocalityLbEndpointsB
	lb_configB?
&io.envoyproxy.envoy.config.endpoint.v3BEndpointComponentsProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3????J?C
?



!
	
,
	
)
	
2
	
1
	
	(
	
'
	
+
	

!

?
	
?

8
	
8

"
	

"

a
	
a

F

???jF
G
` Upstream host identifier.
2 [#protodoc-title: Endpoints]






`

ӈ?`
8
9* The optional health check configuration.





;


ӈ?;
?
&C? Optional alternative health check port value.

 By default the health check address port of an upstream host is the same
 as the host's serving address port. This provides an alternative health
 check port. Setting this with a non-zero value allows an upstream host
 to have different health check address port.


&


&

&

&B


?&A
?
-? By default, the host header for L7 health checks is controlled by cluster level configuration
 (see: :ref:`host ` and
 :ref:`authority `). Setting this
 to a non-empty value allows overriding the cluster level configuration for a specific
 endpoint.


-


-

-
?
4 ? Optional alternative health check host address.

 .. attention::

   The form of the health check host address is expected to be a direct IP address.


4

4

4
?
8)? Optional flag to control if perform active health check for this endpoint.
 Active health check is enabled by default if there is a health checker.


8

8	$

8'(

;>

;

I
= : Additional address that is associated with the endpoint.


=

=

=
?
I? The upstream host address.

 .. attention::

   The form of host address depends on the given cluster type. For STATIC or EDS,
   it is expected to be a direct IP address (or something resolvable by the
   specified :ref:`resolver `
   in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
   and will be resolved via DNS.


I

I

I
?
R,? The optional health check configuration is used as configuration for the
 health checker to contact the health checked host.

 .. attention::

   This takes into effect only for upstream clusters with
   :ref:`active health checking ` enabled.


R

R'

R*+
?
X? The hostname associated with this endpoint. This hostname is not used for routing or address
 resolution. If provided, it will be associated with the endpoint, and can be used for features
 that require a hostname, like
 :ref:`auto_host_rewrite `.


X

X	

X
?
_6? An ordered list of addresses that together with ``address`` comprise the
 list of addresses for an endpoint. The address given in the ``address`` is
 prepended to this list. It is assumed that the list must already be
 sorted by preference order of the addresses. This will only be supported
 for STATIC and EDS clusters.


_


_

_1

_45
R
d?E An Endpoint that Envoy can route traffic to.
 [#next-free-field: 6]



d


eb

ӈ?eb
>
hm0 Upstream host identifier or a named reference.


h

i

i

i


i
'
l [#not-implemented-hide:]


l


l

l
L
p)? Optional health status when known and supplied by EDS server.


p

p$

p'(
?
y ? The endpoint metadata specifies values that may be used by the load
 balancer to select endpoints in a cluster for a given request. The filter
 name should be specified as ``envoy.lb``. An example boolean key-value pair
 is ``canary``, providing the optional canary status of the upstream host.
 This may be matched against in a route's
 :ref:`RouteAction ` metadata_match field
 to subset the endpoints considered in cluster load balancing.


y

y

y
?
?]? The optional load balancing weight of the upstream host; at least 1.
 Envoy uses the load balancing weight in some of the built in load
 balancers. The load balancing weight for an endpoint is divided by the sum
 of the weights of all endpoints in the endpoint's locality to produce a
 percentage of traffic for the endpoint. This percentage is then further
 weighted by the endpoint's locality's load balancing weight from
 LocalityLbEndpoints. If unspecified, will be treated as 1. The sum
 of the weights of all endpoints in the endpoint's locality must not
 exceed uint32_t maximal value (4294967295).


?

?3

?67

?8\

??9[
P
??B [#not-implemented-hide:]
 A configuration for a LEDS collection.


?!
L
?'> Configuration for the source of LEDS updates for a Locality.


?

?"

?%&
?
?"{ The xDS transport protocol glob collection resource name.
 The service is only supported in delta xDS (incremental) mode.


?

?	

? !
?
??? A group of endpoints belonging to a Locality.
 One can have multiple LocalityLbEndpoints for a locality, but only if
 they have different priorities.
 [#next-free-field: 9]


?

??2

ӈ???2
W
??G [#not-implemented-hide:]
 A list of endpoints of a specific locality.


?


?)

?

?


?$

?'(
D
? 6 Identifies location of where the upstream hosts run.


?

?

?
?
?'? The group of endpoints belonging to the locality specified.
 [#comment:TODO(adisuissa): Once LEDS is implemented this field needs to be
 deprecated and replaced by ``load_balancer_endpoints``.]


?


?

?"

?%&
*
?? [#not-implemented-hide:]


?
?
?/? The group of endpoints belonging to the locality.
 [#comment:TODO(adisuissa): Once LEDS is implemented the ``lb_endpoints`` field
 needs to be deprecated.]


?

?*

?-.
<
??. LEDS Configuration for the current locality.


?

?:

?=>
?
?]? Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
 balancing weight for a locality is divided by the sum of the weights of all
 localities  at the same priority level to produce the effective percentage
 of traffic for the locality. The sum of the weights of all localities at
 the same priority level must not exceed uint32_t maximal value (4294967295).

 Locality weights are only considered when :ref:`locality weighted load
 balancing ` is
 configured. These weights are ignored otherwise. If no weights are
 specified when locality weighted load balancing is enabled, the locality is
 assigned no load.


?

?3

?67

?8\

??9[
?
?=? Optional: the priority for this LocalityLbEndpoints. If unspecified this will
 default to the highest priority (0).

 Under usual circumstances, Envoy will only select endpoints for the highest
 priority (0). In the event that enough endpoints for a particular priority are
 unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
 next highest priority group. Read more at :ref:`priority levels `.

 Priorities should range from 0 (highest) to N (lowest) without skipping.


?

?	

?

?<

??;
?
?,? Optional: Per locality proximity value which indicates how close this
 locality is from the source locality. This value only provides ordering
 information (lower the value, closer it is to the source locality).
 This will be consumed by load balancing schemes that need proximity order
 to determine where to route the requests.
 [#not-implemented-hide:]


?

?'

?*+bproto3
?4
'envoy/config/endpoint/v3/endpoint.protoenvoy.config.endpoint.v32envoy/config/endpoint/v3/endpoint_components.protoenvoy/type/v3/percent.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
ClusterLoadAssignment*
cluster_name (	B?BrRclusterNameK
	endpoints (2-.envoy.config.endpoint.v3.LocalityLbEndpointsR	endpointsl
named_endpoints (2C.envoy.config.endpoint.v3.ClusterLoadAssignment.NamedEndpointsEntryRnamedEndpointsN
policy (26.envoy.config.endpoint.v3.ClusterLoadAssignment.PolicyRpolicy?
Policyj
drop_overloads (2C.envoy.config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverloadR
dropOverloads^
overprovisioning_factor (2.google.protobuf.UInt32ValueB?B* RoverprovisioningFactorU
endpoint_stale_after (2.google.protobuf.DurationB?B?*RendpointStaleAfter8
weighted_priority_health (RweightedPriorityHealth?
DropOverload#
category (	B?BrRcategoryI
drop_percentage (2 .envoy.type.v3.FractionalPercentRdropPercentage:=?ň8
6envoy.api.v2.ClusterLoadAssignment.Policy.DropOverload:0?ň+
)envoy.api.v2.ClusterLoadAssignment.PolicyJJRdisable_overprovisioninge
NamedEndpointsEntry
key (	Rkey8
value (2".envoy.config.endpoint.v3.EndpointRvalue:8:)?ň$
"envoy.api.v2.ClusterLoadAssignmentB?
&io.envoyproxy.envoy.config.endpoint.v3B
EndpointProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3????J?'
?



!
	
<
	
%
	
(
	
(
	

'
	
+
	
!

?
	
?

.
	
.

"
	

"

a
	
a

F

???jF
?
!?? Each route from RDS will map to a single cluster or traffic split across
 clusters using weights expressed in the RDS WeightedCluster.

 With EDS, each cluster is treated independently from a LB perspective, with
 LB taking place between the Localities within a cluster and at a finer
 granularity between the hosts within a locality. The percentage of traffic
 for each endpoint is determined by both its load_balancing_weight, and the
 load_balancing_weight of its locality. First, a locality will be selected,
 then an endpoint within that locality will be chose based on its weight.
 [#next-free-field: 6]
2? [#protodoc-title: Endpoint configuration]
 Endpoint discovery :ref:`architecture overview `



!


"d

ӈ?"d
F
&p8 Load balancing policy settings.
 [#next-free-field: 7]


&


'(4


ӈ?'(4

*3

*

+,C

ӈ?+,C
A
/C0 Identifier for the policy specifying the drop.


	/

	/


	/

	/B

?/A
Q
24@ Percentage of traffic that should be dropped for the category.


	2

	2 /

	223

	5

	5


	5


	5


	5

	5

	5


7(


7
'
?
O-? Action to trim the overall incoming traffic to protect the upstream
 hosts. This action allows protection in case the hosts are unable to
 recover from an outage, or unable to autoscale or unable to handle
 incoming traffic volume for any reason.

 At the client each category is applied one after the other to generate
 the 'actual' drop percentage on all outgoing traffic. For example:

 .. code-block:: json

  { "drop_overloads": [
      { "category": "throttle", "drop_percentage": 60 }
      { "category": "lb", "drop_percentage": 50 }
  ]}

 The actual drop percentages applied to the traffic at the clients will be
    "throttle"_drop = 60%
    "lb"_drop = 20%  // 50% of the remaining 'actual' load, which is 40%.
    actual_outgoing_load = 20% // remaining after applying all categories.

 Envoy supports only one element and will NACK if more than one element is present.
 Other xDS-capable data planes will not necessarily have this limitation.


O

O


O(

O+,
?
_`? Priority levels and localities are considered overprovisioned with this
 factor (in percentage). This means that we don't consider a priority
 level or locality unhealthy until the fraction of healthy hosts
 multiplied by the overprovisioning factor drops below 100.
 With the default value 140(1.4), Envoy doesn't consider a priority level
 or a locality unhealthy until their percentage of healthy hosts drops
 below 72%. For example:

 .. code-block:: json

  { "overprovisioning_factor": 100 }

 Read more at :ref:`priority levels ` and
 :ref:`localities `.


_

_ 7

_:;

_<_


?_=^
?
e\? The max time until which the endpoints from this assignment can be used.
 If no new assignments are received before this time expires the endpoints
 are considered stale and should be marked unhealthy.
 Defaults to 0 which means endpoints never go stale.


e

e1

e45

e6[


?e7Z
?
o&? If true, use the :ref:`load balancing weight
 ` of healthy and unhealthy
 hosts to determine the health of the priority level. If false, use the number of healthy and unhealthy hosts
 to determine the health of the priority level, or in other words assume each host has a weight of 1 for
 this calculation.

 Note: this is not currently implemented for
 :ref:`locality weighted load balancing `.


o

o	!

o$%
?
vC? Name of the cluster. This will be the :ref:`service_name
 ` value if specified
 in the cluster :ref:`EdsClusterConfig
 `.


v

v	

v

vB

?vA
4
y-' List of endpoints to load balance to.


y


y

y(

y+,
n
},a Map of named endpoints that can be referenced in LocalityLbEndpoints.
 [#not-implemented-hide:]


}

}'

}*+
/
?! Load balancing policy settings.


?

?	

?bproto3
? 
%envoy/type/metadata/v3/metadata.protoenvoy.type.metadata.v3udpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
MetadataKey
key (	B?BrRkeyM
path (2/.envoy.type.metadata.v3.MetadataKey.PathSegmentB?B?Rpathq
PathSegment
key (	B?BrHRkey:5?ň0
.envoy.type.metadata.v2.MetadataKey.PathSegmentB
segment?B:)?ň$
"envoy.type.metadata.v2.MetadataKey"?
MetadataKindH
request (2,.envoy.type.metadata.v3.MetadataKind.RequestHRrequestB
route (2*.envoy.type.metadata.v3.MetadataKind.RouteHRrouteH
cluster (2,.envoy.type.metadata.v3.MetadataKind.ClusterHRcluster?
host (2).envoy.type.metadata.v3.MetadataKind.HostHRhost=
Request:2?ň-
+envoy.type.metadata.v2.MetadataKind.Request9
Route:0?ň+
)envoy.type.metadata.v2.MetadataKind.Route=
Cluster:2?ň-
+envoy.type.metadata.v2.MetadataKind.Cluster7
Host:/?ň*
(envoy.type.metadata.v2.MetadataKind.Host:*?ň%
#envoy.type.metadata.v2.MetadataKindB
kind?BB?
$io.envoyproxy.envoy.type.metadata.v3B
MetadataProtoPZHgithub.com/envoyproxy/go-control-plane/envoy/type/metadata/v3;metadatav3????J?
r




	
'
	
+
	
!

=
	
=

	.
	
	.


"
	


"

_
	
_

F

???jF
?
'C? MetadataKey provides a general interface using ``key`` and ``path`` to retrieve value from
 :ref:`Metadata `.

 For example, for the following Metadata:

 .. code-block:: yaml

    filter_metadata:
      envoy.xxx:
        prop:
          foo: bar
          xyz:
            hello: envoy

 The following MetadataKey will retrieve a string value "bar" from the Metadata.

 .. code-block:: yaml

    key: envoy.xxx
    path:
    - key: prop
    - key: foo

2 [#protodoc-title: Metadata]



'


(d

ӈ?(d
?
,6? Specifies the segment in a path to retrieve value from Metadata.
 Currently it is only supported to specify the key, i.e. field name, as one segment of a path.


,


-.9


ӈ?-.9

05

0


1(

	?1(
M
4>> If specified, use the key to retrieve the value in a Struct.


4

4


4

4=


?4<
?
::? The key name of Metadata to retrieve the Struct from the metadata.
 Typically, it represents a builtin subsystem or custom extension.


:

:	

:

:9

?:8
?
BM? The path to retrieve the Value from the Struct. It can be a prefix or a full path,
 e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example,
 which depends on the particular scenario.

 Note: Due to that only the key type segment is supported, the path can not specify a list
 unless the list is the last segment.


B


B

B

B

B L

?B!K
.
Fr" Describes what kind of metadata.



F

GH,

ӈ?GH,
H
KN: Represents dynamic metadata associated with the request.


K


LM6


ӈ?LM6
m
QT_ Represents metadata from :ref:`the route`.


Q


RS4


ӈ?RS4
|
WZn Represents metadata from :ref:`the upstream cluster`.


W


XY6


ӈ?XY6
~
^ap Represents metadata from :ref:`the upstream
 host`.


^


_`3


ӈ?_`3

cq

c

d&

?d&
(
g Request kind of metadata.


g

g

g
&
j Route kind of metadata.


j	

j


j
(
m Cluster kind of metadata.


m

m

m
%
p Host kind of metadata.


p

p	

pbproto3
?(
"xds/core/v3/resource_locator.protoxds.core.v3xds/annotations/v3/status.proto xds/core/v3/context_params.protovalidate/validate.proto"?
ResourceLocatorE
scheme (2#.xds.core.v3.ResourceLocator.SchemeB?B?Rscheme
id (	Rid
	authority (	R	authority,

resource_type (	B?BrRresourceTypeA

exact_context (2.xds.core.v3.ContextParamsHRexactContextF

directives (2&.xds.core.v3.ResourceLocator.DirectiveR
directives?
	Directive0
alt (2.xds.core.v3.ResourceLocatorHRalt7
entry (	B?Br2^[0-9a-zA-Z_\-\./~:]+$HRentryB
	directive?B"'
Scheme	
XDSTP
HTTP
FILEB
context_param_specifierB\
com.github.xds.core.v3BResourceLocatorProtoPZ"github.com/cncf/xds/go/xds/core/v3?Ƥ?J?"
u




	
)
	
*
	
!

	5
	
	5


"
	


"

/
	
/

9
	
9

@

?Ȕl@
?
!u? xDS resource locators identify a xDS resource name and instruct the
 data-plane load balancer on how the resource may be located.

 Resource locators have a canonical xdstp:// URI representation:

   xdstp://{authority}/{type_url}/{id}?{context_params}{#directive,*}

 where context_params take the form of URI query parameters.

 Resource locators have a similar canonical http:// URI representation:

   http://{authority}/{type_url}/{id}?{context_params}{#directive,*}

 Resource locators also have a simplified file:// URI representation:

   file:///{id}{#directive,*}




!

"&

"

#

#	

#

$

$

$

%

%

%

)C
 URI scheme.


)

)	

)

)B

?)A
?
.? Opaque identifier for the resource. Any '/' will not be escaped during URI
 encoding and will form part of the URI path. This may end
 with ‘*’ for glob collection references.


.

.	

.
?
4? Logical authority for resource (not necessarily transport network address).
 Authorities are opaque in the xDS API, data-plane load balancers will map
 them to concrete network transports such as an xDS management server, e.g.
 via envoy.config.core.v3.ConfigSource.


4

4	

4
d
8DW Fully qualified resource type (as in type URL without types.googleapis.com/
 prefix).


8

8	

8

8C

?8B

:B

:
?
?$? Additional parameters that can be used to select resource variants.
 Matches must be exact, i.e. all context parameters must match exactly and
 there must be no additional context parameters set on the matched
 resource.


?

?

?"#
?
Yn? Directives provide information to data-plane load balancers on how xDS
 resource names are to be interpreted and potentially further resolved. For
 example, they may provide alternative resource locators for when primary
 resolution fails. Directives are not part of resource names and do not
 appear in a xDS transport discovery request.

 When encoding to URIs, directives take the form:

 =

 For example, we can have alt=xdstp://foo/bar or entry=some%20thing. Each
 directive value type may have its own string encoding, in the case of
 ResourceLocator there is a recursive URI encoding.

 Percent encoding applies to the URI encoding of the directive value.
 Multiple directives are comma-separated, so the reserved characters that
 require percent encoding in a directive value are [',', '#', '[', ']',
 '%']. These are the RFC3986 fragment reserved characters with the addition
 of the xDS scheme specific ','. See
 https://tools.ietf.org/html/rfc3986#page-49 for further details on URI ABNF
 and reserved characters.


Y


Zm

Z


[(

	?[(
?
e? An alternative resource locator for fallback if the resource is
 unavailable. For example, take the resource locator:

   xdstp://foo/some-type/some-route-table#alt=xdstp://bar/some-type/another-route-table

 If the data-plane load balancer is unable to reach `foo` to fetch the
 resource, it will fallback to `bar`. Alternative resources do not need
 to have equivalent content, but they should be functional substitutes.


e

e

e
?
le? List collections support inlining of resources via the entry field in
 Resource. These inlined Resource objects may have an optional name
 field specified. When specified, the entry directive allows
 ResourceLocator to directly reference these inlined resources, e.g.
 xdstp://.../foo#entry=bar.


l

l


l

ld


?lc
?
t$? A list of directives that appear in the xDS resource locator #fragment.

 When encoding to URI form, directives are percent encoded with comma
 separation.


t


t

t

t"#bproto3
?
"xds/core/v3/collection_entry.protoxds.core.v3google/protobuf/any.protoxds/annotations/v3/status.proto"xds/core/v3/resource_locator.protovalidate/validate.proto"?
CollectionEntry8
locator (2.xds.core.v3.ResourceLocatorHRlocatorM
inline_entry (2(.xds.core.v3.CollectionEntry.InlineEntryHRinlineEntry?
InlineEntry0
name (	B?Br2^[0-9a-zA-Z_\-\.~:]+$Rname
version (	Rversion0
resource (2.google.protobuf.AnyRresourceB
resource_specifier?BB\
com.github.xds.core.v3BCollectionEntryProtoPZ"github.com/cncf/xds/go/xds/core/v3?Ƥ?J?
6




	
#
	
)
	
,
	
	!

5
	
5

"
	

"


/
	

/

9
	
9

@

?Ȕl@
?
6? xDS collection resource wrapper. This encapsulates a xDS resource when
 appearing inside a list collection resource. List collection resources are
 regular Resource messages of type:

 .. code-block:: proto

   message Collection {
     repeated CollectionEntry resources = 1;
   }





'
+ Inlined resource entry.




?
#R? Optional name to describe the inlined resource. Resource names must match
 ``[a-zA-Z0-9_-\./]+`` (TODO(htuch): turn this into a PGV constraint once
 finalized, probably should be a RFC3986 pchar). This name allows
 reference via the #entry directive in ResourceLocator.


#


#

#

#Q

?#P
?
'? The resource's logical version. It is illegal to have the same named xDS
 resource name at a given version with different resource payloads.


'


'

'
:
*%+ The resource payload, including type URL.


*

* 

*#$

-5

-

.&

?.&
V
1 I A resource locator describing how the member resource is to be located.


1

1

1
>
4!1 The resource is inlined in the list collection.


4

4

4 bproto3
?
udpa/annotations/security.protoudpa.annotationsudpa/annotations/status.proto google/protobuf/descriptor.proto"?
FieldSecurityAnnotationK
"configure_for_untrusted_downstream (RconfigureForUntrustedDownstreamG
 configure_for_untrusted_upstream (RconfigureForUntrustedUpstream:g
security.google.protobuf.FieldOptions?? (2).udpa.annotations.FieldSecurityAnnotationRsecurityB1Z'github.com/cncf/xds/go/udpa/annotations????J?
!
?
2? THIS FILE IS DEPRECATED
 Users should instead use the corresponding proto in the xds tree.
 No new changes will be accepted here.



	
'
	

*

>
	
>

>
?
???j>? All annotations in this file are experimental and subject to change. Their
 only consumer today is the Envoy APIs and SecuritAnnotationValidator protoc
 plugin in this repository.

	

k
.` Magic number is the 28 most significant bits in the sha256sum of
 "udpa.annotations.security".



#





"


%-
x
!l These annotations indicate metadata for the purpose of understanding the
 security significance of fields.




L
.? Field should be set in the presence of untrusted downstreams.




)

,-
J
 ,= Field should be set in the presence of untrusted upstreams.


 

 '

 *+bproto3
??
%envoy/config/cluster/v3/cluster.protoenvoy.config.cluster.v3-envoy/config/cluster/v3/circuit_breaker.proto$envoy/config/cluster/v3/filter.proto/envoy/config/cluster/v3/outlier_detection.proto"envoy/config/core/v3/address.protoenvoy/config/core/v3/base.proto(envoy/config/core/v3/config_source.proto$envoy/config/core/v3/extension.proto'envoy/config/core/v3/health_check.proto#envoy/config/core/v3/protocol.proto#envoy/config/core/v3/resolver.proto'envoy/config/endpoint/v3/endpoint.proto%envoy/type/metadata/v3/metadata.protoenvoy/type/v3/percent.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/struct.protogoogle/protobuf/wrappers.proto"xds/core/v3/collection_entry.proto#envoy/annotations/deprecation.protoudpa/annotations/migrate.protoudpa/annotations/security.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"K
ClusterCollection6
entries (2.xds.core.v3.CollectionEntryRentries"?S
Clustero
transport_socket_matches+ (25.envoy.config.cluster.v3.Cluster.TransportSocketMatchRtransportSocketMatches
name (	B?BrRname>

alt_stat_name (	B???
observability_nameRaltStatNameN
type (2..envoy.config.cluster.v3.Cluster.DiscoveryTypeB?B?HRtypeW
cluster_type& (22.envoy.config.cluster.v3.Cluster.CustomClusterTypeHRclusterType_
eds_cluster_config (21.envoy.config.cluster.v3.Cluster.EdsClusterConfigRedsClusterConfigL
connect_timeout (2.google.protobuf.DurationB?B?*RconnectTimeouto
!per_connection_buffer_limit_bytes (2.google.protobuf.UInt32ValueB???*RperConnectionBufferLimitBytesP
	lb_policy (2).envoy.config.cluster.v3.Cluster.LbPolicyB?B?RlbPolicyX
load_assignment! (2/.envoy.config.endpoint.v3.ClusterLoadAssignmentRloadAssignmentF

health_checks (2!.envoy.config.core.v3.HealthCheckRhealthChecksh
max_requests_per_connection	 (2.google.protobuf.UInt32ValueB?dž?3.0RmaxRequestsPerConnectionS
circuit_breakers
 (2(.envoy.config.cluster.v3.CircuitBreakersRcircuitBreakers?
upstream_http_protocol_options. (21.envoy.config.core.v3.UpstreamHttpProtocolOptionsB?dž?3.0RupstreamHttpProtocolOptionsw
common_http_protocol_options (2).envoy.config.core.v3.HttpProtocolOptionsB?dž?3.0RcommonHttpProtocolOptionsk
http_protocol_options
 (2*.envoy.config.core.v3.Http1ProtocolOptionsB?dž?3.0RhttpProtocolOptionst
http2_protocol_options (2*.envoy.config.core.v3.Http2ProtocolOptionsB???*?dž?3.0Rhttp2ProtocolOptions?
 typed_extension_protocol_options$ (2C.envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntryRtypedExtensionProtocolOptionsQ
dns_refresh_rate (2.google.protobuf.DurationB?B	?*??=RdnsRefreshRatee
dns_failure_refresh_rate, (2,.envoy.config.cluster.v3.Cluster.RefreshRateRdnsFailureRefreshRate&
respect_dns_ttl' (R
respectDnsTtlf
dns_lookup_family (20.envoy.config.cluster.v3.Cluster.DnsLookupFamilyB?B?RdnsLookupFamilyO

dns_resolvers (2.envoy.config.core.v3.AddressB?dž?3.0RdnsResolversA
use_tcp_for_dns_lookups- (B?dž?3.0RuseTcpForDnsLookupsj
dns_resolution_config5 (2).envoy.config.core.v3.DnsResolutionConfigB?dž?3.0RdnsResolutionConfige
typed_dns_resolver_config7 (2*.envoy.config.core.v3.TypedExtensionConfigRtypedDnsResolverConfigL
wait_for_warm_on_init6 (2.google.protobuf.BoolValueRwaitForWarmOnInitV
outlier_detection (2).envoy.config.cluster.v3.OutlierDetectionRoutlierDetectionN
cleanup_interval (2.google.protobuf.DurationB?B?*RcleanupIntervalR
upstream_bind_config (2 .envoy.config.core.v3.BindConfigRupstreamBindConfigY
lb_subset_config (2/.envoy.config.cluster.v3.Cluster.LbSubsetConfigRlbSubsetConfigb
ring_hash_lb_config (21.envoy.config.cluster.v3.Cluster.RingHashLbConfigHRringHashLbConfig[
maglev_lb_config4 (2/.envoy.config.cluster.v3.Cluster.MaglevLbConfigHRmaglevLbConfigk
original_dst_lb_config" (24.envoy.config.cluster.v3.Cluster.OriginalDstLbConfigHRoriginalDstLbConfign
least_request_lb_config% (25.envoy.config.cluster.v3.Cluster.LeastRequestLbConfigHRleastRequestLbConfigh
round_robin_lb_config8 (23.envoy.config.cluster.v3.Cluster.RoundRobinLbConfigHRroundRobinLbConfigY
common_lb_config (2/.envoy.config.cluster.v3.Cluster.CommonLbConfigRcommonLbConfigP
transport_socket (2%.envoy.config.core.v3.TransportSocketRtransportSocket:
metadata (2.envoy.config.core.v3.MetadataRmetadatau
protocol_selection (29.envoy.config.cluster.v3.Cluster.ClusterProtocolSelectionB?dž?3.0RprotocolSelectionr
upstream_connection_options (22.envoy.config.cluster.v3.UpstreamConnectionOptionsRupstreamConnectionOptionsU
(close_connections_on_host_health_failure (R#closeConnectionsOnHostHealthFailure@
ignore_health_on_host_removal  (RignoreHealthOnHostRemoval9
filters( (2.envoy.config.cluster.v3.FilterRfilters`
load_balancing_policy) (2,.envoy.config.cluster.v3.LoadBalancingPolicyRloadBalancingPolicyA

lrs_server* (2".envoy.config.core.v3.ConfigSourceR	lrsServer?
track_timeout_budgets/ (B?dž?3.0RtrackTimeoutBudgetsS
upstream_config0 (2*.envoy.config.core.v3.TypedExtensionConfigRupstreamConfigZ
track_cluster_stats1 (2*.envoy.config.cluster.v3.TrackClusterStatsRtrackClusterStats^
preconnect_policy2 (21.envoy.config.cluster.v3.Cluster.PreconnectPolicyRpreconnectPolicyX
)connection_pool_per_downstream_connection3 (R%connectionPoolPerDownstreamConnection?
TransportSocketMatch
name (	B?BrRname-
match (2.google.protobuf.StructRmatchP
transport_socket (2%.envoy.config.core.v3.TransportSocketRtransportSocket:0?ň+
)envoy.api.v2.Cluster.TransportSocketMatch?
CustomClusterType
name (	B?BrRname7
typed_config (2.google.protobuf.AnyRtypedConfig:-?ň(
&envoy.api.v2.Cluster.CustomClusterType?
EdsClusterConfigA

eds_config (2".envoy.config.core.v3.ConfigSourceR	edsConfig!
service_name (	RserviceName:,?ň'
%envoy.api.v2.Cluster.EdsClusterConfig?

LbSubsetConfigy
fallback_policy (2F.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicyB?B?RfallbackPolicy>
default_subset (2.google.protobuf.StructR
defaultSubsetk
subset_selectors (2@.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelectorRsubsetSelectors2
locality_weight_aware (RlocalityWeightAware2
scale_locality_weight (RscaleLocalityWeight$
panic_mode_any (RpanicModeAny
list_as_any (R	listAsAny?
metadata_fallback_policy (2N.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicyB?B?RmetadataFallbackPolicy?
LbSubsetSelector
keys (	Rkeys3
single_host_per_subset (RsingleHostPerSubset?
fallback_policy (2_.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicyB?B?RfallbackPolicy0
fallback_keys_subset (	RfallbackKeysSubset"y
LbSubsetSelectorFallbackPolicy
NOT_DEFINED
NO_FALLBACK
ANY_ENDPOINT
DEFAULT_SUBSET
KEYS_SUBSET:;?ň6
4envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector"O
LbSubsetFallbackPolicy
NO_FALLBACK
ANY_ENDPOINT
DEFAULT_SUBSET"M
LbSubsetMetadataFallbackPolicy
METADATA_NO_FALLBACK

FALLBACK_LIST:*?ň%
#envoy.api.v2.Cluster.LbSubsetConfig?
SlowStartConfigE
slow_start_window (2.google.protobuf.DurationRslowStartWindowC

aggression (2#.envoy.config.core.v3.RuntimeDoubleR
aggressionD
min_weight_percent (2.envoy.type.v3.PercentRminWeightPercentr
RoundRobinLbConfig\
slow_start_config (20.envoy.config.cluster.v3.Cluster.SlowStartConfigRslowStartConfig?
LeastRequestLbConfigH
choice_count (2.google.protobuf.UInt32ValueB?B*(RchoiceCountS
active_request_bias (2#.envoy.config.core.v3.RuntimeDoubleRactiveRequestBias\
slow_start_config (20.envoy.config.cluster.v3.Cluster.SlowStartConfigRslowStartConfig:0?ň+
)envoy.api.v2.Cluster.LeastRequestLbConfig?
RingHashLbConfigT
minimum_ring_size (2.google.protobuf.UInt64ValueB
?B2???RminimumRingSizem

hash_function (2>.envoy.config.cluster.v3.Cluster.RingHashLbConfig.HashFunctionB?B?RhashFunctionT
maximum_ring_size (2.google.protobuf.UInt64ValueB
?B2???RmaximumRingSize".
HashFunction
XX_HASH

MURMUR_HASH_2:,?ň'
%envoy.api.v2.Cluster.RingHashLbConfigJY
MaglevLbConfigG

table_size (2.google.protobuf.UInt64ValueB
?B2˖?R	tableSize?
OriginalDstLbConfig&
use_http_header (R
useHttpHeader(
http_header_name (	RhttpHeaderName]
upstream_port_override (2.google.protobuf.UInt32ValueB	?B*??RupstreamPortOverrideF
metadata_key (2#.envoy.type.metadata.v3.MetadataKeyRmetadataKey:/?ň*
(envoy.api.v2.Cluster.OriginalDstLbConfig?
CommonLbConfigN
healthy_panic_threshold (2.envoy.type.v3.PercentRhealthyPanicThresholdt
zone_aware_lb_config (2A.envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfigHRzoneAwareLbConfig?
locality_weighted_lb_config (2H.envoy.config.cluster.v3.Cluster.CommonLbConfig.LocalityWeightedLbConfigHRlocalityWeightedLbConfigI
update_merge_window (2.google.protobuf.DurationRupdateMergeWindowC
ignore_new_hosts_until_first_hc (RignoreNewHostsUntilFirstHcM
$close_connections_on_host_set_change (RcloseConnectionsOnHostSetChange?
consistent_hashing_lb_config (2I.envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfigRconsistentHashingLbConfigW
override_host_status (2%.envoy.config.core.v3.HealthStatusSetRoverrideHostStatus?
ZoneAwareLbConfig?
routing_enabled (2.envoy.type.v3.PercentRroutingEnabledF
min_cluster_size (2.google.protobuf.UInt64ValueRminClusterSize1
fail_traffic_on_panic (RfailTrafficOnPanic:

	
 >

!-
	
!-

""
	

""

#_
	
#_

$F

???j$F
?
*,f Cluster list collections. Entries are ``Cluster`` resources or references.
 [#not-implemented-hide:]
2* [#protodoc-title: Cluster configuration]



*

+*

+

+%

+()
S
0?	F Configuration for a single upstream cluster.
 [#next-free-field: 57]



0


1V

ӈ?1V
?
5Lr Refer to :ref:`service discovery type `
 for an explanation on each type.


5
}
8n Refer to the :ref:`static discovery type`
 for an explanation.


8


8

?
=w Refer to the :ref:`strict DNS discovery
 type`
 for an explanation.


=

=
?
By Refer to the :ref:`logical DNS discovery
 type`
 for an explanation.


B

B
{
Fl Refer to the :ref:`service discovery type`
 for an explanation.


F

F

?
K? Refer to the :ref:`original destination discovery
 type`
 for an explanation.


K

K
?
Px? Refer to :ref:`load balancer type ` architecture
 overview section for information on each type.


P

Q

Q


Q


Q


S

S

?
X} Refer to the :ref:`round robin load balancing
 policy`
 for an explanation.


X

X
?
]? Refer to the :ref:`least request load balancing
 policy`
 for an explanation.


]

]
?
by Refer to the :ref:`ring hash load balancing
 policy`
 for an explanation.


b

b
?
gs Refer to the :ref:`random load balancing
 policy`
 for an explanation.


g


g

?
kr Refer to the :ref:`Maglev load balancing policy`
 for an explanation.


k


k

?
p? This load balancer type must be specified if the configured cluster provides a cluster
 specific load balancer. Consult the configured cluster's documentation for whether to set
 this option or not.


p

p
?
w%? Use the new :ref:`load_balancing_policy
 ` field to determine the LB policy.
 This has been deprecated in favor of using the :ref:`load_balancing_policy
 ` field without
 setting any value in :ref:`lb_policy`.


w 

w#$
?
??? When V4_ONLY is selected, the DNS resolver will only perform a lookup for
 addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will
 only perform a lookup for addresses in the IPv6 family. If AUTO is
 specified, the DNS resolver will first perform a lookup for addresses in
 the IPv6 family and fallback to a lookup for addresses in the IPv4 family.
 This is semantically equivalent to a non-existent V6_PREFERRED option.
 AUTO is a legacy name that is more opaque than
 necessary and will be deprecated in favor of V6_PREFERRED in a future major version of the API.
 If V4_PREFERRED is specified, the DNS resolver will first perform a lookup for addresses in the
 IPv4 family and fallback to a lookup for addresses in the IPv6 family. i.e., the callback
 target will only get v6 addresses if there were NO v4 addresses to return.
 If ALL is specified, the DNS resolver will perform a lookup for both IPv4 and IPv6 families,
 and return all resolved addresses. When this is used, Happy Eyeballs will be enabled for
 upstream connections. Refer to :ref:`Happy Eyeballs Support `
 for more information.
 For cluster types other than
 :ref:`STRICT_DNS` and
 :ref:`LOGICAL_DNS`,
 this setting is
 ignored.
 [#next-major-version: deprecate AUTO in favor of a V6_PREFERRED option.]


?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?


??

?
?
? ? Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2).
 If :ref:`http2_protocol_options ` are
 present, HTTP2 will be used, otherwise HTTP1.1 will be used.


?

?
d
? T Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection.


?

?
?
??t TransportSocketMatch specifies what transport socket config will be used
 when the match conditions are satisfied.


?


??4


ӈ???4
B
?=2 The name of the match, used in stats generation.


?


?

?

?<


??;
?
?%? Optional endpoint metadata match criteria.
 The connection to the endpoint with metadata matching what is set in this field
 will use the transport socket configuration specified here.
 The endpoint's metadata entry in ``envoy.transport_socket_match`` is used to match
 against the values specified in this field.


?

? 

?#$
u
?1e The configuration of the transport socket.
 [#extension-category: envoy.transport_sockets.upstream]


?

?,

?/0
(
?? Extended cluster type.


?


??1


ӈ???1
g
?=W The type of the cluster to instantiate. The name must match a supported cluster type.


?


?

?

?<


??;
?
?)? Cluster specific configuration which depends on the cluster being instantiated.
 See the supported cluster for further documentation.
 [#extension-category: envoy.clusters]


?

?$

?'(
8
??( Only valid when discovery type is EDS.


?


??0


ӈ???0
O
?(? Configuration for the source of EDS updates for this Cluster.


?

?#

?&'
?
?? Optional alternative to cluster name to present to EDS. This does not
 have the same restrictions as cluster name, i.e. it may be arbitrary
 length. This may be a xdstp:// URL.


?


?

?
?
??? Optionally divide the endpoints in this cluster into subsets defined by
 endpoint metadata and selected by route and weighted cluster metadata.
 [#next-free-field: 9]


?


??.


ӈ???.
?
??? If NO_FALLBACK is selected, a result
 equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected,
 any cluster endpoint may be returned (subject to policy, health checks,
 etc). If DEFAULT_SUBSET is selected, load balancing is performed over the
 endpoints matching the values from the default_subset field.


?	

?

	?

	?

?

	?

	?

?

	?

	?

??

?	'
C
?1 No fallback. Route metadata will be used as-is.


	?

	?
?
?? A special metadata key ``fallback_list`` will be used to provide variants of metadata to try.
 Value of ``fallback_list`` key has to be a list. Every list element has to be a struct - it will
 be merged with route metadata, overriding keys that appear in both places.
 ``fallback_list`` entries will be used in order until a host is found.

 ``fallback_list`` key itself is removed from metadata before subset load balancing is performed.

 Example:

 for metadata:

 .. code-block:: yaml

   version: 1.0
   fallback_list:
     - version: 2.0
       hardware: c64
     - hardware: c32
     - version: 3.0

 at first, metadata:

 .. code-block:: json

   {"version": "2.0", "hardware": "c64"}

 will be used for load balancing. If no host is found, metadata:

 .. code-block:: json

   {"version": "1.0", "hardware": "c32"}

 is next to try. If it still results in no host, finally metadata:

 .. code-block:: json

   {"version": "3.0"}

 is used.


	?

	?
/
?? Specifications for subsets.


?

??A

ӈ???A
P
??< Allows to override top level fallback policy per selector.


	?)
V

?B If NOT_DEFINED top level config fallback policy is used instead.


?

?
f

?R If NO_FALLBACK is selected, a result equivalent to no healthy hosts is reported.


?

?
?

?m If ANY_ENDPOINT is selected, any cluster endpoint may be returned
 (subject to policy, health checks, etc).


?

?
?

?? If DEFAULT_SUBSET is selected, load balancing is performed over the
 endpoints matching the values from the default_subset field.


?

?
?

?? If KEYS_SUBSET is selected, subset selector matching is performed again with metadata
 keys reduced to
 :ref:`fallback_keys_subset`.
 It allows for a fallback to a different, less specific selector if some of the keys of
 the selector are considered optional.


?

?
M
?; List of keys to match with the weighted cluster metadata.


	?

	?

	?

	?
?
?&? Selects a mode of operation in which each subset has only one host. This mode uses the same rules for
 choosing a host, but updating hosts is faster, especially for large numbers of hosts.

 If a match is found to a host, that host will be used regardless of priority levels.

 When this mode is enabled, configurations that contain more than one host with the same metadata value for the single key in ``keys``
 will use only one of the hosts with the given key; no requests will be routed to the others. The cluster gauge
 :ref:`lb_subsets_single_host_per_subset_duplicate` indicates how many duplicates are
 present in the current configuration.


	?


	?!

	?$%
g
??9S The behavior used when no endpoint subset matches the selected route's
 metadata.


	?$

	?%4

	?78

	?
8

??7
?
?/? Subset of
 :ref:`keys` used by
 :ref:`KEYS_SUBSET`
 fallback policy.
 It has to be a non empty list if KEYS_SUBSET fallback policy is selected.
 For any other fallback policy the parameter is not used and should not be set.
 Only values also present in
 :ref:`keys` are allowed, but
 ``fallback_keys_subset`` cannot be equal to ``keys``.


	?

	?

	?*

	?-.
?
?^? The behavior used when no endpoint subset matches the selected route's
 metadata. The value defaults to
 :ref:`NO_FALLBACK`.


?

?*

?-.

?/]


??0\
?
?.? Specifies the default subset of endpoints used during fallback if
 fallback_policy is
 :ref:`DEFAULT_SUBSET`.
 Each field in default_subset is
 compared to the matching LbEndpoint.Metadata under the ``envoy.lb``
 namespace. It is valid for no hosts to match, in which case the behavior
 is the same as a fallback_policy of
 :ref:`NO_FALLBACK`.


?

?)

?,-
?
?3? For each entry, LbEndpoint.Metadata's
 ``envoy.lb`` namespace is traversed and a subset is created for each unique
 combination of key and value. For example:

 .. code-block:: json

   { "subset_selectors": [
       { "keys": [ "version" ] },
       { "keys": [ "stage", "hardware_type" ] }
   ]}

 A subset is matched when the metadata from the selected route and
 weighted cluster contains the same keys and values as the subset's
 metadata. The same host may appear in multiple subsets.


?

?


?.

?12
?
?#? If true, routing to subsets will take into account the localities and locality weights of the
 endpoints when making the routing decision.

 There are some potential pitfalls associated with enabling this feature, as the resulting
 traffic split after applying both a subset match and locality weights might be undesirable.

 Consider for example a situation in which you have 50/50 split across two localities X/Y
 which have 100 hosts each without subsetting. If the subset LB results in X having only 1
 host selected but Y having 100, then a lot more load is being dumped on the single host in X
 than originally anticipated in the load balancing assignment delivered via EDS.


?

?	

?!"
?
?#? When used with locality_weight_aware, scales the weight of each locality by the ratio
 of hosts in the subset vs hosts in the original subset. This aims to even out the load
 going to an individual locality if said locality is disproportionately affected by the
 subset predicate.


?

?	

?!"
?
?? If true, when a fallback policy is configured and its corresponding subset fails to find
 a host this will cause any host to be selected instead.

 This is useful when using the default subset as the fallback policy, given the default
 subset might become empty. With this option enabled, if that happens the LB will attempt
 to select a host from the entire cluster.


?

?	

?
?
?? If true, metadata specified for a metadata key will be matched against the corresponding
 endpoint metadata if the endpoint metadata matches the value exactly OR it is a list value
 and any of the elements in the list matches the criteria.


?

?	

?
?
??7? Fallback mechanism that allows to try different route metadata until a host is found.
 If load balancing process, including all its mechanisms (like
 :ref:`fallback_policy`)
 fails to select a host, this policy decides if and how the process is repeated using another metadata.

 The value defaults to
 :ref:`METADATA_NO_FALLBACK`.


?"

?#;

?>?

?6


??	5
e
??U Configuration for :ref:`slow start mode `.


?

?
?3? Represents the size of slow start window.
 If set, the newly created host remains in slow start mode starting from its creation time
 for the duration of slow start window.


?

?.

?12
?
?)? This parameter controls the speed of traffic increase over the slow start window. Defaults to 1.0,
 so that endpoint would get linearly increasing amount of traffic.
 When increasing the value for this parameter, the speed of traffic ramp-up increases non-linearly.
 The value of aggression parameter should be greater than 0.0.
 By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve.

 During slow start window, effective weight of an endpoint would be scaled with time factor and aggression:
 ``new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))``,
 where ``time_factor=(time_since_start_seconds / slow_start_time_seconds)``.

 As time progresses, more and more traffic would be sent to endpoint, which is in slow start window.
 Once host exits slow start, time_factor and aggression no longer affect its weight.


?

?$

?'(
?
?+? Configures the minimum percentage of origin weight that avoids too small new weight,
 which may cause endpoints in slow start mode receive no traffic in slow start window.
 If not specified, the default is 10%.


?

?&

?)*
R
??B Specific configuration for the RoundRobin load balancing policy.


?

{
?*k Configuration for slow start mode.
 If this configuration is not set, slow start will not be not enabled.


?

?%

?()
T
??D Specific configuration for the LeastRequest load balancing policy.


?


??4


ӈ???4
?
?V? The number of random healthy hosts from which the host with the fewest active requests will
 be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set.


?

? ,

?/0

?1U


??2T
?
?2? The following formula is used to calculate the dynamic weights when hosts have different load
 balancing weights:

 ``weight = load_balancing_weight / (active_requests + 1)^active_request_bias``

 The larger the active request bias is, the more aggressively active requests will lower the
 effective weight when all host weights are not equal.

 ``active_request_bias`` must be greater than or equal to 0.0.

 When ``active_request_bias == 0.0`` the Least Request Load Balancer doesn't consider the number
 of active requests at the time it picks a host and behaves like the Round Robin Load
 Balancer.

 When ``active_request_bias > 0.0`` the Least Request Load Balancer scales the load balancing
 weight by the number of active requests at the time it does a pick.

 The value is cached for performance reasons and refreshed whenever one of the Load Balancer's
 host sets changes, e.g., whenever there is a host membership update or a host load balancing
 weight change.

 .. note::
   This setting only takes effect if all host weights are not equal.


?

?-

?01
{
?*k Configuration for slow start mode.
 If this configuration is not set, slow start will not be not enabled.


?

?%

?()
?
??v Specific configuration for the :ref:`RingHash`
 load balancing policy.


?


??0


ӈ???0
N
??< The hash function used to hash hosts onto the ketama ring.


?	
j
?X Use `xxHash `_, this is the default hash function.


	?

	?
?
?? Use `MurmurHash2 `_, this is compatible with
 std:hash in GNU libstdc++ 3.4.20 or above. This is typically the case when compiled
 on Linux and not macOS.


	?

	?

	?

	?


	?


	?

?
?a? Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each
 provided host) the better the request distribution will reflect the desired weights. Defaults
 to 1024 entries, and limited to 8M entries. See also
 :ref:`maximum_ring_size`.


?

? 1

?45

?6`


??7_
?
?R? The hash function used to hash hosts onto the ketama ring. The value defaults to
 :ref:`XX_HASH`.


?

?

?!"

?#Q


??$P
?
?a? Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered
 to further constrain resource use. See also
 :ref:`minimum_ring_size`.


?

? 1

?45

?6`


??7_
?
??q Specific configuration for the :ref:`Maglev`
 load balancing policy.


?

?
?Z? The table size for Maglev hashing. Maglev aims for "minimal disruption" rather than an absolute guarantee.
 Minimal disruption means that when the set of upstream hosts change, a connection will likely be sent to the same
 upstream as it was before. Increasing the table size reduces the amount of disruption.
 The table size must be prime number limited to 5000011. If it is not specified, the default is 65537.


?

? *

?-.

?/Y


??0X
?
	??? Specific configuration for the
 :ref:`Original Destination `
 load balancing policy.
 [#extension: envoy.clusters.original_dst]


	?


	??3


	ӈ???3
?
	?? When true, a HTTP header can be used to override the original dst address. The default header is
 :ref:`x-envoy-original-dst-host `.

 .. attention::

   This header isn't sanitized by default, so enabling this feature allows HTTP clients to
   route traffic to arbitrary hosts and/or ports, which may have serious security
   consequences.

 .. note::

   If the header appears multiple times only the first value is used.


	?

	?	

	?
?
	? ? The http header to override destination address if :ref:`use_http_header `.
 is set to true. If the value is empty, :ref:`x-envoy-original-dst-host ` will be used.


	?


	?

	?
?
	?d? The port to override for the original dst address. This port
 will take precedence over filter state and header override ports


	?

	? 6

	?9:

	?;c


	??`.



?


??B


ӈ???B
?

?*? Configures percentage of requests that will be considered for zone aware routing
 if zone aware routing is configured. If not specified, the default is 100%.
 * :ref:`runtime values `.
 * :ref:`Zone aware routing support `.


	
?

	
?%

	
?()
?

?7? Configures minimum upstream cluster size required for zone aware routing
 If upstream cluster size is less than specified, zone aware routing is not performed
 even if zone aware routing is configured. If not specified, the default is 6.
 * :ref:`runtime values `.
 * :ref:`Zone aware routing support `.


	
?!

	
?"2

	
?56
?

?%? If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic
 mode`. Instead, the cluster will fail all
 requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a
 failing service.


	
?


	
? 

	
?#$
?

??p Configuration for :ref:`locality weighted load balancing
 `



?$


??I


ӈ???I
o

??] Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.)



?%


??J


ӈ???J
?

?(? If set to ``true``, the cluster will use hostname instead of the resolved
 address as the key to consistently hash to an upstream host. Only valid for StrictDNS clusters with hostnames which resolve to a single IP address.


	
?


	
?#

	
?&'
?


?a?
 Configures percentage of average cluster load to bound per upstream host. For example, with a value of 150
 no upstream host will get a load more than 1.5 times the average load of all the hosts in the cluster.
 If not specified, the load is not bounded for any upstream host. Typical value for this parameter is between 120 and 200.
 Minimum is 100.

 Applies to both Ring Hash and Maglev load balancers.

 This is implemented based on the method described in the paper https://arxiv.org/abs/1608.01350. For the specified
 ``hash_balance_factor``, requests to any upstream host are capped at ``hash_balance_factor/100`` times the average number of requests
 across the cluster. When a request arrives for an upstream host that is currently serving at its max capacity, linear probing
 is used to identify an eligible host. Further, the linear probe is implemented using a random jump in hosts ring/table to identify
 the eligible host (this technique is as described in the paper https://arxiv.org/abs/1908.08762 - the random jump avoids the
 cascading overflow effect when choosing the next host in the ring/table).

 If weights are specified on the hosts, they are respected.

 This is an O(N) algorithm, unlike other load balancers. Using a lower ``hash_balance_factor`` results in more hosts
 being probed, so use a higher value if you require better performance.


	
?!

	
?"5

	
?89

	
?:`


??;_
?

?0? Configures the :ref:`healthy panic threshold `.
 If not specified, the default is 50%.
 To disable panic mode, set to 0%.

 .. note::
   The specified percent will be truncated to the nearest 1%.



?


?+


?./


??


?
#


?1


?


?,


?/0


??


?


?:


?=>
?

?5? If set, all health check/weight/metadata updates that happen within this duration will be
 merged and delivered in one shot when the duration expires. The start of the duration is when
 the first update happens. This is useful for big clusters, with potentially noisy deploys
 that might trigger excessive CPU usage due to a constant stream of healthcheck state changes
 or metadata updates. The first set of updates to be seen apply immediately (e.g.: a new
 cluster). Please always keep in mind that the use of sandbox technologies may change this
 behavior.

 If this is not set, we default to a merge window of 1000ms. To disable it, set the merge
 window to 0.

 Note: merging does not apply to cluster membership changes (e.g.: adds/removes); this is
 because merging those updates isn't currently safe. See
 https://github.com/envoyproxy/envoy/pull/3941.



?


?0


?34
?

?-? If set to true, Envoy will :ref:`exclude ` new hosts
 when computing load balancing weights until they have been health checked for the first time.
 This will have no effect unless active health checking is also configured.



?


?	(


?+,
?

?2? If set to ``true``, the cluster manager will drain all existing
 connections to upstream hosts whenever hosts are added or removed from the cluster.



?


?	-


?01
m

??] Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.)



?


?:


?=>
?

?5? This controls what hosts are considered valid when using
 :ref:`host overrides `, which is used by some
 filters to modify the load balancing decision.

 If this is unset then [UNKNOWN, HEALTHY, DEGRADED] will be applied by default. If this is
 set with an empty set of statuses then host overrides will be ignored by the load balancing.



?


?0


?34

??

?


?d


ӈ??d
?
??? Specifies the base interval between refreshes. This parameter is required and must be greater
 than zero and less than
 :ref:`max_interval `.


?

?*

?-.

?/?


??0?
?
?b? Specifies the maximum interval between refreshes. This parameter is optional, but must be
 greater than or equal to the
 :ref:`base_interval `  if set. The default
 is 10 times the :ref:`base_interval `.


?

?)

?,-

?.a


??/`

??

?

?
??8?
 Indicates how many streams (rounded up) can be anticipated per-upstream for each
 incoming stream. This is useful for high-QPS or latency-sensitive services. Preconnecting
 will only be done if the upstream is healthy and the cluster has traffic.

 For example if this is 2, for an incoming HTTP/1.1 stream, 2 connections will be
 established, one for the new incoming stream, and one for a presumed follow-up stream. For
 HTTP/2, only one connection would be established by default as one connection can
 serve both the original and presumed follow-up stream.

 In steady state for non-multiplexed connections a value of 1.5 would mean if there were 100
 active streams, there would be 100 connections in use, and 50 connections preconnected.
 This might be a useful value for something like short lived single-use connections,
 for example proxying HTTP/1.1 if keep-alive were false and each stream resulted in connection
 termination. It would likely be overkill for long lived connections, such as TCP proxying SMTP
 or regular HTTP/1.1 with keep-alive. For long lived traffic, a value of 1.05 would be more
 reasonable, where for every 100 connections, 5 preconnected connections would be in the queue
 in case of unexpected disconnects where the connection could not be reused.

 If this value is not set, or set explicitly to one, Envoy will fetch as many connections
 as needed to serve streams in flight. This means in steady state if a connection is torn down,
 a subsequent streams will pay an upstream-rtt latency penalty waiting for a new connection.

 This is limited somewhat arbitrarily to 3 because preconnecting too aggressively can
 harm latency more than the preconnecting helps.


?

? =

?@A

?7


??	6
?
??8?
 Indicates how many streams (rounded up) can be anticipated across a cluster for each
 stream, useful for low QPS services. This is currently supported for a subset of
 deterministic non-hash-based load-balancing algorithms (weighted round robin, random).
 Unlike ``per_upstream_preconnect_ratio`` this preconnects across the upstream instances in a
 cluster, doing best effort predictions of what upstream would be picked next and
 pre-establishing a connection.

 Preconnecting will be limited to one preconnect per configured upstream in the cluster and will
 only be done if there are healthy upstreams and the cluster has traffic.

 For example if preconnecting is set to 2 for a round robin HTTP/2 cluster, on the first
 incoming stream, 2 connections will be preconnected - one to the first upstream for this
 cluster, one to the second on the assumption there will be a follow-up stream.

 If this value is not set, or set explicitly to one, Envoy will fetch as many connections
 as needed to serve streams in flight, so during warm up and in steady state if a connection
 is closed (and per_upstream_preconnect_ratio is not set), there will be a latency hit for
 connection establishment.

 If both this and preconnect_ratio are set, Envoy will make sure both predicted needs are met,
 basically preconnecting max(predictive-preconnect, per-upstream-preconnect), for each
 upstream.


?

? ;

?>?

?7


??	6

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?


?@


?


?!


?#?
?
?>? Configuration to use different transport sockets for different endpoints.
 The entry of ``envoy.transport_socket_match`` in the
 :ref:`LbEndpoint.Metadata `
 is used to match against the transport sockets as they appear in the list. The first
 :ref:`match ` is used.
 For example, with the following match

 .. code-block:: yaml

  transport_socket_matches:
  - name: "enableMTLS"
    match:
      acceptMTLS: true
    transport_socket:
      name: envoy.transport_sockets.tls
      config: { ... } # tls socket configuration
  - name: "defaultToPlaintext"
    match: {}
    transport_socket:
      name: envoy.transport_sockets.raw_buffer

 Connections to the endpoints whose metadata value under ``envoy.transport_socket_match``
 having "acceptMTLS"/"true" key/value pair use the "enableMTLS" socket configuration.

 If a :ref:`socket match ` with empty match
 criteria is provided, that always match any endpoint. For example, the "defaultToPlaintext"
 socket match in case above.

 If an endpoint metadata's value under ``envoy.transport_socket_match`` does not match any
 ``TransportSocketMatch``, socket configuration fallbacks to use the ``tls_context`` or
 ``transport_socket`` specified in this cluster.

 This field allows gradual and flexible transport socket configuration changes.

 The metadata of endpoints in EDS can indicate transport socket capabilities. For example,
 an endpoint's metadata can have two key value pairs as "acceptMTLS": "true",
 "acceptPlaintext": "true". While some other endpoints, only accepting plaintext traffic
 has "acceptPlaintext": "true" metadata information.

 Then the xDS server can configure the CDS to a client, Envoy A, to send mutual TLS
 traffic for endpoints with "acceptMTLS": "true", by adding a corresponding
 ``TransportSocketMatch`` in this field. Other client Envoys receive CDS without
 ``transport_socket_match`` set, and still send plain text traffic to the same cluster.

 This field can be used to specify custom transport socket configurations for health
 checks by adding matching key/value pairs in a health check's
 :ref:`transport socket match criteria ` field.

 [#comment:TODO(incfly): add a detailed architecture doc on intended usage.]


?


?

? 8

?;=
?
?;? Supplies the name of the cluster which must be unique across all clusters.
 The cluster name is used when emitting
 :ref:`statistics ` if :ref:`alt_stat_name
 ` is not provided.
 Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics.


?

?	

?

?:

??9
?
?]? An optional alternative to the cluster name to be used for observability. This name is used
 emitting stats for the cluster and access logging the cluster name. This will appear as
 additional information in configuration dumps of a cluster's current status as
 :ref:`observability_name `
 and as an additional tag "upstream_cluster.name" while tracing. Note: Any ``:`` in the name
 will be converted to ``_`` when emitting statistics. This should not be confused with
 :ref:`Router Filter Header `.


?

?	

?

?\


???Q?[

??

?
|
?Jn The :ref:`service discovery type `
 to use for resolving the cluster.


?

?

?

?I

??H
(
?( The custom cluster type.


?

?"

?%'
E
?*7 Configuration to use for EDS updates for the Cluster.


?

?%

?()
?
?Us The timeout for new network connections to hosts in the cluster.
 If not set, a default value of 5s will be used.


?

?*

?-.

?/T

??0S
?
??L? Soft limit on size of the cluster’s connections read and write buffers. If
 unspecified, an implementation defined default is applied (1MiB).


?

??

?BC

?K


???J
~
?Hp The :ref:`load balancer type ` to use
 when picking a host in the cluster.


?


?

?

?G

??F
?
	?9? Setting this is required for specifying members of
 :ref:`STATIC`,
 :ref:`STRICT_DNS`
 or :ref:`LOGICAL_DNS` clusters.
 This field supersedes the ``hosts`` field in the v2 API.

 .. attention::

   Setting this allows non-EDS cluster types to contain embedded EDS equivalent
   :ref:`endpoint assignments`.



	?#

	?$3

	?68
?

?1? Optional :ref:`active health checking `
 configuration for the cluster. If no
 configuration is specified no health checking will be done and all cluster
 members will be considered healthy at all times.



?



?


?,


?/0
?
??S? Optional maximum requests for a single upstream connection. This parameter
 is respected by both the HTTP/1.1 and HTTP/2 connection pool
 implementations. If not specified, there is no limit. Setting this
 parameter to 1 will effectively disable keep alive.

 .. attention::
   This field has been deprecated in favor of the :ref:`max_requests_per_connection ` field.


?

?9

?<=

?R

?

	??K?Q
_
?(Q Optional :ref:`circuit breaking ` for the cluster.


?

?"

?%'
?

??S? HTTP protocol options that are applied only to upstream HTTP connections.
 These options apply to all HTTP versions.
 This has been deprecated in favor of
 :ref:`upstream_http_protocol_options `
 in the :ref:`http_protocol_options ` message.
 upstream_http_protocol_options can be set via the cluster's
 :ref:`extension_protocol_options`.
 See :ref:`upstream_http_protocol_options
 `
 for example usage.



?%


?&D


?GI


?R


?

	
??K?Q
?
??S? Additional options when handling HTTP requests upstream. These options will be applicable to
 both HTTP1 and HTTP2 requests.
 This has been deprecated in favor of
 :ref:`common_http_protocol_options `
 in the :ref:`http_protocol_options ` message.
 common_http_protocol_options can be set via the cluster's
 :ref:`extension_protocol_options`.
 See :ref:`upstream_http_protocol_options
 `
 for example usage.


?

?:

?=?

?R

?

	??K?Q
?
??S? Additional options when handling HTTP1 requests.
 This has been deprecated in favor of http_protocol_options fields in the
 :ref:`http_protocol_options ` message.
 http_protocol_options can be set via the cluster's
 :ref:`extension_protocol_options`.
 See :ref:`upstream_http_protocol_options
 `
 for example usage.


?

?4

?79

?R

?

	??K?Q
?
??? Even if default HTTP2 protocol options are desired, this field must be
 set so that Envoy will assume that the upstream supports HTTP/2 when
 making new HTTP connection pool connections. Currently, Envoy only
 supports prior knowledge for upstream connections. Even if TLS is used
 with ALPN, ``http2_protocol_options`` must be specified. As an aside this allows HTTP/2
 connections to happen over plain text.
 This has been deprecated in favor of http2_protocol_options fields in the
 :ref:`http_protocol_options `
 message. http2_protocol_options can be set via the cluster's
 :ref:`extension_protocol_options`.
 See :ref:`upstream_http_protocol_options
 `
 for example usage.


?

?5

?8:

?;?

?


???G

	??K?;
?
?I? The extension_protocol_options field is used to provide extension-specific protocol options
 for upstream connections. The key should match the extension filter name, such as
 "envoy.filters.network.thrift_proxy". See the extension's documentation for details on
 specific options.
 [#next-major-version: make this a list of typed extensions.]


?"

?#C

?FH
?
??:? If the DNS refresh rate is specified and the cluster type is either
 :ref:`STRICT_DNS`,
 or :ref:`LOGICAL_DNS`,
 this value is used as the cluster’s DNS refresh
 rate. The value configured must be at least 1ms. If this setting is not specified, the
 value defaults to 5000ms. For cluster types other than
 :ref:`STRICT_DNS`
 and :ref:`LOGICAL_DNS`
 this setting is ignored.


?

?+

?.0

?9

??8
?
?,? If the DNS failure refresh rate is specified and the cluster type is either
 :ref:`STRICT_DNS`,
 or :ref:`LOGICAL_DNS`,
 this is used as the cluster’s DNS refresh rate when requests are failing. If this setting is
 not specified, the failure refresh rate defaults to the DNS refresh rate. For cluster types
 other than :ref:`STRICT_DNS` and
 :ref:`LOGICAL_DNS` this setting is
 ignored.


?

?&

?)+
?
?? Optional configuration for setting cluster's DNS refresh rate. If the value is set to true,
 cluster's DNS refresh rate will be set to resource record's TTL which comes from DNS
 resolution.


?

?

?
?
?X? The DNS IP address resolution policy. If this setting is not specified, the
 value defaults to
 :ref:`AUTO`.


?

?#

?&(

?)W

??*V
?
??S? If DNS resolvers are specified and the cluster type is either
 :ref:`STRICT_DNS`,
 or :ref:`LOGICAL_DNS`,
 this value is used to specify the cluster’s dns resolvers.
 If this setting is not specified, the value defaults to the default
 resolver, which uses /etc/resolv.conf for configuration. For cluster types
 other than
 :ref:`STRICT_DNS`
 and :ref:`LOGICAL_DNS`
 this setting is ignored.
 This field is deprecated in favor of ``dns_resolution_config``
 which aggregates all of the DNS resolver configuration in a single message.


?


?

?(

?+-

?R

?

	??K?Q
?
??S? Always use TCP queries instead of UDP queries for DNS lookups.
 This field is deprecated in favor of ``dns_resolution_config``
 which aggregates all of the DNS resolver configuration in a single message.


?

?

?!#

?R

?

	??K?Q
?
??S? DNS resolution configuration which includes the underlying dns resolver addresses and options.
 This field is deprecated in favor of
 :ref:`typed_dns_resolver_config `.


?

?3

?68

?R

?

	??K?Q
?
?>? DNS resolver type configuration extension. This extension can be used to configure c-ares, apple,
 or any other DNS resolver types and the related parameters.
 For example, an object of
 :ref:`CaresDnsResolverConfig `
 can be packed into this ``typed_dns_resolver_config``. This configuration replaces the
 :ref:`dns_resolution_config `
 configuration.
 During the transition period when both ``dns_resolution_config`` and ``typed_dns_resolver_config`` exists,
 when ``typed_dns_resolver_config`` is in place, Envoy will use it and ignore ``dns_resolution_config``.
 When ``typed_dns_resolver_config`` is missing, the default behavior is in place.
 [#extension-category: envoy.network.dns_resolver]


?

?8

?;=
?
?7? Optional configuration for having cluster readiness block on warm-up. Currently, only applicable for
 :ref:`STRICT_DNS`,
 or :ref:`LOGICAL_DNS`,
 or :ref:`Redis Cluster`.
 If true, cluster readiness blocks on warm-up. If false, the cluster will complete
 initialization whether or not warm-up has completed. Defaults to true.


?

?1

?46
?
?*? If specified, outlier detection will be enabled for this upstream cluster.
 Each of the configuration values can be overridden via
 :ref:`runtime values `.


?

?$

?')
?
?W? The interval for removing stale hosts from a cluster type
 :ref:`ORIGINAL_DST`.
 Hosts are considered stale if they have not been used
 as upstream destinations during this interval. New hosts are added
 to original destination clusters on demand as new connections are
 redirected to Envoy, causing the number of hosts in the cluster to
 grow over time. Hosts that are not stale (they are actively used as
 destinations) are kept in the cluster, which allows connections to
 them remain open, saving the latency that would otherwise be spent
 on opening new connections. If this setting is not specified, the
 value defaults to 5000ms. For cluster types other than
 :ref:`ORIGINAL_DST`
 this setting is ignored.


?

?+

?.0

?1V

??2U
?
?/? Optional configuration used to bind newly established upstream connections.
 This overrides any bind_config specified in the bootstrap proto.
 If the address and port are empty, no bind will be performed.


?

?)

?,.
<
?'. Configuration for load balancing subsetting.


?

?!

?$&
?
??? Optional configuration for the load balancing algorithm selected by
 LbPolicy. Currently only
 :ref:`RING_HASH`,
 :ref:`MAGLEV` and
 :ref:`LEAST_REQUEST`
 has additional configuration options.
 Specifying ring_hash_lb_config or maglev_lb_config or least_request_lb_config without setting the corresponding
 LbPolicy will generate an error at runtime.


?
O
?.A Optional configuration for the Ring Hash load balancing policy.


?

?(

?+-
L
 ?)> Optional configuration for the Maglev load balancing policy.


 ?

 ?#

 ?&(
Z
!?4L Optional configuration for the Original Destination load balancing policy.


!?

!?.

!?13
R
"?6D Optional configuration for the LeastRequest load balancing policy.


"?

"?0

"?35
P
#?2B Optional configuration for the RoundRobin load balancing policy.


#?

#?,

#?/1
K
$?'= Common configuration for all load balancer implementations.


$?

$?!

$?$&
?
%?0? Optional custom transport socket implementation to use for upstream connections.
 To setup TLS, set a transport socket with name ``envoy.transport_sockets.tls`` and
 :ref:`UpstreamTlsContexts ` in the ``typed_config``.
 If no transport socket configuration is specified, new connections
 will be set up with plaintext.


%?

%?*

%?-/
?
&?!? The Metadata field can be used to provide additional information about the
 cluster. It can be used for stats, logging, and varying filter behavior.
 Fields should use reverse DNS notation to denote which entity within Envoy
 will need the information. For instance, if the metadata is intended for
 the Router filter, the filter name should be specified as ``envoy.filters.http.router``.


&?

&?

&? 
?
'??S? Determines how Envoy selects the protocol used to speak to upstream hosts.
 This has been deprecated in favor of setting explicit protocol selection
 in the :ref:`http_protocol_options
 ` message.
 http_protocol_options can be set via the cluster's
 :ref:`extension_protocol_options`.


'?

'?-

'?02

'?R

'?

	'??K?Q
:
(?=, Optional options for upstream connections.


(?

(?7

(?:<
?
)?5? If an upstream host becomes unhealthy (as determined by the configured health checks
 or outlier detection), immediately close all connections to the failed host.

 .. note::

   This is currently only supported for connections created by tcp_proxy.

 .. note::

   The current implementation of this feature closes all connections immediately when
   the unhealthy status is detected. If there are a large number of connections open
   to an upstream host that becomes unhealthy, Envoy may spend a substantial amount of
   time exclusively closing these connections, and not processing any other traffic.


)?

)?/

)?24
?
*?*? If set to true, Envoy will ignore the health value of a host when processing its removal
 from service discovery. This means that if active health checking is used, Envoy will *not*
 wait for the endpoint to go unhealthy before removing it.


*?

*?$

*?')
?
+?? An (optional) network filter chain, listed in the order the filters should be applied.
 The chain will be applied to all outgoing connections that Envoy makes to the upstream
 servers of this cluster.


+?


+?

+?

+?
?
,?1? If this field is set and is supported by the client, it will supersede the value of
 :ref:`lb_policy`.


,?

,?+

,?.0
?
-?'? [#not-implemented-hide:]
 If present, tells the client where to send load reports via LRS. If not present, the
 client will fall back to a client-side default, which may be either (a) don't send any
 load reports or (b) send load reports for all clusters to a single default server
 (which may be configured in the bootstrap file).

 Note that if multiple clusters point to the same LRS server, the client may choose to
 create a separate stream for each cluster or it may choose to coalesce the data for
 multiple clusters onto a single stream. Either way, the client must make sure to send
 the data for any given cluster on no more than one stream.

 [#next-major-version: In the v3 API, we should consider restructuring this somehow,
 maybe by allowing LRS to go on the ADS stream, or maybe by moving some of the negotiation
 from the LRS stream here.]


-?

-?!

-?$&
?
.?	?	S? If track_timeout_budgets is true, the :ref:`timeout budget histograms
 ` will be published for each
 request. These show what percentage of a request's per try and global timeout was used. A value
 of 0 would indicate that none of the timeout was used or that the timeout was infinite. A value
 of 100 would indicate that the request took the entirety of the timeout given to it.

 .. attention::

   This field has been deprecated in favor of ``timeout_budgets``, part of
   :ref:`track_cluster_stats `.


.?	

.?	

.?	!

.?	R

.?	

	.??K?	Q
?
/?	4? Optional customization and configuration of upstream connection pool, and upstream type.

 Currently this field only applies for HTTP traffic but is designed for eventual use for custom
 TCP upstreams.

 For HTTP traffic, Envoy will generally take downstream HTTP and send it upstream as upstream
 HTTP, using the http connection pool and the codec from ``http2_protocol_options``

 For routes where CONNECT termination is configured, Envoy will take downstream CONNECT
 requests and forward the CONNECT payload upstream over raw TCP using the tcp connection pool.

 The default pool used is the generic connection pool which creates the HTTP upstream for most
 HTTP requests, and the TCP upstream if CONNECT termination is configured.

 If users desire custom connection pool or upstream behavior, for example terminating
 CONNECT only if a custom filter indicates it is appropriate, the custom factories
 can be registered and configured here.
 [#extension-category: envoy.upstreams]


/?	

/?	.

/?	13
>
0?	-0 Configuration to track optional cluster stats.


0?	

0?	'

0?	*,
:
1?	*, Preconnect configuration for this cluster.


1?	

1?	$

1?	')
?
2?	6? If ``connection_pool_per_downstream_connection`` is true, the cluster will use a separate
 connection pool for every downstream connection


2?	

2?	0

2?	35
?	
?	?	?	 Extensible load balancing policy configuration.

 Every LB policy defined via this mechanism will be identified via a unique name using reverse
 DNS notation. If the policy needs configuration parameters, it must define a message for its
 own configuration, which will be stored in the config field. The name of the policy will tell
 clients which type of message they should expect to see in the config field.

 Note that there are cases where it is useful to be able to independently select LB policies
 for choosing a locality and for choosing an endpoint within that locality. For example, a
 given deployment may always use the same policy to choose the locality, but for choosing the
 endpoint within the locality, some clusters may use weighted-round-robin, while others may
 use some sort of session-based balancing.

 This can be accomplished via hierarchical LB policies, where the parent LB policy creates a
 child LB policy for each locality. For each request, the parent chooses the locality and then
 delegates to the child policy for that locality to choose the endpoint within the locality.

 To facilitate this, the config message for the top-level LB policy may include a field of
 type LoadBalancingPolicy that specifies the child policy.


?	

?	b

ӈ??	b

?	?	

?	


?	?	2


ӈ??	?	2

	?	

	?	


	?	


	?	


	?	

	?	

	?	

	?	

	?	

	?	


?	.


?	



?	


?	-
F
?	<6 [#extension-category: envoy.load_balancing_policies]


?	 

?	!7

?	:;
?
?	? Each client will iterate over the list in order and stop at the first policy that it
 supports. This provides a mechanism for starting to use new LB policies that are not yet
 supported by all clients.


?	


?	

?	

?	

?	?	

?	!

?	?	/

ӈ??	?	/

?	?	

?	 
f
?	V respect the native ranking of destination ip addresses returned from dns
 resolution


?	

?	

?	

?	

?		


?	

?	

?		


?	?	

?	

?
?	?x Specify the IP address family to attempt connection first in happy
 eyeballs algorithm according to RFC8305#section-4.


?	

?	:

?	=>
?
?	d? Specify the number of addresses of the first_address_family_version being
 attempted for connection before the other address family.


?	

?	 :

?	=>

?	?c


??	@b
T
?	)F If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.


?	

?	$

?	'(
?
?	<? If enabled, associates the interface name of the local address with the upstream connection.
 This can be used by extensions during processing of requests. The association mechanism is
 implementation specific. Defaults to false due to performance concerns.


?	

?	7

?	:;
?
?	0? Configurations for happy eyeballs algorithm.
 Add configs for first_address_family_version and first_address_family_count
 when sorting destination ip addresses.


?	

?	+

?	./

?	?


?	
?
?	? If timeout_budgets is true, the :ref:`timeout budget histograms
 ` will be published for each
 request. These show what percentage of a request's per try and global timeout was used. A value
 of 0 would indicate that none of the timeout was used or that the timeout was infinite. A value
 of 100 would indicate that the request took the entirety of the timeout given to it.


?	

?	

?	
?
?
"? If request_response_sizes is true, then the :ref:`histograms
 `  tracking header and body sizes
 of requests and responses will be published.


?


?


?
 !
?
?
? If true, some stats will be emitted per-endpoint, similar to the stats in admin ``/clusters``
 output.

 This does not currently output correct stats during a hot-restart.

 This is not currently implemented by all stat sinks.

 These stats do not honor filtering or tag extraction rules in :ref:`StatsConfig
 ` (but fixed-value tags are supported). Admin
 endpoint filtering is supported.

 This may not be used at the same time as
 :ref:`load_stats_config `.


?


?


?
bproto3
?x
google/api/http.proto
google.api"y
Http*
rules (2.google.api.HttpRuleRrulesE
fully_decode_reserved_expansion (RfullyDecodeReservedExpansion"?
HttpRule
selector (	Rselector
get (	HRget
put (	HRput
post (	HRpost
delete (	HRdelete
patch (	HRpatch7
custom (2.google.api.CustomHttpPatternHRcustom
body (	Rbody#

response_body (	RresponseBodyE
additional_bindings (2.google.api.HttpRuleRadditionalBindingsB	
pattern";
CustomHttpPattern
kind (	Rkind
path (	RpathBj
com.google.apiB	HttpProtoPZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations??GAPIJ?s
?
?
2? Copyright 2024 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.





	


X
	
X

"
	

"

*
	
*

'
	
'

"
	
$"
?
)? Defines the HTTP configuration for an API service. It contains a list of
 [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
 to one or more HTTP REST API methods.




?
 ? A list of HTTP configuration rules that apply to individual API methods.

 **NOTE:** All service configuration rules follow "last one wins" order.


 


 

 

 
?
(+? When set to true, URL path parameters will be fully URI-decoded except in
 cases of single segment matches in reserved expansion, where "%2F" will be
 left encoded.

 The default behavior is to not decode RFC 6570 reserved characters in multi
 segment matches.


(

(&

()*
?S
???S # gRPC Transcoding

 gRPC Transcoding is a feature for mapping between a gRPC method and one or
 more HTTP REST endpoints. It allows developers to build a single API service
 that supports both gRPC APIs and REST APIs. Many systems, including [Google
 APIs](https://github.com/googleapis/googleapis),
 [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
 Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
 and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
 and use it for large scale production services.

 `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
 how different portions of the gRPC request message are mapped to the URL
 path, URL query parameters, and HTTP request body. It also controls how the
 gRPC response message is mapped to the HTTP response body. `HttpRule` is
 typically specified as an `google.api.http` annotation on the gRPC method.

 Each mapping specifies a URL path template and an HTTP method. The path
 template may refer to one or more fields in the gRPC request message, as long
 as each field is a non-repeated field with a primitive (non-message) type.
 The path template controls how fields of the request message are mapped to
 the URL path.

 Example:

     service Messaging {
       rpc GetMessage(GetMessageRequest) returns (Message) {
         option (google.api.http) = {
             get: "/v1/{name=messages/*}"
         };
       }
     }
     message GetMessageRequest {
       string name = 1; // Mapped to URL path.
     }
     message Message {
       string text = 1; // The resource content.
     }

 This enables an HTTP REST to gRPC mapping as below:

 HTTP | gRPC
 -----|-----
 `GET /v1/messages/123456`  | `GetMessage(name: "messages/123456")`

 Any fields in the request message which are not bound by the path template
 automatically become HTTP query parameters if there is no HTTP request body.
 For example:

     service Messaging {
       rpc GetMessage(GetMessageRequest) returns (Message) {
         option (google.api.http) = {
             get:"/v1/messages/{message_id}"
         };
       }
     }
     message GetMessageRequest {
       message SubMessage {
         string subfield = 1;
       }
       string message_id = 1; // Mapped to URL path.
       int64 revision = 2;    // Mapped to URL query parameter `revision`.
       SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.
     }

 This enables a HTTP JSON to RPC mapping as below:

 HTTP | gRPC
 -----|-----
 `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
 "foo"))`

 Note that fields which are mapped to URL query parameters must have a
 primitive type or a repeated primitive type or a non-repeated message type.
 In the case of a repeated type, the parameter can be repeated in the URL
 as `...?param=A¶m=B`. In the case of a message type, each field of the
 message is mapped to a separate parameter, such as
 `...?foo.a=A&foo.b=B&foo.c=C`.

 For HTTP methods that allow a request body, the `body` field
 specifies the mapping. Consider a REST update method on the
 message resource collection:

     service Messaging {
       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
         option (google.api.http) = {
           patch: "/v1/messages/{message_id}"
           body: "message"
         };
       }
     }
     message UpdateMessageRequest {
       string message_id = 1; // mapped to the URL
       Message message = 2;   // mapped to the body
     }

 The following HTTP JSON to RPC mapping is enabled, where the
 representation of the JSON in the request body is determined by
 protos JSON encoding:

 HTTP | gRPC
 -----|-----
 `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
 "123456" message { text: "Hi!" })`

 The special name `*` can be used in the body mapping to define that
 every field not bound by the path template should be mapped to the
 request body.  This enables the following alternative definition of
 the update method:

     service Messaging {
       rpc UpdateMessage(Message) returns (Message) {
         option (google.api.http) = {
           patch: "/v1/messages/{message_id}"
           body: "*"
         };
       }
     }
     message Message {
       string message_id = 1;
       string text = 2;
     }


 The following HTTP JSON to RPC mapping is enabled:

 HTTP | gRPC
 -----|-----
 `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
 "123456" text: "Hi!")`

 Note that when using `*` in the body mapping, it is not possible to
 have HTTP parameters, as all fields not bound by the path end in
 the body. This makes this option more rarely used in practice when
 defining REST APIs. The common usage of `*` is in custom methods
 which don't use the URL at all for transferring data.

 It is possible to define multiple HTTP methods for one RPC by using
 the `additional_bindings` option. Example:

     service Messaging {
       rpc GetMessage(GetMessageRequest) returns (Message) {
         option (google.api.http) = {
           get: "/v1/messages/{message_id}"
           additional_bindings {
             get: "/v1/users/{user_id}/messages/{message_id}"
           }
         };
       }
     }
     message GetMessageRequest {
       string message_id = 1;
       string user_id = 2;
     }

 This enables the following two alternative HTTP JSON to RPC mappings:

 HTTP | gRPC
 -----|-----
 `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
 "123456")`

 ## Rules for HTTP mapping

 1. Leaf request fields (recursive expansion nested messages in the request
    message) are classified into three categories:
    - Fields referred by the path template. They are passed via the URL path.
    - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They
    are passed via the HTTP
      request body.
    - All other fields are passed via the URL query parameters, and the
      parameter name is the field path in the request message. A repeated
      field can be represented as multiple query parameters under the same
      name.
  2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL
  query parameter, all fields
     are passed via URL path and HTTP request body.
  3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP
  request body, all
     fields are passed via URL path and URL query parameters.

 ### Path template syntax

     Template = "/" Segments [ Verb ] ;
     Segments = Segment { "/" Segment } ;
     Segment  = "*" | "**" | LITERAL | Variable ;
     Variable = "{" FieldPath [ "=" Segments ] "}" ;
     FieldPath = IDENT { "." IDENT } ;
     Verb     = ":" LITERAL ;

 The syntax `*` matches a single URL path segment. The syntax `**` matches
 zero or more URL path segments, which must be the last part of the URL path
 except the `Verb`.

 The syntax `Variable` matches part of the URL path as specified by its
 template. A variable template must not contain other variables. If a variable
 matches a single path segment, its template may be omitted, e.g. `{var}`
 is equivalent to `{var=*}`.

 The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
 contains any reserved character, such characters should be percent-encoded
 before the matching.

 If a variable contains exactly one path segment, such as `"{var}"` or
 `"{var=*}"`, when such a variable is expanded into a URL path on the client
 side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
 server side does the reverse decoding. Such variables show up in the
 [Discovery
 Document](https://developers.google.com/discovery/v1/reference/apis) as
 `{var}`.

 If a variable contains multiple path segments, such as `"{var=foo/*}"`
 or `"{var=**}"`, when such a variable is expanded into a URL path on the
 client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
 The server side does the reverse decoding, except "%2F" and "%2f" are left
 unchanged. Such variables show up in the
 [Discovery
 Document](https://developers.google.com/discovery/v1/reference/apis) as
 `{+var}`.

 ## Using gRPC API Service Configuration

 gRPC API Service Configuration (service config) is a configuration language
 for configuring a gRPC service to become a user-facing product. The
 service config is simply the YAML representation of the `google.api.Service`
 proto message.

 As an alternative to annotating your proto file, you can configure gRPC
 transcoding in your service config YAML files. You do this by specifying a
 `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
 effect as the proto annotation. This can be particularly useful if you
 have a proto that is reused in multiple services. Note that any transcoding
 specified in the service config will override any matching transcoding
 configuration in the proto.

 Example:

     http:
       rules:
         # Selects a gRPC method and applies HttpRule to it.
         - selector: example.v1.Messaging.GetMessage
           get: /v1/messages/{message_id}/{sub.subfield}

 ## Special notes

 When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
 proto to JSON conversion must follow the [proto3
 specification](https://developers.google.com/protocol-buffers/docs/proto3#json).

 While the single segment variable follows the semantics of
 [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
 Expansion, the multi segment variable **does not** follow RFC 6570 Section
 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
 does not expand special characters like `?` and `#`, which would lead
 to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
 for multi segment variables.

 The path variables **must not** refer to any repeated or mapped field,
 because client libraries are not capable of handling such variable expansion.

 The path variables **must not** capture the leading "/" character. The reason
 is that the most common use case "{var}" does not capture the leading "/"
 character. For consistency, all path variables must share the same behavior.

 Repeated message fields must not be mapped to URL query parameters, because
 no client library can support such complicated mapping.

 If an API needs to use a JSON array for request or response body, it can map
 the request or response body to a repeated field. However, some gRPC
 Transcoding implementations may not support this feature.


?
?
?? Selects a method to which this rule applies.

 Refer to [selector][google.api.DocumentationRule.selector] for syntax
 details.


?

?	

?
?
??? Determines the URL pattern is matched by this rules. This pattern can be
 used with any of the {get|put|post|delete|patch} methods. A custom method
 can be defined using the 'custom' field.


?
\
?N Maps to HTTP GET. Used for listing and getting information about
 resources.


?


?

?
@
?2 Maps to HTTP PUT. Used for replacing a resource.


?


?

?
X
?J Maps to HTTP POST. Used for creating a resource or performing an action.


?


?

?
B
?4 Maps to HTTP DELETE. Used for deleting a resource.


?


?

?
A
?3 Maps to HTTP PATCH. Used for updating a resource.


?


?

?
?
?!? The custom pattern is used for specifying an HTTP method that is not
 included in the `pattern` field, such as HEAD, or "*" to leave the
 HTTP method unspecified for this rule. The wild-card rule is useful
 for services that provide content to Web (HTML) clients.


?

?

? 
?
?? The name of the request field whose value is mapped to the HTTP request
 body, or `*` for mapping all request fields not captured by the path
 pattern to the HTTP body, or omitted for not having any HTTP request body.

 NOTE: the referred field must be present at the top-level of the request
 message type.


?

?	

?
?
?? Optional. The name of the response field whose value is mapped to the HTTP
 response body. When omitted, the entire response message will be used
 as the HTTP response body.

 NOTE: The referred field must be present at the top-level of the response
 message type.


?

?	

?
?
	?-? Additional HTTP bindings for the selector. Nested bindings must
 not contain an `additional_bindings` field themselves (that is,
 the nesting may only be one level deep).


	?


	?

	?'

	?*,
G
??9 A custom pattern is used for defining custom HTTP verb.


?
2
?$ The name of this custom HTTP verb.


?

?	

?
5
?' The path matched by this custom verb.


?

?	

?bproto3
?
google/api/annotations.proto
google.apigoogle/api/http.proto google/protobuf/descriptor.proto:K
http.google.protobuf.MethodOptions?ʼ" (2.google.api.HttpRuleRhttpBn
com.google.apiBAnnotationsProtoPZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations?GAPIJ?

?
2? Copyright 2024 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.



	

	
*

X
	
X

"
	

"

1
	
1

'
	
'

"
	
$"
	


 See `HttpRule`.



$









bproto3
?
google/api/launch_stage.proto
google.api*?
LaunchStage
LAUNCH_STAGE_UNSPECIFIED

UNIMPLEMENTED
	PRELAUNCH
EARLY_ACCESS	
ALPHA
BETA
GA

DEPRECATEDBZ
com.google.apiBLaunchStageProtoPZ-google.golang.org/genproto/googleapis/api;api?GAPIJ?
G
?
2? Copyright 2024 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.




D
	
D

"
	

"

1
	
1

'
	
'

"
	
$"
?
Gv The launch stage as defined by [Google Cloud Platform
 Launch Stages](https://cloud.google.com/terms/launch-stages).




-
  Do not use this default value.





H
; The feature is not yet implemented. Users can not use it.





X
"K Prelaunch features are hidden from users and are only visible internally.


"

"
?
)? Early Access features are limited to a closed group of testers. To use
 these features, you must sign up in advance and sign a Trusted Tester
 agreement (which includes confidentiality provisions). These features may
 be unstable, changed in backward-incompatible ways, and are not
 guaranteed to be released.


)

)
?
4? Alpha is a limited availability test for releases before they are cleared
 for widespread use. By Alpha, all significant design issues are resolved
 and we are in the process of verifying functionality. Alpha customers
 need to apply for access, agree to applicable terms, and have their
 projects allowlisted. Alpha releases don't have to be feature complete,
 no SLAs are provided, and there are no technical support obligations, but
 they will be far enough along that customers can actually use them in
 test environments or for limited-use tests -- just like they would in
 normal production cases.


4

4

?
;? Beta is the point at which we are ready to open a release for any
 customer to use. There are no SLA or technical support obligations in a
 Beta release. Products will be complete from a feature perspective, but
 may have some open outstanding issues. Beta releases are suitable for
 limited production use cases.


;

;	

x
?	k GA features are open to all developers and are considered stable and
 fully qualified for production use.


?

?
?
F? Deprecated features are scheduled to be shut down and removed. For more
 information, see the "Deprecation Policy" section of our [Terms of
 Service](https://cloud.google.com/terms/)
 and the [Google Cloud Platform Subject to the Deprecation
 Policy](https://cloud.google.com/terms/deprecation) documentation.


F

Fbproto3
??
google/api/client.proto
google.apigoogle/api/launch_stage.proto google/protobuf/descriptor.protogoogle/protobuf/duration.proto"?
CommonLanguageSettings0
reference_docs_uri (	BRreferenceDocsUriH
destinations (2$.google.api.ClientLibraryDestinationRdestinations"?
ClientLibrarySettings
version (	Rversion:
launch_stage (2.google.api.LaunchStageRlaunchStage,
rest_numeric_enums (RrestNumericEnums=

java_settings (2.google.api.JavaSettingsRjavaSettings:
cpp_settings (2.google.api.CppSettingsRcppSettings:
php_settings (2.google.api.PhpSettingsRphpSettingsC
python_settings (2.google.api.PythonSettingsRpythonSettings=

node_settings (2.google.api.NodeSettingsRnodeSettingsC
dotnet_settings (2.google.api.DotnetSettingsRdotnetSettings=

ruby_settings (2.google.api.RubySettingsRrubySettings7
go_settings (2.google.api.GoSettingsR
goSettings"?

PublishingC
method_settings (2.google.api.MethodSettingsRmethodSettings"

new_issue_urie (	RnewIssueUri+
documentation_urif (	RdocumentationUri$
api_short_nameg (	RapiShortName!
github_labelh (	RgithubLabel4
codeowner_github_teamsi (	RcodeownerGithubTeams$
doc_tag_prefixj (	RdocTagPrefixI
organizationk (2%.google.api.ClientLibraryOrganizationRorganizationL
library_settingsm (2!.google.api.ClientLibrarySettingsRlibrarySettingsI
!proto_reference_documentation_urin (	RprotoReferenceDocumentationUriG
 rest_reference_documentation_urio (	RrestReferenceDocumentationUri"?
JavaSettings'
library_package (	RlibraryPackage_
service_class_names (2/.google.api.JavaSettings.ServiceClassNamesEntryRserviceClassNames:
common (2".google.api.CommonLanguageSettingsRcommonD
ServiceClassNamesEntry
key (	Rkey
value (	Rvalue:8"I
CppSettings:
common (2".google.api.CommonLanguageSettingsRcommon"I
PhpSettings:
common (2".google.api.CommonLanguageSettingsRcommon"L
PythonSettings:
common (2".google.api.CommonLanguageSettingsRcommon"J
NodeSettings:
common (2".google.api.CommonLanguageSettingsRcommon"?
DotnetSettings:
common (2".google.api.CommonLanguageSettingsRcommonZ
renamed_services (2/.google.api.DotnetSettings.RenamedServicesEntryRrenamedServices]
renamed_resources (20.google.api.DotnetSettings.RenamedResourcesEntryRrenamedResources+
ignored_resources (	RignoredResources8
forced_namespace_aliases (	RforcedNamespaceAliases5
handwritten_signatures (	RhandwrittenSignaturesB
RenamedServicesEntry
key (	Rkey
value (	Rvalue:8C
RenamedResourcesEntry
key (	Rkey
value (	Rvalue:8"J
RubySettings:
common (2".google.api.CommonLanguageSettingsRcommon"H

GoSettings:
common (2".google.api.CommonLanguageSettingsRcommon"?
MethodSettings
selector (	RselectorI
long_running (2&.google.api.MethodSettings.LongRunningRlongRunning2
auto_populated_fields (	RautoPopulatedFields?
LongRunningG
initial_poll_delay (2.google.protobuf.DurationRinitialPollDelay2
poll_delay_multiplier (RpollDelayMultiplier?
max_poll_delay (2.google.protobuf.DurationRmaxPollDelayG
total_poll_timeout (2.google.protobuf.DurationRtotalPollTimeout*?
ClientLibraryOrganization+
'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED	
CLOUD
ADS

PHOTOS
STREET_VIEW
SHOPPING
GEO

GENERATIVE_AI*g
ClientLibraryDestination*
&CLIENT_LIBRARY_DESTINATION_UNSPECIFIED

GITHUB

PACKAGE_MANAGER:J
method_signature.google.protobuf.MethodOptions? (	RmethodSignature:C
default_host.google.protobuf.ServiceOptions? (	RdefaultHost:C
oauth_scopes.google.protobuf.ServiceOptions? (	RoauthScopes:D
api_version.google.protobuf.ServiceOptions???? (	R
apiVersionBi
com.google.apiBClientProtoPZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations?GAPIJ?u
?
?
2? Copyright 2024 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.



	
'
	
*
	
(

X
	
X

"
	

"

,
	
,

'
	
'

"
	
$"
	
A
?
@*?
 A definition of a client library method signature.

 In client libraries, each proto RPC corresponds to one or more methods
 which the end user is able to call, and calls the underlying RPC.
 Normally, this method receives a single argument (a struct or instance
 corresponding to the RPC request object). Defining this field will
 add one or more overloads providing flattened or simpler method signatures
 in some languages.

 The fields on the method signature are provided as a comma-separated
 string.

 For example, the proto RPC and annotation:

   rpc CreateSubscription(CreateSubscriptionRequest)
       returns (Subscription) {
     option (google.api.method_signature) = "name,topic";
   }

 Would add the following Java overload (in addition to the method accepting
 the request object):

   public final Subscription createSubscription(String name, String topic)

 The following backwards-compatibility guidelines apply:

   * Adding this annotation to an unannotated method is backwards
     compatible.
   * Adding this annotation to a method which already has existing
     method signature annotations is backwards compatible if and only if
     the new method signature annotation is last in the sequence.
   * Modifying or removing an existing method signature annotation is
     a breaking change.
   * Re-ordering existing method signature annotations is a breaking
     change.



$


@



@


@"


@%)
	
Ct
?
M? The hostname for this service.
 This should be specified with no prefix or protocol.

 Example:

   service Foo {
     option (google.api.default_host) = "foo.googleapi.com";
     ...
   }



C%


M


M	


M
?
c? OAuth scopes needed for the client.

 Example:

   service Foo {
     option (google.api.oauth_scopes) = \
       "https://www.googleapis.com/auth/cloud-platform";
     ...
   }

 If there is more than one scope, use a comma-separated string:

 Example:

   service Foo {
     option (google.api.oauth_scopes) = \
       "https://www.googleapis.com/auth/cloud-platform,"
       "https://www.googleapis.com/auth/monitoring";
     ...
   }



C%


c


c	


c
?
s!? The API version of this service, which should be sent by version-aware
 clients to the service. This allows services to abide by the schema and
 behavior of the service at the time this API version was deployed.
 The format of the API version must be treated as opaque by clients.
 Services may use a format with an apparent structure, but clients must
 not rely on this to determine components within an API version, or attempt
 to construct other valid API versions. Note that this is for upcoming
 functionality and may not be implemented for all services.

 Example:

   service Foo {
     option (google.api.api_version) = "v1_20230821_preview";
   }



C%


s


s	


s 
6
w~* Required information for every language.



w
?
z4? Link to automatically generated reference documentation.  Example:
 https://cloud.google.com/nodejs/docs/reference/asset/latest


z

z	

z

z 3

z!2
X
}5K The destination where API teams want this client library to be published.


}


}#

}$0

}34
H
??: Details about how and where to publish client libraries.


?
?
?? Version of the API to apply these settings to. This is the full protobuf
 package for the API, ending in the version element.
 Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".


?

?	

?
8
?* Launch stage of this version of the API.


?

?

?
p
?b When using transport=rest, the client request will encode enums as
 numbers rather than strings.


?

?

?
Q
?"C Settings for legacy Java features, supported in the Service YAML.


?

?

?!
2
? $ Settings for C++ client libraries.


?

?

?
2
? $ Settings for PHP client libraries.


?

?

?
5
?&' Settings for Python client libraries.


?

? 

?#%
3
?"% Settings for Node client libraries.


?

?

?!
3
?&% Settings for .NET client libraries.


?

? 

?#%
3
	?"% Settings for Ruby client libraries.


	?

	?

	?!
1

?# Settings for Go client libraries.



?


?



?
?
??? This message configures the settings for publishing [Google Cloud Client
 libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)
 generated from the service config.


?
z
?.l A list of API method settings, e.g. the behavior for methods that use the
 long-running operation pattern.


?


?

?)

?,-
?
?? Link to a *public* URI where users can report issues.  Example:
 https://issuetracker.google.com/issues/new?component=190865&template=1161103


?

?	

?
l
?!^ Link to product home page.  Example:
 https://cloud.google.com/asset-inventory/docs/overview


?

?	

? 
?
?? Used as a tracking tag when collecting data about the APIs developer
 relations artifacts like docs, packages delivered to package managers,
 etc.  Example: "speech".


?

?	

?
V
?H GitHub label to apply to issues and pull requests opened for this API.


?

?	

?
?
?/? GitHub teams to be added to CODEOWNERS in the directory in GitHub
 containing source code for the client libraries for this API.


?


?

?(

?+.
e
?W A prefix used in sample code when demarking regions to be included in
 documentation.


?

?	

?
?
?/1 For whom the client library is being published.


?

?(

?+.
?
?8? Client library settings.  If the same version string appears multiple
 times in this list, then the last one wins.  Settings from earlier
 settings with the same version string are discarded.


?


? 

?!1

?47
?
	?1t Optional link to proto reference documentation.  Example:
 https://cloud.google.com/pubsub/lite/docs/reference/rpc


	?

	?	*

	?-0
?

?0t Optional link to REST reference documentation.  Example:
 https://cloud.google.com/pubsub/lite/docs/reference/rest



?


?	)


?,/
3
??% Settings for Java client libraries.


?
?
?? The package name to use in Java. Clobbers the java_package option
 set in the protobuf. This should be used **only** by APIs
 who have already set the language_settings.java.package_name" field
 in gapic.yaml. API teams should use the protobuf java_package option
 where possible.

 Example of a YAML configuration::

  publishing:
    java_settings:
      library_package: com.google.cloud.pubsub.v1


?

?	

?
?
?.? Configure the Java class name to use instead of the service's for its
 corresponding generated GAPIC client. Keys are fully-qualified
 service names as they appear in the protobuf (including the full
 the language_settings.java.interface_names" field in gapic.yaml. API
 teams should otherwise use the service name as it appears in the
 protobuf.

 Example of a YAML configuration::

  publishing:
    java_settings:
      service_class_names:
        - google.pubsub.v1.Publisher: TopicAdmin
        - google.pubsub.v1.Subscriber: SubscriptionAdmin


?

?)

?,-

?$ Some settings.


?

?

?"#
2
??$ Settings for C++ client libraries.


?

?$ Some settings.


?

?

?"#
2
??$ Settings for Php client libraries.


?

?$ Some settings.


?

?

?"#
5
??' Settings for Python client libraries.


?

?$ Some settings.


?

?

?"#
3
??% Settings for Node client libraries.


?

?$ Some settings.


?

?

?"#
5
??' Settings for Dotnet client libraries.


?

?$ Some settings.


?

?

?"#
?
?+? Map from original service names to renamed versions.
 This is used when the default generated types
 would cause a naming conflict. (Neither name is
 fully-qualified.)
 Example: Subscriber to SubscriberServiceApi.


?

?&

?)*
?
?,? Map from full resource types to the effective short name
 for the resource. This is used when otherwise resource
 named from different services would cause naming collisions.
 Example entry:
 "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"


?

?'

?*+
?
?(? List of full resource types to ignore during generation.
 This is typically used for API-specific Location resources,
 which should be handled by the generator as if they were actually
 the common Location resources.
 Example entry: "documentai.googleapis.com/Location"


?


?

?#

?&'
}
?/o Namespaces which must be aliased in snippets due to
 a known (but non-generator-predictable) naming collision


?


?

?*

?-.
?
?-? Method signatures (in the form "service.method(signature)")
 which are provided separately, so shouldn't be generated.
 Snippets *calling* these methods are still generated, however.


?


?

?(

?+,
3
	??% Settings for Ruby client libraries.


	?

	?$ Some settings.


	?

	?

	?"#
1

??# Settings for Go client libraries.



?


?$ Some settings.



?


?


?"#
C
??5 Describes the generator configuration for a method.


?
?
??? Describes settings to use when generating API methods that use the
 long-running operation pattern.
 All default values below are from those used in the client library
 generators (e.g.
 [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).


?

k
?4[ Initial delay after which the first poll request will be made.
 Default value: 5 seconds.


?

?/

?23
?
?$x Multiplier to gradually increase delay between subsequent polls until it
 reaches max_poll_delay.
 Default value: 1.5.


?	

?


?"#
`
?0P Maximum time between two subsequent poll requests.
 Default value: 45 seconds.


?

?+

?./
C
?43 Total polling timeout.
 Default value: 5 minutes.


?

?/

?23
?
?? The fully qualified name of the method, for which the options below apply.
 This is used to find the method to apply the options.


?

?	

?
?
?? Describes settings to use for long-running operations when generating
 API methods for RPCs. Complements RPCs that use the annotations in
 google/longrunning/operations.proto.

 Example of a YAML configuration::

  publishing:
    method_settings:
      - selector: google.cloud.speech.v2.Speech.BatchRecognize
        long_running:
          initial_poll_delay:
            seconds: 60 # 1 minute
          poll_delay_multiplier: 1.5
          max_poll_delay:
            seconds: 360 # 6 minutes
          total_poll_timeout:
             seconds: 54000 # 90 minutes


?

?

?
?
?,? List of top-level fields of the request message, that should be
 automatically populated by the client libraries based on their
 (google.api.field_info).format. Currently supported format: UUID4.

 Example of a YAML configuration:

  publishing:
    method_settings:
      - selector: google.example.v1.ExampleService.CreateExample
        auto_populated_fields:
        - request_id


?


?

?'

?*+
?
??? The organization for which the client libraries are being published.
 Affects the url where generated docs are published, etc.


?

?.
 Not useful.


?)

?,-
*
? Google Cloud Platform Org.


?

?

&
?
 Ads (Advertising) Org.


?

?	

?

 Photos Org.


?

?
 
? Street View Org.


?

?

? Shopping Org.


?


?


?

 Geo Org.


?

?	
F
?8 Generative AI - https://developers.generativeai.google


?

?
>
??0 To where should client libraries be published?


?
^
?-P Client libraries will neither be generated nor published to package
 managers.


?(

?+,
}
?o Generate the client library in a repo under github.com/googleapis,
 but don't publish it to package managers.


?

?
U
?G Publish the library to package managers like nuget.org and npmjs.com.


?

?bproto3
?#
google/api/field_behavior.proto
google.api google/protobuf/descriptor.proto*?

FieldBehavior
FIELD_BEHAVIOR_UNSPECIFIED
OPTIONAL
REQUIRED
OUTPUT_ONLY

INPUT_ONLY
	IMMUTABLE
UNORDERED_LIST
NON_EMPTY_DEFAULT

IDENTIFIER:d
field_behavior.google.protobuf.FieldOptions? (2.google.api.FieldBehaviorBR
fieldBehaviorBp
com.google.apiBFieldBehaviorProtoPZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations?GAPIJ?
g
?
2? Copyright 2024 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.



	
*

X
	
X

"
	

"

3
	
3

'
	
'

"
	
$"
	
(
?
'K? A designation of a specific field behavior (required, output only, etc.)
 in protobuf messages.

 Examples:

   string name = 1 [(google.api.field_behavior) = REQUIRED];
   State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
   google.protobuf.Duration ttl = 1
     [(google.api.field_behavior) = INPUT_ONLY];
   google.protobuf.Timestamp expire_time = 1
     [(google.api.field_behavior) = OUTPUT_ONLY,
      (google.api.field_behavior) = IMMUTABLE];



#


'



'#


'$2


'59


':J

';I
?
0g? An indicator of the behavior of a given field (for example, that a field
 is required in requests, or given as output but ignored as input).
 This **does not** change the behavior in protocol buffers itself; it only
 denotes the behavior and may affect how API tooling handles the field.

 Note: This enum **may** receive new values in the future.



0
?
2!2 Conventional default for enums. Do not use this.


2

2 
?
7? Specifically denotes a field as optional.
 While all fields in protocol buffers are optional, this may be specified
 for emphasis if appropriate.


7


7

?
<? Denotes a field as required.
 This indicates that the field **must** be provided as part of the request,
 and failure to do so will cause an error (usually `INVALID_ARGUMENT`).


<


<

?
B? Denotes a field as output only.
 This indicates that the field is provided in responses, but including the
 field in a request does nothing (the server *must* ignore it and
 *must not* throw an error as a result of the field's presence).


B

B
?
G? Denotes a field as input only.
 This indicates that the field is provided in requests, and the
 corresponding field is not included in output.


G

G
?
L? Denotes a field as immutable.
 This indicates that the field may be set once in a request to create a
 resource, but may not be changed thereafter.


L

L
?
R? Denotes that a (repeated) field is an unordered list.
 This indicates that the service may provide the elements of the list
 in any arbitrary  order, rather than the order the user originally
 provided. Additionally, the list's order may or may not be stable.


R

R
?
X? Denotes that this field returns a non-empty default value if not set.
 This indicates that if the user provides the empty value in a request,
 a non-empty value will be returned. The user will not be aware of what
 non-empty value to expect.


X

X
?
f? Denotes that the field in a resource (a message annotated with
 google.api.resource) is used in the resource name to uniquely identify the
 resource. For AIP-compliant APIs, this should only be applied to the
 `name` field on the resource.

 This behavior should not be applied to references to other resources within
 the message.

 The identifier field of resources often have different field behavior
 depending on the request it is embedded in (e.g. for Create methods name
 is optional and unused, while for Update methods it is required). Instead
 of method-specific annotations, only `IDENTIFIER` is required.


f

fbproto3
?
-centraldogma/xds/cluster/v1/xds_cluster.protocentraldogma.xds.cluster.v1%envoy/config/cluster/v3/cluster.protogoogle/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"?
CreateClusterRequest
parent (	B?ARparent"

cluster_id (	B?AR	clusterId?
cluster (2 .envoy.config.cluster.v3.ClusterB?ARcluster"W
UpdateClusterRequest?
cluster (2 .envoy.config.cluster.v3.ClusterB?ARcluster"/
DeleteClusterRequest
name (	B?ARname2?
XdsClusterService?

CreateCluster1.centraldogma.xds.cluster.v1.CreateClusterRequest .envoy.config.cluster.v3.Cluster"7???1"&/api/v1/xds/{parent=groups/*}/clusters:cluster?

UpdateCluster1.centraldogma.xds.cluster.v1.UpdateClusterRequest .envoy.config.cluster.v3.Cluster"@???:2//api/v1/xds/{cluster.name=groups/*/clusters/**}:cluster?

DeleteCluster1.centraldogma.xds.cluster.v1.DeleteClusterRequest.google.protobuf.Empty"/???)*'/api/v1/xds/{name=groups/*/clusters/**}B=
(com.linecorp.centraldogma.xds.cluster.v1BXdsClusterProtoPJ?

Y
?

? Copyright 2024 LINE Corporation

 LINE Corporation licenses this file to you under the Apache License,
 version 2.0 (the "License"); you may not use this file except in compliance
 with the License. You may obtain a copy of the License at:

   https://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 License for the specific language governing permissions and limitations
 under the License.


$

"
	

"

0
	
0

A
	
A
	
/
	
&
	
!
	
)
	
%
G
5; An XdsClusterService provides methods to manage clusters.




&
 % Creates a new cluster.


 

 (

 3R

!$

	?ʼ"!$
,
(- Updates an existing cluster.


(

((

(3R

),

	?ʼ"),
"
04 Deletes a cluster.


0

0(

03H

13

	?ʼ"13


7B


7
^
:=Q The parent resource where this cluster will be created.
 Format: groups/{group}


:

:	

:

:<

?:;
?
@A? The ID to use for the cluster, which will become the final component of
 the cluster's resource name.

 Valid pattern is "^[a-z]([a-z0-9-/]*[a-z0-9])?$"


@

@	

@

@@

?@?

AW

A!

A")

A,-

A.V

?A/U


DP


D

GWr The cluster's `name` field is used to identify the cluster to update.
 Format: groups/{group}/clusters/{cluster}


G!

G")

G,-

G.V

?G/U


RY


R
8
T=+ Format: groups/{group}/clusters/{cluster}


T

T	

T

T<

?T;bproto3
?
/centraldogma/xds/endpoint/v1/xds_endpoint.protocentraldogma.xds.endpoint.v1'envoy/config/endpoint/v3/endpoint.protogoogle/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"?
CreateEndpointRequest
parent (	B?ARparent$
endpoint_id (	B?AR
endpointIdP
endpoint (2/.envoy.config.endpoint.v3.ClusterLoadAssignmentB?ARendpoint"?
UpdateEndpointRequest(

endpoint_name (	B?ARendpointNameP
endpoint (2/.envoy.config.endpoint.v3.ClusterLoadAssignmentB?ARendpoint"0
DeleteEndpointRequest
name (	B?ARname2?
XdsEndpointService?
CreateEndpoint3.centraldogma.xds.endpoint.v1.CreateEndpointRequest/.envoy.config.endpoint.v3.ClusterLoadAssignment"9???3"'/api/v1/xds/{parent=groups/*}/endpoints:endpoint?
UpdateEndpoint3.centraldogma.xds.endpoint.v1.UpdateEndpointRequest/.envoy.config.endpoint.v3.ClusterLoadAssignment"C???=21/api/v1/xds/{endpoint_name=groups/*/endpoints/**}:endpoint?
DeleteEndpoint3.centraldogma.xds.endpoint.v1.DeleteEndpointRequest.google.protobuf.Empty"0???**(/api/v1/xds/{name=groups/*/endpoints/**}B?
)com.linecorp.centraldogma.xds.endpoint.v1BXdsEndpointProtoPJ?

e
?

? Copyright 2024 LINE Corporation

 LINE Corporation licenses this file to you under the Apache License,
 version 2.0 (the "License"); you may not use this file except in compliance
 with the License. You may obtain a copy of the License at:

   https://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 License for the specific language governing permissions and limitations
 under the License.


%

"
	

"

1
	
1

B
	
B
	
1
	
&
	
!
	
)
	
%
I
@= An XdsEndpointService provides methods to manage endpoints.




'
 % Creates a new endpoint.


 

 *

 5c

!$

	?ʼ"!$
-
(. Updates an existing endpoint.


(

(*

(5c

)-

	?ʼ")-
#
15 Deletes a endpoint.


1

1*

15J

24

	?ʼ"24


BM


B
_
E=R The parent resource where this endpoint will be created.
 Format: groups/{group}


E

E	

E

E<

?E;
?
KB? The ID to use for the endpoint, which will become the final component of
 the endpoint's resource name.

 Valid pattern is "^[a-z]([a-z0-9-/]*[a-z0-9])?$"


K

K	

K

KA

?K@

Lg

L0

L19

L<=

L>f

?L?e


O\


O
:
QD- Format: groups/{group}/endpoints/{endpoint}


Q

Q	

Q

QC

?QB

Sg

S0

S19

S<=

S>f

?S?e


^e


^
:
`=- Format: groups/{group}/endpoints/{endpoint}


`

`	

`

`<

?`;bproto3
?
)centraldogma/xds/group/v1/xds_group.protocentraldogma.xds.group.v1google/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"q
CreateGroupRequest
group_id (	B?ARgroupId;
group (2 .centraldogma.xds.group.v1.GroupB?ARgroup"-
DeleteGroupRequest
name (	B?ARname" 
Group
name (	B?ARname2?
XdsGroupService?
CreateGroup-.centraldogma.xds.group.v1.CreateGroupRequest .centraldogma.xds.group.v1.Group"!???"/api/v1/xds/groups:groupy
DeleteGroup-.centraldogma.xds.group.v1.DeleteGroupRequest.google.protobuf.Empty"#???*/api/v1/xds/{name=groups/*}B9
&com.linecorp.centraldogma.xds.group.v1B
XdsGroupProtoPJ?

>
?

? Copyright 2024 LINE Corporation

 LINE Corporation licenses this file to you under the Apache License,
 version 2.0 (the "License"); you may not use this file except in compliance
 with the License. You may obtain a copy of the License at:

   https://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 License for the specific language governing permissions and limitations
 under the License.


"

"
	

"

.
	
.

?
	
?
	
&
	
!
	
)
	
%
C
+7 An XdsGroupService provides methods to manage groups.




$
# Creates a new group.




$

/4

"

	?ʼ""
!
&* Deletes an group.


&

&$

&/D

')

	?ʼ"')


-0


-

.?

.

.	

.

.>

?.=

/;

/

/

/

/:

?/9


29


2
%
4= Format: groups/{group}


4

4	

4

4<

?4;


;>


;
%
== Format: groups/{group}


=

=	

=

=<

?=;bproto3
?!
,centraldogma/xds/k8s/v1/xds_kubernetes.protocentraldogma.xds.k8s.v1google/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"?
#CreateServiceEndpointWatcherRequest
parent (	B?ARparent"

watcher_id (	B?AR	watcherIdN
watcher (2/.centraldogma.xds.k8s.v1.ServiceEndpointWatcherB?ARwatcher"u
#UpdateServiceEndpointWatcherRequestN
watcher (2/.centraldogma.xds.k8s.v1.ServiceEndpointWatcherB?ARwatcher">
#DeleteServiceEndpointWatcherRequest
name (	B?ARname"?
KubernetesConfig/
control_plane_url (	B?ARcontrolPlaneUrl!
	namespace (	B?AR	namespace$
oauth_token (	B?AR
oauthToken$
trust_certs (B?AR
trustCerts"?
ServiceEndpointWatcher
name (	B?ARname&
cluster_name (	B?ARclusterName&
service_name (	B?ARserviceName 
	port_name (	B?ARportName[
kubernetes_config (2).centraldogma.xds.k8s.v1.KubernetesConfigB?ARkubernetesConfig2?
XdsKubernetesService?
CreateServiceEndpointWatcher<.centraldogma.xds.k8s.v1.CreateServiceEndpointWatcherRequest/.centraldogma.xds.k8s.v1.ServiceEndpointWatcher"M?Aproject,watcher???5"*/api/v1/xds/{parent=groups/*}/k8s/watchers:watcher?
UpdateServiceEndpointWatcher<.centraldogma.xds.k8s.v1.UpdateServiceEndpointWatcherRequest/.centraldogma.xds.k8s.v1.ServiceEndpointWatcher"D???>23/api/v1/xds/{watcher.name=groups/*/k8s/watchers/**}:watcher?
DeleteServiceEndpointWatcher<.centraldogma.xds.k8s.v1.DeleteServiceEndpointWatcherRequest.google.protobuf.Empty"3???-*+/api/v1/xds/{name=groups/*/k8s/watchers/**}B<
$com.linecorp.centraldogma.xds.k8s.v1BXdsKubernetesProtoPJ?

W
?

? Copyright 2024 LINE Corporation

 LINE Corporation licenses this file to you under the Apache License,
 version 2.0 (the "License"); you may not use this file except in compliance
 with the License. You may obtain a copy of the License at:

   https://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 License for the specific language governing permissions and limitations
 under the License.


 

"
	

"

3
	
3

=
	
=
	
&
	
!
	
)
	
%


0




"

"

#F

Qg

 

	?ʼ" 

!=

?!=

$)

$"

$#F

$Qg

%(

	?ʼ"%(

+/

+"

+#F

+Qf

,.

	?ʼ",.


29


2+
^
5=Q The parent resource where this watcher will be created.
 Format: groups/{group}


5

5	

5

5<

?5;
?
7A2 Valid pattern is "^[a-z]([a-z0-9-/]*[a-z0-9])?$"


7

7	

7

7@

?7?

8N

8

8 

8#$

8%M

?8&L


;B


;+

<N

<

< 

<#$

<%M

?<&L


DF


D+

E=

E

E	

E

E<

?E;


HM


H

IH

I

I	

I

IG

?I F

J@

J

J	

J

J?

?J>

KB

K

K	

K

KA

?K@

L@

L

L

L

L?

?L>


OW


O
b
R=U The resource name of the watcher.
 Format: groups/{group}/k8s/watchers/{watcher}_id


R

R	

R

R<

?R;

SF

S

S	

S

SE

?SD

TC

T

T	

T

TB

?TA

U@

U

U	

U

U?

?U>

VR

V

V$

V'(

V)Q

?V*Pbproto3
?
)envoy/config/core/v3/proxy_protocol.protoenvoy.config.core.v3udpa/annotations/status.protovalidate/validate.proto"?
ProxyProtocolPassThroughTLVsc

match_type (2D.envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchTypeR	matchType(
tlv_type (
B
?B
?"*?RtlvType"1
PassTLVsMatchType
INCLUDE_ALL
INCLUDE"?
ProxyProtocolConfigK
version (21.envoy.config.core.v3.ProxyProtocolConfig.VersionRversion^
pass_through_tlvs (22.envoy.config.core.v3.ProxyProtocolPassThroughTLVsRpassThroughTlvs"
Version
V1
V2B?
"io.envoyproxy.envoy.config.core.v3BProxyProtocolProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?
1




	
'
	
!

;
	
;

3
	
3

	"
	

	"


Y
	

Y

F

???jF
/
 2# [#protodoc-title: Proxy protocol]



$





 Pass all TLVs.





8
) Pass specific TLVs defined in tlv_type.





?
#? The strategy to pass through TLVs. Default is INCLUDE_ALL.
 If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field.






!"
?
X? The TLV types that are applied based on match_type.
 TLV type is defined as uint8_t in proxy protocol. See `the spec
 `_ for details.











W

? V


"1


"

#)

#
A
%2 PROXY protocol version 1. Human readable format.


%

%	

9
(* PROXY protocol version 2. Binary format.


(

(	

}
,p The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details


,	

,


,
?
05? This config controls which TLVs can be passed to upstream if it is Proxy Protocol
 V2 header. If there is no setting for this field, no TLVs will be passed through.


0

00

034bproto3
?	
"envoy/type/matcher/v3/number.protoenvoy.type.matcher.v3envoy/type/v3/range.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?

DoubleMatcher2
range (2.envoy.type.v3.DoubleRangeHRrange
exact (HRexact:'?ň"
 envoy.type.matcher.DoubleMatcherB

match_pattern?BB?
#io.envoyproxy.envoy.type.matcher.v3BNumberProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3????J?
 




	
#
	
'
	
+
	
!


<
	

<

,
	
,

"
	

"


]
	

]

F

???jF
]
 , Specifies the way to match a double value.
2# [#protodoc-title: Number matcher]






b

ӈ?b





&

?&
?
"? If specified, the input double value must be in the range specified here.
 Note: The range is using half-open interval semantics [start, end).






 !
^
Q If specified, the input double value must be equal to the value specified here.







bproto3
?
!envoy/type/matcher/v3/value.protoenvoy.type.matcher.v3"envoy/type/matcher/v3/number.proto"envoy/type/matcher/v3/string.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
ValueMatcherN

null_match (2-.envoy.type.matcher.v3.ValueMatcher.NullMatchHR	nullMatchI
double_match (2$.envoy.type.matcher.v3.DoubleMatcherHRdoubleMatchI
string_match (2$.envoy.type.matcher.v3.StringMatcherHRstringMatch

bool_match (HR	boolMatch%

present_match (HRpresentMatchC

list_match (2".envoy.type.matcher.v3.ListMatcherHR	listMatch=
or_match (2 .envoy.type.matcher.v3.OrMatcherHRorMatch=
	NullMatch:0?ň+
)envoy.type.matcher.ValueMatcher.NullMatch:&?ň!
envoy.type.matcher.ValueMatcherB

match_pattern?B"?
ListMatcher<
one_of (2#.envoy.type.matcher.v3.ValueMatcherHRoneOf:%?ň 
envoy.type.matcher.ListMatcherB

match_pattern?B"a
	OrMatcherT
value_matchers (2#.envoy.type.matcher.v3.ValueMatcherB?B?R
valueMatchersB?
#io.envoyproxy.envoy.type.matcher.v3B
ValueProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3????J?
O




	
,
	
,
	
'
	
+
	
	!

<
	
<

+
	
+


"
	


"

]
	
]

F

???jF
?
>? Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported.
 StructValue is not supported and is always not matched.
 [#next-free-field: 8]
2" [#protodoc-title: Value matcher]






a

ӈ?a
F
8 NullMatch is an empty message to specify a null value.





4


ӈ?4
/
 =! Specifies how to match a value.


 

!&

?!&
[
$N If specified, a match occurs if and only if the target value is a NullValue.


$

$

$
|
(#o If specified, a match occurs if and only if the target value is a double value and is
 matched to this field.


(

(

(!"
|
,#o If specified, a match occurs if and only if the target value is a string value and is
 matched to this field.


,

,

,!"
x
0k If specified, a match occurs if and only if the target value is a bool value and is equal
 to this field.


0

0	

0
?
5? If specified, value match will be performed based on whether the path is referring to a
 valid primitive value in the metadata. If the path is referring to a non-primitive value,
 the result is always not matched.


5

5	

5
z
9m If specified, a match occurs if and only if the target value is a list value and
 is matched to this field.


9

9

9
q
<d If specified, a match occurs if and only if any of the alternatives in the match accept the value.


<

<

<
6
AJ* Specifies the way to match a list value.



A


B`

ӈ?B`

DI

D

E&

?E&
c
HV If specified, at least one of the values in the list must match the value specified.


H

H

H
=
MO1 Specifies a list of alternatives for the match.



M

NX

N


N

N&

N)*

N+W

?N,Vbproto3
?
$envoy/type/matcher/v3/metadata.protoenvoy.type.matcher.v3!envoy/type/matcher/v3/value.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
MetadataMatcher
filter (	B?BrRfilterP
path (22.envoy.type.matcher.v3.MetadataMatcher.PathSegmentB?B?RpathC
value (2#.envoy.type.matcher.v3.ValueMatcherB?B?Rvalue
invert (Rinvertq
PathSegment
key (	B?BrHRkey:5?ň0
.envoy.type.matcher.MetadataMatcher.PathSegmentB
segment?B:)?ň$
"envoy.type.matcher.MetadataMatcherB?
#io.envoyproxy.envoy.type.matcher.v3B
MetadataProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3????J?
k




	
+
	
'
	
+
	
!


<
	

<

.
	
.

"
	

"


]
	

]

F

???jF
?
NkA [#next-major-version: MetadataMatcher should use StructMatcher]
2% [#protodoc-title: Metadata matcher]
2?
 MetadataMatcher provides a general interface to check if a given value is matched in
 :ref:`Metadata `. It uses `filter` and `path` to retrieve the value
 from the Metadata and then check if it's matched to the specified value.

 For example, for the following Metadata:

 .. code-block:: yaml

    filter_metadata:
      envoy.filters.http.rbac:
        fields:
          a:
            struct_value:
              fields:
                b:
                  struct_value:
                    fields:
                      c:
                        string_value: pro
                t:
                  list_value:
                    values:
                      - string_value: m
                      - string_value: n

 The following MetadataMatcher is matched as the path [a, b, c] will retrieve a string value "pro"
 from the Metadata which is matched to the specified prefix match.

 .. code-block:: yaml

    filter: envoy.filters.http.rbac
    path:
    - key: a
    - key: b
    - key: c
    value:
      string_match:
        prefix: pr

 The following MetadataMatcher is matched as the code will match one of the string values in the
 list at the path [a, t].

 .. code-block:: yaml

    filter: envoy.filters.http.rbac
    path:
    - key: a
    - key: t
    value:
      list_match:
        one_of:
          string_match:
            exact: m

 An example use of MetadataMatcher is specifying additional metadata in envoy.filters.http.rbac to
 enforce access control based on dynamic metadata in a request. See :ref:`Permission
 ` and :ref:`Principal
 `.



N


Od

ӈ?Od
?
T^? Specifies the segment in a path to retrieve value from Metadata.
 Note: Currently it's not supported to retrieve a value from a list in Metadata. This means that
 if the segment key refers to a list, it has to be the last segment in a path.


T


UV9


ӈ?UV9

X]

X


Y(

	?Y(
M
\>> If specified, use the key to retrieve the value in a Struct.


\

\


\

\=


?\<
H
a=; The filter name to retrieve the Struct from the Metadata.


a

a	

a

a<

?a;
>
dM1 The path to retrieve the Value from the Struct.


d


d

d

d

d L

?d!K
f
gGY The MetadataMatcher is matched if the value retrieved by path is matched to this value.


g

g

g

gF

?gE
:
j- If true, the match result will be inverted.


j

j

jbproto3
?"
&envoy/type/tracing/v3/custom_tag.protoenvoy.type.tracing.v3%envoy/type/metadata/v3/metadata.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
	CustomTag
tag (	B?BrRtagD
literal (2(.envoy.type.tracing.v3.CustomTag.LiteralHRliteralP
environment (2,.envoy.type.tracing.v3.CustomTag.EnvironmentHRenvironmentP
request_header (2'.envoy.type.tracing.v3.CustomTag.HeaderHR
requestHeaderG
metadata (2).envoy.type.tracing.v3.CustomTag.MetadataHRmetadataX
Literal
value (	B?BrRvalue:.?ň)
'envoy.type.tracing.v2.CustomTag.Literal?
Environment
name (	B?BrRname#

default_value (	RdefaultValue:2?ň-
+envoy.type.tracing.v2.CustomTag.Environment
Header!
name (	B
?B
r??Rname#

default_value (	RdefaultValue:-?ň(
&envoy.type.tracing.v2.CustomTag.Header?
Metadata8
kind (2$.envoy.type.metadata.v3.MetadataKindRkindF
metadata_key (2#.envoy.type.metadata.v3.MetadataKeyRmetadataKey#

default_value (	RdefaultValue:/?ň*
(envoy.type.tracing.v2.CustomTag.Metadata:&?ň!
envoy.type.tracing.v2.CustomTagB
type?BB?
#io.envoyproxy.envoy.type.tracing.v3BCustomTagProtoPZFgithub.com/envoyproxy/go-control-plane/envoy/type/tracing/v3;tracingv3????J?
e




	
/
	
'
	
+
	
!


<
	

<

/
	
/

"
	

"


]
	

]

F

???jF
p
eC Describes custom tags for the active span.
 [#next-free-field: 6]
2 [#protodoc-title: Custom Tag]






a

ӈ?a
L
> Literal type custom tag with static value for the tag value.





2


ӈ?2
@
>1 Static literal value to populate the tag value.









=


?<
T
!,F Environment type custom tag with environment name and default value.


!


"#6


ӈ?"#6
Y
&=J Environment variable name to obtain the value to populate the tag value.


&


&

&

&<


?&;
?
+? When the environment variable is not found,
 the tag value will be populated with this default value if specified,
 otherwise no tag will be populated.


+


+

+
J
/;< Header type custom tag with header name and default value.


/


011


ӈ?011
L
45b< Header name to obtain the value to populate the tag value.


4


4

4

5a


?5	`
?
:? When the header does not exist,
 the tag value will be populated with this default value if specified,
 otherwise no tag will be populated.


:


:

:
?
BP? Metadata type custom tag using
 :ref:`MetadataKey ` to retrieve the protobuf value
 from :ref:`Metadata `, and populate the tag value with
 `the canonical JSON `_
 representation of it.


B


CD3


ӈ?CD3
H
G&9 Specify what kind of metadata to obtain tag value from.


G

G!

G$%
K
J-< Metadata key to define the path to retrieve the tag value.


J

J(

J+,
?
O? When no valid metadata is found,
 the tag value would be populated with this default value if specified,
 otherwise no tag would be populated.


O


O

O
-
S:  Used to populate the tag name.


S

S	

S

S9

?S8
8
Vd* Used to specify what kind of custom tag.


V

W&

?W&
$
Z A literal custom tag.


Z

Z

Z
)
]  An environment custom tag.


]

]

]
+
` A request header custom tag.


`


`

`
B
c5 A custom tag to obtain tag value from the metadata.


c

c


cbproto3
?
xds/type/matcher/v3/regex.protoxds.type.matcher.v3validate/validate.proto"?
RegexMatcherV

google_re2 (2+.xds.type.matcher.v3.RegexMatcher.GoogleRE2B?B?HR	googleRe2
regex (	B?BrRregex
	GoogleRE2B
engine_type?BBZ
com.github.xds.type.matcher.v3B
RegexProtoPZ*github.com/cncf/xds/go/xds/type/matcher/v3J?
-




	
!

7
	
7

+
	
+

"
	

"

	A
	
	A
u
-E A regex matcher designed for safety when used with untrusted input.
2" [#protodoc-title: Regex matcher]




?
!? Google's `RE2 `_ regex engine. The regex
 string must adhere to the documented `syntax
 `_. The engine is designed to
 complete execution in linear time as well as limit the amount of memory
 used.

 Envoy supports program size checking via runtime. The runtime keys
 `re2.max_program_size.error_level` and `re2.max_program_size.warn_level`
 can be set to integers as the maximum program size or complexity that a
 compiled regex can have before an exception is thrown or a warning is
 logged, respectively. `re2.max_program_size.error_level` defaults to 100,
 and `re2.max_program_size.warn_level` has no default if unset (will not
 check/log a warning).

 Envoy emits two stats for tracking the program size of regexes: the
 histogram `re2.program_size`, which records the program size, and the
 counter `re2.exceeded_warn_level`, which is incremented each time the
 program size exceeds the warn level threshold.


!


#(

#

$&

?$&
)
'N Google's RE2 regex engine.


'

'

'

'M

?'K
^
,?Q The regex match string. The string must be supported by the configured
 engine.


,

,	

,

,>

?,

?#=
?
+?? The input string must have the suffix specified here.
 Note: empty prefix is not allowed, please use regex instead.

 Examples:

 * *abc* matches the value *xyz.abc*


+


+

+

+>

?+=
Q
.ND The input string must match the regular expression specified here.


.

.

.

. M

?.!L
?
6A? The input string must have the substring specified here.
 Note: empty contains match is not allowed, please use regex instead.

 Examples:

 * *abc* matches the value *xyz.abc.def*


6


6

6

6@

?6?
a
:0T Use an extension as the matcher type.
 [#extension-category: envoy.string_matcher]


:$

:%+

:./
?
@? If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no
 effect for the safe_regex match.
 For example, the matcher *data* will match both input string *Data* and *data* if set to true.


@

@

@
9
DF- Specifies a list of ways to match a string.



D

ES

E


E

E!

E$%

E&R

?E'Qbproto3
?7
!xds/type/matcher/v3/matcher.protoxds.type.matcher.v3xds/annotations/v3/status.protoxds/core/v3/extension.proto xds/type/matcher/v3/string.protovalidate/validate.proto"?
MatcherM
matcher_list (2(.xds.type.matcher.v3.Matcher.MatcherListHRmatcherListM
matcher_tree (2(.xds.type.matcher.v3.Matcher.MatcherTreeHRmatcherTreeD
on_no_match (2$.xds.type.matcher.v3.Matcher.OnMatchR	onNoMatch?
OnMatch8
matcher (2.xds.type.matcher.v3.MatcherHRmatcher;
action (2!.xds.core.v3.TypedExtensionConfigHRactionB
on_match?B?
MatcherList[
matchers (25.xds.type.matcher.v3.Matcher.MatcherList.FieldMatcherB?B?Rmatchers?
	Predicateo
single_predicate (2B.xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicateHRsinglePredicatea

or_matcher (2@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListHR	orMatcherc
and_matcher (2@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListHR
andMatcherU
not_matcher (22.xds.type.matcher.v3.Matcher.MatcherList.PredicateHR
notMatcher?
SinglePredicateA
input (2!.xds.core.v3.TypedExtensionConfigB?B?RinputE
value_match (2".xds.type.matcher.v3.StringMatcherHR
valueMatchF
custom_match (2!.xds.core.v3.TypedExtensionConfigHRcustomMatchB
matcher?Bk

PredicateListZ
	predicate (22.xds.type.matcher.v3.Matcher.MatcherList.PredicateB?B?R	predicateB

match_type?B?
FieldMatcherZ
	predicate (22.xds.type.matcher.v3.Matcher.MatcherList.PredicateB?B?R	predicateI
on_match (2$.xds.type.matcher.v3.Matcher.OnMatchB?B?RonMatch?
MatcherTreeA
input (2!.xds.core.v3.TypedExtensionConfigB?B?Rinput[
exact_match_map (21.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapHR
exactMatchMap]
prefix_match_map (21.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapHRprefixMatchMapF
custom_match (2!.xds.core.v3.TypedExtensionConfigHRcustomMatch?
MatchMapV
map (2:.xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntryB?B?Rmap\
MapEntry
key (	Rkey:
value (2$.xds.type.matcher.v3.Matcher.OnMatchRvalue:8B
	tree_type?B:?Ƥ?B
matcher_typeB\
com.github.xds.type.matcher.v3BMatcherProtoPZ*github.com/cncf/xds/go/xds/type/matcher/v3J?%
?




	
)
	
%
	
*
	
!


7
	

7

-
	
-

"
	

"


A
	

A
?
?? A matcher, which may traverse a matching tree in order to result in a match action.
 During matching, the tree will be traversed until a match is found, or if no match
 is found the action specified by the most specific on_no_match will be evaluated.
 As an on_no_match might result in another matching tree being evaluated, this process
 might repeat several times until the final OnMatch (or no match) is decided.
2( [#protodoc-title: Unified Matcher API]






E

?ȔlE
4
(& What to do if a match is successful.





'




(

	?(
?
#? Nested matcher to evaluate.
 If the nested matcher does not match and does not specify
 on_no_match, then this matcher is considered not to have
 matched, even if a predicate at this level or above returned
 true.


#

#

#
2
&.# Protocol-specific action to take.


&"

&#)

&,-
w
-ci A linear list of field matchers.
 The field matchers are evaluated in order, and the first match
 wins.


-

B
/V2 Predicate to determine if a match is successful.


/
7
1@% Predicate for a single input field.


	1
?

4]r Protocol-specific specification of input field to match on.
 [#extension-category: envoy.matching.common_inputs]


4$

4%*

4-.

4/\

?40[


6?	

6

7
,


?7
,
-

:
8 Built-in string matcher.


:
'

:(3

:67
o

>
8\ Extension for custom matching logic.
 [#extension-category: envoy.matching.input_matchers]


>
&

>'3

>67
^
CEL A list of two or more matchers. Used to allow using a list within a oneof.


	C


DV

D

D

D$

D'(

D)U

?D*T

GU

	G

	H*

?H*
2
K-! A single predicate to evaluate.


	K

	K(

	K+,
=
N%, A list of predicates to be OR-ed together.


	N

	N 

	N#$
>
Q&- A list of predicates to be AND-ed together.


	Q

	Q!

	Q$%
,
T" The invert of a predicate


	T

	T

	T !
(
Y_ An individual matcher.


Y
4
[L# Determines if the match succeeds.


	[

	[

	[

	[K

?[J
4
^I# What to do if the match succeeds.


	^

	^

	^

	^H

?^G
6
bT' A list of matchers. First match wins.


b

b


b"

b%&

b'S


?b(R

e|

e

Y
giI A map of configured matchers. Used to allow using a map within a oneof.


g

hK

	h

	h

	h!"

	h#J

?h$I
L
lY= Protocol-specific specification of input field to match on.


l 

l!&

l)*

l+X


?l,W
?
q{? Exact or prefix match maps in which to look up the input value.
 If the lookup succeeds, the match is considered successful, and
 the corresponding OnMatch is used.


q


r(

	?r(

t#

t

t

t!"
.
w$ Longest matching prefix wins.


w

w

w"#
5
z4& Extension for custom matching logic.


z"

z#/

z23

~?

~
6
?!( A linear list of matchers to evaluate.


?

?

? 
)
?! A match tree to evaluate.


?

?

? 
?
?? Optional OnMatch to use if no matcher above matched (e.g., if there are no matchers specified
 above, or if none of the matches specified above succeeded).
 If no matcher above matched and this field is not populated, the match will be considered unsuccessful.


?	

?


?bproto3
߻
,envoy/config/route/v3/route_components.protoenvoy.config.route.v3envoy/config/core/v3/base.proto$envoy/config/core/v3/extension.proto)envoy/config/core/v3/proxy_protocol.proto$envoy/type/matcher/v3/metadata.proto!envoy/type/matcher/v3/regex.proto"envoy/type/matcher/v3/string.proto%envoy/type/metadata/v3/metadata.proto&envoy/type/tracing/v3/custom_tag.protoenvoy/type/v3/percent.protoenvoy/type/v3/range.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoxds/annotations/v3/status.proto!xds/type/matcher/v3/matcher.proto#envoy/annotations/deprecation.protoudpa/annotations/migrate.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
VirtualHost
name (	B?BrRname,
domains (	B?B?"r??Rdomains4
routes (2.envoy.config.route.v3.RouteRroutes@
matcher (2.xds.type.matcher.v3.MatcherB?Ƥ?Rmatcher`
require_tls (25.envoy.config.route.v3.VirtualHost.TlsRequirementTypeB?B?R
requireTlsP
virtual_clusters (2%.envoy.config.route.v3.VirtualClusterRvirtualClustersA
rate_limits (2 .envoy.config.route.v3.RateLimitR
rateLimitsg
request_headers_to_add (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RrequestHeadersToAddM
request_headers_to_remove
 (	B?B?"
r??RrequestHeadersToRemovei
response_headers_to_add
 (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RresponseHeadersToAddO
response_headers_to_remove (	B?B?"
r??RresponseHeadersToRemoveB
cors (2!.envoy.config.route.v3.CorsPolicyB?dž?3.0Rcorss
typed_per_filter_config (2<.envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntryRtypedPerFilterConfigA
include_request_attempt_count (RincludeRequestAttemptCountH
!include_attempt_count_in_response (RincludeAttemptCountInResponseE
retry_policy (2".envoy.config.route.v3.RetryPolicyRretryPolicyO
retry_policy_typed_config (2.google.protobuf.AnyRretryPolicyTypedConfigE
hedge_policy (2".envoy.config.route.v3.HedgePolicyRhedgePolicyD
include_is_timeout_retry_header (RincludeIsTimeoutRetryHeader`
per_request_buffer_limit_bytes (2.google.protobuf.UInt32ValueRperRequestBufferLimitBytesn
request_mirror_policies (26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyRrequestMirrorPolicies:
metadata (2.envoy.config.core.v3.MetadataRmetadata]
TypedPerFilterConfigEntry
key (	Rkey*
value (2.google.protobuf.AnyRvalue:8":
TlsRequirementType
NONE

EXTERNAL_ONLY
ALL:%?ň 
envoy.api.v2.route.VirtualHostJ	
J
Rper_filter_config"d
FilterAction,
action (2.google.protobuf.AnyRaction:&?ň!
envoy.api.v2.route.FilterAction"A
	RouteList4
routes (2.envoy.config.route.v3.RouteRroutes"?
Route
name (	RnameA
match (2!.envoy.config.route.v3.RouteMatchB?B?Rmatch:
route (2".envoy.config.route.v3.RouteActionHRrouteC
redirect (2%.envoy.config.route.v3.RedirectActionHRredirectV
direct_response (2+.envoy.config.route.v3.DirectResponseActionHRdirectResponseJ

filter_action (2#.envoy.config.route.v3.FilterActionHRfilterAction`
non_forwarding_action (2*.envoy.config.route.v3.NonForwardingActionHRnonForwardingAction:
metadata (2.envoy.config.core.v3.MetadataRmetadata>
	decorator (2 .envoy.config.route.v3.DecoratorR	decoratorm
typed_per_filter_config
 (26.envoy.config.route.v3.Route.TypedPerFilterConfigEntryRtypedPerFilterConfigg
request_headers_to_add	 (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RrequestHeadersToAddM
request_headers_to_remove (	B?B?"
r??RrequestHeadersToRemovei
response_headers_to_add
 (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RresponseHeadersToAddO
response_headers_to_remove (	B?B?"
r??RresponseHeadersToRemove8
tracing (2.envoy.config.route.v3.TracingRtracing`
per_request_buffer_limit_bytes (2.google.protobuf.UInt32ValueRperRequestBufferLimitBytes
stat_prefix (	R
statPrefix]
TypedPerFilterConfigEntry
key (	Rkey*
value (2.google.protobuf.AnyRvalue:8:?ň
envoy.api.v2.route.RouteB
action?BJJ	Rper_filter_config"?

WeightedClusterZ
clusters (24.envoy.config.route.v3.WeightedCluster.ClusterWeightB?B?RclustersL
total_weight (2.google.protobuf.UInt32ValueB?dž?3.0RtotalWeight,
runtime_key_prefix (	RruntimeKeyPrefix.
header_name (	B?Br??HR
headerName?

ClusterWeight-
name (	B???cluster_specifierRnameK
cluster_header (	B$?Br?????cluster_specifierR
clusterHeader4
weight (2.google.protobuf.UInt32ValueRweightE
metadata_match (2.envoy.config.core.v3.MetadataR
metadataMatchg
request_headers_to_add (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RrequestHeadersToAddK
request_headers_to_remove	 (	B?B
?
"r??RrequestHeadersToRemovei
response_headers_to_add (2'.envoy.config.core.v3.HeaderValueOptionB	?B??RresponseHeadersToAddM
response_headers_to_remove (	B?B
?
"r??RresponseHeadersToRemove?
typed_per_filter_config
 (2N.envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntryRtypedPerFilterConfig?
host_rewrite_literal (	B?Br??HRhostRewriteLiteral]
TypedPerFilterConfigEntry
key (	Rkey*
value (2.google.protobuf.AnyRvalue:8:7?ň2
0envoy.api.v2.route.WeightedCluster.ClusterWeightB
host_rewrite_specifierJJ	Rper_filter_config:)?ň$
"envoy.api.v2.route.WeightedClusterB
random_value_specifier"?
ClusterSpecifierPluginR
	extension (2*.envoy.config.core.v3.TypedExtensionConfigB?B?R	extension
is_optional (R
isOptional"?


RouteMatch
prefix (	HRprefix
path (	HRpathN

safe_regex
 (2#.envoy.type.matcher.v3.RegexMatcherB?B?HR	safeRegex[
connect_matcher (20.envoy.config.route.v3.RouteMatch.ConnectMatcherHRconnectMatcherK
path_separated_prefix (	B?Br2^[^?#]+[^?#/]$HRpathSeparatedPrefixX
path_match_policy (2*.envoy.config.core.v3.TypedExtensionConfigHRpathMatchPolicyA
case_sensitive (2.google.protobuf.BoolValueR
caseSensitiveY
runtime_fraction	 (2..envoy.config.core.v3.RuntimeFractionalPercentRruntimeFraction>
headers (2$.envoy.config.route.v3.HeaderMatcherRheadersW
query_parameters (2,.envoy.config.route.v3.QueryParameterMatcherRqueryParametersK
grpc (27.envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptionsRgrpcY
tls_context (28.envoy.config.route.v3.RouteMatch.TlsContextMatchOptionsR
tlsContextQ
dynamic_metadata
 (2&.envoy.type.matcher.v3.MetadataMatcherRdynamicMetadataS
GrpcRouteMatchOptions::?ň5
3envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions?
TlsContextMatchOptions8
	presented (2.google.protobuf.BoolValueR	presented8
	validated (2.google.protobuf.BoolValueR	validated:;?ň6
4envoy.api.v2.route.RouteMatch.TlsContextMatchOptions
ConnectMatcher:$?ň
envoy.api.v2.route.RouteMatchB
path_specifier?BJJRregex"?

CorsPolicy_
allow_origin_string_match (2$.envoy.type.matcher.v3.StringMatcherRallowOriginStringMatch#

allow_methods (	RallowMethods#

allow_headers (	RallowHeaders%
expose_headers (	R
exposeHeaders
max_age (	RmaxAgeG
allow_credentials (2.google.protobuf.BoolValueRallowCredentialsW
filter_enabled	 (2..envoy.config.core.v3.RuntimeFractionalPercentHR
filterEnabledU
shadow_enabled
 (2..envoy.config.core.v3.RuntimeFractionalPercentR
shadowEnabled[
allow_private_network_access (2.google.protobuf.BoolValueRallowPrivateNetworkAccessa
forward_not_matching_preflights
 (2.google.protobuf.BoolValueRforwardNotMatchingPreflights:$?ň
envoy.api.v2.route.CorsPolicyB
enabled_specifierJJ	JRallow_originRallow_origin_regexRenabled"?,
RouteAction#
cluster (	B?BrHRcluster6
cluster_header (	B
?B
r??HR
clusterHeaderU
weighted_clusters (2&.envoy.config.route.v3.WeightedClusterHRweightedClusters:
cluster_specifier_plugin% (	HRclusterSpecifierPluginv
inline_cluster_specifier_plugin' (2-.envoy.config.route.v3.ClusterSpecifierPluginHRinlineClusterSpecifierPlugin?
cluster_not_found_response_code (2>.envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCodeB?B?RclusterNotFoundResponseCodeE
metadata_match (2.envoy.config.core.v3.MetadataR
metadataMatch2
prefix_rewrite (	B?Br??R
prefixRewriteS

regex_rewrite  (2..envoy.type.matcher.v3.RegexMatchAndSubstituteRregexRewriteZ
path_rewrite_policy) (2*.envoy.config.core.v3.TypedExtensionConfigRpathRewritePolicy?
host_rewrite_literal (	B?Br??HRhostRewriteLiteralH
auto_host_rewrite (2.google.protobuf.BoolValueHRautoHostRewrite=
host_rewrite_header (	B?Br??HRhostRewriteHeaderg
host_rewrite_path_regex# (2..envoy.type.matcher.v3.RegexMatchAndSubstituteHRhostRewritePathRegex5
append_x_forwarded_host& (RappendXForwardedHost3
timeout (2.google.protobuf.DurationRtimeout<
idle_timeout (2.google.protobuf.DurationRidleTimeoutV
early_data_policy( (2*.envoy.config.core.v3.TypedExtensionConfigRearlyDataPolicyE
retry_policy	 (2".envoy.config.route.v3.RetryPolicyRretryPolicyO
retry_policy_typed_config! (2.google.protobuf.AnyRretryPolicyTypedConfign
request_mirror_policies (26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyRrequestMirrorPoliciesK
priority (2%.envoy.config.core.v3.RoutingPriorityB?B?RpriorityA
rate_limits
 (2 .envoy.config.route.v3.RateLimitR
rateLimits\
include_vh_rate_limits (2.google.protobuf.BoolValueB?dž?3.0RincludeVhRateLimitsN
hash_policy (2-.envoy.config.route.v3.RouteAction.HashPolicyR
hashPolicyB
cors (2!.envoy.config.route.v3.CorsPolicyB?dž?3.0RcorsP
max_grpc_timeout (2.google.protobuf.DurationB?dž?3.0RmaxGrpcTimeoutV
grpc_timeout_offset (2.google.protobuf.DurationB?dž?3.0RgrpcTimeoutOffsetY
upgrade_configs (20.envoy.config.route.v3.RouteAction.UpgradeConfigRupgradeConfigsg
internal_redirect_policy" (2-.envoy.config.route.v3.InternalRedirectPolicyRinternalRedirectPolicy?
internal_redirect_action (29.envoy.config.route.v3.RouteAction.InternalRedirectActionB?dž?3.0RinternalRedirectAction_
max_internal_redirects (2.google.protobuf.UInt32ValueB?dž?3.0RmaxInternalRedirectsE
hedge_policy (2".envoy.config.route.v3.HedgePolicyRhedgePolicyd
max_stream_duration$ (24.envoy.config.route.v3.RouteAction.MaxStreamDurationRmaxStreamDuration?
RequestMirrorPolicy3
cluster (	B???cluster_specifierRclusterK
cluster_header (	B$?Br?????cluster_specifierR
clusterHeaderY
runtime_fraction (2..envoy.config.core.v3.RuntimeFractionalPercentRruntimeFraction?

trace_sampled (2.google.protobuf.BoolValueRtraceSampled:9?ň4
2envoy.api.v2.route.RouteAction.RequestMirrorPolicyJRruntime_key?

HashPolicyN
header (24.envoy.config.route.v3.RouteAction.HashPolicy.HeaderHRheaderN
cookie (24.envoy.config.route.v3.RouteAction.HashPolicy.CookieHRcookiey
connection_properties (2B.envoy.config.route.v3.RouteAction.HashPolicy.ConnectionPropertiesHRconnectionPropertiesg
query_parameter (2<.envoy.config.route.v3.RouteAction.HashPolicy.QueryParameterHRqueryParameter^
filter_state (29.envoy.config.route.v3.RouteAction.HashPolicy.FilterStateHRfilterState
terminal (Rterminal?
Header.
header_name (	B
?B
r??R
headerNameS

regex_rewrite (2..envoy.type.matcher.v3.RegexMatchAndSubstituteRregexRewrite:7?ň2
0envoy.api.v2.route.RouteAction.HashPolicy.Header_
CookieAttribute%
name (	B?Br(????Rname%
value (	B?Br
(????Rvalue?
Cookie
name (	B?BrRname+
ttl (2.google.protobuf.DurationRttl
path (	Rpath]

attributes (2=.envoy.config.route.v3.RouteAction.HashPolicy.CookieAttributeR
attributes:7?ň2
0envoy.api.v2.route.RouteAction.HashPolicy.Cookiez
ConnectionProperties
	source_ip (RsourceIp:E?ň@
>envoy.api.v2.route.RouteAction.HashPolicy.ConnectionPropertiesn
QueryParameter
name (	B?BrRname:??ň:
8envoy.api.v2.route.RouteAction.HashPolicy.QueryParameterf
FilterState
key (	B?BrRkey:.envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfigR
connectConfig?

ConnectConfig]
proxy_protocol_config (2).envoy.config.core.v3.ProxyProtocolConfigRproxyProtocolConfig

allow_post (R	allowPost:3?ň.
,envoy.api.v2.route.RouteAction.UpgradeConfig?
MaxStreamDurationI
max_stream_duration (2.google.protobuf.DurationRmaxStreamDurationP
grpc_timeout_header_max (2.google.protobuf.DurationRgrpcTimeoutHeaderMaxV
grpc_timeout_header_offset (2.google.protobuf.DurationRgrpcTimeoutHeaderOffset"`
ClusterNotFoundResponseCode
SERVICE_UNAVAILABLE
	NOT_FOUND
INTERNAL_SERVER_ERROR"^
InternalRedirectAction"
PASS_THROUGH_INTERNAL_REDIRECT
HANDLE_INTERNAL_REDIRECT:%?ň 
envoy.api.v2.route.RouteActionB
cluster_specifier?BB
host_rewrite_specifierJ
JJJJJJ
Rrequest_mirror_policy"?
RetryPolicy
retry_on (	RretryOnR
num_retries (2.google.protobuf.UInt32ValueB???
max_retriesR
numRetriesA
per_try_timeout (2.google.protobuf.DurationR
perTryTimeoutJ
per_try_idle_timeout
 (2.google.protobuf.DurationRperTryIdleTimeoutW
retry_priority (20.envoy.config.route.v3.RetryPolicy.RetryPriorityR
retryPriorityg
retry_host_predicate (25.envoy.config.route.v3.RetryPolicy.RetryHostPredicateRretryHostPredicated
retry_options_predicates (2*.envoy.config.core.v3.TypedExtensionConfigRretryOptionsPredicatesH
!host_selection_retry_max_attempts (RhostSelectionRetryMaxAttempts4
retriable_status_codes (
RretriableStatusCodesU
retry_back_off (2/.envoy.config.route.v3.RetryPolicy.RetryBackOffRretryBackOffx
rate_limited_retry_back_off (2:.envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOffRrateLimitedRetryBackOffQ
retriable_headers	 (2$.envoy.config.route.v3.HeaderMatcherRretriableHeaders`
retriable_request_headers
 (2$.envoy.config.route.v3.HeaderMatcherRretriableRequestHeaders?

RetryPriority
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfig:3?ň.
,envoy.api.v2.route.RetryPolicy.RetryPriorityB
config_typeJRconfig?
RetryHostPredicate
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfig:8?ň3
1envoy.api.v2.route.RetryPolicy.RetryHostPredicateB
config_typeJRconfig?
RetryBackOffJ

base_interval (2.google.protobuf.DurationB
?B?*RbaseIntervalF
max_interval (2.google.protobuf.DurationB?B?*RmaxInterval:2?ň-
+envoy.api.v2.route.RetryPolicy.RetryBackOff?
ResetHeader!
name (	B
?B
r??RnameV
format (24.envoy.config.route.v3.RetryPolicy.ResetHeaderFormatB?B?Rformat?
RateLimitedRetryBackOff]

reset_headers (2..envoy.config.route.v3.RetryPolicy.ResetHeaderB?B?RresetHeadersF
max_interval (2.google.protobuf.DurationB?B?*RmaxInterval"4
ResetHeaderFormat
SECONDS
UNIX_TIMESTAMP:%?ň 
envoy.api.v2.route.RetryPolicy"?
HedgePolicyP
initial_requests (2.google.protobuf.UInt32ValueB?B*(RinitialRequests\
additional_request_chance (2 .envoy.type.v3.FractionalPercentRadditionalRequestChance6
hedge_on_per_try_timeout (RhedgeOnPerTryTimeout:%?ň 
envoy.api.v2.route.HedgePolicy"?
RedirectAction'
https_redirect (HR
httpsRedirect)
scheme_redirect (	HRschemeRedirect0

host_redirect (	B?Br??RhostRedirect#

port_redirect (
RportRedirect2

path_redirect (	B?Br??HRpathRedirect4
prefix_rewrite (	B?Br??HR
prefixRewriteU

regex_rewrite	 (2..envoy.type.matcher.v3.RegexMatchAndSubstituteHRregexRewritei

response_code (2:.envoy.config.route.v3.RedirectAction.RedirectResponseCodeB?B?RresponseCode
strip_query (R
stripQuery"w
RedirectResponseCode
MOVED_PERMANENTLY	
FOUND
	SEE_OTHER
TEMPORARY_REDIRECT
PERMANENT_REDIRECT:(?ň#
!envoy.api.v2.route.RedirectActionB
scheme_rewrite_specifierB
path_rewrite_specifier"?
DirectResponseAction#
status (
B?B*?(?Rstatus4
body (2 .envoy.config.core.v3.DataSourceRbody:.?ň)
'envoy.api.v2.route.DirectResponseAction"
NonForwardingAction"?
	Decorator%
	operation (	B?BrR	operation8
	propagate (2.google.protobuf.BoolValueR	propagate:#?ň
envoy.api.v2.route.Decorator"?
TracingI
client_sampling (2 .envoy.type.v3.FractionalPercentRclientSamplingI
random_sampling (2 .envoy.type.v3.FractionalPercentRrandomSamplingK
overall_sampling (2 .envoy.type.v3.FractionalPercentRoverallSamplingA
custom_tags (2 .envoy.type.tracing.v3.CustomTagR
customTags:!?ň
envoy.api.v2.route.Tracing"?
VirtualCluster>
headers (2$.envoy.config.route.v3.HeaderMatcherRheaders
name (	B?BrRname:(?ň#
!envoy.api.v2.route.VirtualClusterJJRpatternRmethod"?
	RateLimit;
stage (2.google.protobuf.UInt32ValueB?B*
Rstage
disable_key (	R
disableKeyK
actions (2'.envoy.config.route.v3.RateLimit.ActionB?B?Ractions?
limit (2).envoy.config.route.v3.RateLimit.OverrideRlimit?
Action^
source_cluster (25.envoy.config.route.v3.RateLimit.Action.SourceClusterHR
sourceClusterm
destination_cluster (2:.envoy.config.route.v3.RateLimit.Action.DestinationClusterHRdestinationClustera
request_headers (26.envoy.config.route.v3.RateLimit.Action.RequestHeadersHRrequestHeaders^
remote_address (25.envoy.config.route.v3.RateLimit.Action.RemoteAddressHR
remoteAddressU
generic_key (22.envoy.config.route.v3.RateLimit.Action.GenericKeyHR
genericKeyh
header_value_match (28.envoy.config.route.v3.RateLimit.Action.HeaderValueMatchHRheaderValueMatchw
dynamic_metadata (27.envoy.config.route.v3.RateLimit.Action.DynamicMetaDataB?dž?3.0????HRdynamicMetadataN
metadata (20.envoy.config.route.v3.RateLimit.Action.MetaDataHRmetadataJ
	extension	 (2*.envoy.config.core.v3.TypedExtensionConfigHR	extensionq
masked_remote_address
 (2;.envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddressHRmaskedRemoteAddress?
query_parameter_value_match (2@.envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatchHRqueryParameterValueMatchI

SourceCluster:8?ň3
1envoy.api.v2.route.RateLimit.Action.SourceClusterS
DestinationCluster:=?ň8
6envoy.api.v2.route.RateLimit.Action.DestinationCluster?
RequestHeaders.
header_name (	B
?B
r??R
headerName.
descriptor_key (	B?BrR
descriptorKey$
skip_if_absent (RskipIfAbsent:9?ň4
2envoy.api.v2.route.RateLimit.Action.RequestHeadersI

RemoteAddress:8?ň3
1envoy.api.v2.route.RateLimit.Action.RemoteAddress?
MaskedRemoteAddressR
v4_prefix_mask_len (2.google.protobuf.UInt32ValueB?B* Rv4PrefixMaskLenS
v6_prefix_mask_len (2.google.protobuf.UInt32ValueB?B*?Rv6PrefixMaskLen?

GenericKey2
descriptor_value (	B?BrRdescriptorValue%
descriptor_key (	R
descriptorKey:5?ň0
.envoy.api.v2.route.RateLimit.Action.GenericKey?
HeaderValueMatch%
descriptor_key (	R
descriptorKey2
descriptor_value (	B?BrRdescriptorValue=
expect_match (2.google.protobuf.BoolValueRexpectMatchH
headers (2$.envoy.config.route.v3.HeaderMatcherB?B?Rheaders:;?ň6
4envoy.api.v2.route.RateLimit.Action.HeaderValueMatch?
DynamicMetaData.
descriptor_key (	B?BrR
descriptorKeyP
metadata_key (2#.envoy.type.metadata.v3.MetadataKeyB?B?RmetadataKey#

default_value (	RdefaultValue?
MetaData.
descriptor_key (	B?BrR
descriptorKeyP
metadata_key (2#.envoy.type.metadata.v3.MetadataKeyB?B?RmetadataKey#

default_value (	RdefaultValueY
source (27.envoy.config.route.v3.RateLimit.Action.MetaData.SourceB?B?Rsource$
skip_if_absent (RskipIfAbsent"&
Source
DYNAMIC
ROUTE_ENTRY?
QueryParameterValueMatch%
descriptor_key (	R
descriptorKey2
descriptor_value (	B?BrRdescriptorValue=
expect_match (2.google.protobuf.BoolValueRexpectMatcha
query_parameters (2,.envoy.config.route.v3.QueryParameterMatcherB?B?RqueryParameters:*?ň%
#envoy.api.v2.route.RateLimit.ActionB
action_specifier?B?
Overridef
dynamic_metadata (29.envoy.config.route.v3.RateLimit.Override.DynamicMetadataHRdynamicMetadatac
DynamicMetadataP
metadata_key (2#.envoy.type.metadata.v3.MetadataKeyB?B?RmetadataKeyB
override_specifier?B:#?ň
envoy.api.v2.route.RateLimit"?

HeaderMatcher!
name (	B
?B
r??Rname.
exact_match (	B?dž?3.0HR
exactMatch\
safe_regex_match (2#.envoy.type.matcher.v3.RegexMatcherB?dž?3.0HRsafeRegexMatch<
range_match (2.envoy.type.v3.Int64RangeHR
rangeMatch%

present_match (HRpresentMatch7
prefix_match	 (	B?Br?dž?3.0HRprefixMatch7
suffix_match
 (	B?Br?dž?3.0HRsuffixMatch;
contains_match (	B?Br?dž?3.0HR
containsMatchI
string_match
 (2$.envoy.type.matcher.v3.StringMatcherHRstringMatch!
invert_match (RinvertMatch@
treat_missing_header_as_empty (RtreatMissingHeaderAsEmpty:'?ň"
 envoy.api.v2.route.HeaderMatcherB
header_match_specifierJJJRregex_match"?
QueryParameterMatcher
name (	B
?Br(?RnameS
string_match (2$.envoy.type.matcher.v3.StringMatcherB?B?HRstringMatch%

present_match (HRpresentMatch:/?ň*
(envoy.api.v2.route.QueryParameterMatcherB!
query_parameter_match_specifierJJRvalueRregex"?
InternalRedirectPolicyR
max_internal_redirects (2.google.protobuf.UInt32ValueRmaxInternalRedirects@
redirect_response_codes (
B?B?RredirectResponseCodesJ

predicates (2*.envoy.config.core.v3.TypedExtensionConfigR
predicates=
allow_cross_scheme_redirect (RallowCrossSchemeRedirectK
response_headers_to_copy (	B?B?"r??RresponseHeadersToCopy"y
FilterConfig,
config (2.google.protobuf.AnyRconfig
is_optional (R
isOptional
disabled (RdisabledB?
#io.envoyproxy.envoy.config.route.v3BRouteComponentsProtoPZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3????J??
?




	
)
	
.
	
3
	
.
	
+
	
	,
	

/
	
0
	
%
	
	
#
	

#
	
(
	
(
	

)
	
+
	
-
	
(
	
'
	
+
	
!

<
	
<

5
	
5

"
	

"

[
	
[

 F

???j F
?
,?? The top level element in the routing configuration is a virtual host. Each virtual host has
 a logical name as well as a set of domains that get routed to it based on the incoming request's
 host header. This allows a single listener to service multiple top level domain path trees. Once
 a virtual host is selected based on the domain, the routes are processed in order to see which
 upstream cluster to route to or whether to perform a redirect.
 [#next-free-field: 25]
2? [#protodoc-title: HTTP route components]
 * Routing :ref:`architecture overview `
 * HTTP :ref:`router filter `



,


-`

ӈ?-`

/:

/
9
1
* No TLS requirement for the virtual host.


1

1
?
5? External requests must use TLS. If a request is external and it is not
 using TLS, a 301 redirect will be sent telling the client to use HTTPS.


5

5
?
9y All requests must use TLS. If a request is not using TLS, a 301 redirect
 will be sent telling the client to use HTTPS.


9

9



	<

	<

	<

	<

	<

	<

	<



>


>
?
B;w The logical name of the virtual host. This is used when emitting certain
 statistics but is not relevant for routing.


B

B	

B

B:

?B9
?
VY? A list of domains (host/authority header) that will be matched to this
 virtual host. Wildcard hosts are supported in the suffix or prefix form.

 Domain search order:
  1. Exact domain names: ``www.foo.com``.
  2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``.
  3. Prefix domain wildcards: ``foo.*`` or ``foo-*``.
  4. Special wildcard ``*`` matching any domain.

 .. note::

   The wildcard will not match the empty string.
   e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``.
   The longest wildcards match first.
   Only a single virtual host in the entire route configuration can match on ``*``. A domain
   must be unique across all virtual hosts or the config will fail to load.

 Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE.


V


V

V

V

VY

?VY
?
^? The list of routes that will be matched, in order, for incoming requests.
 The first route that matches will be used.
 Only one of this and ``matcher`` can be specified.


^


^

^

^
?
cdB? [#next-major-version: This should be included in a oneof with routes wrapped in a message.]
 The match tree to use when resolving route actions for incoming requests. Only one of this and ``routes``
 can be specified.


c

c%

c(*

dA


?Ȕld@
?
hT? Specifies the type of TLS enforcement the virtual host expects. If this option is not
 specified, there is no TLS requirement for the virtual host.


h

h 

h#$

h%S

?h&R
?
l/{ A list of virtual clusters defined for this virtual host. Virtual clusters
 are used for additional statistics gathering.


l


l

l*

l-.
f
p%Y Specifies a set of rate limit configurations that will be applied to the
 virtual host.


p


p

p 

p#$
?
xy6? Specifies a list of HTTP headers that should be added to each request
 handled by this virtual host. Headers specified at this level are applied
 after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the
 enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including
 details on header value syntax, see the documentation on :ref:`custom request headers
 `.


x


x$

x%;

x>?

y5

?y4
x
}j Specifies a list of HTTP headers that should be removed from each request
 handled by this virtual host.


}


}

}+

}.0

}1

?}2
?
	??6? Specifies a list of HTTP headers that should be added to each response
 handled by this virtual host. Headers specified at this level are applied
 after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the
 enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including
 details on header value syntax, see the documentation on :ref:`custom request headers
 `.


	?


	?$

	?%<

	??A

	?5

	??4
{

??k Specifies a list of HTTP headers that should be removed from each response
 handled by this virtual host.



?



?


?,


?/1


?2?


??3?
?
?c? Indicates that the virtual host has a CORS policy. This field is ignored if related cors policy is
 found in the
 :ref:`VirtualHost.typed_per_filter_config`.

 .. attention::

   This option has been deprecated. Please use
   :ref:`VirtualHost.typed_per_filter_config`
   to configure the CORS HTTP filter.


?

?


?

?b

?(

	??K?*a
?
?@? This field can be used to provide virtual host level per filter config. The key should match the
 :ref:`filter config name
 `.
 See :ref:`Http filter route specific config `
 for details.
 [#comment: An entry's value may be wrapped in a
 :ref:`FilterConfig`
 message to specify additional options.]


?"

?#:

?=?
?

?*? Decides whether the :ref:`x-envoy-attempt-count
 ` header should be included
 in the upstream request. Setting this option will cause it to override any existing header
 value, so in the case of two Envoys on the request path with this option enabled, the upstream
 will see the attempt count as perceived by the second Envoy. Defaults to false.
 This header is unaffected by the
 :ref:`suppress_envoy_headers
 ` flag.

 [#next-major-version: rename to include_attempt_count_in_request.]



?


?$


?')
?
?.? Decides whether the :ref:`x-envoy-attempt-count
 ` header should be included
 in the downstream response. Setting this option will cause the router to override any existing header
 value, so in the case of two Envoys on the request path with this option enabled, the downstream
 will see the attempt count as perceived by the Envoy closest upstream from itself. Defaults to false.
 This header is unaffected by the
 :ref:`suppress_envoy_headers
 ` flag.


?

?(

?+-
?
? ? Indicates the retry policy for all routes in this virtual host. Note that setting a
 route level entry will take precedence over this config and it'll be treated
 independently (e.g.: values are not inherited).


?

?

?
?
?5? [#not-implemented-hide:]
 Specifies the configuration for retry policy extension. Note that setting a route level entry
 will take precedence over this config and it'll be treated independently (e.g.: values are not
 inherited). :ref:`Retry policy ` should not be
 set if this field is used.


?

?/

?24
?
? ? Indicates the hedge policy for all routes in this virtual host. Note that setting a
 route level entry will take precedence over this config and it'll be treated
 independently (e.g.: values are not inherited).


?

?

?
?
?,? Decides whether to include the :ref:`x-envoy-is-timeout-retry `
 request header in retries initiated by per try timeouts.


?

?&

?)+
?
?B? The maximum bytes which will be buffered for retries and shadowing.
 If set and a route-specific limit is not set, the bytes actually buffered will be the minimum
 value of this and the listener per_connection_buffer_limit_bytes.


?

?<

??A
?
?H? Specify a set of default request mirroring policies for every route under this virtual host.
 It takes precedence over the route config mirror policy entirely.
 That is, policies are not merged, the most specific non-empty one becomes the mirror policies.


?


?*

?+B

?EG
?
?!? The metadata field can be used to provide additional information
 about the virtual host. It can be used for configuration, stats, and logging.
 The metadata should go under the filter namespace that will need it.
 For instance, if the metadata is intended for the Router filter,
 the filter name should be specified as ``envoy.filters.http.router``.


?

?

? 
-
?? A filter-defined action type.


?

?a

ӈ??a

?!

?

?

? 
?
??? This can be used in route matcher :ref:`VirtualHost.matcher `.
 When the matcher matches, routes will be matched and run.


?
u
?g The list of routes that will be matched and run, in order. The first route that matches will be used.


?


?

?

?
?
??? A route is both a specification of how to match a request as well as an indication of what to do
 next (e.g., redirect, forward, rewrite, etc.).

 .. attention::

   Envoy supports routing on HTTP method via :ref:`header matching
   `.
 [#next-free-field: 20]


?

?Z

ӈ??Z

	?

	?

	?

	?

	?

	?

	?


?


?
#
? Name for the route.


?

?	

?
*
?E Route matching parameters.


?

?


?

?D

??C

??

?

?&

??&
7
?) Route request to some upstream cluster.


?

?

?
"
?  Return a redirect.


?

?

?
M
?-? Return an arbitrary HTTP response directly, without proxying.


?

?(

?+,
?
?$? [#not-implemented-hide:]
 A filter-defined action (e.g., it could dynamically generate the RouteAction).
 [#comment: TODO(samflattery): Remove cleanup in route_fuzz_test.cc when
 implemented]


?

?

?!#
?
?3? [#not-implemented-hide:]
 An action used when the route will generate a response directly,
 without forwarding to an upstream host. This will be used in non-proxy
 xDS clients like the gRPC server. It could also be used in the future
 in Envoy for a filter that directly generates responses for requests.


?

?-

?02
?
? ? The Metadata field can be used to provide additional information
 about the route. It can be used for configuration, stats, and logging.
 The metadata should go under the filter namespace that will need it.
 For instance, if the metadata is intended for the Router filter,
 the filter name should be specified as ``envoy.filters.http.router``.


?

?

?
0
?" Decorator for the matched route.


?

?

?
?
	?@? This field can be used to provide route specific per filter config. The key should match the
 :ref:`filter config name
 `.
 See :ref:`Http filter route specific config `
 for details.
 [#comment: An entry's value may be wrapped in a
 :ref:`FilterConfig`
 message to specify additional options.]


	?"

	?#:

	?=?
?

??6? Specifies a set of headers that will be added to requests matching this
 route. Headers specified at this level are applied before headers from the
 enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and
 :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on
 header value syntax, see the documentation on :ref:`custom request headers
 `.



?



?$


?%;


?>?


?5


??4
q
??a Specifies a list of HTTP headers that should be removed from each request
 matching this route.


?


?

?+

?.0

?1?

??2?
?
??6? Specifies a set of headers that will be added to responses to requests
 matching this route. Headers specified at this level are applied before
 headers from the enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and
 :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including
 details on header value syntax, see the documentation on
 :ref:`custom request headers `.


?


?$

?%<

??A

?5

??4
~

??n Specifies a list of HTTP headers that should be removed from each response
 to requests matching this route.



?



?


?,


?/1


?2?


??3?
?
?? Presence of the object defines whether the connection manager's tracing configuration
 is overridden by this route specific instance.


?	

?


?
?
?B? The maximum bytes which will be buffered for retries and shadowing.
 If set, the bytes actually buffered will be the minimum value of this and the
 listener per_connection_buffer_limit_bytes.


?

?<

??A
?
?? The human readable prefix to use when emitting statistics for this endpoint.
 The statistics are rooted at vhost..route..
 This should be set for highly critical
 endpoints that one wishes to get “per-route” statistics on.
 If not set, endpoint statistics are not generated.

 The emitted statistics are the same as those documented for :ref:`virtual clusters `.

 .. warning::

    We do not recommend setting up a stat prefix for
    every application endpoint. This is both not easily maintainable and
    statistics use a non-trivial amount of memory(approximately 1KiB per route).


?

?	

?
?
??? Compared to the :ref:`cluster ` field that specifies a
 single upstream cluster as the target of a request, the :ref:`weighted_clusters
 ` option allows for specification of
 multiple upstream clusters along with weights that indicate the percentage of
 traffic to be forwarded to each cluster. The router selects an upstream cluster based on the
 weights.


?

?d

ӈ??d
(
?? [#next-free-field: 13]


?


??;


ӈ???;

	?

	?


	?


	?


	?

	?

	?


?!


?
 
?
?]? Only one of ``name`` and ``cluster_header`` may be specified.
 [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]
 Name of the upstream cluster. The cluster must exist in the
 :ref:`cluster manager configuration `.


?


?

?

?\

???Q?[
?
??? Only one of ``name`` and ``cluster_header`` may be specified.
 [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1 }]
 Envoy will determine the cluster to route to by reading the value of the
 HTTP header named by cluster_header from the request headers. If the
 header is not found or the referenced cluster does not exist, Envoy will
 return a 404 response.

 .. attention::

   Internally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1
   ``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.

 .. note::

   If the header appears multiple times only the first value is used.


?


?

?

??


??R

???Q?L
?
?+? The weight of the cluster. This value is relative to the other clusters'
 weights. When a request matches the route, the choice of an upstream cluster
 is determined by its weight. The sum of weights across all
 entries in the clusters array must be greater than 0, and must not exceed
 uint32_t maximal value (4294967295).


?

? &

?)*
?
?(? Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in
 the upstream cluster with metadata matching what is set in this field will be considered for
 load balancing. Note that this will be merged with what's provided in
 :ref:`RouteAction.metadata_match `, with
 values here taking precedence. The filter name should be specified as ``envoy.lb``.


?

?#

?&'
?
??8? Specifies a list of headers to be added to requests when this cluster is selected
 through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.
 Headers specified at this level are applied before headers from the enclosing
 :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and
 :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on
 header value syntax, see the documentation on :ref:`custom request headers
 `.


?

?
&

?'=

?@A

?7


??	6
?
??? Specifies a list of HTTP headers that should be removed from each request when
 this cluster is selected through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.


?

?


?-

?01

?2?


??3?
?
??8? Specifies a list of headers to be added to responses when this cluster is selected
 through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.
 Headers specified at this level are applied before headers from the enclosing
 :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and
 :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on
 header value syntax, see the documentation on :ref:`custom request headers
 `.


?

?
&

?'>

?AB

?7


??	6
?
??? Specifies a list of headers to be removed from responses when this cluster is selected
 through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.


?

?


?.

?12

?3?


??4?
?
?B? This field can be used to provide weighted cluster specific per filter config. The key should match the
 :ref:`filter config name
 `.
 See :ref:`Http filter route specific config `
 for details.
 [#comment: An entry's value may be wrapped in a
 :ref:`FilterConfig`
 message to specify additional options.]


?$

?%<

??A

??

?
 
g
	??ZU Indicates that during forwarding, the host header will be swapped with
 this value.


	?

	?
!

	?$&

	?
Y


	??X
R
?SD Specifies one or more upstream clusters associated with the route.


?


?

?!

?$%

?&R

??'Q
?
??S? Specifies the total weight across all clusters. The sum of all cluster weights must equal this
 value, if this is greater than 0.
 This field is now deprecated, and the client will use the sum of all
 cluster weights. It is up to the management server to supply the correct weights.


?

?*

?-.

?R

?

	??K?Q
?
? ? Specifies the runtime key prefix that should be used to construct the
 runtime keys associated with each cluster. When the ``runtime_key_prefix`` is
 specified, the router will look for weights associated with each upstream
 cluster under the key ``runtime_key_prefix`` + ``.`` + ``cluster[i].name`` where
 ``cluster[i]`` denotes an entry in the clusters array field. If the runtime
 key for the cluster does not exist, the value specified in the
 configuration file will be used as the default weight. See the :ref:`runtime documentation
 ` for how key names map to the underlying implementation.


?

?	

?

??

?
?
??W? Specifies the header name that is used to look up the random value passed in the request header.
 This is used to ensure consistent cluster picking across multiple proxy levels for weighted traffic.
 If header is not present or invalid, Envoy will fall back to use the internally generated random value.
 This header is expected to be single-valued header as we only want to have one selected value throughout
 the process for the consistency. And the value is a unsigned number between 0 and UINT64_MAX.


?


?

?

?V

??	U
=
??/ Configuration for a cluster specifier plugin.


?
D
?[6 The name of the plugin and its opaque configuration.


?

?(

?+,

?-Z

??.Y
?
?? If is_optional is not set or is set to false and the plugin defined by this message is not a
 supported type, the containing resource is NACKed. If is_optional is set to true, the resource
 would not be NACKed for this reason. In this case, routes referencing this plugin's name would
 not be treated as an illegal configuration, but would result in a failure if the route is
 selected.


?

?

?
&
?? [#next-free-field: 16]


?

?_

ӈ??_

??

?


??>


ӈ???>

??

?
 

???


ӈ????
?
?,? If specified, the route will match against whether or not a certificate is presented.
 If not specified, certificate presentation status (true or false) will not be considered when route matching.


?

?'

?*+
?
?,? If specified, the route will match against whether or not a certificate is validated.
 If not specified, certificate validation status (true or false) will not be considered when route matching.

 .. warning::

    Client certificate validation is not currently performed upon TLS session resumption. For
    a resumed TLS session the route will match only when ``validated`` is false, regardless of
    whether the client TLS certificate is valid.

    The only known workaround for this issue is to disable TLS session resumption entirely, by
    setting both :ref:`disable_stateless_session_resumption `
    and :ref:`disable_stateful_session_resumption ` on the DownstreamTlsContext.


?

?'

?*+
U
??E An extensible message for matching CONNECT or CONNECT-UDP requests.


?


	?

	?

	?

	?

	?

	?

	?


?


?

??

?

?&

??&
?
?u If specified, the route is a prefix rule meaning that the prefix must
 match the beginning of the ``:path`` header.


?


?

?
?
?? If specified, the route is an exact path rule meaning that the path must
 exactly match the ``:path`` header once the query string is removed.


?


?

?
?
?_? If specified, the route is a regular expression rule meaning that the
 regex must match the ``:path`` header once the query string is removed. The entire path
 (without the query string) must match the regex. The rule will not match if only a
 subsequence of the ``:path`` header matches the regex.

 [#next-major-version: In the v3 API we should redo how path specification works such
 that we utilize StringMatcher, and additionally have consistent options around whether we
 strip query strings, do a case sensitive match, etc. In the interim it will be too disruptive
 to deprecate the existing options. We should even consider whether we want to do away with
 path_specifier entirely and just rely on a set of header matchers which can already match
 on :path, etc. The issue with that is it is unclear how to generically deal with query string
 stripping. This needs more thought.]


? 

?!+

?.0

?1^

??2]
?
?(? If this is used as the matcher, the matcher will only match CONNECT or CONNECT-UDP requests.
 Note that this will not match other Extended CONNECT requests (WebSocket and the like) as
 they are normalized in Envoy as HTTP/1.1 style upgrades.
 This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2 and HTTP/3,
 where Extended CONNECT requests may have a path, the path matchers will work if
 there is a path present.
 Note that CONNECT support is currently considered alpha in Envoy.
 [#comment: TODO(htuch): Replace the above comment with an alpha tag.]


?

?"

?%'
?
?^? If specified, the route is a path-separated prefix rule meaning that the
 ``:path`` header (without the query string) must either exactly match the
 ``path_separated_prefix`` or have it as a prefix, followed by ``/``

 For example, ``/api/dev`` would match
 ``/api/dev``, ``/api/dev/``, ``/api/dev/v1``, and ``/api/dev?param=true``
 but would not match ``/api/developer``

 Expect the value to not contain ``?`` or ``#`` and not to end in ``/``


?


? 

?#%

?&]

??'\
7
?8) [#extension-category: envoy.path.match]


? 

?!2

?57
?
?/v Indicates that prefix/path matching should be case sensitive. The default
 is true. Ignored for safe_regex matching.


?

?*

?-.
?	
?8?	 Indicates that the route should additionally match on a runtime key. Every time the route
 is considered for a match, it must also fall under the percentage of matches indicated by
 this field. For some fraction N/D, a random number in the range [0,D) is selected. If the
 number is <= the value of the numerator N, or if the key is not present, the default
 value, the router continues to evaluate the remaining match criteria. A runtime_fraction
 route configuration can be used to roll out route changes in a gradual manner without full
 code/config deploys. Refer to the :ref:`traffic shifting
 ` docs for additional documentation.

 .. note::

    Parsing this field is implemented such that the runtime key's data may be represented
    as a FractionalPercent proto represented as JSON/YAML and may also be represented as an
    integer with the assumption that the value is an integral percentage out of 100. For
    instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent
    whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics.


?"

?#3

?67
?
?%? Specifies a set of headers that the route should match on. The router will
 check the request’s headers against all the specified headers in the route
 config. A match will happen if all the headers in the route are present in
 the request with the same values (or based on presence if the value field
 is not in the config).


?


?

? 

?#$
?
	?6? Specifies a set of URL query parameters on which the route should
 match. The router will check the query string from the ``path`` header
 against all the specified query parameters. If the number of specified
 query parameters is nonzero, they all must match the ``path`` header's
 query string for a match to occur. In the event query parameters are
 repeated, only the first value for each key will be considered.

 .. note::

    If query parameters are used to pass request message fields when
    `grpc_json_transcoder `_
    is used, the transcoded message fields maybe different. The query parameters are
    url encoded, but the message fields are not. For example, if a query
    parameter is "foo%20bar", the message field will be "foo bar".


	?


	? 

	?!1

	?45
?

?!? If specified, only gRPC requests will be matched. The router will check
 that the content-type header has a application/grpc or one of the various
 application/grpc+ values.



?


?


? 
?
?*? If specified, the client tls context will be matched against the defined
 match options.

 [#next-major-version: unify with RBAC]


?

?$

?')
?
?A? Specifies a set of dynamic metadata matchers on which the route should match.
 The router will check the dynamic metadata against all the specified dynamic metadata matchers.
 If the number of specified dynamic metadata matchers is nonzero, they all must match the
 dynamic metadata for a match to occur.


?


?*

?+;

?>@
?
??? Cors policy configuration.

 .. attention::

   This message has been deprecated. Please use
   :ref:`CorsPolicy in filter extension `
   as as alternative.

 [#next-free-field: 14]


?

?_

ӈ??_

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?


?;


?


?/


?1:
?
?Hr Specifies string patterns that match allowed origins. An origin is allowed if any of the
 string matchers match.


?


?(

?)B

?EG
V
?H Specifies the content for the ``access-control-allow-methods`` header.


?

?	

?
V
?H Specifies the content for the ``access-control-allow-headers`` header.


?

?	

?
W
?I Specifies the content for the ``access-control-expose-headers`` header.


?

?	

?
P
?B Specifies the content for the ``access-control-max-age`` header.


?

?	

?
B
?24 Specifies whether the resource allows credentials.


?

?-

?01

??

?
?
?8? Specifies the % of requests for which the CORS filter is enabled.

 If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS
 filter will be enabled for 100% of the requests.

 If :ref:`runtime_key ` is
 specified, Envoy will lookup the runtime key to get the percentage of requests to filter.


?$

?%3

?67
?
?7? Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not
 enforced.

 This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those
 fields have to explicitly disable the filter in order for this setting to take effect.

 If :ref:`runtime_key ` is specified,
 Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate
 and track the request's ``Origin`` to determine if it's valid but will not enforce any policies.


?"

?#1

?46
?
?>? Specify whether allow requests whose target server's IP address is more private than that from
 which the request initiator was fetched.

 More details refer to https://developer.chrome.com/blog/private-network-access-preflight.


?

?8

?;=
?
	?A? Specifies if preflight requests not matching the configured allowed origin should be forwarded
 to the upstream. Default is true.


	?

	?;

	?>@
&
??
 [#next-free-field: 42]


?

?`

ӈ??`

??

?"
=
?- HTTP status code - 503 Service Unavailable.


?

?
3
?# HTTP status code - 404 Not Found.


?

?
?
?/ HTTP status code - 500 Internal Server Error.


?

?
?
??? Configures :ref:`internal redirect ` behavior.
 [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.]


?

?

?

?'

?"

?%&

?!

?

? 
?
??? The router is capable of shadowing traffic from one cluster to another. The current
 implementation is "fire and forget," meaning Envoy will not wait for the shadow cluster to
 respond before returning the response from the primary cluster. All normal statistics are
 collected for the shadow cluster making this feature useful for testing.

 During shadowing, the host/authority header is altered such that ``-shadow`` is appended. This is
 useful for logging. For example, ``cluster1`` becomes ``cluster1-shadow``.

 .. note::

   Shadowing will not be triggered if the primary cluster does not exist.

 .. note::

   Shadowing doesn't support Http CONNECT and upgrades.
 [#next-free-field: 6]


?


??=


ӈ???=

	?

	?


	?


	?



?


?

?
?`? Only one of ``cluster`` and ``cluster_header`` can be specified.
 [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]
 Specifies the cluster that requests will be mirrored to. The cluster must
 exist in the cluster manager configuration.


?


?

?

?_

???Q?^
?
??? Only one of ``cluster`` and ``cluster_header`` can be specified.
 Envoy will determine the cluster to route to by reading the value of the
 HTTP header named by cluster_header from the request headers. Only the first value in header is used,
 and no shadow request will happen if the value is not found in headers. Envoy will not wait for
 the shadow cluster to respond before returning the response from the primary cluster.

 .. attention::

   Internally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1
   ``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.

 .. note::

   If the header appears multiple times only the first value is used.


?


?

?

??


??R

???Q?L
?
?:? If not specified, all requests to the target cluster will be mirrored.

 If specified, this field takes precedence over the ``runtime_key`` field and requests must also
 fall under the percentage of matches indicated by this field.

 For some fraction N/D, a random number in the range [0,D) is selected. If the
 number is <= the value of the numerator N, or if the key is not present, the default
 value, the request will be mirrored.


?$

?%5

?89
S
?0C Determines if the trace span should be sampled. Defaults to true.


?

?+

?./
?
??? Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
 `.
 [#next-free-field: 7]


?


??4


ӈ???4

??

?

??=

ӈ???=
?
??d? The name of the request header that will be used to obtain the hash
 key. If the request header is not present, no hash will be produced.


	?

	?


	?

	?
c

??b
o
?@] If specified, the request header value will be rewritten and used
 to produce the hash key.


	?-

	?.;

	?>?
f
??T CookieAttribute defines an API for adding additional attributes for a HTTP cookie.


?
7
??_# The name of the cookie attribute.


	?

	?


	?

	?
?^

???]
A
??b- The optional value of the cookie attribute.


	?

	?


	?

	??a

???`
?
??? Envoy supports two types of cookie affinity:

 1. Passive. Envoy takes a cookie that's present in the cookies header and
    hashes on its value.

 2. Generated. Envoy generates and sets a cookie with an expiration (TTL)
    on the first request from the client in its response to the client,
    based on the endpoint the request gets sent to. The client then
    presents this on the next and all subsequent requests. The hash of
    this is sufficient to ensure these requests get sent to the same
    endpoint. The cookie is generated by hashing the source and
    destination ports and addresses so that multiple independent HTTP2
    streams on the same connection will independently receive the same
    cookie, even if they arrive at the Envoy simultaneously.


?

??=

ӈ???=
?
??? The name of the cookie that will be used to obtain the hash key. If the
 cookie is not present and ttl below is not set, no hash will be
 produced.


	?

	?


	?

	?>

??=
?
?'? If specified, a cookie with the TTL will be generated if the cookie is
 not present. If the TTL is present and zero, the generated cookie will
 be a session cookie.


	?

	?"

	?%&
{
?i The name of the path for the cookie. If no path is specified here, no path
 will be set for the cookie.


	?

	?


	?
i
?.W Additional attributes for the cookie. They will be used when generating a new cookie.


	?

	?

	?)

	?,-

??

? 

??K

ӈ???K
.
? Hash on source IP address.


	?


	?

	?

??

?

??E

ӈ???E
?
??? The name of the URL query parameter that will be used to obtain the hash
 key. If the parameter is not present, no hash will be produced. Query
 parameter names are case-sensitive. If query parameters are repeated, only
 the first value will be considered.


	?

	?


	?

	?>

??=

??

?

??B

ӈ???B
?
?>? The name of the Object in the per-request filterState, which is an
 Envoy::Hashable object. If there is no data associated with the key,
 or the stored object is not Envoy::Hashable, no hash will be produced.


	?

	?


	?

	?=

??<

??

?


?(

	??(
%
? Header hash policy.


?

?


?
%
? Cookie hash policy.


?

?


?
4
?5$ Connection properties hash policy.


?

?0

?34
.
?) Query parameter hash policy.


?

?$

?'(
+
?# Filter state hash policy.


?

?

?!"
?
?? The flag that short-circuits the hash computing. This field provides a
 'fallback' style of configuration: "if a terminal policy doesn't work,
 fallback to rest of the policy list", it saves time when the terminal
 policy works.

 If true, and there is already a hash computed, ignore rest of the
 list of hash polices.
 For example, if the following hash methods are configured:

  ========= ========
  specifier terminal
  ========= ========
  Header A  true
  Header B  false
  Header C  false
  ========= ========

 The generateHash process ends if policy "header A" generates a hash, as
 it's a terminal policy.


?

?	

?
?
??? Allows enabling and disabling upgrades on a per-route basis.
 This overrides any enabled/disabled upgrade filter chain specified in the
 HttpConnectionManager
 :ref:`upgrade_configs
 `
 but does not affect any custom filter chain specified there.


?


??7


ӈ???7
?
??? Configuration for sending data upstream as a raw data payload. This is used for
 CONNECT or POST requests, when forwarding request payload as raw TCP.


?
q
?<_ If present, the proxy protocol header will be prepended to the CONNECT payload sent upstream.


	?!

	?"7

	?:;
Y
?G If set, the route will also allow forwarding POST payload as raw TCP.


	?


	?

	?
?
??c? The case-insensitive name of this upgrade, e.g. "websocket".
 For each upgrade type present in upgrade_configs, requests with
 Upgrade: [upgrade_type] will be proxied upstream.


?


?

?

?b


??	a
W
?*G Determines if upgrades are available on this route. Defaults to true.


?

?%

?()
?
?%? Configuration for sending data upstream as a raw data payload. This is used for
 CONNECT requests, when forwarding CONNECT payload as raw TCP.
 Note that CONNECT support is currently considered alpha in Envoy.
 [#comment: TODO(htuch): Replace the above comment with an alpha tag.]


?

? 

?#$

??

?

?
?5? Specifies the maximum duration allowed for streams on the route. If not specified, the value
 from the :ref:`max_stream_duration
 ` field in
 :ref:`HttpConnectionManager.common_http_protocol_options
 `
 is used. If this field is set explicitly to zero, any
 HttpConnectionManager max_stream_duration timeout will be disabled for
 this route.


?

?0

?34
?
?9? If present, and the request contains a `grpc-timeout header
 `_, use that value as the
 ``max_stream_duration``, but limit the applied timeout to the maximum value specified here.
 If set to 0, the ``grpc-timeout`` header is used without modification.


?

?4

?78
?
?<? If present, Envoy will adjust the timeout provided by the ``grpc-timeout`` header by
 subtracting the provided duration from the header. This is useful for allowing Envoy to set
 its global timeout to be less than that of the deadline imposed by the calling client, which
 makes it more likely that Envoy will handle the timeout instead of having the call canceled
 by the client. If, after applying the offset, the resulting timeout is zero or negative,
 the stream will timeout immediately.


?

?7

?:;

	?&

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?!

	?!

	?!

	?#%

	?#%

	?#%


?#


?"

??

?

?&

??&
Y
?@K Indicates the upstream cluster to which the request should be routed
 to.


?


?

?

??

??>
?
??b? Envoy will determine the cluster to route to by reading the value of the
 HTTP header named by cluster_header from the request headers. If the
 header is not found or the referenced cluster does not exist, Envoy will
 return a 404 response.

 .. attention::

   Internally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1
   ``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.

 .. note::

   If the header appears multiple times only the first value is used.


?


?

?

?a

??	`
?
?*? Multiple upstream clusters can be specified for a given route. The
 request is routed to one of the upstream clusters based on weights
 assigned to each cluster. See
 :ref:`traffic splitting `
 for additional documentation.


?

?%

?()
?
?)? Name of the cluster specifier plugin to use to determine the cluster for requests on this route.
 The cluster specifier plugin name must be defined in the associated
 :ref:`cluster specifier plugins `
 in the :ref:`name ` field.


?


?#

?&(
z
?@l Custom cluster specifier plugin configuration to use to determine the cluster for requests
 on this route.


?

?:

?=?
?
??5z The HTTP status code to use when configured cluster is not found.
 The default response code is 503 Service Unavailable.


?

?=

?@B

?4

??3
?
?&? Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints
 in the upstream cluster with metadata matching what's set in this field will be considered
 for load balancing. If using :ref:`weighted_clusters
 `, metadata will be merged, with values
 provided there taking precedence. The filter name should be specified as ``envoy.lb``.


?

?!

?$%
?
??V? Indicates that during forwarding, the matched prefix (or path) should be
 swapped with this value. This option allows application URLs to be rooted
 at a different path from those exposed at the reverse proxy layer. The router filter will
 place the original path before rewrite into the :ref:`x-envoy-original-path
 ` header.

 Only one of :ref:`regex_rewrite `
 :ref:`path_rewrite_policy `,
 or :ref:`prefix_rewrite ` may be specified.

 .. attention::

   Pay careful attention to the use of trailing slashes in the
   :ref:`route's match ` prefix value.
   Stripping a prefix from a path requires multiple Routes to handle all cases. For example,
   rewriting ``/prefix`` to ``/`` and ``/prefix/etc`` to ``/etc`` cannot be done in a single
   :ref:`Route `, as shown by the below config entries:

   .. code-block:: yaml

     - match:
         prefix: "/prefix/"
       route:
         prefix_rewrite: "/"
     - match:
         prefix: "/prefix"
       route:
         prefix_rewrite: "/"

   Having above entries in the config, requests to ``/prefix`` will be stripped to ``/``, while
   requests to ``/prefix/etc`` will be stripped to ``/etc``.


?

?	

?

?U

??T
?
?=? Indicates that during forwarding, portions of the path that match the
 pattern should be rewritten, even allowing the substitution of capture
 groups from the pattern into the new path as specified by the rewrite
 substitution string. This is useful to allow application paths to be
 rewritten in a way that is aware of segments with variable content like
 identifiers. The router filter will place the original path as it was
 before the rewrite into the :ref:`x-envoy-original-path
 ` header.

 Only one of :ref:`regex_rewrite `,
 :ref:`prefix_rewrite `, or
 :ref:`path_rewrite_policy `]
 may be specified.

 Examples using Google's `RE2 `_ engine:

 * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution
   string of ``\2/instance/\1`` would transform ``/service/foo/v1/api``
   into ``/v1/api/instance/foo``.

 * The pattern ``one`` paired with a substitution string of ``two`` would
   transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``.

 * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of
   ``\1two\2`` would replace only the first occurrence of ``one``,
   transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``.

 * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/``
   would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to
   ``/aaa/yyy/bbb``.


?)

?*7

?:<
9
	?8+ [#extension-category: envoy.path.rewrite]


	?

	?2

	?57

??	

?
?

?	?	X? Indicates that during forwarding, the host header will be swapped with
 this value. Using this option will append the
 :ref:`config_http_conn_man_headers_x-forwarded-host` header if
 :ref:`append_x_forwarded_host `
 is set.



?	



?	


?	"#


?	W


??		V
?
?	4? Indicates that during forwarding, the host header will be swapped with
 the hostname of the upstream host chosen by the cluster manager. This
 option is applicable only when the destination cluster for a route is of
 type ``strict_dns`` or ``logical_dns``,
 or when :ref:`hostname `
 field is not empty. Setting this to true with other cluster types
 has no effect. Using this option will append the
 :ref:`config_http_conn_man_headers_x-forwarded-host` header if
 :ref:`append_x_forwarded_host `
 is set.


?	

?	/

?	23
?
?	?	W? Indicates that during forwarding, the host header will be swapped with the content of given
 downstream or :ref:`custom ` header.
 If header value is empty, host header is left intact. Using this option will append the
 :ref:`config_http_conn_man_headers_x-forwarded-host` header if
 :ref:`append_x_forwarded_host `
 is set.

 .. attention::

   Pay attention to the potential security implications of using this option. Provided header
   must come from trusted source.

 .. note::

   If the header appears multiple times only the first value is used.


?	


?	

?	!#

?	V

??		U
?

?	I? Indicates that during forwarding, the host header will be swapped with
 the result of the regex substitution executed on path value with query and fragment removed.
 This is useful for transitioning variable content between path segment and subdomain.
 Using this option will append the
 :ref:`config_http_conn_man_headers_x-forwarded-host` header if
 :ref:`append_x_forwarded_host `
 is set.

 For example with the following config:

   .. code-block:: yaml

     host_rewrite_path_regex:
       pattern:
         google_re2: {}
         regex: "^/(.+)/.+$"
       substitution: \1

 Would rewrite the host header to ``envoyproxy.io`` given the path ``/envoyproxy.io/some/path``.



?	+


?	,C


?	FH
?
?	$? If set, then a host rewrite action (one of
 :ref:`host_rewrite_literal `,
 :ref:`auto_host_rewrite `,
 :ref:`host_rewrite_header `, or
 :ref:`host_rewrite_path_regex `)
 causes the original value of the host header, if any, to be appended to the
 :ref:`config_http_conn_man_headers_x-forwarded-host` HTTP header if it is different to the last value appended.


?	

?	

?	!#
?
?	'? Specifies the upstream timeout for the route. If not specified, the default is 15s. This
 spans between the point at which the entire downstream request (i.e. end-of-stream) has been
 processed and when the upstream response has been completely processed. A value of 0 will
 disable the route's timeout.

 .. note::

   This timeout includes all retries. See also
   :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,
   :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the
   :ref:`retry overview `.


?	

?	"

?	%&
?
?	-? Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout,
 although the connection manager wide :ref:`stream_idle_timeout
 `
 will still apply. A value of 0 will completely disable the route's idle timeout, even if a
 connection manager stream idle timeout is configured.

 The idle timeout is distinct to :ref:`timeout
 `, which provides an upper bound
 on the upstream response time; :ref:`idle_timeout
 ` instead bounds the amount
 of time the request's stream may be idle.

 After header decoding, the idle timeout will apply on downstream and
 upstream request events. Each time an encode/decode event for headers or
 data is processed for the stream, the timer will be reset. If the timeout
 fires, the stream is terminated with a 408 Request Timeout error code if no
 upstream response header has been received, otherwise a stream reset
 occurs.

 If the :ref:`overload action ` "envoy.overload_actions.reduce_timeouts"
 is configured, this timeout is scaled according to the value for
 :ref:`HTTP_DOWNSTREAM_STREAM_IDLE `.


?	

?	'

?	*,
?
?	6? Specifies how to send request over TLS early data.
 If absent, allows `safe HTTP requests `_ to be sent on early data.
 [#extension-category: envoy.route.early_data_policy]


?	

?	0

?	35
?
?	? Indicates that the route has a retry policy. Note that if this is set,
 it'll take precedence over the virtual host level retry policy entirely
 (e.g.: policies are not merged, most internal one becomes the enforced policy).


?	

?	

?	
?
?	5? [#not-implemented-hide:]
 Specifies the configuration for retry policy extension. Note that if this is set, it'll take
 precedence over the virtual host level retry policy entirely (e.g.: policies are not merged,
 most internal one becomes the enforced policy). :ref:`Retry policy `
 should not be set if this field is used.


?	

?	/

?	24
?
?	<? Specify a set of route request mirroring policies.
 It takes precedence over the virtual host and route config mirror policy entirely.
 That is, policies are not merged, the most specific non-empty one becomes the mirror policies.


?	


?	

?	6

?	9;
g
?	WY Optionally specifies the :ref:`routing priority `.


?	

?	"

?	%'

?	(V

??	)U
a
?
&S Specifies a set of rate limit configurations that could be applied to the
 route.


?



?


?
 

?
#%
?
?
?
S? Specifies if the rate limit filter should include the virtual host rate
 limits. By default, if the route configured rate limits, the virtual host
 :ref:`rate_limits ` are not applied to the
 request.

 This field is deprecated. Please use :ref:`vh_rate_limits `


?


?
2

?
57

?
R

?


	??K?
Q
?
?
'? Specifies a list of hash policies to use for ring hash load balancing. Each
 hash policy is evaluated individually and the combined result is used to
 route the request. The method of combination is deterministic such that
 identical lists of hash policies will produce the same hash. Since a hash
 policy examines specific parts of a request, it can fail to produce a hash
 (i.e. if the hashed header is not present). If (and only if) all configured
 hash policies fail to generate a hash, no hash will be produced for
 the route. In this case, the behavior is the same as if no hash policies
 were specified (i.e. the ring hash load balancer will choose a random
 backend). If a hash policy has the "terminal" attribute set to true, and
 there is already a hash generated, the hash is returned immediately,
 ignoring the rest of the hash policy list.


?



?


?
!

?
$&
?
?
d? Indicates that the route has a CORS policy. This field is ignored if related cors policy is
 found in the :ref:`Route.typed_per_filter_config` or
 :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config`.

 .. attention::

   This option has been deprecated. Please use
   :ref:`Route.typed_per_filter_config` or
   :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config`
   to configure the CORS HTTP filter.


?


?



?


?
c

?
)

	??K?
+b
?
?
?
S? Deprecated by :ref:`grpc_timeout_header_max `
 If present, and the request is a gRPC request, use the
 `grpc-timeout header `_,
 or its default value (infinity) instead of
 :ref:`timeout `, but limit the applied timeout
 to the maximum value specified here. If configured as 0, the maximum allowed timeout for
 gRPC requests is infinity. If not configured at all, the ``grpc-timeout`` header is not used
 and gRPC requests time out like any other requests using
 :ref:`timeout ` or its default.
 This can be used to prevent unexpected upstream request timeouts due to potentially long
 time gaps between gRPC request and response in gRPC streaming mode.

 .. note::

    If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes
    precedence over `grpc-timeout header `_, when
    both are present. See also
    :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,
    :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the
    :ref:`retry overview `.


?


?
+

?
.0

?
R

?


	??K?
Q
?
?
?
S? Deprecated by :ref:`grpc_timeout_header_offset `.
 If present, Envoy will adjust the timeout provided by the ``grpc-timeout`` header by subtracting
 the provided duration from the header. This is useful in allowing Envoy to set its global
 timeout to be less than that of the deadline imposed by the calling client, which makes it more
 likely that Envoy will handle the timeout instead of having the call canceled by the client.
 The offset will only be applied if the provided grpc_timeout is greater than the offset. This
 ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning
 infinity).


?


?
.

?
13

?
R

?


	??K?
Q

?
.

?



?


?
(

?
+-
?
?
7? If present, Envoy will try to follow an upstream redirect response instead of proxying the
 response back to the downstream. An upstream redirect response is defined
 by :ref:`redirect_response_codes
 `.


?


?
1

?
46

?
?
S

?


?
1

?
46

?
R

?


	??K?
Q
?
?
?
S? An internal redirect is handled, iff the number of previous internal redirects that a
 downstream request has encountered is lower than this value, and
 :ref:`internal_redirect_action `
 is set to :ref:`HANDLE_INTERNAL_REDIRECT
 `
 In the case where a downstream request is bounced among multiple routes by internal redirect,
 the first route that hits this threshold, or has
 :ref:`internal_redirect_action `
 set to
 :ref:`PASS_THROUGH_INTERNAL_REDIRECT
 `
 will pass the redirect back to downstream.

 If not specified, at most one redirect will be followed.


?


?
4

?
79

?
R

?


	??K?
Q
?
 ?
 ? Indicates that the route has a hedge policy. Note that if this is set,
 it'll take precedence over the virtual host level hedge policy entirely
 (e.g.: policies are not merged, most internal one becomes the enforced policy).


 ?


 ?


 ?

E
!?
-7 Specifies the maximum stream duration for this route.


!?


!?
'

!?
*,
s
	?
?e HTTP retry :ref:`architecture overview `.
 [#next-free-field: 14]


	?


	?
`

	ӈ??
`

	?
?


	?


	?


	?


	?


	?


	?


	?


	?
?

	?



	?
?
7


	ӈ??
?
7

		?


		?



		?



		?



	
?


	
?



	?=

	?


	?

	?

	?<


	??;
A
	??/ [#extension-category: envoy.retry_priorities]


	?


	?+

	?

	?&

	?)*

	??

	?


	??<


	ӈ???<

		?

		?


		?


		?


	
?

	
?


	?=

	?


	?

	?

	?<


	??;
F
	??4 [#extension-category: envoy.retry_host_predicates]


	?


	?+

	?

	?&

	?)*

	??

	?


	??6


	ӈ???6
?
	??? Specifies the base interval between retries. This parameter is required and must be greater
 than zero. Values less than 1 ms are rounded up to 1 ms.
 See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's
 back-off algorithm.


	?

	?*

	?-.

	?/?


	??0?
?
	?T? Specifies the maximum interval between retries. This parameter is optional, but must be
 greater than or equal to the ``base_interval`` if set. The default is 10 times the
 ``base_interval``. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion
 of Envoy's back-off algorithm.


	?

	?)

	?,-

	?.S


	??/R

	??

	?

?
	??br The name of the reset header.

 .. note::

   If the header appears multiple times only the first value is used.


	?


	?

	?

	?a


	??	`
1
	?P! The format of the reset header.


	?

	?

	? 

	?!O


	??"N
?
	??? A retry back-off strategy that applies when the upstream server rate limits
 the request.

 Given this configuration:

 .. code-block:: yaml

   rate_limited_retry_back_off:
     reset_headers:
     - name: Retry-After
       format: SECONDS
     - name: X-RateLimit-Reset
       format: UNIX_TIMESTAMP
     max_interval: "300s"

 The following algorithm will apply:

  1. If the response contains the header ``Retry-After`` its value must be on
     the form ``120`` (an integer that represents the number of seconds to
     wait before retrying). If so, this value is used as the back-off interval.
  2. Otherwise, if the response contains the header ``X-RateLimit-Reset`` its
     value must be on the form ``1595320702`` (an integer that represents the
     point in time at which to retry, as a Unix timestamp in seconds). If so,
     the current time is subtracted from this value and the result is used as
     the back-off interval.
  3. Otherwise, Envoy will use the default
     :ref:`exponential back-off `
     strategy.

 No matter which format is used, if the resulting back-off interval exceeds
 ``max_interval`` it is discarded and the next header in ``reset_headers``
 is tried. If a request timeout is configured for the route it will further
 limit how long the request will be allowed to run.

 To prevent many clients retrying at the same point in time jitter is added
 to the back-off interval, so the resulting interval is decided by taking:
 ``random(interval, interval * 1.5)``.

 .. attention::

   Configuring ``rate_limited_retry_back_off`` will not by itself cause a request
   to be retried. You will still need to configure the right retry policy to match
   the responses from the upstream server.


	?
!
?
	?X? Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
 to match against the response. Headers are tried in order, and matched case
 insensitive. The first header to be parsed successfully is used. If no headers
 match the default exponential back-off is used instead.


	?

	?


	?&

	?)*

	?+W


	??,V
?
	?T? Specifies the maximum back off interval that Envoy will allow. If a reset
 header contains an interval longer than this then it will be discarded and
 the next header will be tried. Defaults to 300 seconds.


	?

	?)

	?,-

	?.S


	??/R
?
	?? Specifies the conditions under which retry takes place. These are the same
 conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and
 :ref:`config_http_filters_router_x-envoy-retry-grpc-on`.


	?

	?	

	?
?
	??@? Specifies the allowed number of retries. This parameter is optional and
 defaults to 1. These are the same conditions documented for
 :ref:`config_http_filters_router_x-envoy-max-retries`.


	?

	?)

	?,-

	??


	???Q?>
?
	?/? Specifies a non-zero upstream timeout per retry attempt (including the initial attempt). This
 parameter is optional. The same conditions documented for
 :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply.

 .. note::

   If left unspecified, Envoy will use the global
   :ref:`route timeout ` for the request.
   Consequently, when using a :ref:`5xx ` based
   retry policy, a request that times out will not be retried as the total timeout budget
   would have been exhausted.


	?

	?*

	?-.
?
	?5? Specifies an upstream idle timeout per retry attempt (including the initial attempt). This
 parameter is optional and if absent there is no per try idle timeout. The semantics of the per
 try idle timeout are similar to the
 :ref:`route idle timeout ` and
 :ref:`stream idle timeout
 `
 both enforced by the HTTP connection manager. The difference is that this idle timeout
 is enforced by the router for each individual attempt and thus after all previous filters have
 run, as opposed to *before* all previous filters run for the other idle timeouts. This timeout
 is useful in cases in which total request timeout is bounded by a number of retries and a
 :ref:`per_try_timeout `, but
 there is a desire to ensure each try is making incremental progress. Note also that similar
 to :ref:`per_try_timeout `,
 this idle timeout does not start until after both the entire request has been received by the
 router *and* a connection pool connection has been obtained. Unlike
 :ref:`per_try_timeout `,
 the idle timer continues once the response starts streaming back to the downstream client.
 This ensures that response data continues to make progress without using one of the HTTP
 connection manager idle timeouts.


	?

	?/

	?24
?
	?#? Specifies an implementation of a RetryPriority which is used to determine the
 distribution of load across priorities used for retries. Refer to
 :ref:`retry plugin configuration ` for more details.


	?

	?

	?!"
?
	?7? Specifies a collection of RetryHostPredicates that will be consulted when selecting a host
 for retries. If any of the predicates reject the host, host selection will be reattempted.
 Refer to :ref:`retry plugin configuration ` for more
 details.


	?


	?

	?2

	?56
?
	?F? Retry options predicates that will be applied prior to retrying a request. These predicates
 allow customizing request behavior between retries.
 [#comment: add [#extension-category: envoy.retry_options_predicates] when there are built-in extensions]


	?


	?'

	?(@

	?CE
?
	?.? The maximum number of times host selection will be reattempted before giving up, at which
 point the host that was last selected will be routed to. If unspecified, this will default to
 retrying once.


	?

	?)

	?,-
i
	?-[ HTTP status codes that should trigger a retry in addition to those specified by retry_on.


	?


	?

	?(

	?+,
?
		?"? Specifies parameters that control exponential retry back off. This parameter is optional, in which case the
 default base interval is 25 milliseconds or, if set, the current value of the
 ``upstream.base_retry_backoff_ms`` runtime parameter. The default maximum interval is 10 times
 the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries`
 describes Envoy's back-off algorithm.


		?

		?

		? !
?
	
?;? Specifies parameters that control a retry back-off strategy that is used
 when the request is rate limited by the upstream server. The server may
 return a response header like ``Retry-After`` or ``X-RateLimit-Reset`` to
 provide feedback to the client on how long to wait before retrying. If
 configured, this back-off strategy will be used instead of the
 default exponential back off strategy (configured using ``retry_back_off``)
 whenever a response includes the matching headers.


	
?

	
?5

	
?8:
?
	?/? HTTP response headers that trigger a retry if present in the response. A retry will be
 triggered if any of the header matches match the upstream response headers.
 The field is only consulted if 'retriable-headers' retry policy is active.


	?


	?

	?*

	?-.
^
	?8P HTTP headers which must be present in the request for retries to be attempted.


	?


	?

	?2

	?57
g

??Y HTTP request hedging :ref:`architecture overview `.



?


?`


ӈ??`
?

?X? Specifies the number of initial requests that should be sent upstream.
 Must be at least 1.
 Defaults to 1.
 [#not-implemented-hide:]



?


?.


?12


?3W


??4V
?

?:? Specifies a probability that an additional upstream request should be sent
 on top of what is specified by initial_requests.
 Defaults to 0.
 [#not-implemented-hide:]



?


?5


?89
?

?$? Indicates that a hedged request should be sent when the per-try timeout is hit.
 This means that a retry will be issued without resetting the original request, leaving multiple upstream requests in flight.
 The first request to complete successfully will be the one returned to the caller.

 * At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client.
 * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned ot the client
   if there are no more retries left.
 * After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress.

 Note: For this to have effect, you must have a :ref:`RetryPolicy ` that retries at least
 one error code and specifies a maximum number of retries.

 Defaults to false.



?


?


?"#
&
??
 [#next-free-field: 10]


?

?c

ӈ??c

??


?
;
?+ Moved Permanently HTTP Status Code - 301.


?

?
/
? Found HTTP Status Code - 302.


?	

?
3
?# See Other HTTP Status Code - 303.


?

?
<
?, Temporary Redirect HTTP Status Code - 307.


?

?
<
?
, Permanent Redirect HTTP Status Code - 308.


?


?

?
?
?
? When the scheme redirection take place, the following rules apply:
  1. If the source URI scheme is ``http`` and the port is explicitly
     set to ``:80``, the port will be removed after the redirection
  2. If the source URI scheme is ``https`` and the port is explicitly
     set to ``:443``, the port will be removed after the redirection


?
 
K
?
= The scheme portion of the URL will be swapped with "https".


?


?
	

?

N
?
@ The scheme portion of the URL will be swapped with this value.


?



?


?

N
?
?
V> The host portion of the URL will be swapped with this value.


?


?
	

?


?
U

??
T
J
?
< The port value of the URL will be swapped with this value.


?


?
	

?


?
?


?

?
?
?
X? The path portion of the URL will be swapped with this value.
 Please note that query string in path_redirect will override the
 request's query string and will not be stripped.

 For example, let's say we have the following routes:

 - match: { path: "/old-path-1" }
   redirect: { path_redirect: "/new-path-1" }
 - match: { path: "/old-path-2" }
   redirect: { path_redirect: "/new-path-2", strip-query: "true" }
 - match: { path: "/old-path-3" }
   redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" }

 1. if request uri is "/old-path-1?bar=1", users will be redirected to "/new-path-1?bar=1"
 2. if request uri is "/old-path-2?bar=1", users will be redirected to "/new-path-2"
 3. if request uri is "/old-path-3?bar=1", users will be redirected to "/new-path-3?foo=1"


?



?


?


?
W

??
	V
?
?
?
X? Indicates that during redirection, the matched prefix (or path)
 should be swapped with this value. This option allows redirect URLs be dynamically created
 based on the request.

 .. attention::

   Pay attention to the use of trailing slashes as mentioned in
   :ref:`RouteAction's prefix_rewrite `.


?



?


?


?
W

??
	V
?	
?
>?	 Indicates that during redirect, portions of the path that match the
 pattern should be rewritten, even allowing the substitution of capture
 groups from the pattern into the new path as specified by the rewrite
 substitution string. This is useful to allow application paths to be
 rewritten in a way that is aware of segments with variable content like
 identifiers.

 Examples using Google's `RE2 `_ engine:

 * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution
   string of ``\2/instance/\1`` would transform ``/service/foo/v1/api``
   into ``/v1/api/instance/foo``.

 * The pattern ``one`` paired with a substitution string of ``two`` would
   transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``.

 * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of
   ``\1two\2`` would replace only the first occurrence of ``one``,
   transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``.

 * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/``
   would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to
   ``/aaa/yyy/bbb``.


?
+

?
,9

?
<=
|
?
Xn The HTTP status code to use in the redirect response. The default response
 code is MOVED_PERMANENTLY (301).


?


?
$

?
'(

?
)W

??
*V
y
?
k Indicates that during redirection, the query portion of the URL will
 be removed. Default value is false.


?


?


?


?
?


?


?
?
0

ӈ??
?
0
B
?
C4 Specifies the HTTP response status to be returned.


?


?
	

?


?
B

??
A
?
?
? Specifies the content of the response body. If this setting is omitted,
 no body is included in the generated response.

 .. note::

   Headers can be specified using ``response_headers_to_add`` in the enclosing
   :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` or
   :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`.


?


?


?

(

?
?
 [#not-implemented-hide:]



?


?
?

?


?
^

ӈ??
^
?
?
@? The operation name associated with the request matched to this route. If tracing is
 enabled, this information will be used as the span name reported for this request.

 .. note::

   For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden
   by the :ref:`x-envoy-decorator-operation
   ` header.


?


?
	

?


?
?

??
>
k
?
*] Whether the decorated details should be propagated to the other party. The default is true.


?


?
%

?
()

??

?

?\

ӈ??\
?
?0? Target percentage of requests managed by this HTTP connection manager that will be force
 traced if the :ref:`x-client-trace-id `
 header is set. This field is a direct analog for the runtime variable
 'tracing.client_enabled' in the :ref:`HTTP Connection Manager
 `.
 Default: 100%


?

?+

?./
?
?0? Target percentage of requests managed by this HTTP connection manager that will be randomly
 selected for trace generation, if not requested by the client or not forced. This field is
 a direct analog for the runtime variable 'tracing.random_sampling' in the
 :ref:`HTTP Connection Manager `.
 Default: 100%


?

?+

?./
?
?1? Target percentage of requests managed by this HTTP connection manager that will be traced
 after all other sampling checks have been applied (client-directed, force tracing, random
 sampling). This field functions as an upper limit on the total configured sampling rate. For
 instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1%
 of client requests with the appropriate headers to be force traced. This field is a direct
 analog for the runtime variable 'tracing.global_enabled' in the
 :ref:`HTTP Connection Manager `.
 Default: 100%


?

?,

?/0
?
?5? A list of custom tags with unique tag name to create tags for the active span.
 It will take effect after merging with the :ref:`corresponding configuration
 `
 configured in the HTTP connection manager. If two tags with the same name are configured
 each in the HTTP connection manager and the route level, the one configured here takes
 priority.


?


?$

?%0

?34
?
??? A virtual cluster is a way of specifying a regex matching rule against
 certain important endpoints such that statistics are generated explicitly for
 the matched requests. The reason this is useful is that when doing
 prefix/path matching Envoy does not always know what the application
 considers to be an endpoint. Thus, it’s impossible for Envoy to generically
 emit per endpoint statistics. However, often systems have highly critical
 endpoints that they wish to get “perfect” statistics on. Virtual cluster
 statistics are perfect in the sense that they are emitted on the downstream
 side such that they include network level failures.

 Documentation for :ref:`virtual cluster statistics `.

 .. note::

    Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for
    every application endpoint. This is both not easily maintainable and as well the matching and
    statistics output are not free.


?

?c

ӈ??c

	?

	?

	?

	?

	?

	?

	?


?


?


?
?
?%? Specifies a list of header matchers to use for matching requests. Each specified header must
 match. The pseudo-headers ``:path`` and ``:method`` can be used to match the request path and
 method, respectively.


?


?

? 

?#$
?
?;? Specifies the name of the virtual cluster. The virtual cluster name as well
 as the virtual host name are used when emitting statistics. The statistics are emitted by the
 router filter and are documented :ref:`here `.


?

?	

?

?:

??9
?
??? Global rate limiting :ref:`architecture overview `.
 Also applies to Local rate limiting :ref:`using descriptors `.


?

?^

ӈ??^
(
?? [#next-free-field: 12]


?


??.


ӈ???.
?
??? The following descriptor entry is appended to the descriptor:

 .. code-block:: cpp

   ("source_cluster", "")

  is derived from the :option:`--service-cluster` option.


?

??>

ӈ???>
?
??? The following descriptor entry is appended to the descriptor:

 .. code-block:: cpp

   ("destination_cluster", "")

 Once a request matches against a route table rule, a routed cluster is determined by one of
 the following :ref:`route table configuration `
 settings:

 * :ref:`cluster ` indicates the upstream cluster
   to route to.
 * :ref:`weighted_clusters `
   chooses a cluster randomly from a set of clusters with attributed weight.
 * :ref:`cluster_header ` indicates which
   header in the request contains the target cluster.


?

??C

ӈ???C
?
??? The following descriptor entry is appended when a header contains a key that matches the
 ``header_name``:

 .. code-block:: cpp

   ("", "")


?

???

ӈ????
?
??d? The header name to be queried from the request headers. The header’s
 value is used to populate the value of the descriptor entry for the
 descriptor_key.


	?

	?


	?

	?
c

??b
;
?I) The key to use in the descriptor entry.


	?

	?


	?

	? H

??!G
?
?? If set to true, Envoy skips the descriptor while calling rate limiting service
 when header is not present in the request. By default it skips calling the
 rate limiting service if this header is not present in the request.


	?


	?

	?
?
??? The following descriptor entry is appended to the descriptor and is populated using the
 trusted address from :ref:`x-forwarded-for `:

 .. code-block:: cpp

   ("remote_address", "")


?

??>

ӈ???>
?
??? The following descriptor entry is appended to the descriptor and is populated using the
 masked address from :ref:`x-forwarded-for `:

 .. code-block:: cpp

   ("masked_remote_address", "")


?
?
?_? Length of prefix mask len for IPv4 (e.g. 0, 32).
 Defaults to 32 when unset.
 For example, trusted address from x-forwarded-for is ``192.168.1.1``,
 the descriptor entry is ("masked_remote_address", "192.168.1.1/32");
 if mask len is 24, the descriptor entry is ("masked_remote_address", "192.168.1.0/24").


	?!

	?"4

	?78

	?9^

??:]
?
?`? Length of prefix mask len for IPv6 (e.g. 0, 128).
 Defaults to 128 when unset.
 For example, trusted address from x-forwarded-for is ``2001:abcd:ef01:2345:6789:abcd:ef01:234``,
 the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345:6789:abcd:ef01:234/128");
 if mask len is 64, the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345::/64").


	?!

	?"4

	?78

	?9_

??:^
?
?? The following descriptor entry is appended to the descriptor:

 .. code-block:: cpp

   ("generic_key", "")


?

??;

ӈ???;
=
?K+ The value to use in the descriptor entry.


	?

	?


	? !

	?"J

??#I
?
? q An optional key to use in the descriptor entry. If not set it defaults
 to 'generic_key' as the descriptor key.


	?

	?


	?
?
??? The following descriptor entry is appended to the descriptor:

 .. code-block:: cpp

   ("header_match", "")


?

??A

ӈ???A
Y
? G The key to use in the descriptor entry. Defaults to ``header_match``.


	?

	?


	?
=
?K+ The value to use in the descriptor entry.


	?

	?


	? !

	?"J

??#I
?
?1? If set to true, the action will append a descriptor entry when the
 request matches the headers. If set to false, the action will append a
 descriptor entry when the request does not match the headers. The
 default value is true.


	?

	? ,

	?/0
?
?V? Specifies a set of headers that the rate limit action should match
 on. The action will check the request’s headers against all the
 specified headers in the config. A match will happen if all the
 headers in the config are present in the request with the same values
 (or based on presence if the value field is not in the config).


	?

	?

	?$

	?'(

	?)U

??*T
?
??? The following descriptor entry is appended when the
 :ref:`dynamic metadata ` contains a key value:

 .. code-block:: cpp

   ("", "")

 .. attention::
   This action has been deprecated in favor of the :ref:`metadata ` action


?
;
?I) The key to use in the descriptor entry.


	?

	?


	?

	? H

??!G
?
?b? Metadata struct that defines the key and path to retrieve the string value. A match will
 only happen if the value in the dynamic metadata is of type string.


	?"

	?#/

	?23

	?4a

??5`
?
?? An optional value to use if ``metadata_key`` is empty. If not set and
 no value is present under the metadata_key then no descriptor is generated.


	?

	?


	?
?
??? The following descriptor entry is appended when the metadata contains a key value:

 .. code-block:: cpp

   ("", "")
 [#next-free-field: 6]


?

??

	?
Q

?= Query :ref:`dynamic metadata `


?

?
k

?W Query :ref:`route entry metadata `


?

?
;
?I) The key to use in the descriptor entry.


	?

	?


	?

	? H

??!G
?
?b? Metadata struct that defines the key and path to retrieve the string value. A match will
 only happen if the value in the metadata is of type string.


	?"

	?#/

	?23

	?4a

??5`
?
?? An optional value to use if ``metadata_key`` is empty. If not set and
 no value is present under the metadata_key then ``skip_if_absent`` is followed to
 skip calling the rate limiting service or skip the descriptor.


	?

	?


	?
&
?G Source of metadata


	?

	?


	?

	?F

??E
?
?? If set to true, Envoy skips the descriptor while calling rate limiting service
 when ``metadata_key`` is empty and ``default_value`` is not set. By default it skips calling the
 rate limiting service in that case.


	?


	?

	?
?
	?? The following descriptor entry is appended to the descriptor:

 .. code-block:: cpp

   ("query_match", "")


	?$
X
	? F The key to use in the descriptor entry. Defaults to ``query_match``.


		?

		?


		?
=
	?K+ The value to use in the descriptor entry.


		?

		?


		? !

		?"J

	??#I
?
	?1? If set to true, the action will append a descriptor entry when the
 request matches the headers. If set to false, the action will append a
 descriptor entry when the request does not match the headers. The
 default value is true.


		?

		? ,

		?/0
?
	??7? Specifies a set of query parameters that the rate limit action should match
 on. The action will check the request’s query parameters against all the
 specified query parameters in the config. A match will happen if all the
 query parameters in the config are present in the request with the same values
 (or based on presence if the value field is not in the config).


		?

		?$

		?%5

		?89

		?
6

	??5

??

?


?(

	??(
/
?' Rate limit on source cluster.


?

?"

?%&
4
?1$ Rate limit on destination cluster.


?

?,

?/0
0
?)  Rate limit on request headers.


?

?$

?'(
/
?' Rate limit on remote address.


?

?"

?%&
.
?! Rate limit on a generic key.


?

?

? 
A
?.1 Rate limit on the existence of request headers.


?

?)

?,-
?
??? Rate limit on dynamic metadata.

 .. attention::
   This field has been deprecated in favor of the :ref:`metadata ` field


?

?&

?)*

?+?

?

??K??

筮Z?8
)
? Rate limit on metadata.


?

?

?
?
?1? Rate limit descriptor extension. See the rate limit descriptor extensions documentation.

 :ref:`HTTP matching input functions ` are
 permitted as descriptor extensions. The input functions are only
 looked up if there is no rate limit descriptor extension matching
 the type URL.

 [#extension-category: envoy.rate_limit_descriptors]


?"

?#,

?/0
6
	?5& Rate limit on masked remote address.


	?

	?/

	?24
B

?@2 Rate limit on the existence of query parameters.



?


?:


?=?

??

?

C
??1 Fetches the override from the dynamic metadata.


?
?
?b? Metadata struct that defines the key and path to retrieve the struct value.
 The value must be a struct containing an integer "requests_per_unit" property
 and a "unit" property with a value parseable to :ref:`RateLimitUnit
 enum `


	?"

	?#/

	?23

	?4a

??5`

??

?


?(

	??(
7
?+' Limit override from dynamic metadata.


?

?&

?)*
?
?N? Refers to the stage set in the filter. The rate limit configuration only
 applies to filters with the same stage number. The default stage number is
 0.

 .. note::

   The filter supports a range of 0 - 10 inclusively for stage numbers.


?

?#

?&'

?(M

??)L
V
?H The key to be set in runtime to disable this rate limit configuration.


?

?	

?
?
?K? A list of actions that are to be applied for this rate limit configuration.
 Order matters as the actions are processed sequentially and the descriptor
 is composed by appending descriptor entries in that sequence. If an action
 cannot append a descriptor entry, no descriptor is generated for the
 configuration. See :ref:`composing actions
 ` for additional documentation.


?


?

?

?

?J

??I
?
?? An optional limit override to be appended to the descriptor produced by this
 rate limit configuration. If the override value is invalid or cannot be resolved
 from metadata, no override is provided. See :ref:`rate limit override
 ` for more information.


?


?

?
?
??? .. attention::

   Internally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1 ``Host``
   header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.

 .. attention::

   To route on HTTP method, use the special HTTP/2 ``:method`` header. This works for both
   HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g.,

   .. code-block:: json

     {
       "name": ":method",
       "string_match": {
         "exact": "POST"
       }
     }

 .. attention::
   In the absence of any header match specifier, match will default to :ref:`present_match
   `. i.e, a request that has the :ref:`name
   ` header will match, regardless of the header's
   value.

  [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]
 [#next-free-field: 15]


?

?b

ӈ??b

	?

	?

	?

	?

	?

	?

	?

	?

	?

	?


?


?
B
??`2 Specifies the name of the header in the request.


?

?	

?

?_

??^
X
??H Specifies how the header match will be performed to route the request.


?
?
??U? If specified, header match will be performed based on the value of the header.
 This field is deprecated. Please use :ref:`string_match `.


?


?

?

?T

?	

	??K?S
?
??U? If specified, this regex string is a regular expression rule which implies the entire request
 header value must match the regex. The rule will not match if only a subsequence of the
 request header value matches the regex.
 This field is deprecated. Please use :ref:`string_match `.


? 

?!1

?46

?T

?	

	??K?S
?
?'? If specified, header match will be performed based on range.
 The rule will match if the request header value is within this range.
 The entire request header value must represent an integer in base 10 notation: consisting of
 an optional plus or minus sign followed by a sequence of digits. The rule will not match if
 the header value does not represent an integer. Match will fail for empty values, floating
 point numbers or if only a subsequence of the header value is an integer.

 Examples:

 * For range [-10,0), route will match for header value -1, but not for 0, ``somestring``, 10.9,
   ``-1somestring``


?

?"

?%&
?
?? If specified as true, header match will be performed based on whether the header is in the
 request. If specified as false, header match will be performed based on whether the header is absent.


?

?	

?
?
??? If specified, header match will be performed based on the prefix of the header value.
 Note: empty prefix is not allowed, please use present_match instead.
 This field is deprecated. Please use :ref:`string_match `.

 Examples:

 * The prefix ``abcd`` matches the value ``abcdxyz``, but not for ``abcxyz``.


?


?

?

??

?

??,

	??K?=
?
??? If specified, header match will be performed based on the suffix of the header value.
 Note: empty suffix is not allowed, please use present_match instead.
 This field is deprecated. Please use :ref:`string_match `.

 Examples:

 * The suffix ``abcd`` matches the value ``xyzabcd``, but not for ``xyzbcd``.


?


?

?

??

?

??,

	??K?=
?
??? If specified, header match will be performed based on whether the header value contains
 the given value or not.
 Note: empty contains match is not allowed, please use present_match instead.
 This field is deprecated. Please use :ref:`string_match `.

 Examples:

 * The value ``abcd`` matches the value ``xyzabcdpqr``, but not for ``xyzbcdpqr``.


?


?

?

??

?

??,

	??K?=
k
?4] If specified, header match will be performed based on the string match of the header value.


?!

?".

?13
?
	?? If specified, the match result will be inverted before checking. Defaults to false.

 Examples:

 * The regex ``\d{3}`` does not match the value ``1234``, so it will match when inverted.
 * The range [-10,0) will match the value -1, so it will not match when inverted.


	?

	?

	?
?

?*? If specified, for any header match rule, if the header match rule specified header
 does not exist, this header value will be treated as empty. Defaults to false.

 Examples:

 * The header match rule specified header "header1" to range match of [0, 10],
   :ref:`invert_match `
   is set to true and :ref:`treat_missing_header_as_empty `
   is set to true; The "header1" header is not present. The match rule will
   treat the "header1" as an empty header. The empty header does not match the range,
   so it will match when inverted.
 * The header match rule specified header "header2" to range match of [0, 10],
   :ref:`invert_match `
   is set to true and :ref:`treat_missing_header_as_empty `
   is set to false; The "header2" header is not present and the header
   matcher rule for "header2" will be ignored so it will not match.
 * The header match rule specified header "header3" to a string regex match
   ``^$`` which means an empty string, and
   :ref:`treat_missing_header_as_empty `
   is set to true; The "header3" header is not present.
   The match rule will treat the "header3" header as an empty header so it will match.
 * The header match rule specified header "header4" to a string regex match
   ``^$`` which means an empty string, and
   :ref:`treat_missing_header_as_empty `
   is set to false; The "header4" header is not present.
   The match rule for "header4" will be ignored so it will not match.



?


?$


?')
?
??? Query parameter matching treats the query string of a request's :path header
 as an ampersand-separated list of keys and/or key=value elements.
 [#next-free-field: 7]


?

??1

ӈ???1

	?

	?

	?

	?

	?

	?

	?


?


?


?
k
?K] Specifies the name of a key that must be present in the requested
 ``path``'s query string.


?

?	

?

?J

??I

??

?'
X
?aJ Specifies whether a query parameter value should match against a string.


?!

?".

?12

?3`

??4_
F
?8 Specifies whether a query parameter should be present.


?

?	

?
~
??p HTTP Internal Redirect :ref:`architecture overview `.
 [#next-free-field: 6]


?
?
?9? An internal redirect is not handled, unless the number of previous internal redirects that a
 downstream request has encountered is lower than this value.
 In the case where a downstream request is bounced among multiple routes by internal redirect,
 the first route that hits this threshold, or does not set :ref:`internal_redirect_policy
 `
 will pass the redirect back to downstream.

 If not specified, at most one redirect will be followed.


?

?4

?78
?
?[? Defines what upstream response codes are allowed to trigger internal redirect. If unspecified,
 only 302 will be treated as internal redirect.
 Only 301, 302, 303, 307 and 308 are valid values. Any other codes will be ignored.


?


?

?)

?,-

?.Z

??/Y
?
?7? Specifies a list of predicates that are queried when an upstream response is deemed
 to trigger an internal redirect by all other criteria. Any predicate in the list can reject
 the redirect, causing the response to be proxied to downstream.
 [#extension-category: envoy.internal_redirect_predicates]


?


?'

?(2

?56
?
?'? Allow internal redirect to follow a target URI with a different scheme than the value of
 x-forwarded-proto. The default is false.


?

?"

?%&
?
??? Specifies a list of headers, by name, to copy from the internal redirect into the subsequent
 request. If a header is specified here but not present in the redirect, it will be cleared in
 the subsequent request.


?


?

?*

?-.

?/?

??0?
?
??? A simple wrapper for an HTTP filter config. This is intended to be used as a wrapper for the
 map value in
 :ref:`VirtualHost.typed_per_filter_config`,
 :ref:`Route.typed_per_filter_config`,
 or :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config`
 to add additional flags to the filter.


?
"
?! The filter config.


?

?

? 
?
?? If true, the filter is optional, meaning that if the client does
 not support the specified filter, it may ignore the map entry rather
 than rejecting the config.


?

?

?
?
?? If true, the filter is disabled in the route or virtual host and the ``config`` field is ignored.
 See :ref:`route based filter chain `
 for more details.

 .. note::

   This field will take effect when the request arrive and filter chain is created for the request.
   If initial route is selected for the request and a filter is disabled in the initial route, then
   the filter will not be added to the filter chain.
   And if the request is mutated later and re-match to another route, the disabled filter by the
   initial route will not be added back to the filter chain because the filter chain is already
   created and it is too late to change the chain.

   This field only make sense for the downstream HTTP filters for now.


?

?

?bproto3
??
'envoy/data/accesslog/v3/accesslog.protoenvoy.data.accesslog.v3"envoy/config/core/v3/address.protoenvoy/config/core/v3/base.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/timestamp.protogoogle/protobuf/wrappers.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
TCPAccessLogEntryU
common_properties (2(.envoy.data.accesslog.v3.AccessLogCommonRcommonPropertiesb
connection_properties (2-.envoy.data.accesslog.v3.ConnectionPropertiesRconnectionProperties:0?ň+
)envoy.data.accesslog.v2.TCPAccessLogEntry"?
HTTPAccessLogEntryU
common_properties (2(.envoy.data.accesslog.v3.AccessLogCommonRcommonPropertiesb
protocol_version (27.envoy.data.accesslog.v3.HTTPAccessLogEntry.HTTPVersionRprotocolVersionH
request (2..envoy.data.accesslog.v3.HTTPRequestPropertiesRrequestK
response (2/.envoy.data.accesslog.v3.HTTPResponsePropertiesRresponse"U
HTTPVersion
PROTOCOL_UNSPECIFIED

HTTP10

HTTP11	
HTTP2	
HTTP3:1?ň,
*envoy.data.accesslog.v2.HTTPAccessLogEntry"?
ConnectionProperties%
received_bytes (R
receivedBytes

sent_bytes (R	sentBytes:3?ň.
,envoy.data.accesslog.v2.ConnectionProperties"?
AccessLogCommon8
sample_rate (B?B??!R
sampleRateY
downstream_remote_address (2.envoy.config.core.v3.AddressRdownstreamRemoteAddressW
downstream_local_address (2.envoy.config.core.v3.AddressRdownstreamLocalAddressM
tls_properties (2&.envoy.data.accesslog.v3.TLSPropertiesR
tlsProperties9

start_time (2.google.protobuf.TimestampR	startTimeI
time_to_last_rx_byte (2.google.protobuf.DurationRtimeToLastRxByte\
time_to_first_upstream_tx_byte (2.google.protobuf.DurationRtimeToFirstUpstreamTxByteZ
time_to_last_upstream_tx_byte (2.google.protobuf.DurationRtimeToLastUpstreamTxByte\
time_to_first_upstream_rx_byte	 (2.google.protobuf.DurationRtimeToFirstUpstreamRxByteZ
time_to_last_upstream_rx_byte
 (2.google.protobuf.DurationRtimeToLastUpstreamRxByte`
 time_to_first_downstream_tx_byte (2.google.protobuf.DurationRtimeToFirstDownstreamTxByte^
time_to_last_downstream_tx_byte (2.google.protobuf.DurationRtimeToLastDownstreamTxByteU
upstream_remote_address
 (2.envoy.config.core.v3.AddressRupstreamRemoteAddressS
upstream_local_address (2.envoy.config.core.v3.AddressRupstreamLocalAddress)
upstream_cluster (	RupstreamClusterM
response_flags (2&.envoy.data.accesslog.v3.ResponseFlagsR
responseFlags:
metadata (2.envoy.config.core.v3.MetadataRmetadataI
!upstream_transport_failure_reason (	RupstreamTransportFailureReason

route_name (	R	routeNamef
 downstream_direct_remote_address (2.envoy.config.core.v3.AddressRdownstreamDirectRemoteAddressr
filter_state_objects (2@.envoy.data.accesslog.v3.AccessLogCommon.FilterStateObjectsEntryRfilterStateObjectsY
custom_tags (28.envoy.data.accesslog.v3.AccessLogCommon.CustomTagsEntryR
customTags5
duration (2.google.protobuf.DurationRdurationC
upstream_request_attempt_count (
RupstreamRequestAttemptCountD
connection_termination_details (	RconnectionTerminationDetails
	stream_id (	RstreamIdA
intermediate_log_entry (B?dž?3.0RintermediateLogEntryM
#downstream_transport_failure_reason (	R downstreamTransportFailureReason;
downstream_wire_bytes_sent (RdownstreamWireBytesSentC
downstream_wire_bytes_received (RdownstreamWireBytesReceived7
upstream_wire_bytes_sent (RupstreamWireBytesSent?
upstream_wire_bytes_received  (RupstreamWireBytesReceivedN
access_log_type! (2&.envoy.data.accesslog.v3.AccessLogTypeR
accessLogType[
FilterStateObjectsEntry
key (	Rkey*
value (2.google.protobuf.AnyRvalue:8=
CustomTagsEntry
key (	Rkey
value (	Rvalue:8:.?ň)
'envoy.data.accesslog.v2.AccessLogCommon"?

ResponseFlags8
failed_local_healthcheck (RfailedLocalHealthcheck.
no_healthy_upstream (RnoHealthyUpstream8
upstream_request_timeout (RupstreamRequestTimeout
local_reset (R
localReset2
upstream_remote_reset (RupstreamRemoteReset>
upstream_connection_failure (RupstreamConnectionFailureF
upstream_connection_termination (RupstreamConnectionTermination+
upstream_overflow (RupstreamOverflow$
no_route_found	 (RnoRouteFound%
delay_injected
 (R
delayInjected%
fault_injected (R
faultInjected!
rate_limited (RrateLimitedf
unauthorized_details
 (23.envoy.data.accesslog.v3.ResponseFlags.UnauthorizedRunauthorizedDetails7
rate_limit_service_error (RrateLimitServiceErrorJ
!downstream_connection_termination (RdownstreamConnectionTerminationA
upstream_retry_limit_exceeded (RupstreamRetryLimitExceeded.
stream_idle_timeout (RstreamIdleTimeoutA
invalid_envoy_request_headers (RinvalidEnvoyRequestHeaders:
downstream_protocol_error (RdownstreamProtocolErrorN
$upstream_max_stream_duration_reached (R upstreamMaxStreamDurationReached;
response_from_cache_filter (RresponseFromCacheFilter3
no_filter_config_found (RnoFilterConfigFound)
duration_timeout (RdurationTimeout6
upstream_protocol_error (RupstreamProtocolError(
no_cluster_found (RnoClusterFound)
overload_manager (RoverloadManager4
dns_resolution_failure (RdnsResolutionFailure6
downstream_remote_reset (RdownstreamRemoteReset?
UnauthorizedR
reason (2:.envoy.data.accesslog.v3.ResponseFlags.Unauthorized.ReasonRreason"6
Reason
REASON_UNSPECIFIED
EXTERNAL_SERVICE:9?ň4
2envoy.data.accesslog.v2.ResponseFlags.Unauthorized:,?ň'
%envoy.data.accesslog.v2.ResponseFlags"?

TLSPropertiesR
tls_version (21.envoy.data.accesslog.v3.TLSProperties.TLSVersionR
tlsVersionF
tls_cipher_suite (2.google.protobuf.UInt32ValueRtlsCipherSuite(
tls_sni_hostname (	RtlsSniHostname~
local_certificate_properties (2<.envoy.data.accesslog.v3.TLSProperties.CertificatePropertiesRlocalCertificateProperties|
peer_certificate_properties (2<.envoy.data.accesslog.v3.TLSProperties.CertificatePropertiesRpeerCertificateProperties$
tls_session_id (	RtlsSessionId'
ja3_fingerprint (	Rja3Fingerprint?
CertificatePropertiesu
subject_alt_name (2K.envoy.data.accesslog.v3.TLSProperties.CertificateProperties.SubjectAltNameRsubjectAltName
subject (	Rsubject
issuer (	Rissuer?
SubjectAltName
uri (	HRuri
dns (	HRdns:Q?ňL
Jenvoy.data.accesslog.v2.TLSProperties.CertificateProperties.SubjectAltNameB
san:B?ň=
;envoy.data.accesslog.v2.TLSProperties.CertificateProperties"W

TLSVersion
VERSION_UNSPECIFIED	
TLSv1
TLSv1_1
TLSv1_2
TLSv1_3:,?ň'
%envoy.data.accesslog.v2.TLSProperties"?
HTTPRequestPropertiesT
request_method (2#.envoy.config.core.v3.RequestMethodB?B?R
requestMethod
scheme (	Rscheme
	authority (	R	authority0
port (2.google.protobuf.UInt32ValueRport
path (	Rpath

user_agent (	R	userAgent
referer (	Rreferer#

forwarded_for (	RforwardedFor

request_id	 (	R	requestId#

original_path
 (	RoriginalPath2
request_headers_bytes (RrequestHeadersBytes,
request_body_bytes (RrequestBodyBytesk
request_headers
 (2B.envoy.data.accesslog.v3.HTTPRequestProperties.RequestHeadersEntryRrequestHeaders;
upstream_header_bytes_sent (RupstreamHeaderBytesSentG
 downstream_header_bytes_received (RdownstreamHeaderBytesReceivedA
RequestHeadersEntry
key (	Rkey
value (	Rvalue:8:4?ň/
-envoy.data.accesslog.v2.HTTPRequestProperties"?
HTTPResponsePropertiesA

response_code (2.google.protobuf.UInt32ValueRresponseCode4
response_headers_bytes (RresponseHeadersBytes.
response_body_bytes (RresponseBodyByteso
response_headers (2D.envoy.data.accesslog.v3.HTTPResponseProperties.ResponseHeadersEntryRresponseHeadersr
response_trailers (2E.envoy.data.accesslog.v3.HTTPResponseProperties.ResponseTrailersEntryRresponseTrailers2
response_code_details (	RresponseCodeDetailsC
upstream_header_bytes_received (RupstreamHeaderBytesReceived?
downstream_header_bytes_sent (RdownstreamHeaderBytesSentB
ResponseHeadersEntry
key (	Rkey
value (	Rvalue:8C
ResponseTrailersEntry
key (	Rkey
value (	Rvalue:8:5?ň0
.envoy.data.accesslog.v2.HTTPResponseProperties*?

AccessLogType

NotSet
TcpUpstreamConnected
TcpPeriodic
TcpConnectionEnd
DownstreamStart
DownstreamPeriodic

DownstreamEnd
UpstreamPoolReady
UpstreamPeriodic
UpstreamEnd	+
'DownstreamTunnelSuccessfullyEstablished

UdpTunnelUpstreamConnected
UdpPeriodic

UdpSessionEnd
B?
%io.envoyproxy.envoy.data.accesslog.v3BAccesslogProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/data/accesslog/v3;accesslogv3????Jï
?



 
	
,
	
)
	
#
	
(
	
	)
	

(
	
-
	

'
	
+
	
	!

>
	
>

/
	
/

"
	

"

a
	
a

F

???jF
?
"12? [#protodoc-title: gRPC access logs]
 Envoy access logs describe incoming interaction with Envoy over a fixed
 period of time, and typically cover a single request/response exchange,
 (e.g. HTTP), stream (e.g. over HTTP/gRPC), or proxied connection (e.g. TCP).
 Access logs contain fields defined in protocol-specific protobuf messages.

 Except where explicitly declared otherwise, all fields describe
 *downstream* interaction between Envoy and a connected client.
 Fields describing *upstream* interaction will explicitly include ``upstream``
 in their name.



"

#

#

#

$

$

$

%

%

%

&

&

&

'

'

'

(

(

(

)

)

)

*

*

*

+

+

+

	,

	,

	,


-/


-)


-,.

."

.

.!

/

/

/


0


0


0


3<


3

452

ӈ?452
A
8(4 Common properties shared by all Envoy access logs.


8

8#

8&'
0
;1# Properties of the TCP connection.


;

;,

;/0


>U


>

?@3

ӈ??@3

CI HTTP version


C

D

D

D

E

E


E


F

F


F


G

G	

G

H

H	

H
A
L(4 Common properties shared by all Envoy access logs.


L

L#

L&'

N#

N

N

N!"
8
Q$+ Description of the incoming HTTP request.


Q

Q

Q"#
9
T&, Description of the outgoing HTTP response.


T

T!

T$%
-
Xa! Defines fields for a connection



X

YZ5

ӈ?YZ5
8
]+ Number of bytes received from downstream.


]

]	

]
2
`% Number of bytes sent to downstream.


`

`	

`
_
e?R Defines fields that are shared by all Envoy access logs.
 [#next-free-field: 34]



e

fg0

ӈ?fg0
?
lHz [#not-implemented-hide:]
 This field indicates the rate at which this log entry was sampled.
 Valid range is (0.0, 1.0].


l

l	

l

lG

?lF
?
q7? This field is the remote/origin address on which the request from the user was received.
 Note: This may not be the physical peer. E.g, if the remote address is inferred from for
 example the x-forwarder-for header, proxy protocol, etc.


q

q2

q56
k
t6^ This field is the local/destination address on which the request from the user was received.


t

t1

t45
T
w#G If the connection is secure,S this field will contain TLS properties.


w

w

w!"
?
{+ The time that Envoy started servicing this request. This is effectively the time that the first
 downstream byte is received.


{

{&

{)*
?
4? Interval between the first downstream byte received and the last
 downstream byte received (i.e. time it takes to receive a request).




/

23
?
?>? Interval between the first downstream byte received and the first upstream byte sent. There may
 by considerable delta between ``time_to_last_rx_byte`` and this value due to filters.
 Additionally, the same caveats apply as documented in ``time_to_last_downstream_tx_byte`` about
 not accounting for kernel socket buffer time, etc.


?

?9

?<=
?
?=? Interval between the first downstream byte received and the last upstream byte sent. There may
 by considerable delta between ``time_to_last_rx_byte`` and this value due to filters.
 Additionally, the same caveats apply as documented in ``time_to_last_downstream_tx_byte`` about
 not accounting for kernel socket buffer time, etc.


?

?8

?;<
?
?>? Interval between the first downstream byte received and the first upstream
 byte received (i.e. time it takes to start receiving a response).


?

?9

?<=
?
	?>? Interval between the first downstream byte received and the last upstream
 byte received (i.e. time it takes to receive a complete response).


	?

	?8

	?;=
?

?A? Interval between the first downstream byte received and the first downstream byte sent.
 There may be a considerable delta between the ``time_to_first_upstream_rx_byte`` and this field
 due to filters. Additionally, the same caveats apply as documented in
 ``time_to_last_downstream_tx_byte`` about not accounting for kernel socket buffer time, etc.



?


?;


?>@
?
?@? Interval between the first downstream byte received and the last downstream byte sent.
 Depending on protocol, buffering, windowing, filters, etc. there may be a considerable delta
 between ``time_to_last_upstream_rx_byte`` and this field. Note also that this is an approximate
 time. In the current implementation it does not include kernel socket buffer time. In the
 current implementation it also does not include send window buffering inside the HTTP/2 codec.
 In the future it is likely that work will be done to make this duration more accurate.


?

?:

?=?
s
?6e The upstream remote/destination address that handles this exchange. This does not include
 retries.


?

?0

?35
l

?5^ The upstream local/origin address that handles this exchange. This does not include retries.



?


?/


?24
Q
?C The upstream cluster that ``upstream_remote_address`` belongs to.


?

?	

?
P
?$B Flags indicating occurrences during request/response processing.


?

?

?!#
?
?(? All metadata encountered during request processing, including endpoint
 selection.

 This can be used to associate IDs attached to the various configurations
 used to process this request with the access log entry. For example, a
 route created from a higher level forwarding rule with some ID can place
 that ID in this field and cross reference later. It can also be used to
 determine if a canary endpoint was used or not.


?

?"

?%'
?
?0? If upstream connection failed due to transport socket (e.g. TLS handshake), provides the
 failure reason from the transport socket. The format of this field depends on the configured
 upstream transport socket. Common TLS failures are in
 :ref:`TLS trouble shooting `.


?

?	*

?-/
%
? The name of the route


?

?	

?
?
??? This field is the downstream direct remote address on which the request from the user was
 received. Note: This is always the physical peer, even if the remote address is inferred from
 for example the x-forwarder-for header, proxy protocol, etc.


?

?9

?<>
?
?=? Map of filter state in stream info that have been configured to be logged. If the filter
 state serialized to any message other than ``google.protobuf.Any`` it will be packed into
 ``google.protobuf.Any``.


?"

?#7

?:<
?
?'? A list of custom tags, which annotate logs with additional information.
 To configure this value, users should configure
 :ref:`custom_tags `.


?

?!

?$&
?
?)? For HTTP: Total duration in milliseconds of the request from the start time to the last byte out.
 For TCP: Total duration in milliseconds of the downstream connection.
 This is the total duration of the request (i.e., when the request's ActiveStream is destroyed)
 and may be longer than ``time_to_last_downstream_tx_byte``.


?

?#

?&(
?
?-? For HTTP: Number of times the request is attempted upstream. Note that the field is omitted when the request was never attempted upstream.
 For TCP: Number of times the connection request is attempted upstream. Note that the field is omitted when the connect request was never attempted upstream.


?

?	'

?*,
?
?-? Connection termination details may provide additional information about why the connection was terminated by Envoy for L4 reasons.


?

?	'

?*,
?
?? Optional unique id of stream (TCP connection, long-live HTTP2 stream, HTTP request) for logging and tracing.
 This could be any format string that could be used to identify one stream.


?

?	

?
?
??S? If this log entry is final log entry that flushed after the stream completed or
 intermediate log entry that flushed periodically during the stream.
 There may be multiple intermediate log entries and only one final log entry for each
 long-live stream (TCP connection, long-live HTTP2 stream).
 And if it is necessary, unique ID or identifier can be added to the log entry
 :ref:`stream_id ` to
 correlate all these intermediate log entries and final log entry.

 .. attention::

   This field is deprecated in favor of ``access_log_type`` for better indication of the
   type of the access log record.


?

?

? "

?R

?

	??K?Q
?
?2? If downstream connection in listener failed due to transport socket (e.g. TLS handshake), provides the
 failure reason from the transport socket. The format of this field depends on the configured downstream
 transport socket. Common TLS failures are in :ref:`TLS trouble shooting `.


?

?	,

?/1
?
?)? For HTTP: Total number of bytes sent to the downstream by the http stream.
 For TCP: Total number of bytes sent to the downstream by the tcp proxy.


?

?	#

?&(
?
?-? For HTTP: Total number of bytes received from the downstream by the http stream. Envoy over counts sizes of received HTTP/1.1 pipelined requests by adding up bytes of requests in the pipeline to the one currently being processed.
 For TCP: Total number of bytes received from the downstream by the tcp proxy.


?

?	'

?*,
?
?'? For HTTP: Total number of bytes sent to the upstream by the http stream. This value accumulates during upstream retries.
 For TCP: Total number of bytes sent to the upstream by the tcp proxy.


?

?	!

?$&
?
?+? For HTTP: Total number of bytes received from the upstream by the http stream.
 For TCP: Total number of bytes sent to the upstream by the tcp proxy.


?

?	%

?(*
?
 ?%? The type of the access log, which indicates when the log was recorded.
 See :ref:`ACCESS_LOG_TYPE ` for the available values.
 In case the access log was recorded by a flow which does not correspond to one of the supported
 values, then the default value will be ``NotSet``.
 For more information about how access log behaves and when it is being recorded,
 please refer to :ref:`access logging `.


 ?

 ?

 ?"$
h
??Z Flags indicating occurrences during request/response processing.
 [#next-free-field: 29]


?

??.

ӈ???.

??

?


??=


ӈ???=
<
??* Reasons why the request was unauthorized


?	

?

	?

	?
Q
?? The request was denied by the external authorization service.


	?

	?

?

?


?

?
:
?$, Indicates local server healthcheck failed.


?

?

?"#
8
?* Indicates there was no healthy upstream.


?

?

?
C
?$5 Indicates an there was an upstream request timeout.


?

?

?"#
I
?; Indicates local codec level reset was sent on the stream.


?

?

?
N
?!@ Indicates remote codec level reset was received on the stream.


?

?

? 
l
?'^ Indicates there was a local reset by a connection pool due to an initial connection failure.


?

?"

?%&
Y
?+K Indicates the stream was reset due to an upstream connection termination.


?

?&

?)*
N
?@ Indicates the stream was reset because of a resource overflow.


?

?

?
=
?/ Indicates no route was found for the request.


?

?

?
G
	?9 Indicates that the request was delayed before proxying.


	?

	?

	?
S

?E Indicates that the request was aborted with an injected error code.



?


?


?
D
?6 Indicates that the request was rate-limited locally.


?

?

?
W
?)I Indicates if the request was deemed unauthorized and the reason for it.


?

?#

?&(
i

?%[ Indicates that the request was rejected because there was an error in rate limit service.



?


?


?"$
Z
?.L Indicates the stream was reset due to a downstream connection termination.


?

?(

?+-
f
?*X Indicates that the upstream retry limit was exceeded, resulting in a downstream error.


?

?$

?')
^
? P Indicates that the stream idle timeout was hit, resulting in a downstream 408.


?

?

?
r
?*d Indicates that the request was rejected because an envoy request header failed strict
 validation.


?

?$

?')
U
?&G Indicates there was an HTTP protocol error on the downstream request.


?

? 

?#%
Z
?1L Indicates there was a max stream duration reached on the upstream request.


?

?+

?.0
F
?'8 Indicates the response was served from a cache filter.


?

?!

?$&
G
?#9 Indicates that a filter configuration is not available.


?

?

? "
a
?S Indicates that request or connection exceeded the downstream connection duration.


?

?

?
T
?$F Indicates there was an HTTP protocol error in the upstream response.


?

?

?!#
?
?1 Indicates no cluster was found for the request.


?

?

?
B
?4 Indicates overload manager terminated the request.


?

?

?
2
?#$ Indicates a DNS resolution failed.


?

?

? "
Z
?$L Indicates a downstream remote codec level reset was received on the stream


?

?

?!#
Q
??C Properties of a negotiated TLS connection.
 [#next-free-field: 8]


?

??.

ӈ???.

??

?

?

?

?

?

?	

?

?

?

?

?

?

?

?

?

?

??

?


??F


ӈ???F

??

?

??W

ӈ???W

??

	?

?

	?

	?

	?
,
? [#not-implemented-hide:]


	?

	?

	?
2
?1" SANs present in the certificate.


?

?


?,

?/0
7
?' The subject field of the certificate.


?


?

?
6
?& The issuer field of the certificate.


?


?

?
3
?% Version of TLS that was negotiated.


?

?


?
?
?3? TLS cipher suite negotiated during handshake. The value is a
 four-digit hex code defined by the IANA TLS Cipher Suite Registry
 (e.g. ``009C`` for ``TLS_RSA_WITH_AES_128_GCM_SHA256``).

 Here it is expressed as an integer.


?

?.

?12
,
? SNI hostname from handshake.


?

?	

?
J
?9< Properties of the local certificate used to negotiate TLS.


?

?4

?78
I
?8; Properties of the peer certificate used to negotiate TLS.


?

?3

?67
#
? The TLS session ID.


?

?	

?
O
?A The ``JA3`` fingerprint when ``JA3`` fingerprinting is enabled.


?

?	

?
&
?? [#next-free-field: 16]


?

??6

ӈ???6
3
?a% The request method (RFC 7231/2616).


?

?-

?01

?2`

??3_
?
?1 The scheme portion of the incoming request URI.


?

?	

?
H
?: HTTP/2 ``:authority`` or HTTP/1.1 ``Host`` header value.


?

?	

?
m
?'_ The port of the incoming request URI
 (unused currently, as port is composed onto authority).


?

?"

?%&
?
?1 The path portion from the incoming request URI.


?

?	

?
;
?- Value of the ``User-Agent`` request header.


?

?	

?
8
?* Value of the ``Referer`` request header.


?

?	

?
@
?2 Value of the ``X-Forwarded-For`` request header.


?

?	

?
?
?? Value of the ``X-Request-Id`` request header

 This header is used by Envoy to uniquely identify a request.
 It will be generated for all external requests and internal requests that
 do not already have a request ID.


?

?	

?
F
	?8 Value of the ``X-Envoy-Original-Path`` request header.


	?

	?	

	?
?

?$? Size of the HTTP request headers in bytes.

 This value is captured from the OSI layer 7 perspective, i.e. it does not
 include overhead from framing or encoding at other networking layers.



?


?	


?!#
?
?!? Size of the HTTP request body in bytes.

 This value is captured from the OSI layer 7 perspective, i.e. it does not
 include overhead from framing or encoding at other networking layers.


?

?	

? 
Q
?+C Map of additional headers that have been configured to be logged.


?

?%

?(*
?

?)? Number of header bytes sent to the upstream by the http stream, including protocol overhead.

 This value accumulates during upstream retries.



?


?	#


?&(
t
?/f Number of header bytes received from the downstream by the http stream, including protocol overhead.


?

?	)

?,.
%
?? [#next-free-field: 9]


?

??7

ӈ???7
9
?0+ The HTTP response code returned by Envoy.


?

?+

?./
?
?$? Size of the HTTP response headers in bytes.

 This value is captured from the OSI layer 7 perspective, i.e. it does not
 include protocol overhead or overhead from framing or encoding at other networking layers.


?

?	

?"#
?
?!? Size of the HTTP response body in bytes.

 This value is captured from the OSI layer 7 perspective, i.e. it does not
 include overhead from framing or encoding at other networking layers.


?

?	

? 
B
?+4 Map of additional headers configured to be logged.


?

?&

?)*
8
?,* Map of trailers configured to be logged.


?

?'

?*+
/
?#! The HTTP response code details.


?

?	

?!"
r
?,d Number of header bytes received from the upstream by the http stream, including protocol overhead.


?

?	'

?*+
n
?*` Number of header bytes sent to the downstream by the http stream, including protocol overhead.


?

?	%

?()bproto3
?t
)envoy/config/accesslog/v3/accesslog.protoenvoy.config.accesslog.v3envoy/config/core/v3/base.proto,envoy/config/route/v3/route_components.proto'envoy/data/accesslog/v3/accesslog.proto$envoy/type/matcher/v3/metadata.protoenvoy/type/v3/percent.protogoogle/protobuf/any.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
	AccessLog
name (	RnameB
filter (2*.envoy.config.accesslog.v3.AccessLogFilterRfilter9
typed_config (2.google.protobuf.AnyHRtypedConfig:1?ň,
*envoy.config.filter.accesslog.v2.AccessLogB
config_typeJRconfig"?	
AccessLogFilter[
status_code_filter (2+.envoy.config.accesslog.v3.StatusCodeFilterHRstatusCodeFilterT
duration_filter (2).envoy.config.accesslog.v3.DurationFilterHRdurationFilterh
not_health_check_filter (2/.envoy.config.accesslog.v3.NotHealthCheckFilterHRnotHealthCheckFilterW
traceable_filter (2*.envoy.config.accesslog.v3.TraceableFilterHRtraceableFilterQ
runtime_filter (2(.envoy.config.accesslog.v3.RuntimeFilterHR
runtimeFilterE

and_filter (2$.envoy.config.accesslog.v3.AndFilterHR	andFilterB
	or_filter (2#.envoy.config.accesslog.v3.OrFilterHRorFilterN

header_filter (2'.envoy.config.accesslog.v3.HeaderFilterHRheaderFiltera
response_flag_filter	 (2-.envoy.config.accesslog.v3.ResponseFlagFilterHRresponseFlagFilter[
grpc_status_filter
 (2+.envoy.config.accesslog.v3.GrpcStatusFilterHRgrpcStatusFilterW
extension_filter (2*.envoy.config.accesslog.v3.ExtensionFilterHRextensionFilterT
metadata_filter (2).envoy.config.accesslog.v3.MetadataFilterHRmetadataFilterR
log_type_filter
 (2(.envoy.config.accesslog.v3.LogTypeFilterHR
logTypeFilter:7?ň2
0envoy.config.filter.accesslog.v2.AccessLogFilterB
filter_specifier?B"?
ComparisonFilterH
op (2..envoy.config.accesslog.v3.ComparisonFilter.OpB?B?RopC
value (2#.envoy.config.core.v3.RuntimeUInt32B?B?Rvalue"
Op
EQ
GE
LE:8?ň3
1envoy.config.filter.accesslog.v2.ComparisonFilter"?
StatusCodeFilterU

comparison (2+.envoy.config.accesslog.v3.ComparisonFilterB?B?R
comparison:8?ň3
1envoy.config.filter.accesslog.v2.StatusCodeFilter"?
DurationFilterU

comparison (2+.envoy.config.accesslog.v3.ComparisonFilterB?B?R
comparison:6?ň1
/envoy.config.filter.accesslog.v2.DurationFilter"T
NotHealthCheckFilter:=


j

j	


m <=


m

m	

#
q; Comparison operator.


q

q

q


q:

?q
9
(
tP Value to compare against.


t

t

t !

t"O

?t#N
3
x~' Filters on HTTP response/status code.



x

yz:

ӈ?yz:

}P
 Comparison.


}

}

} !

}"O

?}#N
?
??? Filters based on the duration of the request or stream, in milliseconds.
 For end of stream access logs, the total duration of the stream will be used.
 For :ref:`periodic access logs`,
 the duration of the stream at the time of log recording will be used.


?

??8

ӈ???8

?P
 Comparison.


?

?

? !

?"O

??#N
?
??x Filters for requests that are not health check requests. A health check
 request is marked by the health check filter.


?

??>

ӈ???>
?
??} Filters for requests that are traceable. See the tracing overview for more
 information on how a request becomes traceable.


?

??9

ӈ???9
8
??* Filters for random sampling of requests.


?

??7

ӈ???7
?
?B? Runtime key to get an optional overridden numerator for use in the
 ``percent_sampled`` field. If found in runtime, this value will replace the
 default numerator.


?

?	

?

?A

??@
k
?0] The default sampling percentage. If not specified, defaults to 0% with
 denominator of 100.


?

?+

?./
?
?&? By default, sampling pivots on the header
 :ref:`x-request-id` being
 present. If :ref:`x-request-id`
 is present, the filter will consistently sample across multiple hosts based
 on the runtime key value and the value extracted from
 :ref:`x-request-id`. If it is
 missing, or ``use_independent_randomness`` is set to true, the filter will
 randomly sample based on the runtime key value alone.
 ``use_independent_randomness`` can be used for logging kill switches within
 complex nested :ref:`AndFilter
 ` and :ref:`OrFilter
 ` blocks that are easier to
 reason about from a probability perspective (i.e., setting to true will
 cause the filter to behave like an independent random variable when
 composed within logical operator filters).


?

?!

?$%
?
??? Performs a logical “and” operation on the result of each filter in filters.
 Filters are evaluated sequentially and if one of them returns false, the
 filter returns false immediately.


?

??3

ӈ???3

?T

?


?

?"

?%&

?'S

??(R
?
	??? Performs a logical “or” operation on the result of each individual filter.
 Filters are evaluated sequentially and if one of them returns true, the
 filter returns true immediately.


	?

	??2

	ӈ???2

	?T

	?


	?

	?"

	?%&

	?'S

	??(R
T

??F Filters requests based on the presence or value of a request header.



?


??6


ӈ???6
r

?Rd Only requests with a header which matches the specified HeaderMatcher will
 pass the filter check.



?


?


?"#


?$Q


??%P
?
??? Filters requests that received responses with an Envoy response flag set.
 A list of the response flags can be found
 in the access log formatter
 :ref:`documentation`.


?

??<

ӈ???<
?
??? Only responses with the any of the flags listed in this field will be
 logged. This field is optional. If it is not specified, then any response
 flag will pass the filter check.


?


?

?

?

??

???
?
??? Filters gRPC requests based on their response status. If a gRPC status is not
 provided, the filter will infer the status from the HTTP status code.


?

??:

ӈ???:

??

?

?

?

?	


?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

	?

	?

	?


?


?


?

?

?

?

?

?

?


?


?


?

?

?

?

?

?

?

?

?

?
Y
?aK Logs only responses that have any one of the gRPC statuses in this field.


?


?

?

?

?`

?? _
?
?? If included and set to true, the filter will instead block all responses
 with a gRPC status or inferred gRPC status enumerated in statuses, and
 allow all other responses.


?

?

?
?

??? Filters based on matching dynamic metadata.
 If the matcher path and key correspond to an existing key in dynamic
 metadata, the request is logged only if the matcher value is equal to the
 metadata value. If the matcher path and key *do not* correspond to an
 existing key in dynamic metadata, the request is logged only if
 match_if_key_not_found is "true" or unset.



?


??8


ӈ???8
?

?.? Matcher to check metadata for specified value. For example, to match on the
 access_log_hint metadata, set the filter to "envoy.common" and the path to
 "access_log_hint", and the value to "true".



?!


?")


?,-
?

?7v Default result if the key does not exist in dynamic metadata: if unset or
 true, then log; if false, then don't log.



?


?2


?56
1
??# Filters based on access log type.


?
_
??HO Logs only records which their type is one of the types defined in this field.


?


?*

?+0

?34

?G

??F
?
?? If this field is set to true, the filter will instead block all records
 with a access log type in types field, and allow all other records.


?

?

?
E
??7 Extension filter is statically registered at runtime.


?

??9

ӈ???9

	?

	?

	?

	?


?


?
z
?l The name of the filter implementation to instantiate. The name must
 match a statically registered filter.


?

?	

?
U
??E Custom configuration that depends on the filter being instantiated.


?

?)

?

?$

?'(bproto3
?
+envoy/config/listener/v3/api_listener.protoenvoy.config.listener.v3google/protobuf/any.protoudpa/annotations/status.proto!udpa/annotations/versioning.proto"s
ApiListener7
api_listener (2.google.protobuf.AnyRapiListener:+?ň&
$envoy.config.listener.v2.ApiListenerB?
&io.envoyproxy.envoy.config.listener.v3BApiListenerProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3????J?	
!



!
	
#
	
'
	
+

	?
	
	?


1
	

1

"
	

"

a
	
a


F

???j
F
?
!? Describes a type of API listener, which is used in non-proxy clients. The type of API
 exposed to the non-proxy application depends on the type of API listener.
2! [#protodoc-title: API listener]





-

ӈ?-
?
 '? The type in this field determines the type of API listener. At present, the following
 types are supported:
 envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager (HTTP)
 envoy.extensions.filters.network.http_connection_manager.v3.EnvoyMobileHttpConnectionManager (HTTP)
 [#next-major-version: In the v3 API, replace this Any field with a oneof containing the
 specific config message for each type of API listener. We could not do this in v2 because
 it would have caused circular dependencies for go protos: lds.proto depends on this file,
 and http_connection_manager.proto depends on rds.proto, which is in the same directory as
 lds.proto, so lds.proto cannot depend on this file.]


 

 "

 %&bproto3
?
2envoy/config/listener/v3/listener_components.protoenvoy.config.listener.v3"envoy/config/core/v3/address.protoenvoy/config/core/v3/base.proto(envoy/config/core/v3/config_source.protoenvoy/type/v3/range.protogoogle/protobuf/any.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.proto#envoy/annotations/deprecation.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
Filter
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfigX
config_discovery (2+.envoy.config.core.v3.ExtensionConfigSourceHRconfigDiscovery:#?ň
envoy.api.v2.listener.FilterB
config_typeJJRconfig"?
FilterChainMatchT
destination_port (2.google.protobuf.UInt32ValueB?B*??(RdestinationPortD

prefix_ranges (2.envoy.config.core.v3.CidrRangeRprefixRanges%
address_suffix (	R
addressSuffix;

suffix_len (2.google.protobuf.UInt32ValueR	suffixLen^
direct_source_prefix_ranges
 (2.envoy.config.core.v3.CidrRangeRdirectSourcePrefixRangesj
source_type (2?.envoy.config.listener.v3.FilterChainMatch.ConnectionSourceTypeB?B?R
sourceTypeQ
source_prefix_ranges (2.envoy.config.core.v3.CidrRangeRsourcePrefixRanges3
source_ports (
B?B
?
"*??(RsourcePorts!
server_names (	RserverNames-
transport_protocol	 (	RtransportProtocol3
application_protocols
 (	RapplicationProtocols"F
ConnectionSourceType
ANY
SAME_IP_OR_LOOPBACK
EXTERNAL:-?ň(
&envoy.api.v2.listener.FilterChainMatchJ"?
FilterChainX
filter_chain_match (2*.envoy.config.listener.v3.FilterChainMatchRfilterChainMatch:
filters (2 .envoy.config.listener.v3.FilterRfiltersO
use_proxy_proto (2.google.protobuf.BoolValueB?dž?3.0R
useProxyProto:
metadata (2.envoy.config.core.v3.MetadataRmetadataP
transport_socket (2%.envoy.config.core.v3.TransportSocketRtransportSocketb
 transport_socket_connect_timeout	 (2.google.protobuf.DurationRtransportSocketConnectTimeout
name (	Rnames
on_demand_configuration (2;.envoy.config.listener.v3.FilterChain.OnDemandConfigurationRonDemandConfiguration[
OnDemandConfigurationB
rebuild_timeout (2.google.protobuf.DurationRrebuildTimeout:(?ň#
!envoy.api.v2.listener.FilterChainJRtls_context"?
!ListenerFilterChainMatchPredicatea
or_match (2D.envoy.config.listener.v3.ListenerFilterChainMatchPredicate.MatchSetHRorMatchc
	and_match (2D.envoy.config.listener.v3.ListenerFilterChainMatchPredicate.MatchSetHRandMatchZ
	not_match (2;.envoy.config.listener.v3.ListenerFilterChainMatchPredicateHRnotMatch&
	any_match (B?BjHRanyMatchQ
destination_port_range (2.envoy.type.v3.Int32RangeHRdestinationPortRange?
MatchSet[
rules (2;.envoy.config.listener.v3.ListenerFilterChainMatchPredicateB?B?Rrules:G?ňB
@envoy.api.v2.listener.ListenerFilterChainMatchPredicate.MatchSet:>?ň9
7envoy.api.v2.listener.ListenerFilterChainMatchPredicateB
rule?B"?
ListenerFilter
name (	B?BrRname9
typed_config (2.google.protobuf.AnyHRtypedConfigX
config_discovery (2+.envoy.config.core.v3.ExtensionConfigSourceHRconfigDiscoveryd
filter_disabled (2;.envoy.config.listener.v3.ListenerFilterChainMatchPredicateRfilterDisabled:+?ň&
$envoy.api.v2.listener.ListenerFilterB
config_typeJRconfigB?
&io.envoyproxy.envoy.config.listener.v3BListenerComponentsProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3????J?x
?



!
	
,
	
)
	
2
	
#
	
	#
	

(
	
(
	

-
	
'
	
	+
	

!

?
	
?

8
	
8

"
	

"

a
	
a

F

???jF
?
1 [#next-free-field: 6]
2c [#protodoc-title: Listener components]
 Listener :ref:`configuration overview `






^

ӈ?^


	

	

	

	

	

	

	



!


!
4
$;' The name of the filter configuration.


$

$	

$

$:

?$9

&0

&
?
*)? Filter specific configuration which depends on the filter being
 instantiated. See the supported filters for further documentation.
 [#extension-category: envoy.filters.network]


*

*$

*'(
?
/7? Configuration source specifier for an extension configuration discovery
 service. In case of a failure and without the default configuration, the
 listener closes the connections.


/!

/"2

/56
?
_?? Specifies the match criteria for selecting a specific filter chain for a
 listener.

 In order for a filter chain to be selected, *ALL* of its criteria must be
 fulfilled by the incoming connection, properties of which are set by the
 networking stack and/or listener filters.

 The following order applies:

 1. Destination port.
 2. Destination IP address.
 3. Server name (e.g. SNI for TLS protocol),
 4. Transport protocol.
 5. Application protocols (e.g. ALPN for TLS protocol).
 6. Directly connected source IP address (this will only be different from the source IP address
    when using a listener filter that overrides the source address, such as the :ref:`Proxy Protocol
    listener filter `).
 7. Source type (e.g. any, local or external network).
 8. Source IP address.
 9. Source port.

 For criteria that allow ranges or wildcards, the most specific value in any
 of the configured filter chains that matches the incoming connection is going
 to be used (e.g. for SNI ``www.example.com`` the most specific match would be
 ``www.example.com``, then ``*.example.com``, then ``*.com``, then any filter
 chain without ``server_names`` requirements).

 A different way to reason about the filter chain matches:
 Suppose there exists N filter chains. Prune the filter chain set using the above 8 steps.
 In each step, filter chains which most specifically matches the attributes continue to the next step.
 The listener guarantees at most 1 filter chain is left after all of the steps.

 Example:

 For destination port, filter chains specifying the destination port of incoming traffic are the
 most specific match. If none of the filter chains specifies the exact destination port, the filter
 chains which do not specify ports are the most specific match. Filter chains specifying the
 wrong port can never be the most specific match.

 [#comment: Implemented rules are kept in the preference order, with deprecated fields
 listed at the end, because that's how we want to list them in the docs.

 [#comment:TODO(PiotrSikora): Add support for configurable precedence of the rules]
 [#next-free-field: 14]



_

`a/

ӈ?`a/

cl

c
/
e  Any connection source matches.


e

e

C
h4 Match a connection originating from the same host.


h

h
F
k7 Match a connection originating from a different host.


k

k


	n

	n

	n

	n
?
rcz Optional destination port to consider when use_original_dst is set on the
 listener in determining a filter chain match.


r

r.

r12

r3b

?r4a
?
v/? If non-empty, an IP address and prefix length to match addresses when the
 listener is bound to 0.0.0.0/:: or when use_original_dst is specified.


v


v

v*

v-.
?
{? If non-empty, an IP address and suffix length to match addresses when the
 listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
 [#not-implemented-hide:]


{

{	

{
'
~- [#not-implemented-hide:]


~

~(

~+,
?
?>? The criteria is satisfied if the directly connected source IP address of the downstream
 connection is contained in at least one of the specified subnets. If the parameter is not
 specified or the list is empty, the directly connected source IP address is ignored.


?


?

?8

?;=
e
?WW Specifies the connection source IP match type. Can be any, local or external network.


?

?"

?%'

?(V

??)U
?
?6? The criteria is satisfied if the source IP address of the downstream
 connection is contained in at least one of the specified subnets. If the
 parameter is not specified or the list is empty, the source IP address is
 ignored.


?


?

?1

?45
?
??I? The criteria is satisfied if the source port of the downstream connection
 is contained in at least one of the specified ports. If the parameter is
 not specified, the source port is ignored.


?


?

?

?!"

?H

??G
?
?$? If non-empty, a list of server names (e.g. SNI for TLS protocol) to consider when determining
 a filter chain match. Those values will be compared against the server names of a new
 connection, when detected by one of the listener filters.

 The server name will be matched against all wildcard domains, i.e. ``www.example.com``
 will be first matched against ``www.example.com``, then ``*.example.com``, then ``*.com``.

 Note that partial wildcards are not supported, and values like ``*w.example.com`` are invalid.
 The value ``*`` is also not supported, and ``server_names`` should be omitted instead.

 .. attention::

   See the :ref:`FAQ entry ` on how to configure SNI for more
   information.


?


?

?

?!#
?
	? ? If non-empty, a transport protocol to consider when determining a filter chain match.
 This value will be compared against the transport protocol of a new connection, when
 it's detected by one of the listener filters.

 Suggested values include:

 * ``raw_buffer`` - default, used when no transport protocol is detected,
 * ``tls`` - set by :ref:`envoy.filters.listener.tls_inspector `
   when TLS protocol is detected.


	?

	?	

	?
?

?-? If non-empty, a list of application protocols (e.g. ALPN for TLS protocol) to consider when
 determining a filter chain match. Those values will be compared against the application
 protocols of a new connection, when detected by one of the listener filters.

 Suggested values include:

 * ``http/1.1`` - set by :ref:`envoy.filters.listener.tls_inspector
   `,
 * ``h2`` - set by :ref:`envoy.filters.listener.tls_inspector `

 .. attention::

   Currently, only :ref:`TLS Inspector ` provides
   application protocol detection based on the requested
   `ALPN `_ values.

   However, the use of ALPN is pretty much limited to the HTTP/2 traffic on the Internet,
   and matching on values other than ``h2`` is going to lead to a lot of false negatives,
   unless all connecting clients are known to use ALPN.



?



?


?'


?*,
?
??? A filter chain wraps a set of match criteria, an option TLS context, a set of filters, and
 various other parameters.
 [#next-free-field: 10]


?

?c

ӈ??c
?
??? The configuration for on-demand filter chain. If this field is not empty in FilterChain message,
 a filter chain will be built on-demand.
 On-demand filter chains help speedup the warming up of listeners since the building and initialization of
 an on-demand filter chain will be postponed to the arrival of new connection requests that require this filter chain.
 Filter chains that are not often used can be set as on-demand.


?

?
?1? The timeout to wait for filter chain placeholders to complete rebuilding.
 1. If this field is set to 0, timeout is disabled.
 2. If not specified, a default timeout of 15s is used.
 Rebuilding will wait until dependencies are ready, have failed, or this timeout is reached.
 Upon failure or timeout, all connections related to this filter chain will be closed.
 Rebuilding will start again on the next new connection.


?

?,

?/0

	?

	?

	?

	?


?


?
T
?*F The criteria to use when matching a connection to this filter chain.


?

?%

?()
?
?? A list of individual network filters that make up the filter chain for
 connections established with the listener. Order matters as the filters are
 processed sequentially as connection events happen. Note: If the filter
 list is empty, the connection will close by default.

 For QUIC listeners, network filters other than HTTP Connection Manager (HCM)
 can be created, but due to differences in the connection implementation compared
 to TCP, the onData() method will never be called. Therefore, network filters
 for QUIC listeners should only expect to do work at the start of a new connection
 (i.e. in onNewConnection()). HCM must be the last (or only) filter in the chain.


?


?

?

?
?
??S? Whether the listener should expect a PROXY protocol V1 header on new
 connections. If this option is enabled, the listener will assume that that
 remote address of the connection is the one specified in the header. Some
 load balancers including the AWS ELB support this option. If the option is
 absent or set to false, Envoy will use the physical peer address of the
 connection as the remote address.

 This field is deprecated. Add a
 :ref:`PROXY protocol listener filter `
 explicitly instead.


?

?+

?./

?R

?

	??K?Q
?
? 1 [#not-implemented-hide:] filter chain metadata.


?

?

?
?
?/? Optional custom transport socket implementation to use for downstream connections.
 To setup TLS, set a transport socket with name ``envoy.transport_sockets.tls`` and
 :ref:`DownstreamTlsContext ` in the ``typed_config``.
 If no transport socket configuration is specified, new connections
 will be set up with plaintext.
 [#extension-category: envoy.transport_sockets.downstream]


?

?*

?-.
?
?@? If present and nonzero, the amount of time to allow incoming connections to complete any
 transport socket negotiations. If this expires before the transport reports connection
 establishment, the connection is summarily closed.


?

?;

?>?
?
?? The unique name (or empty) by which this filter chain is known.
 Note: :ref:`filter_chain_matcher
 `
 requires that filter chains are uniquely named within a listener.


?

?	

?
?
?4? [#not-implemented-hide:] The configuration to specify whether the filter chain will be built on-demand.
 If this field is not empty, the filter chain will be built on-demand.
 Otherwise, the filter chain will be built normally and block listener warming.


?

?/

?23
?
??? Listener filter chain match configuration. This is a recursive structure which allows complex
 nested match configurations to be built using various logical operators.

 Examples:

 * Matches if the destination port is 3306.

 .. code-block:: yaml

  destination_port_range:
   start: 3306
   end: 3307

 * Matches if the destination port is 3306 or 15000.

 .. code-block:: yaml

  or_match:
    rules:
      - destination_port_range:
          start: 3306
          end: 3307
      - destination_port_range:
          start: 15000
          end: 15001

 [#next-free-field: 6]


?)

??@

ӈ???@
L
??< A set of match configurations used for logical operations.


?


??K


ӈ???K
;
??5) The list of rules that make up the set.


?

?
.

?/4

?78

?4


??	3

??

?

?&

??&
v
?h A set that describes a logical OR. If any member of the set matches, the match configuration
 matches.


?

?


?
v
?h A set that describes a logical AND. If all members of the set match, the match configuration
 matches.


?

?


?
l
?4^ A negation match. The match configuration will match if the negated match condition matches.


?%

?&/

?23
:
??, The match configuration will always match.


?

?	

?

?>

?
?=
?
?2? Match destination port. Particularly, the match evaluation must use the recovered local port if
 the owning listener filter is after :ref:`an original_dst listener filter `.


?

?-

?01
%
?? [#next-free-field: 6]


?

??-

ӈ???-

	?

	?

	?

	?


?


?
5
?;' The name of the filter configuration.


?

?	

?

?:

??9

??

?
?
?)? Filter specific configuration which depends on the filter being
 instantiated. See the supported filters for further documentation.
 [#extension-category: envoy.filters.listener,envoy.filters.udp_listener]


?

?$

?'(
?
?7? Configuration source specifier for an extension configuration discovery
 service. In case of a failure and without the default configuration, the
 listener closes the connections.


?!

?"2

?56
?
?8? Optional match predicate used to disable the filter. The filter is enabled when this field is empty.
 See :ref:`ListenerFilterChainMatchPredicate `
 for further examples.


?#

?$3

?67bproto3
?
,envoy/config/core/v3/udp_socket_config.protoenvoy.config.core.v3google/protobuf/wrappers.protoudpa/annotations/status.protovalidate/validate.proto"?
UdpSocketConfigZ
max_rx_datagram_size (2.google.protobuf.UInt64ValueB?B2?? RmaxRxDatagramSize9

prefer_gro (2.google.protobuf.BoolValueR	preferGroB?
"io.envoyproxy.envoy.config.core.v3BUdpSocketConfigProtoPZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3????J?





	
(
	
'
	
!

	;
	
	;


5
	

5

"
	

"

Y
	
Y


F

???j
F
W
# Generic UDP socket configuration.
2& [#protodoc-title: UDP socket config]




?
4? The maximum size of received UDP datagrams. Using a larger size will cause Envoy to allocate
 more memory per socket. Received datagrams above this size will be dropped. If not set
 defaults to 1500 bytes.




2

56

3

?2
?
+? Configures whether Generic Receive Offload (GRO)
 _ is preferred when reading from the
 UDP socket. The default is context dependent and is documented where UdpSocketConfig is used.
 This option affects performance but not functionality. If GRO is not supported by the operating
 system, non-GRO receive will be used.




&

)*bproto3
?)
*envoy/config/listener/v3/quic_config.protoenvoy.config.listener.v3envoy/config/core/v3/base.proto$envoy/config/core/v3/extension.proto#envoy/config/core/v3/protocol.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoxds/annotations/v3/status.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
QuicProtocolOptions]
quic_protocol_options (2).envoy.config.core.v3.QuicProtocolOptionsRquicProtocolOptions<
idle_timeout (2.google.protobuf.DurationRidleTimeoutS
crypto_handshake_timeout (2.google.protobuf.DurationRcryptoHandshakeTimeoutB
enabled (2(.envoy.config.core.v3.RuntimeFeatureFlagRenabled}
)packets_to_read_to_connection_count_ratio (2.google.protobuf.UInt32ValueB?B*(R#packetsToReadToConnectionCountRatio\
crypto_stream_config (2*.envoy.config.core.v3.TypedExtensionConfigRcryptoStreamConfigZ
proof_source_config (2*.envoy.config.core.v3.TypedExtensionConfigRproofSourceConfigo
connection_id_generator_config (2*.envoy.config.core.v3.TypedExtensionConfigRconnectionIdGeneratorConfig{
server_preferred_address_config	 (2*.envoy.config.core.v3.TypedExtensionConfigB?Ƥ?RserverPreferredAddressConfig]
send_disable_active_migration
 (2.google.protobuf.BoolValueRsendDisableActiveMigration:0?ň+
)envoy.api.v2.listener.QuicProtocolOptionsB?
&io.envoyproxy.envoy.config.listener.v3BQuicConfigProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3????J?
S



!
	
)
	
.
	
-
	
(
	
	(
	
)
	

'
	
+
	
!

?
	
?

0
	
0

"
	

"

a
	
a

F

???jF
?
SJ Configuration specific to the UDP QUIC listener.
 [#next-free-field: 11]
2) [#protodoc-title: QUIC listener config]





2

ӈ?2

8



3

67
?
%,? Maximum number of milliseconds that connection will be alive when there is
 no network activity.

 If it is less than 1ms, Envoy will use 1ms. 300000ms if not specified.


%

%'

%*+
?
*8? Connection timeout in milliseconds before the crypto handshake is finished.

 If it is less than 5000ms, Envoy will use 5000ms. 20000ms if not specified.


*

*3

*67
y
.)l Runtime flag that controls whether the listener is enabled or not. If not specified, defaults
 to enabled.


.

.$

.'(
?
78+? A multiplier to number of connections which is used to determine how many packets to read per
 event loop. A reasonable number should allow the listener to process enough payload but not
 starve TCP and other UDP sockets and also prevent long event loop duration.
 The default value is 32. This means if there are N QUIC connections, the total number of
 packets to read in each read event will be 32 * N.
 The actual number of packets to read in total by the UDP listener is also
 bound by 6000, regardless of this field or how many connections there are.


7

7G

7JK

8*

?8)
?
=8? Configure which implementation of ``quic::QuicCryptoClientStreamBase`` to be used for this listener.
 If not specified the :ref:`QUICHE default one configured by ` will be used.
 [#extension-category: envoy.quic.server.crypto_stream]


=

=3

=67
?
B7? Configure which implementation of ``quic::ProofSource`` to be used for this listener.
 If not specified the :ref:`default one configured by ` will be used.
 [#extension-category: envoy.quic.proof_source]


B

B2

B56
?
GB? Config which implementation of ``quic::ConnectionIdGeneratorInterface`` to be used for this listener.
 If not specified the :ref:`default one configured by ` will be used.
 [#extension-category: envoy.quic.connection_id_generator]


G

G=

G@A
?
MNB? Configure the server's preferred address to advertise so that client can migrate to it. See :ref:`example ` which configures a pair of v4 and v6 preferred addresses.
 The current QUICHE implementation will advertise only one of the preferred IPv4 and IPv6 addresses based on the address family the client initially connects with.
 If not specified, Envoy will not advertise any server's preferred address.
 [#extension-category: envoy.quic.server_preferred_address]


M

M>

MAB

NA


?ȔlN@
?
	R?? Configure the server to send transport parameter `disable_active_migration `_.
 Defaults to false (do not send this transport parameter).


	R

	R9

	R<>bproto3
?
2envoy/config/listener/v3/udp_listener_config.protoenvoy.config.listener.v3$envoy/config/core/v3/extension.proto,envoy/config/core/v3/udp_socket_config.proto*envoy/config/listener/v3/quic_config.protoudpa/annotations/status.proto!udpa/annotations/versioning.proto"?
UdpListenerConfig_
downstream_socket_config (2%.envoy.config.core.v3.UdpSocketConfigRdownstreamSocketConfigP
quic_options (2-.envoy.config.listener.v3.QuicProtocolOptionsRquicOptionsp
udp_packet_packet_writer_config (2*.envoy.config.core.v3.TypedExtensionConfigRudpPacketPacketWriterConfig:.?ň)
'envoy.api.v2.listener.UdpListenerConfigJJJJJRconfig"U
ActiveRawUdpListenerConfig:7?ň2
0envoy.api.v2.listener.ActiveRawUdpListenerConfigB?
&io.envoyproxy.envoy.config.listener.v3BUdpListenerConfigProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3????J?
3



!
	
.
	
6
	
4
	
'
	
	+

?
	
?

7
	
7


"
	


"

a
	
a

F

???jF
?
. [#next-free-field: 9]
2c [#protodoc-title: UDP listener config]
 Listener :ref:`configuration overview `





0

ӈ?0


	

	

	

	

	

	

	

	

	

	

	

	

	

	

	

	







?
!7? UDP socket configuration for the listener. The default for
 :ref:`prefer_gro ` is false for
 listener sockets. If receiving a large amount of datagrams from a small number of sources, it
 may be worthwhile to enable this option after performance testing.


!

!2

!56
?
%'? Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set
 to the default object to enable QUIC without modifying any additional options.


%

%"

%%&
?
-C? Configuration for the UDP packet writer. If empty, HTTP/3 will use GSO if available
 (:ref:`UdpDefaultWriterFactory `)
 or the default kernel sendmsg if not,
 (:ref:`UdpDefaultWriterFactory `)
 and raw UDP will use kernel sendmsg.
 [#extension-category: envoy.udp_packet_writer]


-

->

-AB


03


0"

129

ӈ?129bproto3
??
'envoy/config/listener/v3/listener.protoenvoy.config.listener.v3)envoy/config/accesslog/v3/accesslog.proto"envoy/config/core/v3/address.protoenvoy/config/core/v3/base.proto$envoy/config/core/v3/extension.proto(envoy/config/core/v3/socket_option.proto+envoy/config/listener/v3/api_listener.proto2envoy/config/listener/v3/listener_components.proto2envoy/config/listener/v3/udp_listener_config.protogoogle/protobuf/duration.protogoogle/protobuf/wrappers.protoxds/annotations/v3/status.proto"xds/core/v3/collection_entry.proto!xds/type/matcher/v3/matcher.proto#envoy/annotations/deprecation.protoudpa/annotations/security.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"?
AdditionalAddress7
address (2.envoy.config.core.v3.AddressRaddressR
socket_options (2+.envoy.config.core.v3.SocketOptionsOverrideR
socketOptions"L
ListenerCollection6
entries (2.xds.core.v3.CollectionEntryRentries"?
Listener
name (	Rname7
address (2.envoy.config.core.v3.AddressRaddress^
additional_addresses! (2+.envoy.config.listener.v3.AdditionalAddressRadditionalAddresses
stat_prefix (	R
statPrefixJ

filter_chains (2%.envoy.config.listener.v3.FilterChainRfilterChainsX
filter_chain_matcher  (2.xds.type.matcher.v3.MatcherB?Ƥ?RfilterChainMatcherD
use_original_dst (2.google.protobuf.BoolValueRuseOriginalDstW
default_filter_chain (2%.envoy.config.listener.v3.FilterChainRdefaultFilterChaino
!per_connection_buffer_limit_bytes (2.google.protobuf.UInt32ValueB???*RperConnectionBufferLimitBytes:
metadata (2.envoy.config.core.v3.MetadataRmetadataa

deprecated_v1 (2/.envoy.config.listener.v3.Listener.DeprecatedV1B?dž?3.0RdeprecatedV1K

drain_type (2,.envoy.config.listener.v3.Listener.DrainTypeR	drainTypeS
listener_filters	 (2(.envoy.config.listener.v3.ListenerFilterRlistenerFiltersS
listener_filters_timeout (2.google.protobuf.DurationRlistenerFiltersTimeoutN
$continue_on_listener_filters_timeout (R continueOnListenerFiltersTimeout<
transparent
 (2.google.protobuf.BoolValueRtransparent6
freebind (2.google.protobuf.BoolValueRfreebindI
socket_options
 (2".envoy.config.core.v3.SocketOptionR
socketOptionsX
tcp_fast_open_queue_length (2.google.protobuf.UInt32ValueRtcpFastOpenQueueLengthS
traffic_direction (2&.envoy.config.core.v3.TrafficDirectionRtrafficDirection[
udp_listener_config (2+.envoy.config.listener.v3.UdpListenerConfigRudpListenerConfigH
api_listener (2%.envoy.config.listener.v3.ApiListenerRapiListenerv
connection_balance_config (2:.envoy.config.listener.v3.Listener.ConnectionBalanceConfigRconnectionBalanceConfig*

reuse_port (B?dž?3.0R	reusePortF
enable_reuse_port (2.google.protobuf.BoolValueRenableReusePortC

access_log (2$.envoy.config.accesslog.v3.AccessLogR	accessLogF
tcp_backlog_size (2.google.protobuf.UInt32ValueRtcpBacklogSize
*max_connections_to_accept_per_socket_event" (2.google.protobuf.UInt32ValueB?B* R$maxConnectionsToAcceptPerSocketEvent<
bind_to_port (2.google.protobuf.BoolValueR
bindToPorth
internal_listener (29.envoy.config.listener.v3.Listener.InternalListenerConfigHRinternalListener!
enable_mptcp (RenableMptcp7
ignore_global_conn_limit (RignoreGlobalConnLimitw
DeprecatedV1<
bind_to_port (2.google.protobuf.BoolValueR
bindToPort:)?ň$
"envoy.api.v2.Listener.DeprecatedV1?
ConnectionBalanceConfign

exact_balance (2G.envoy.config.listener.v3.Listener.ConnectionBalanceConfig.ExactBalanceHRexactBalanceS
extend_balance (2*.envoy.config.core.v3.TypedExtensionConfigHR
extendBalanceQ
ExactBalance:A?ň<
:envoy.api.v2.Listener.ConnectionBalanceConfig.ExactBalance:4?ň/
-envoy.api.v2.Listener.ConnectionBalanceConfigB
balance_type?B
InternalListenerConfig")
	DrainType
DEFAULT
MODIFY_ONLY:?ň
envoy.api.v2.ListenerB
listener_specifierJJ"
ListenerManager"
ValidationListenerManager"
ApiListenerManagerB?
&io.envoyproxy.envoy.config.listener.v3B
ListenerProtoPZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3????J?
?



!
	
3
	
,
	
)
	
.
	
2
	
	5
	

<
	
<
	

(
	
	(
	

)
	
,
	
+
	

-
	
)
	
'
	
+
	
!

?
	
?

.
	
.

"
	

"

a
	
a

F

???jF
?
$/6 The additional address the listener is listening on.
2f [#protodoc-title: Listener configuration]
 Listener :ref:`configuration overview `



$

%

%

%

%
?
.3? Additional socket options that may not be present in Envoy source code or
 precompiled binaries. If specified, this will override the
 :ref:`socket_options `
 in the listener. If specified with no
 :ref:`socket_options `
 or an empty list of :ref:`socket_options `,
 it means no socket option will apply.


.

. .

.12
t
35h Listener list collections. Entries are ``Listener`` resources or references.
 [#not-implemented-hide:]



3

43

4


4&

4'.

412
%
8? [#next-free-field: 35]



8


9W

ӈ?9W

;D

;
?
>? Drain in response to calling /healthcheck/fail admin endpoint (along with the health check
 filter), listener removal/modification, and hot restart.


>

>
?
C? Drain in response to listener removal/modification and hot restart. This setting does not
 include /healthcheck/fail. This setting may be desirable if Envoy is hosting both ingress
 and egress listeners.


C

C
(
GR [#not-implemented-hide:]


G


HI-


ӈ?HI-
?
Q/? Whether the listener should bind to the port. A listener that doesn't
 bind can only receive connections redirected from other listeners that
 set use_original_dst parameter to true. Default is true.

 This is deprecated. Use :ref:`Listener.bind_to_port
 `


Q

Q*

Q-.
@
Uo2 Configuration for listener connection balancing.


U
!

VW8


ӈ?VW8
?
_b? A connection balancer implementation that does exact balancing. This means that a lock is
 held during balancing so that connection counts are nearly exactly balanced between worker
 threads. This is "nearly" exact in the sense that a connection might close in parallel thus
 making the counts incorrect, but this should be rectified on the next accept. This balancer
 sacrifices accept throughput for accuracy and should be used when there are a small number of
 connections that rarely cycle (e.g., service mesh gRPC egress).


_

`aG

ӈ?`aG

dn

d


e(

	?e(
S
h%D If specified, the listener will use the exact connection balancer.


h

h 

h#$
?
m6? The listener will use the connection balancer according to ``type_url``. If ``type_url`` is invalid,
 Envoy will not attempt to balance active connections between worker threads.
 [#extension-category: envoy.network.connection_balance]


m"

m#1

m45
z
rsl Configuration for envoy internal listener. All the future internal listener features should be added here.


r
 


	u

	u

	u

	u

	u

	u

	u
?
z? The unique name by which this listener is known. If no name is provided,
 Envoy will allocate an internal UUID for the listener. If the listener is to be dynamically
 updated or removed via :ref:`LDS ` a unique name must be provided.


z

z	

z
?
?? The address that the listener should listen on. In general, the address must be unique, though
 that is governed by the bind rules of the OS. E.g., multiple listeners can listen on port 0 on
 Linux as the actual port will be allocated by the OS.
 Required unless ``api_listener`` or ``listener_specifier`` is populated.


?

?

?
?
?7? The additional addresses the listener should listen on. The addresses must be unique across all
 listeners. Multiple addresses with port 0 can be supplied. When using multiple addresses in a single listener,
 all addresses use the same protocol, and multiple internal addresses are not supported.


?


?

?1

?46
?
?? Optional prefix to use on listener stats. If empty, the stats will be rooted at
 ``listener.
.``. If non-empty, stats will be rooted at ``listener..``. ? ?  ? ? ?)? A list of filter chains to consider for this listener. The :ref:`FilterChain ` with the most specific :ref:`FilterChainMatch ` criteria is used on a connection. Example using SNI for filter chain selection can be found in the :ref:`FAQ entry `. ? ?  ?$ ?'( ? ??B? :ref:`Matcher API ` resolving the filter chain name from the network properties. This matcher is used as a replacement for the filter chain match condition :ref:`filter_chain_match `. If specified, all :ref:`filter_chains ` must have a non-empty and unique :ref:`name ` field and not specify :ref:`filter_chain_match ` field. .. note:: Once matched, each connection is permanently bound to its filter chain. If the matcher changes but the filter chain remains the same, the connections bound to the filter chain are not drained. If, however, the filter chain is removed or structurally modified, then the drain for its connections is initiated. ? ?2 ?57 ?A  ?Ȕl?@ ? ?1? If a connection is redirected using ``iptables``, the port on which the proxy receives it might be different from the original destination address. When this flag is set to true, the listener hands off redirected connections to the listener associated with the original destination address. If there is no listener associated with the original destination address, the connection is handled by the listener that receives it. Defaults to false. ? ?, ?/0 ? ?(? The default filter chain if none of the filter chain matches. If no default filter chain is supplied, the connection will be closed. The filter chain match is ignored in this field. ? ?" ?%' ? ??N? Soft limit on size of the listener’s new connection read and write buffers. If unspecified, an implementation defined default is applied (1MiB). ? ?? ?BC ?M  ???L "  ?  Listener metadata.  ?  ?  ? *  ??S [#not-implemented-hide:]  ?  ?  ?  ?R   ?   ??K?Q I  ?; The type of draining to perform at a listener-wide level.  ?  ?   ? ?  ?/? Listener filters have the opportunity to manipulate and augment the connection metadata that is used in connection filter chain matching, for example. These filters are run before any in :ref:`filter_chains `. Order matters as the filters are processed sequentially right after a socket has been accepted by the listener, and before a connection is created. UDP Listener filters can be specified when the protocol in the listener socket address in :ref:`protocol ` is :ref:`UDP ` and no :ref:`quic_options ` is specified in :ref:`udp_listener_config `. QUIC listener filters can be specified when :ref:`quic_options ` is specified in :ref:`udp_listener_config `. They are processed sequentially right before connection creation. And like TCP Listener filters, they can be used to manipulate the connection metadata and socket. But the difference is that they can't be used to pause connection creation.  ?  ?   ?*  ?-. ?  ?9? The timeout to wait for all listener filters to complete operation. If the timeout is reached, the accepted socket is closed without a connection being created unless ``continue_on_listener_filters_timeout`` is set to true. Specify 0 to disable the timeout. If not specified, a default timeout of 15s is used.  ?  ?3  ?68 ? ?1? Whether a connection should be created when listener filters timeout. Default is false. .. attention:: Some listener filters, such as :ref:`Proxy Protocol filter `, should not be used with this option. It will cause unexpected behavior when a connection is created. ? ?+ ?.0 ? ?-? Whether the listener should be set as a transparent socket. When this flag is set to true, connections can be redirected to the listener using an ``iptables`` ``TPROXY`` target, in which case the original source and destination addresses and ports are preserved on accepted connections. This flag should be used in combination with :ref:`an original_dst ` :ref:`listener filter ` to mark the connections' local addresses as "restored." This can be used to hand off each redirected connection to another listener associated with the connection's destination address. Direct connections to the socket without using ``TPROXY`` cannot be distinguished from connections redirected using ``TPROXY`` and are therefore treated as if they were redirected. When this flag is set to false, the listener's socket is explicitly reset as non-transparent. Setting this flag requires Envoy to run with the ``CAP_NET_ADMIN`` capability. When this flag is not set (default), the socket is not modified, i.e. the transparent option is neither set nor reset. ? ?' ?*, ? ?*? Whether the listener should set the ``IP_FREEBIND`` socket option. When this flag is set to true, listeners can be bound to an IP address that is not configured on the system running Envoy. When this flag is set to false, the option ``IP_FREEBIND`` is disabled on the socket. When this flag is not set (default), the socket is not modified, i.e. the option is neither enabled nor disabled. ? ?$ ?') ? ?4? Additional socket options that may not be present in Envoy source code or precompiled binaries. The socket options can be updated for a listener when :ref:`enable_reuse_port ` is ``true``. Otherwise, if socket options change during a listener update the update will be rejected to make it clear that the options were not updated. ? ?  ? . ?13 ? ?>? Whether the listener should accept TCP Fast Open (TFO) connections. When this flag is set to a value greater than 0, the option TCP_FASTOPEN is enabled on the socket, with a queue length of the specified size (see `details in RFC7413 `_). When this flag is set to 0, the option TCP_FASTOPEN is disabled on the socket. When this flag is not set (default), the socket is not modified, i.e. the option is neither enabled nor disabled. On Linux, the net.ipv4.tcp_fastopen kernel parameter must include flag 0x2 to enable TCP_FASTOPEN. See `ip-sysctl.txt `_. On macOS, only values of 0, 1, and unset are valid; other values may result in an error. To set the queue length on macOS, set the net.inet.tcp.fastopen_backlog kernel parameter. ? ?8 ?;= ? ?2? Specifies the intended direction of the traffic relative to the local Envoy. This property is required on Windows for listeners using the original destination filter, see :ref:`Original Destination `. ? ?, ?/1 ? ?-? If the protocol in the listener socket address in :ref:`protocol ` is :ref:`UDP `, this field specifies UDP listener specific configuration. ? ?' ?*, ? ? ? Used to represent an API listener, which is used in non-proxy clients. The type of API exposed to the non-proxy application depends on the type of API listener. When this field is set, no other field except for :ref:`name` should be set. .. note:: Currently only one ApiListener can be installed; and it can only be done via bootstrap config, not LDS. [#next-major-version: In the v3 API, instead of this messy approach where the socket listener fields are directly in the top-level Listener message and the API listener types are in the ApiListener message, the socket listener messages should be in their own message, and the top-level Listener should essentially be a oneof that selects between the socket listener and the various types of API listener. That way, a given Listener message can structurally only contain the fields of the relevant type.] ? ? ? ? ?9? The listener's connection balancer configuration, currently only applicable to TCP listeners. If no configuration is specified, Envoy will not attempt to balance active connections between worker threads. In the scenario that the listener X redirects all the connections to the listeners Y1 and Y2 by setting :ref:`use_original_dst ` in X and :ref:`bind_to_port ` to false in Y1 and Y2, it is recommended to disable the balance config in listener X to avoid the cost of balancing, and enable the balance config in Y1 and Y2 to balance the connections among the workers. ? ?3 ?68 > ?d0 Deprecated. Use ``enable_reuse_port`` instead. ? ? ? ?c  ?)  ??K?+b ? ?3? When this flag is set to true, listeners set the ``SO_REUSEPORT`` socket option and create one socket for each worker thread. This makes inbound connections distribute among worker threads roughly evenly in cases where there are a high number of connections. When this flag is set to false, all worker threads share one socket. This field defaults to true. The change of field will be rejected during an listener update when the runtime flag ``envoy.reloadable_features.enable_update_listener_socket_options`` is enabled. Otherwise, the update of this field will be ignored quietly. .. attention:: Although this field defaults to true, it has different behavior on different platforms. See the following text for more information. * On Linux, reuse_port is respected for both TCP and UDP listeners. It also works correctly with hot restart. * On macOS, reuse_port for TCP does not do what it does on Linux. Instead of load balancing, the last socket wins and receives all connections/packets. For TCP, reuse_port is force disabled and the user is warned. For UDP, it is enabled, but only one worker will receive packets. For QUIC/H3, SW routing will send packets to other workers. For "raw" UDP, only a single worker will currently receive packets. * On Windows, reuse_port for TCP has undefined behavior. It is force disabled and the user is warned similar to macOS. It is left enabled for UDP with undefined behavior currently. ? ?- ?02 k ?2] Configuration for :ref:`access logs ` emitted by this listener. ? ? ! ?", ?/1 ? ?4? The maximum length a tcp listener's pending connections queue can grow to. If no value is provided net.core.somaxconn will be used on Linux and 128 otherwise. ? ?. ?13 ? ??*? The maximum number of connections to accept from the kernel per socket event. Envoy may decide to close these connections after accepting them from the kernel e.g. due to load shedding, or other policies. If there are more than max_connections_to_accept_per_socket_event connections pending accept, connections over this threshold will be accepted in later event loop iterations. If no value is provided Envoy will accept all connections pending accept from the kernel. ? ?H ?KM ?)  ??( ? ?.? Whether the listener should bind to the port. A listener that doesn't bind can only receive connections redirected from other listeners that set :ref:`use_original_dst ` to true. Default is true. ? ?( ?+- K ??; The exclusive listener type and the corresponding config. ? ? ?2? Used to represent an internal listener which does not listen on OSI L4 address but can be used by the :ref:`envoy cluster ` to create a user space connection to. The internal listener acts as a TCP listener. It supports listener filters and network filter chains. Upstream clusters refer to the internal listeners by their :ref:`name `. :ref:`Address ` must not be set on the internal listeners. There are some limitations that are derived from the implementation. The known limitations include: * :ref:`ConnectionBalanceConfig ` is not allowed because both the cluster connection and the listener connection must be owned by the same dispatcher. * :ref:`tcp_backlog_size ` * :ref:`freebind ` * :ref:`transparent ` ? ?, ?/1 ? ?? Enable MPTCP (multi-path TCP) on this listener. Clients will be allowed to establish MPTCP connections. Non-MPTCP clients will fall back to regular TCP. ? ? ? ? ?%? Whether the listener should limit connections based upon the value of :ref:`global_downstream_max_connections `. ? ? ?"$ ? ??? A placeholder proto so that users can explicitly configure the standard Listener Manager via the bootstrap's :ref:`listener_manager `. [#not-implemented-hide:] ? ? ??? A placeholder proto so that users can explicitly configure the standard Validation Listener Manager via the bootstrap's :ref:`listener_manager `. [#not-implemented-hide:] ?! ? ??? A placeholder proto so that users can explicitly configure the API Listener Manager via the bootstrap's :ref:`listener_manager `. [#not-implemented-hide:] ?bproto3 ? /centraldogma/xds/listener/v1/xds_listener.protocentraldogma.xds.listener.v1'envoy/config/listener/v3/listener.protogoogle/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"? CreateListenerRequest parent ( B?ARparent$ listener_id ( B?AR listenerIdC listener ( 2".envoy.config.listener.v3.ListenerB?ARlistener"\ UpdateListenerRequestC listener ( 2".envoy.config.listener.v3.ListenerB?ARlistener"0 DeleteListenerRequest name ( B?ARname2? XdsListenerService? CreateListener3.centraldogma.xds.listener.v1.CreateListenerRequest".envoy.config.listener.v3.Listener"9???3"'/api/v1/xds/{parent=groups/*}/listeners:listener? UpdateListener3.centraldogma.xds.listener.v1.UpdateListenerRequest".envoy.config.listener.v3.Listener"C???=21/api/v1/xds/{listener.name=groups/*/listeners/**}:listener? DeleteListener3.centraldogma.xds.listener.v1.DeleteListenerRequest.google.protobuf.Empty"0???**(/api/v1/xds/{name=groups/*/listeners/**}B? )com.linecorp.centraldogma.xds.listener.v1BXdsListenerProtoPJ?  Y ?   ? Copyright 2024 LINE Corporation LINE Corporation licenses this file to you under the Apache License, version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.  %  "  "  1 1  B B 1 & ! ) % I 5= An XdsListenerService provides methods to manage listeners.  '  % Creates a new listener.    *  5V !$  ?ʼ"!$ - (- Updates an existing listener. ( (* (5V ),  ?ʼ"), # 04 Deletes a listener. 0 0* 05J 13  ?ʼ"13 7B 7 _ :=R The parent resource where this listener will be created. Format: groups/{group} : :  : :<  ?:; ? @B? The ID to use for the listener, which will become the final component of the listener's resource name. Valid pattern is "^[a-z]([a-z0-9-/]*[a-z0-9])?$" @ @  @ @A  ?@@ AZ A# A$, A/0 A1Y  ?A2X DP D ? GZv The listener's `name` field is used to identify the listener to update. Format: groups/{group}/listeners/{listener} G# G$, G/0 G1Y  ?G2X RY R : T=- Format: groups/{group}/listeners/{listener} T T T T<  ?T;bproto3 ?N !envoy/config/route/v3/route.protoenvoy.config.route.v3envoy/config/core/v3/base.proto(envoy/config/core/v3/config_source.proto,envoy/config/route/v3/route_components.protogoogle/protobuf/any.protogoogle/protobuf/wrappers.protoudpa/annotations/status.proto!udpa/annotations/versioning.protovalidate/validate.proto"? RouteConfiguration name ( RnameG virtual_hosts ( 2".envoy.config.route.v3.VirtualHostR virtualHosts/ vhds ( 2.envoy.config.route.v3.VhdsRvhdsD internal_only_headers ( B?B ? "r??RinternalOnlyHeadersi response_headers_to_add ( 2'.envoy.config.core.v3.HeaderValueOptionB ?B??RresponseHeadersToAddM response_headers_to_remove ( B?B ? "r??RresponseHeadersToRemoveg request_headers_to_add ( 2'.envoy.config.core.v3.HeaderValueOptionB ?B??RrequestHeadersToAddK request_headers_to_remove ( B?B ? "r??RrequestHeadersToRemoveL #most_specific_header_mutations_wins (RmostSpecificHeaderMutationsWinsG validate_clusters ( 2.google.protobuf.BoolValueRvalidateClustersi #max_direct_response_body_size_bytes ( 2.google.protobuf.UInt32ValueRmaxDirectResponseBodySizeBytesi cluster_specifier_plugins ( 2-.envoy.config.route.v3.ClusterSpecifierPluginRclusterSpecifierPluginsn request_mirror_policies ( 26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyRrequestMirrorPolicies> ignore_port_in_host_matching (RignorePortInHostMatchingS 'ignore_path_parameters_in_path_matching (R"ignorePathParametersInPathMatchingz typed_per_filter_config ( 2C.envoy.config.route.v3.RouteConfiguration.TypedPerFilterConfigEntryRtypedPerFilterConfig: metadata ( 2.envoy.config.core.v3.MetadataRmetadata] TypedPerFilterConfigEntry key ( Rkey* value ( 2.google.protobuf.AnyRvalue:8:&?ň! envoy.api.v2.RouteConfiguration"s VhdsQ config_source ( 2".envoy.config.core.v3.ConfigSourceB?B?R configSource:?ň envoy.api.v2.VhdsB? #io.envoyproxy.envoy.config.route.v3B RouteProtoPZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3????J?> ?      ) 2 6 #  (  '  +  !  < <  + +  "  "  [  [  F ???jF ? ? [#next-free-field: 18] 2? [#protodoc-title: HTTP route configuration] * Routing :ref:`architecture overview ` * HTTP :ref:`router filter `  a  ӈ?a ? !? The name of the route configuration. For example, it might match :ref:`route_config_name ` in :ref:`envoy_v3_api_msg_extensions.filters.network.http_connection_manager.v3.Rds`. ! ! ! F $)9 An array of virtual hosts that make up the route table. $ $  $$ $'( ? ,? An array of virtual hosts will be dynamically loaded via the VHDS API. Both ``virtual_hosts`` and ``vhds`` fields will be used when present. ``virtual_hosts`` can be used for a base routing table or for infrequently changing virtual hosts. ``vhds`` is used for on-demand discovery of virtual hosts. The contents of these two fields will be merged to generate a routing table for a given RouteConfiguration, with ``vhds`` derived configuration taking precedence. , , , ? 24? Optionally specifies a list of HTTP headers that the connection manager will consider to be internal only. If they are found on external requests they will be cleaned prior to filter invocation. See :ref:`config_http_conn_man_headers_x-envoy-internal` for more information. 2 2  2' 2*+ 2,4  ?3c ? <=6? Specifies a list of HTTP headers that should be added to each response that the connection manager encodes. Headers specified at this level are applied after headers from any enclosed :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` or :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. For more information, including details on header value syntax, see the documentation on :ref:`custom request headers `. < < $ <%< `. K K $ K%; K>? L5  ?L4 ? PRs Specifies a list of HTTP headers that should be removed from each request routed by the HTTP connection manager. P P  P+ P./ P0R  ?Qc ? Z0? Headers mutations at all levels are evaluated, if specified. By default, the order is from most specific (i.e. route entry level) to least specific (i.e. route configuration level). Later header mutations may override earlier mutations. This order can be reversed by setting this field to true. In other words, most specific level mutation is evaluated last. Z Z* Z-/ ?  i2? An optional boolean that specifies whether the clusters that the route table refers to will be validated by the cluster manager. If set to true and a route refers to a non-existent cluster, the route table will not load. If set to false and a route refers to a non-existent cluster, the route table will load and the router filter will return a 404 if the route is selected at runtime. This setting defaults to true if the route table is statically defined via the :ref:`route_config ` option. This setting default to false if the route table is loaded dynamically via the :ref:`rds ` option. Users may wish to override the default behavior in certain cases (for example when using CDS with a static route table).  i  i-  i01 ?  vG? The maximum bytes of the response :ref:`direct response body ` size. If not specified the default is 4096. .. warning:: Envoy currently holds the content of :ref:`direct response body ` in memory. Be careful setting this to be larger than the default 4KB, since the allocated memory for direct response body is not subject to data plane buffering controls.  v  vA  vDF ?  {A? A list of plugins and their configurations which may be used by a :ref:`cluster specifier plugin name ` within the route. All ``extension.name`` fields in this list must be unique.  {  { !  {";  {>@ ?  H? Specify a set of default request mirroring policies which apply to all routes under its virtual hosts. Note that policies are not merged, the most specific non-empty one becomes the mirror policies.     *  +B  EG ?  ?)? By default, port in :authority header (if any) is used in host matching. With this option enabled, Envoy will ignore the port number in the :authority header (if any) when picking VirtualHost. NOTE: this option will not strip the port number (if any) contained in route config :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`.domains field.  ?  ?#  ?&( ? ?4? Ignore path-parameters in path-matching. Before RFC3986, URI were like(RFC1808): :///;?# Envoy by default takes ":path" as ";". For users who want to only match path on the "" portion, this option should be true. ? ?. ?13 ? ?@? This field can be used to provide RouteConfiguration level per filter config. The key should match the :ref:`filter config name `. See :ref:`Http filter route specific config ` for details. [#comment: An entry's value may be wrapped in a :ref:`FilterConfig` message to specify additional options.] ?" ?#: ?=? ? ?!? The metadata field can be used to provide additional information about the route configuration. It can be used for configuration, stats, and logging. The metadata should go under the filter namespace that will need it. For instance, if the metadata is intended for the Router filter, the filter name should be specified as ``envoy.filters.http.router``. ? ? ? ?? ? ?S  ӈ??S 8 ?W* Configuration source specifier for VHDS. ? ?$ ?'( ?)V  ??*Ubproto3 ? )centraldogma/xds/route/v1/xds_route.protocentraldogma.xds.route.v1!envoy/config/route/v3/route.protogoogle/api/annotations.protogoogle/api/client.protogoogle/api/field_behavior.protogoogle/protobuf/empty.proto"? CreateRouteRequest parent ( B?ARparent route_id ( B?ARrouteIdD route ( 2).envoy.config.route.v3.RouteConfigurationB?ARroute"Z UpdateRouteRequestD route ( 2).envoy.config.route.v3.RouteConfigurationB?ARroute"- DeleteRouteRequest name ( B?ARname2? XdsRouteService? CreateRoute-.centraldogma.xds.route.v1.CreateRouteRequest).envoy.config.route.v3.RouteConfiguration"3???-"$/api/v1/xds/{parent=groups/*}/routes:route? UpdateRoute-.centraldogma.xds.route.v1.UpdateRouteRequest).envoy.config.route.v3.RouteConfiguration":???42+/api/v1/xds/{route.name=groups/*/routes/**}:route? DeleteRoute-.centraldogma.xds.route.v1.DeleteRouteRequest.google.protobuf.Empty"-???'*%/api/v1/xds/{name=groups/*/routes/**}B9 &com.linecorp.centraldogma.xds.route.v1B XdsRouteProtoPJ?  Y ?   ? Copyright 2024 LINE Corporation LINE Corporation licenses this file to you under the Apache License, version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.  "  "  "  . .  ? ? + & ! ) % C 57 An XdsRouteService provides methods to manage routes.  $  % Creates a new route.    $  /W !$  ?ʼ"!$ * (- Updates an existing route. ( ($ (/W ),  ?ʼ"), 04 Deletes a route. 0 0$ 0/D 13  ?ʼ"13 7B 7 \ :=O The parent resource where this route will be created. Format: groups/{group} : :  : :<  ?:; ? @?? The ID to use for the route, which will become the final component of the route's resource name. Valid pattern is "^[a-z]([a-z0-9-/]*[a-z0-9])?$" @ @  @ @>  ?@= A^ A* A+0 A34 A5]  ?A6\ DP D w G^j The route's `name` field is used to identify the route to update. Format: groups/{group}/routes/{route} G* G+0 G34 G5]  ?G6\ RY R 4 T=' Format: groups/{group}/routes/{route} T T T T<  ?T;bproto3




© 2015 - 2024 Weber Informatics LLC | Privacy Policy