async-grpc-xds 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/async/grpc/xds/ads_stream.rb +4 -0
  4. data/lib/async/grpc/xds/client_side_weighted_round_robin.rb +53 -0
  5. data/lib/async/grpc/xds/cluster.rb +71 -0
  6. data/lib/async/grpc/xds/control_plane.rb +47 -6
  7. data/lib/async/grpc/xds/discovery_client.rb +12 -2
  8. data/lib/async/grpc/xds/endpoint.rb +102 -0
  9. data/lib/async/grpc/xds/resource_cache.rb +1 -0
  10. data/lib/async/grpc/xds/resources.rb +9 -0
  11. data/lib/async/grpc/xds/server.rb +7 -0
  12. data/lib/async/grpc/xds/service.rb +24 -0
  13. data/lib/async/grpc/xds/version.rb +4 -1
  14. data/lib/async/grpc/xds.rb +3 -1
  15. data/lib/envoy/config/common/mutation_rules/v3/mutation_rules_pb.rb +33 -0
  16. data/lib/envoy/config/route/v3/route_components_pb.rb +108 -0
  17. data/lib/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin_pb.rb +30 -0
  18. data/lib/envoy/extensions/load_balancing_policies/common/v3/common_pb.rb +41 -0
  19. data/lib/envoy/type/tracing/v3/custom_tag_pb.rb +31 -0
  20. data/lib/xds/data/orca/v3/orca_load_report_pb.rb +24 -0
  21. data/lib/xds/service/orca/v3/open_rca_service.rb +23 -0
  22. data/lib/xds/service/orca/v3/orca_pb.rb +25 -0
  23. data/proto/envoy/config/common/mutation_rules/v3/mutation_rules.proto +113 -0
  24. data/proto/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto +96 -0
  25. data/proto/envoy/extensions/load_balancing_policies/common/v3/common.proto +188 -0
  26. data/proto/envoy/type/tracing/v3/custom_tag.proto +109 -0
  27. data/proto/readme.md +3 -0
  28. data/proto/xds/data/orca/v3/orca_load_report.proto +58 -0
  29. data/proto/xds/service/orca/v3/orca.proto +36 -0
  30. data/readme.md +16 -2
  31. data/releases.md +12 -0
  32. data/xds/readme.md +2 -29
  33. data/xds/test/async/grpc/xds/control_plane.rb +5 -6
  34. data.tar.gz.sig +0 -0
  35. metadata +18 -2
  36. metadata.gz.sig +0 -0
  37. data/lib/async/grpc/xds/resource_builder.rb +0 -138
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: envoy/config/route/v3/route_components.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/common/mutation_rules/v3/mutation_rules_pb"
9
+ require "envoy/config/core/v3/base_pb"
10
+ require "envoy/config/core/v3/extension_pb"
11
+ require "envoy/config/core/v3/proxy_protocol_pb"
12
+ require "envoy/config/core/v3/substitution_format_string_pb"
13
+ require "envoy/type/matcher/v3/filter_state_pb"
14
+ require "envoy/type/matcher/v3/metadata_pb"
15
+ require "envoy/type/matcher/v3/regex_pb"
16
+ require "envoy/type/matcher/v3/string_pb"
17
+ require "envoy/type/metadata/v3/metadata_pb"
18
+ require "envoy/type/tracing/v3/custom_tag_pb"
19
+ require "envoy/type/v3/percent_pb"
20
+ require "envoy/type/v3/range_pb"
21
+ require "google/protobuf/any_pb"
22
+ require "google/protobuf/duration_pb"
23
+ require "google/protobuf/wrappers_pb"
24
+ require "xds/type/matcher/v3/matcher_pb"
25
+ require "envoy/annotations/deprecation_pb"
26
+ require "udpa/annotations/migrate_pb"
27
+ require "udpa/annotations/status_pb"
28
+ require "udpa/annotations/versioning_pb"
29
+ require "validate/validate_pb"
30
+
31
+
32
+ descriptor_data = "\n,envoy/config/route/v3/route_components.proto\x12\x15\x65nvoy.config.route.v3\x1a:envoy/config/common/mutation_rules/v3/mutation_rules.proto\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a$envoy/config/core/v3/extension.proto\x1a)envoy/config/core/v3/proxy_protocol.proto\x1a\x35\x65nvoy/config/core/v3/substitution_format_string.proto\x1a(envoy/type/matcher/v3/filter_state.proto\x1a$envoy/type/matcher/v3/metadata.proto\x1a!envoy/type/matcher/v3/regex.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a%envoy/type/metadata/v3/metadata.proto\x1a&envoy/type/tracing/v3/custom_tag.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x19\x65nvoy/type/v3/range.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x81\r\n\x0bVirtualHost\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12#\n\x07\x64omains\x18\x02 \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\x08\x01\"\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x45\n\x06routes\x18\x03 \x03(\x0b\x32\x1c.envoy.config.route.v3.RouteB\x17\xf2\x98\xfe\x8f\x05\x11\x12\x0froute_selection\x12\x46\n\x07matcher\x18\x15 \x01(\x0b\x32\x1c.xds.type.matcher.v3.MatcherB\x17\xf2\x98\xfe\x8f\x05\x11\x12\x0froute_selection\x12T\n\x0brequire_tls\x18\x04 \x01(\x0e\x32\x35.envoy.config.route.v3.VirtualHost.TlsRequirementTypeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12?\n\x10virtual_clusters\x18\x05 \x03(\x0b\x32%.envoy.config.route.v3.VirtualCluster\x12\x35\n\x0brate_limits\x18\x06 \x03(\x0b\x32 .envoy.config.route.v3.RateLimit\x12R\n\x16request_headers_to_add\x18\x07 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x35\n\x19request_headers_to_remove\x18\r \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\n \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x36\n\x1aresponse_headers_to_remove\x18\x0b \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12<\n\x04\x63ors\x18\x08 \x01(\x0b\x32!.envoy.config.route.v3.CorsPolicyB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12]\n\x17typed_per_filter_config\x18\x0f \x03(\x0b\x32<.envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry\x12%\n\x1dinclude_request_attempt_count\x18\x0e \x01(\x08\x12)\n!include_attempt_count_in_response\x18\x13 \x01(\x08\x12\x38\n\x0cretry_policy\x18\x10 \x01(\x0b\x32\".envoy.config.route.v3.RetryPolicy\x12\x37\n\x19retry_policy_typed_config\x18\x14 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x38\n\x0chedge_policy\x18\x11 \x01(\x0b\x32\".envoy.config.route.v3.HedgePolicy\x12\'\n\x1finclude_is_timeout_retry_header\x18\x17 \x01(\x08\x12Q\n\x1eper_request_buffer_limit_bytes\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x19request_body_buffer_limit\x18\x19 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x08\xfa\x42\x05\x8a\x01\x02\x10\x00\x12W\n\x17request_mirror_policies\x18\x16 \x03(\x0b\x32\x36.envoy.config.route.v3.RouteAction.RequestMirrorPolicy\x12\x30\n\x08metadata\x18\x18 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\":\n\x12TlsRequirementType\x12\x08\n\x04NONE\x10\x00\x12\x11\n\rEXTERNAL_ONLY\x10\x01\x12\x07\n\x03\x41LL\x10\x02:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.VirtualHostJ\x04\x08\t\x10\nJ\x04\x08\x0c\x10\rR\x11per_filter_config\"\\\n\x0c\x46ilterAction\x12$\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.api.v2.route.FilterAction\"9\n\tRouteList\x12,\n\x06routes\x18\x01 \x03(\x0b\x32\x1c.envoy.config.route.v3.Route\"\xe8\t\n\x05Route\x12\x0c\n\x04name\x18\x0e \x01(\t\x12:\n\x05match\x18\x01 \x01(\x0b\x32!.envoy.config.route.v3.RouteMatchB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x33\n\x05route\x18\x02 \x01(\x0b\x32\".envoy.config.route.v3.RouteActionH\x00\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32%.envoy.config.route.v3.RedirectActionH\x00\x12\x46\n\x0f\x64irect_response\x18\x07 \x01(\x0b\x32+.envoy.config.route.v3.DirectResponseActionH\x00\x12<\n\rfilter_action\x18\x11 \x01(\x0b\x32#.envoy.config.route.v3.FilterActionH\x00\x12K\n\x15non_forwarding_action\x18\x12 \x01(\x0b\x32*.envoy.config.route.v3.NonForwardingActionH\x00\x12\x30\n\x08metadata\x18\x04 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12\x33\n\tdecorator\x18\x05 \x01(\x0b\x32 .envoy.config.route.v3.Decorator\x12W\n\x17typed_per_filter_config\x18\r \x03(\x0b\x32\x36.envoy.config.route.v3.Route.TypedPerFilterConfigEntry\x12R\n\x16request_headers_to_add\x18\t \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x35\n\x19request_headers_to_remove\x18\x0c \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\n \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x36\n\x1aresponse_headers_to_remove\x18\x0b \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12/\n\x07tracing\x18\x0f \x01(\x0b\x32\x1e.envoy.config.route.v3.Tracing\x12Q\n\x1eper_request_buffer_limit_bytes\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x13\n\x0bstat_prefix\x18\x13 \x01(\t\x12?\n\x19request_body_buffer_limit\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.UInt64Value\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01:\x1f\x9a\xc5\x88\x1e\x1a\n\x18\x65nvoy.api.v2.route.RouteB\r\n\x06\x61\x63tion\x12\x03\xf8\x42\x01J\x04\x08\x06\x10\x07J\x04\x08\x08\x10\tR\x11per_filter_config\"\xb6\t\n\x0fWeightedCluster\x12P\n\x08\x63lusters\x18\x01 \x03(\x0b\x32\x34.envoy.config.route.v3.WeightedCluster.ClusterWeightB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12?\n\x0ctotal_weight\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x1a\n\x12runtime_key_prefix\x18\x02 \x01(\t\x12\"\n\x0bheader_name\x18\x04 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00H\x00\x12\x35\n\x0fuse_hash_policy\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueH\x00\x1a\xd3\x06\n\rClusterWeight\x12\'\n\x04name\x18\x01 \x01(\tB\x19\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12<\n\x0e\x63luster_header\x18\x0c \x01(\tB$\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12,\n\x06weight\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x36\n\x0emetadata_match\x18\x03 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12R\n\x16request_headers_to_add\x18\x04 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x33\n\x19request_headers_to_remove\x18\t \x03(\tB\x10\xfa\x42\r\x92\x01\n\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\x05 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x34\n\x1aresponse_headers_to_remove\x18\x06 \x03(\tB\x10\xfa\x42\r\x92\x01\n\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\x12o\n\x17typed_per_filter_config\x18\n \x03(\x0b\x32N.envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry\x12+\n\x14host_rewrite_literal\x18\x0b \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x00\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.WeightedCluster.ClusterWeightB\x18\n\x16host_rewrite_specifierJ\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\x11per_filter_config:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.route.WeightedClusterB\x18\n\x16random_value_specifier\"v\n\x16\x43lusterSpecifierPlugin\x12G\n\textension\x18\x01 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x13\n\x0bis_optional\x18\x02 \x01(\x08\"\xfb\t\n\nRouteMatch\x12\x10\n\x06prefix\x18\x01 \x01(\tH\x00\x12\x0e\n\x04path\x18\x02 \x01(\tH\x00\x12\x43\n\nsafe_regex\x18\n \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12K\n\x0f\x63onnect_matcher\x18\x0c \x01(\x0b\x32\x30.envoy.config.route.v3.RouteMatch.ConnectMatcherH\x00\x12\x36\n\x15path_separated_prefix\x18\x0e \x01(\tB\x15\xfa\x42\x12r\x10\x32\x0e^[^?#]+[^?#/]$H\x00\x12G\n\x11path_match_policy\x18\x0f \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigH\x00\x12\x32\n\x0e\x63\x61se_sensitive\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12H\n\x10runtime_fraction\x18\t \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12\x35\n\x07headers\x18\x06 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12\x46\n\x10query_parameters\x18\x07 \x03(\x0b\x32,.envoy.config.route.v3.QueryParameterMatcher\x12\x35\n\x07\x63ookies\x18\x11 \x03(\x0b\x32$.envoy.config.route.v3.CookieMatcher\x12\x45\n\x04grpc\x18\x08 \x01(\x0b\x32\x37.envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions\x12M\n\x0btls_context\x18\x0b \x01(\x0b\x32\x38.envoy.config.route.v3.RouteMatch.TlsContextMatchOptions\x12@\n\x10\x64ynamic_metadata\x18\r \x03(\x0b\x32&.envoy.type.matcher.v3.MetadataMatcher\x12?\n\x0c\x66ilter_state\x18\x10 \x03(\x0b\x32).envoy.type.matcher.v3.FilterStateMatcher\x1aS\n\x15GrpcRouteMatchOptions::\x9a\xc5\x88\x1e\x35\n3envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions\x1a\xb3\x01\n\x16TlsContextMatchOptions\x12-\n\tpresented\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12-\n\tvalidated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue:;\x9a\xc5\x88\x1e\x36\n4envoy.api.v2.route.RouteMatch.TlsContextMatchOptions\x1a\x10\n\x0e\x43onnectMatcher:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.route.RouteMatchB\x15\n\x0epath_specifier\x12\x03\xf8\x42\x01J\x04\x08\x05\x10\x06J\x04\x08\x03\x10\x04R\x05regex\"\xf4\x04\n\nCorsPolicy\x12G\n\x19\x61llow_origin_string_match\x18\x0b \x03(\x0b\x32$.envoy.type.matcher.v3.StringMatcher\x12\x15\n\rallow_methods\x18\x02 \x01(\t\x12\x15\n\rallow_headers\x18\x03 \x01(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x01(\t\x12\x0f\n\x07max_age\x18\x05 \x01(\t\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12H\n\x0e\x66ilter_enabled\x18\t \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercentH\x00\x12\x46\n\x0eshadow_enabled\x18\n \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12@\n\x1c\x61llow_private_network_access\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x43\n\x1f\x66orward_not_matching_preflights\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValue:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.route.CorsPolicyB\x13\n\x11\x65nabled_specifierJ\x04\x08\x01\x10\x02J\x04\x08\x08\x10\tJ\x04\x08\x07\x10\x08R\x0c\x61llow_originR\x12\x61llow_origin_regexR\x07\x65nabled\"\xb7\'\n\x0bRouteAction\x12\x1a\n\x07\x63luster\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\'\n\x0e\x63luster_header\x18\x02 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00H\x00\x12\x43\n\x11weighted_clusters\x18\x03 \x01(\x0b\x32&.envoy.config.route.v3.WeightedClusterH\x00\x12\"\n\x18\x63luster_specifier_plugin\x18% \x01(\tH\x00\x12X\n\x1finline_cluster_specifier_plugin\x18\' \x01(\x0b\x32-.envoy.config.route.v3.ClusterSpecifierPluginH\x00\x12q\n\x1f\x63luster_not_found_response_code\x18\x14 \x01(\x0e\x32>.envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCodeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x36\n\x0emetadata_match\x18\x04 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12#\n\x0eprefix_rewrite\x18\x05 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x45\n\rregex_rewrite\x18 \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstitute\x12G\n\x13path_rewrite_policy\x18) \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x14\n\x0cpath_rewrite\x18- \x01(\t\x12+\n\x14host_rewrite_literal\x18\x06 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12\x37\n\x11\x61uto_host_rewrite\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueH\x01\x12*\n\x13host_rewrite_header\x18\x1d \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00H\x01\x12Q\n\x17host_rewrite_path_regex\x18# \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstituteH\x01\x12\x16\n\x0chost_rewrite\x18, \x01(\tH\x01\x12\x1f\n\x17\x61ppend_x_forwarded_host\x18& \x01(\x08\x12*\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x0cidle_timeout\x18\x18 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rflush_timeout\x18* \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x45\n\x11\x65\x61rly_data_policy\x18( \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x38\n\x0cretry_policy\x18\t \x01(\x0b\x32\".envoy.config.route.v3.RetryPolicy\x12\x37\n\x19retry_policy_typed_config\x18! \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x17request_mirror_policies\x18\x1e \x03(\x0b\x32\x36.envoy.config.route.v3.RouteAction.RequestMirrorPolicy\x12\x41\n\x08priority\x18\x0b \x01(\x0e\x32%.envoy.config.core.v3.RoutingPriorityB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x35\n\x0brate_limits\x18\r \x03(\x0b\x32 .envoy.config.route.v3.RateLimit\x12G\n\x16include_vh_rate_limits\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x42\n\x0bhash_policy\x18\x0f \x03(\x0b\x32-.envoy.config.route.v3.RouteAction.HashPolicy\x12<\n\x04\x63ors\x18\x11 \x01(\x0b\x32!.envoy.config.route.v3.CorsPolicyB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12@\n\x10max_grpc_timeout\x18\x17 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x43\n\x13grpc_timeout_offset\x18\x1c \x01(\x0b\x32\x19.google.protobuf.DurationB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x0fupgrade_configs\x18\x19 \x03(\x0b\x32\x30.envoy.config.route.v3.RouteAction.UpgradeConfig\x12O\n\x18internal_redirect_policy\x18\" \x01(\x0b\x32-.envoy.config.route.v3.InternalRedirectPolicy\x12h\n\x18internal_redirect_action\x18\x1a \x01(\x0e\x32\x39.envoy.config.route.v3.RouteAction.InternalRedirectActionB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x16max_internal_redirects\x18\x1f \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x38\n\x0chedge_policy\x18\x1b \x01(\x0b\x32\".envoy.config.route.v3.HedgePolicy\x12Q\n\x13max_stream_duration\x18$ \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.MaxStreamDuration\x1a\x85\x04\n\x13RequestMirrorPolicy\x12*\n\x07\x63luster\x18\x01 \x01(\tB\x19\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12<\n\x0e\x63luster_header\x18\x05 \x01(\tB$\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12H\n\x10runtime_fraction\x18\x03 \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12\x31\n\rtrace_sampled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12)\n!disable_shadow_host_suffix_append\x18\x06 \x01(\x08\x12\x63\n\x19request_headers_mutations\x18\x07 \x03(\x0b\x32\x35.envoy.config.common.mutation_rules.v3.HeaderMutationB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12)\n\x14host_rewrite_literal\x18\x08 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00:9\x9a\xc5\x88\x1e\x34\n2envoy.api.v2.route.RouteAction.RequestMirrorPolicyJ\x04\x08\x02\x10\x03R\x0bruntime_key\x1a\xb0\n\n\nHashPolicy\x12\x46\n\x06header\x18\x01 \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.HashPolicy.HeaderH\x00\x12\x46\n\x06\x63ookie\x18\x02 \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.HashPolicy.CookieH\x00\x12\x63\n\x15\x63onnection_properties\x18\x03 \x01(\x0b\x32\x42.envoy.config.route.v3.RouteAction.HashPolicy.ConnectionPropertiesH\x00\x12W\n\x0fquery_parameter\x18\x05 \x01(\x0b\x32<.envoy.config.route.v3.RouteAction.HashPolicy.QueryParameterH\x00\x12Q\n\x0c\x66ilter_state\x18\x06 \x01(\x0b\x32\x39.envoy.config.route.v3.RouteAction.HashPolicy.FilterStateH\x00\x12\x10\n\x08terminal\x18\x04 \x01(\x08\x1a\xac\x01\n\x06Header\x12\"\n\x0bheader_name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x45\n\rregex_rewrite\x18\x02 \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstitute:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.RouteAction.HashPolicy.Header\x1aR\n\x0f\x43ookieAttribute\x12\x1f\n\x04name\x18\x01 \x01(\tB\x11\xfa\x42\x0er\x0c\x10\x01(\x80\x80\x01\xc0\x01\x01\xc8\x01\x00\x12\x1e\n\x05value\x18\x02 \x01(\tB\x0f\xfa\x42\x0cr\n(\x80\x80\x01\xc0\x01\x02\xc8\x01\x00\x1a\xe1\x01\n\x06\x43ookie\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12&\n\x03ttl\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04path\x18\x03 \x01(\t\x12Q\n\nattributes\x18\x04 \x03(\x0b\x32=.envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.RouteAction.HashPolicy.Cookie\x1ap\n\x14\x43onnectionProperties\x12\x11\n\tsource_ip\x18\x01 \x01(\x08:E\x9a\xc5\x88\x1e@\n>envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties\x1ah\n\x0eQueryParameter\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:?\x9a\xc5\x88\x1e:\n8envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter\x1a\x61\n\x0b\x46ilterState\x12\x14\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:<\x9a\xc5\x88\x1e\x37\n5envoy.api.v2.route.RouteAction.HashPolicy.FilterState:0\x9a\xc5\x88\x1e+\n)envoy.api.v2.route.RouteAction.HashPolicyB\x17\n\x10policy_specifier\x12\x03\xf8\x42\x01\x1a\xdd\x02\n\rUpgradeConfig\x12#\n\x0cupgrade_type\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x02\xc8\x01\x00\x12+\n\x07\x65nabled\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12V\n\x0e\x63onnect_config\x18\x03 \x01(\x0b\x32>.envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig\x1am\n\rConnectConfig\x12H\n\x15proxy_protocol_config\x18\x01 \x01(\x0b\x32).envoy.config.core.v3.ProxyProtocolConfig\x12\x12\n\nallow_post\x18\x02 \x01(\x08:3\x9a\xc5\x88\x1e.\n,envoy.api.v2.route.RouteAction.UpgradeConfig\x1a\xc6\x01\n\x11MaxStreamDuration\x12\x36\n\x13max_stream_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x17grpc_timeout_header_max\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12=\n\x1agrpc_timeout_header_offset\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"`\n\x1b\x43lusterNotFoundResponseCode\x12\x17\n\x13SERVICE_UNAVAILABLE\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x19\n\x15INTERNAL_SERVER_ERROR\x10\x02\"^\n\x16InternalRedirectAction\x12\"\n\x1ePASS_THROUGH_INTERNAL_REDIRECT\x10\x00\x12\x1c\n\x18HANDLE_INTERNAL_REDIRECT\x10\x01\x1a\x02\x18\x01:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.RouteActionB\x18\n\x11\x63luster_specifier\x12\x03\xf8\x42\x01\x42\x18\n\x16host_rewrite_specifierJ\x04\x08\x0c\x10\rJ\x04\x08\x12\x10\x13J\x04\x08\x13\x10\x14J\x04\x08\x10\x10\x11J\x04\x08\x16\x10\x17J\x04\x08\x15\x10\x16J\x04\x08\n\x10\x0bR\x15request_mirror_policy\"\xdb\r\n\x0bRetryPolicy\x12\x10\n\x08retry_on\x18\x01 \x01(\t\x12\x46\n\x0bnum_retries\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x13\xf2\x98\xfe\x8f\x05\r\n\x0bmax_retries\x12\x32\n\x0fper_try_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14per_try_idle_timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.Duration\x12H\n\x0eretry_priority\x18\x04 \x01(\x0b\x32\x30.envoy.config.route.v3.RetryPolicy.RetryPriority\x12S\n\x14retry_host_predicate\x18\x05 \x03(\x0b\x32\x35.envoy.config.route.v3.RetryPolicy.RetryHostPredicate\x12L\n\x18retry_options_predicates\x18\x0c \x03(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12)\n!host_selection_retry_max_attempts\x18\x06 \x01(\x03\x12\x1e\n\x16retriable_status_codes\x18\x07 \x03(\r\x12G\n\x0eretry_back_off\x18\x08 \x01(\x0b\x32/.envoy.config.route.v3.RetryPolicy.RetryBackOff\x12_\n\x1brate_limited_retry_back_off\x18\x0b \x01(\x0b\x32:.envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff\x12?\n\x11retriable_headers\x18\t \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12G\n\x19retriable_request_headers\x18\n \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x1a\xa6\x01\n\rRetryPriority\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00:3\x9a\xc5\x88\x1e.\n,envoy.api.v2.route.RetryPolicy.RetryPriorityB\r\n\x0b\x63onfig_typeJ\x04\x08\x02\x10\x03R\x06\x63onfig\x1a\xb0\x01\n\x12RetryHostPredicate\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RetryPolicy.RetryHostPredicateB\r\n\x0b\x63onfig_typeJ\x04\x08\x02\x10\x03R\x06\x63onfig\x1a\xbb\x01\n\x0cRetryBackOff\x12<\n\rbase_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xfa\x42\x07\xaa\x01\x04\x08\x01*\x00\x12\x39\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00:2\x9a\xc5\x88\x1e-\n+envoy.api.v2.route.RetryPolicy.RetryBackOff\x1az\n\x0bResetHeader\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12N\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\x34.envoy.config.route.v3.RetryPolicy.ResetHeaderFormatB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x1a\xa5\x01\n\x17RateLimitedRetryBackOff\x12O\n\rreset_headers\x18\x01 \x03(\x0b\x32..envoy.config.route.v3.RetryPolicy.ResetHeaderB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x39\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\"4\n\x11ResetHeaderFormat\x12\x0b\n\x07SECONDS\x10\x00\x12\x12\n\x0eUNIX_TIMESTAMP\x10\x01:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.RetryPolicy\"\xdc\x01\n\x0bHedgePolicy\x12?\n\x10initial_requests\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(\x01\x12\x43\n\x19\x61\x64\x64itional_request_chance\x18\x02 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12 \n\x18hedge_on_per_try_timeout\x18\x03 \x01(\x08:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.HedgePolicy\"\xe1\x04\n\x0eRedirectAction\x12\x18\n\x0ehttps_redirect\x18\x04 \x01(\x08H\x00\x12\x19\n\x0fscheme_redirect\x18\x07 \x01(\tH\x00\x12\"\n\rhost_redirect\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x15\n\rport_redirect\x18\x08 \x01(\r\x12$\n\rpath_redirect\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12%\n\x0eprefix_rewrite\x18\x05 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12G\n\rregex_rewrite\x18\t \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstituteH\x01\x12[\n\rresponse_code\x18\x03 \x01(\x0e\x32:.envoy.config.route.v3.RedirectAction.RedirectResponseCodeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x13\n\x0bstrip_query\x18\x06 \x01(\x08\"w\n\x14RedirectResponseCode\x12\x15\n\x11MOVED_PERMANENTLY\x10\x00\x12\t\n\x05\x46OUND\x10\x01\x12\r\n\tSEE_OTHER\x10\x02\x12\x16\n\x12TEMPORARY_REDIRECT\x10\x03\x12\x16\n\x12PERMANENT_REDIRECT\x10\x04:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.route.RedirectActionB\x1a\n\x18scheme_rewrite_specifierB\x18\n\x16path_rewrite_specifier\"\xd8\x01\n\x14\x44irectResponseAction\x12\x1b\n\x06status\x18\x01 \x01(\rB\x0b\xfa\x42\x08*\x06\x10\xd8\x04(\xc8\x01\x12.\n\x04\x62ody\x18\x02 \x01(\x0b\x32 .envoy.config.core.v3.DataSource\x12\x43\n\x0b\x62ody_format\x18\x03 \x01(\x0b\x32..envoy.config.core.v3.SubstitutionFormatString:.\x9a\xc5\x88\x1e)\n\'envoy.api.v2.route.DirectResponseAction\"\x15\n\x13NonForwardingAction\"{\n\tDecorator\x12\x1a\n\toperation\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12-\n\tpropagate\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.route.Decorator\"\xc4\x02\n\x07Tracing\x12\x39\n\x0f\x63lient_sampling\x18\x01 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12\x39\n\x0frandom_sampling\x18\x02 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12:\n\x10overall_sampling\x18\x03 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12\x35\n\x0b\x63ustom_tags\x18\x04 \x03(\x0b\x32 .envoy.type.tracing.v3.CustomTag\x12\x11\n\toperation\x18\x05 \x01(\t\x12\x1a\n\x12upstream_operation\x18\x06 \x01(\t:!\x9a\xc5\x88\x1e\x1c\n\x1a\x65nvoy.api.v2.route.Tracing\"\xa5\x01\n\x0eVirtualCluster\x12\x35\n\x07headers\x18\x04 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12\x15\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.route.VirtualClusterJ\x04\x08\x01\x10\x02J\x04\x08\x03\x10\x04R\x07patternR\x06method\"\xdf\x1b\n\tRateLimit\x12\x34\n\x05stage\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\n\x12\x13\n\x0b\x64isable_key\x18\x02 \x01(\t\x12\x42\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\'.envoy.config.route.v3.RateLimit.ActionB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x38\n\x05limit\x18\x04 \x01(\x0b\x32).envoy.config.route.v3.RateLimit.Override\x12@\n\x0bhits_addend\x18\x05 \x01(\x0b\x32+.envoy.config.route.v3.RateLimit.HitsAddend\x12\x1c\n\x14\x61pply_on_stream_done\x18\x06 \x01(\x08\x1a\xc3\x16\n\x06\x41\x63tion\x12O\n\x0esource_cluster\x18\x01 \x01(\x0b\x32\x35.envoy.config.route.v3.RateLimit.Action.SourceClusterH\x00\x12Y\n\x13\x64\x65stination_cluster\x18\x02 \x01(\x0b\x32:.envoy.config.route.v3.RateLimit.Action.DestinationClusterH\x00\x12Q\n\x0frequest_headers\x18\x03 \x01(\x0b\x32\x36.envoy.config.route.v3.RateLimit.Action.RequestHeadersH\x00\x12S\n\x10query_parameters\x18\x0c \x01(\x0b\x32\x37.envoy.config.route.v3.RateLimit.Action.QueryParametersH\x00\x12O\n\x0eremote_address\x18\x04 \x01(\x0b\x32\x35.envoy.config.route.v3.RateLimit.Action.RemoteAddressH\x00\x12I\n\x0bgeneric_key\x18\x05 \x01(\x0b\x32\x32.envoy.config.route.v3.RateLimit.Action.GenericKeyH\x00\x12V\n\x12header_value_match\x18\x06 \x01(\x0b\x32\x38.envoy.config.route.v3.RateLimit.Action.HeaderValueMatchH\x00\x12\x66\n\x10\x64ynamic_metadata\x18\x07 \x01(\x0b\x32\x37.envoy.config.route.v3.RateLimit.Action.DynamicMetaDataB\x11\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\xb8\xee\xf2\xd2\x05\x01H\x00\x12\x44\n\x08metadata\x18\x08 \x01(\x0b\x32\x30.envoy.config.route.v3.RateLimit.Action.MetaDataH\x00\x12?\n\textension\x18\t \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigH\x00\x12\\\n\x15masked_remote_address\x18\n \x01(\x0b\x32;.envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddressH\x00\x12g\n\x1bquery_parameter_value_match\x18\x0b \x01(\x0b\x32@.envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatchH\x00\x1aI\n\rSourceCluster:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RateLimit.Action.SourceCluster\x1aS\n\x12\x44\x65stinationCluster:=\x9a\xc5\x88\x1e\x38\n6envoy.api.v2.route.RateLimit.Action.DestinationCluster\x1a\xa8\x01\n\x0eRequestHeaders\x12\"\n\x0bheader_name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\x08:9\x9a\xc5\x88\x1e\x34\n2envoy.api.v2.route.RateLimit.Action.RequestHeaders\x1aq\n\x0fQueryParameters\x12%\n\x14query_parameter_name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\x08\x1aI\n\rRemoteAddress:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RateLimit.Action.RemoteAddress\x1a\x9c\x01\n\x13MaskedRemoteAddress\x12\x41\n\x12v4_prefix_mask_len\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18 \x12\x42\n\x12v6_prefix_mask_len\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xfa\x42\x05*\x03\x18\x80\x01\x1a\x95\x01\n\nGenericKey\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\t:5\x9a\xc5\x88\x1e\x30\n.envoy.api.v2.route.RateLimit.Action.GenericKey\x1a\x94\x02\n\x10HeaderValueMatch\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x05 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x04 \x01(\t\x12\x30\n\x0c\x65xpect_match\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12?\n\x07headers\x18\x03 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01:;\x9a\xc5\x88\x1e\x36\n4envoy.api.v2.route.RateLimit.Action.HeaderValueMatch\x1a\x8e\x01\n\x0f\x44ynamicMetaData\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x43\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x1a\x9a\x02\n\x08MetaData\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x43\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x12Q\n\x06source\x18\x04 \x01(\x0e\x32\x37.envoy.config.route.v3.RateLimit.Action.MetaData.SourceB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x05 \x01(\x08\"&\n\x06Source\x12\x0b\n\x07\x44YNAMIC\x10\x00\x12\x0f\n\x0bROUTE_ENTRY\x10\x01\x1a\xf0\x01\n\x18QueryParameterValueMatch\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x05 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x04 \x01(\t\x12\x30\n\x0c\x65xpect_match\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12P\n\x10query_parameters\x18\x03 \x03(\x0b\x32,.envoy.config.route.v3.QueryParameterMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.route.RateLimit.ActionB\x17\n\x10\x61\x63tion_specifier\x12\x03\xf8\x42\x01\x1a\xd4\x01\n\x08Override\x12U\n\x10\x64ynamic_metadata\x18\x01 \x01(\x0b\x32\x39.envoy.config.route.v3.RateLimit.Override.DynamicMetadataH\x00\x1aV\n\x0f\x44ynamicMetadata\x12\x43\n\x0cmetadata_key\x18\x01 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x42\x19\n\x12override_specifier\x12\x03\xf8\x42\x01\x1ag\n\nHitsAddend\x12\x39\n\x06number\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x0b\xfa\x42\x08\x32\x06\x18\x80\x94\xeb\xdc\x03\x12\x1e\n\x06\x66ormat\x18\x02 \x01(\tB\x0e\xfa\x42\x0br\t:\x01%B\x01%\xd0\x01\x01:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.route.RateLimit\"\xcc\x04\n\rHeaderMatcher\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\"\n\x0b\x65xact_match\x18\x04 \x01(\tB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12L\n\x10safe_regex_match\x18\x0b \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12\x30\n\x0brange_match\x18\x06 \x01(\x0b\x32\x19.envoy.type.v3.Int64RangeH\x00\x12\x17\n\rpresent_match\x18\x07 \x01(\x08H\x00\x12*\n\x0cprefix_match\x18\t \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12*\n\x0csuffix_match\x18\n \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12,\n\x0e\x63ontains_match\x18\x0c \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12<\n\x0cstring_match\x18\r \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherH\x00\x12\x14\n\x0cinvert_match\x18\x08 \x01(\x08\x12%\n\x1dtreat_missing_header_as_empty\x18\x0e \x01(\x08:\'\x9a\xc5\x88\x1e\"\n envoy.api.v2.route.HeaderMatcherB\x18\n\x16header_match_specifierJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06R\x0bregex_match\"\x80\x02\n\x15QueryParameterMatcher\x12\x18\n\x04name\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01(\x80\x08\x12\x46\n\x0cstring_match\x18\x05 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12\x17\n\rpresent_match\x18\x06 \x01(\x08H\x00:/\x9a\xc5\x88\x1e*\n(envoy.api.v2.route.QueryParameterMatcherB!\n\x1fquery_parameter_match_specifierJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05R\x05valueR\x05regex\"\x85\x01\n\rCookieMatcher\x12\x18\n\x04name\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01(\x80\x08\x12\x44\n\x0cstring_match\x18\x02 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x14\n\x0cinvert_match\x18\x03 \x01(\x08\"\x9c\x02\n\x16InternalRedirectPolicy\x12<\n\x16max_internal_redirects\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12)\n\x17redirect_response_codes\x18\x02 \x03(\rB\x08\xfa\x42\x05\x92\x01\x02\x10\x05\x12>\n\npredicates\x18\x03 \x03(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12#\n\x1b\x61llow_cross_scheme_redirect\x18\x04 \x01(\x08\x12\x34\n\x18response_headers_to_copy\x18\x05 \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\x18\x01\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\"[\n\x0c\x46ilterConfig\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x13\n\x0bis_optional\x18\x02 \x01(\x08\x12\x10\n\x08\x64isabled\x18\x03 \x01(\x08\x42\x8b\x01\n#io.envoyproxy.envoy.config.route.v3B\x14RouteComponentsProtoP\x01ZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
33
+
34
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
35
+ pool.add_serialized_file(descriptor_data)
36
+
37
+ module Envoy
38
+ module Config
39
+ module Route
40
+ module V3
41
+ VirtualHost = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualHost").msgclass
42
+ VirtualHost::TlsRequirementType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualHost.TlsRequirementType").enummodule
43
+ FilterAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.FilterAction").msgclass
44
+ RouteList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteList").msgclass
45
+ Route = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Route").msgclass
46
+ WeightedCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.WeightedCluster").msgclass
47
+ WeightedCluster::ClusterWeight = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.WeightedCluster.ClusterWeight").msgclass
48
+ ClusterSpecifierPlugin = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.ClusterSpecifierPlugin").msgclass
49
+ RouteMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch").msgclass
50
+ RouteMatch::GrpcRouteMatchOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions").msgclass
51
+ RouteMatch::TlsContextMatchOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.TlsContextMatchOptions").msgclass
52
+ RouteMatch::ConnectMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.ConnectMatcher").msgclass
53
+ CorsPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.CorsPolicy").msgclass
54
+ RouteAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction").msgclass
55
+ RouteAction::RequestMirrorPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.RequestMirrorPolicy").msgclass
56
+ RouteAction::HashPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy").msgclass
57
+ RouteAction::HashPolicy::Header = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.Header").msgclass
58
+ RouteAction::HashPolicy::CookieAttribute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute").msgclass
59
+ RouteAction::HashPolicy::Cookie = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.Cookie").msgclass
60
+ RouteAction::HashPolicy::ConnectionProperties = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties").msgclass
61
+ RouteAction::HashPolicy::QueryParameter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter").msgclass
62
+ RouteAction::HashPolicy::FilterState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.FilterState").msgclass
63
+ RouteAction::UpgradeConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.UpgradeConfig").msgclass
64
+ RouteAction::UpgradeConfig::ConnectConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig").msgclass
65
+ RouteAction::MaxStreamDuration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.MaxStreamDuration").msgclass
66
+ RouteAction::ClusterNotFoundResponseCode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode").enummodule
67
+ RouteAction::InternalRedirectAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.InternalRedirectAction").enummodule
68
+ RetryPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy").msgclass
69
+ RetryPolicy::RetryPriority = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryPriority").msgclass
70
+ RetryPolicy::RetryHostPredicate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryHostPredicate").msgclass
71
+ RetryPolicy::RetryBackOff = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryBackOff").msgclass
72
+ RetryPolicy::ResetHeader = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.ResetHeader").msgclass
73
+ RetryPolicy::RateLimitedRetryBackOff = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff").msgclass
74
+ RetryPolicy::ResetHeaderFormat = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.ResetHeaderFormat").enummodule
75
+ HedgePolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.HedgePolicy").msgclass
76
+ RedirectAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RedirectAction").msgclass
77
+ RedirectAction::RedirectResponseCode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RedirectAction.RedirectResponseCode").enummodule
78
+ DirectResponseAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.DirectResponseAction").msgclass
79
+ NonForwardingAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.NonForwardingAction").msgclass
80
+ Decorator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Decorator").msgclass
81
+ Tracing = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Tracing").msgclass
82
+ VirtualCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualCluster").msgclass
83
+ RateLimit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit").msgclass
84
+ RateLimit::Action = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action").msgclass
85
+ RateLimit::Action::SourceCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.SourceCluster").msgclass
86
+ RateLimit::Action::DestinationCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.DestinationCluster").msgclass
87
+ RateLimit::Action::RequestHeaders = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.RequestHeaders").msgclass
88
+ RateLimit::Action::QueryParameters = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.QueryParameters").msgclass
89
+ RateLimit::Action::RemoteAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.RemoteAddress").msgclass
90
+ RateLimit::Action::MaskedRemoteAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress").msgclass
91
+ RateLimit::Action::GenericKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.GenericKey").msgclass
92
+ RateLimit::Action::HeaderValueMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.HeaderValueMatch").msgclass
93
+ RateLimit::Action::DynamicMetaData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.DynamicMetaData").msgclass
94
+ RateLimit::Action::MetaData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MetaData").msgclass
95
+ RateLimit::Action::MetaData::Source = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MetaData.Source").enummodule
96
+ RateLimit::Action::QueryParameterValueMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch").msgclass
97
+ RateLimit::Override = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Override").msgclass
98
+ RateLimit::Override::DynamicMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Override.DynamicMetadata").msgclass
99
+ RateLimit::HitsAddend = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.HitsAddend").msgclass
100
+ HeaderMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.HeaderMatcher").msgclass
101
+ QueryParameterMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.QueryParameterMatcher").msgclass
102
+ CookieMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.CookieMatcher").msgclass
103
+ InternalRedirectPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.InternalRedirectPolicy").msgclass
104
+ FilterConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.FilterConfig").msgclass
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/extensions/load_balancing_policies/common/v3/common_pb"
9
+ require "google/protobuf/duration_pb"
10
+ require "google/protobuf/wrappers_pb"
11
+ require "udpa/annotations/status_pb"
12
+ require "validate/validate_pb"
13
+
14
+
15
+ descriptor_data = "\nsenvoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto\x12Lenvoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3\x1a?envoy/extensions/load_balancing_policies/common/v3/common.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\x83\x05\n\x1c\x43lientSideWeightedRoundRobin\x12:\n\x16\x65nable_oob_load_report\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x37\n\x14oob_reporting_period\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x32\n\x0f\x62lackout_period\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18weight_expiration_period\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14weight_update_period\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x19\x65rror_utilization_penalty\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.FloatValueB\n\xfa\x42\x07\n\x05-\x00\x00\x00\x00\x12.\n&metric_names_for_computing_utilization\x18\x07 \x03(\t\x12^\n\x11slow_start_config\x18\x08 \x01(\x0b\x32\x43.envoy.extensions.load_balancing_policies.common.v3.SlowStartConfig\x12h\n\x14oob_reporting_config\x18\t \x01(\x0b\x32J.envoy.extensions.load_balancing_policies.common.v3.OrcaOobReportingConfigB\xa2\x02\nZio.envoyproxy.envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3B!ClientSideWeightedRoundRobinProtoP\x01Z\x96\x01github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3;client_side_weighted_round_robinv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
16
+
17
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
18
+ pool.add_serialized_file(descriptor_data)
19
+
20
+ module Envoy
21
+ module Extensions
22
+ module LoadBalancingPolicies
23
+ module ClientSideWeightedRoundRobin
24
+ module V3
25
+ ClientSideWeightedRoundRobin = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3.ClientSideWeightedRoundRobin").msgclass
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: envoy/extensions/load_balancing_policies/common/v3/common.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/base_pb"
9
+ require "envoy/config/route/v3/route_components_pb"
10
+ require "envoy/type/v3/percent_pb"
11
+ require "google/protobuf/duration_pb"
12
+ require "google/protobuf/struct_pb"
13
+ require "google/protobuf/wrappers_pb"
14
+ require "envoy/annotations/deprecation_pb"
15
+ require "udpa/annotations/status_pb"
16
+ require "validate/validate_pb"
17
+
18
+
19
+ descriptor_data = "\n?envoy/extensions/load_balancing_policies/common/v3/common.proto\x12\x32\x65nvoy.extensions.load_balancing_policies.common.v3\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a,envoy/config/route/v3/route_components.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\xa4\x07\n\x10LocalityLbConfig\x12v\n\x14zone_aware_lb_config\x18\x01 \x01(\x0b\x32V.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfigH\x00\x12\x84\x01\n\x1blocality_weighted_lb_config\x18\x02 \x01(\x0b\x32].envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfigH\x00\x1a\xd2\x04\n\x11ZoneAwareLbConfig\x12/\n\x0frouting_enabled\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12\x36\n\x10min_cluster_size\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt64Value\x12\x1d\n\x15\x66\x61il_traffic_on_panic\x18\x03 \x01(\x08\x12\x32\n\x1d\x66orce_locality_direct_routing\x18\x04 \x01(\x08\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x7f\n\x10\x66orce_local_zone\x18\x05 \x01(\x0b\x32\x65.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone\x12|\n\x0elocality_basis\x18\x06 \x01(\x0e\x32\x64.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.LocalityBasis\x1a@\n\x0e\x46orceLocalZone\x12.\n\x08min_size\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\"@\n\rLocalityBasis\x12\x15\n\x11HEALTHY_HOSTS_NUM\x10\x00\x12\x18\n\x14HEALTHY_HOSTS_WEIGHT\x10\x01\x1a\x1a\n\x18LocalityWeightedLbConfigB \n\x19locality_config_specifier\x12\x03\xf8\x42\x01\"\xb4\x01\n\x0fSlowStartConfig\x12\x34\n\x11slow_start_window\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\naggression\x18\x02 \x01(\x0b\x32#.envoy.config.core.v3.RuntimeDouble\x12\x32\n\x12min_weight_percent\x18\x03 \x01(\x0b\x32\x16.envoy.type.v3.Percent\"\xc5\x01\n\x19\x43onsistentHashingLbConfig\x12 \n\x18use_hostname_for_hashing\x18\x01 \x01(\x08\x12\x42\n\x13hash_balance_factor\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(d\x12\x42\n\x0bhash_policy\x18\x03 \x03(\x0b\x32-.envoy.config.route.v3.RouteAction.HashPolicy\"\x99\x01\n\x16OrcaOobReportingConfig\x12\x1d\n\nport_value\x18\x01 \x01(\rB\t\xfa\x42\x06*\x04\x18\xff\xff\x03\x12\x1e\n\tauthority\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12@\n\x1ftransport_socket_match_criteria\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructB\xbd\x01\n@io.envoyproxy.envoy.extensions.load_balancing_policies.common.v3B\x0b\x43ommonProtoP\x01Zbgithub.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/common/v3;commonv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
20
+
21
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
22
+ pool.add_serialized_file(descriptor_data)
23
+
24
+ module Envoy
25
+ module Extensions
26
+ module LoadBalancingPolicies
27
+ module Common
28
+ module V3
29
+ LocalityLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig").msgclass
30
+ LocalityLbConfig::ZoneAwareLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig").msgclass
31
+ LocalityLbConfig::ZoneAwareLbConfig::ForceLocalZone = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone").msgclass
32
+ LocalityLbConfig::ZoneAwareLbConfig::LocalityBasis = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.LocalityBasis").enummodule
33
+ LocalityLbConfig::LocalityWeightedLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig").msgclass
34
+ SlowStartConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.SlowStartConfig").msgclass
35
+ ConsistentHashingLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig").msgclass
36
+ OrcaOobReportingConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.OrcaOobReportingConfig").msgclass
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: envoy/type/tracing/v3/custom_tag.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/type/metadata/v3/metadata_pb"
9
+ require "udpa/annotations/status_pb"
10
+ require "udpa/annotations/versioning_pb"
11
+ require "validate/validate_pb"
12
+
13
+
14
+ descriptor_data = "\n&envoy/type/tracing/v3/custom_tag.proto\x12\x15\x65nvoy.type.tracing.v3\x1a%envoy/type/metadata/v3/metadata.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xe0\x06\n\tCustomTag\x12\x14\n\x03tag\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12;\n\x07literal\x18\x02 \x01(\x0b\x32(.envoy.type.tracing.v3.CustomTag.LiteralH\x00\x12\x43\n\x0b\x65nvironment\x18\x03 \x01(\x0b\x32,.envoy.type.tracing.v3.CustomTag.EnvironmentH\x00\x12\x41\n\x0erequest_header\x18\x04 \x01(\x0b\x32\'.envoy.type.tracing.v3.CustomTag.HeaderH\x00\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32).envoy.type.tracing.v3.CustomTag.MetadataH\x00\x12\x0f\n\x05value\x18\x06 \x01(\tH\x00\x1aQ\n\x07Literal\x12\x16\n\x05value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:.\x9a\xc5\x88\x1e)\n\'envoy.type.tracing.v2.CustomTag.Literal\x1ao\n\x0b\x45nvironment\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x02 \x01(\t:2\x9a\xc5\x88\x1e-\n+envoy.type.tracing.v2.CustomTag.Environment\x1ak\n\x06Header\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x15\n\rdefault_value\x18\x02 \x01(\t:-\x9a\xc5\x88\x1e(\n&envoy.type.tracing.v2.CustomTag.Header\x1a\xc1\x01\n\x08Metadata\x12\x32\n\x04kind\x18\x01 \x01(\x0b\x32$.envoy.type.metadata.v3.MetadataKind\x12\x39\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKey\x12\x15\n\rdefault_value\x18\x03 \x01(\t:/\x9a\xc5\x88\x1e*\n(envoy.type.tracing.v2.CustomTag.Metadata:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.type.tracing.v2.CustomTagB\x0b\n\x04type\x12\x03\xf8\x42\x01\x42\x87\x01\n#io.envoyproxy.envoy.type.tracing.v3B\x0e\x43ustomTagProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/tracing/v3;tracingv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
15
+
16
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
+ pool.add_serialized_file(descriptor_data)
18
+
19
+ module Envoy
20
+ module Type
21
+ module Tracing
22
+ module V3
23
+ CustomTag = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag").msgclass
24
+ CustomTag::Literal = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Literal").msgclass
25
+ CustomTag::Environment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Environment").msgclass
26
+ CustomTag::Header = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Header").msgclass
27
+ CustomTag::Metadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Metadata").msgclass
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: xds/data/orca/v3/orca_load_report.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "validate/validate_pb"
9
+
10
+
11
+ descriptor_data = "\n\'xds/data/orca/v3/orca_load_report.proto\x12\x10xds.data.orca.v3\x1a\x17validate/validate.proto\"\x89\x05\n\x0eOrcaLoadReport\x12\'\n\x0f\x63pu_utilization\x18\x01 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x30\n\x0fmem_utilization\x18\x02 \x01(\x01\x42\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0f\n\x03rps\x18\x03 \x01(\x04\x42\x02\x18\x01\x12G\n\x0crequest_cost\x18\x04 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.RequestCostEntry\x12\x64\n\x0butilization\x18\x05 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.UtilizationEntryB\x1c\xfa\x42\x19\x9a\x01\x16*\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12&\n\x0erps_fractional\x18\x06 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1b\n\x03\x65ps\x18\x07 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12I\n\rnamed_metrics\x18\x08 \x03(\x0b\x32\x32.xds.data.orca.v3.OrcaLoadReport.NamedMetricsEntry\x12/\n\x17\x61pplication_utilization\x18\t \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x32\n\x10RequestCostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x32\n\x10UtilizationEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x33\n\x11NamedMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x42]\n\x1b\x63om.github.xds.data.orca.v3B\x13OrcaLoadReportProtoP\x01Z\'github.com/cncf/xds/go/xds/data/orca/v3b\x06proto3"
12
+
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
+ pool.add_serialized_file(descriptor_data)
15
+
16
+ module Xds
17
+ module Data
18
+ module Orca
19
+ module V3
20
+ OrcaLoadReport = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("xds.data.orca.v3.OrcaLoadReport").msgclass
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "protocol/grpc/interface"
7
+ require "xds/service/orca/v3/orca_pb"
8
+
9
+ module Xds
10
+ module Service
11
+ module Orca
12
+ module V3
13
+ # Interface definition for the out-of-band ORCA load reporting service.
14
+ class OpenRcaService < Protocol::GRPC::Interface
15
+ rpc :StreamCoreMetrics,
16
+ request_class: OrcaLoadReportRequest,
17
+ response_class: Xds::Data::Orca::V3::OrcaLoadReport,
18
+ streaming: :server_streaming
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: xds/service/orca/v3/orca.proto
5
+
6
+ require "google/protobuf"
7
+
8
+ require "xds/data/orca/v3/orca_load_report_pb"
9
+ require "google/protobuf/duration_pb"
10
+
11
+
12
+ descriptor_data = "\n\x1exds/service/orca/v3/orca.proto\x12\x13xds.service.orca.v3\x1a\'xds/data/orca/v3/orca_load_report.proto\x1a\x1egoogle/protobuf/duration.proto\"g\n\x15OrcaLoadReportRequest\x12\x32\n\x0freport_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12request_cost_names\x18\x02 \x03(\t2u\n\x0eOpenRcaService\x12\x63\n\x11StreamCoreMetrics\x12*.xds.service.orca.v3.OrcaLoadReportRequest\x1a .xds.data.orca.v3.OrcaLoadReport0\x01\x42Y\n\x1e\x63om.github.xds.service.orca.v3B\tOrcaProtoP\x01Z*github.com/cncf/xds/go/xds/service/orca/v3b\x06proto3"
13
+
14
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
+ pool.add_serialized_file(descriptor_data)
16
+
17
+ module Xds
18
+ module Service
19
+ module Orca
20
+ module V3
21
+ OrcaLoadReportRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("xds.service.orca.v3.OrcaLoadReportRequest").msgclass
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,113 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.common.mutation_rules.v3;
4
+
5
+ import "envoy/config/core/v3/base.proto";
6
+ import "envoy/type/matcher/v3/regex.proto";
7
+ import "envoy/type/matcher/v3/string.proto";
8
+
9
+ import "google/protobuf/wrappers.proto";
10
+
11
+ import "udpa/annotations/status.proto";
12
+ import "validate/validate.proto";
13
+
14
+ option java_package = "io.envoyproxy.envoy.config.common.mutation_rules.v3";
15
+ option java_outer_classname = "MutationRulesProto";
16
+ option java_multiple_files = true;
17
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3;mutation_rulesv3";
18
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
19
+
20
+ // [#protodoc-title: Header mutation rules]
21
+
22
+ // The HeaderMutationRules structure specifies what headers may be
23
+ // manipulated by a processing filter. This set of rules makes it
24
+ // possible to control which modifications a filter may make.
25
+ //
26
+ // By default, an external processing server may add, modify, or remove
27
+ // any header except for an "Envoy internal" header (which is typically
28
+ // denoted by an x-envoy prefix) or specific headers that may affect
29
+ // further filter processing:
30
+ //
31
+ // * ``host``
32
+ // * ``:authority``
33
+ // * ``:scheme``
34
+ // * ``:method``
35
+ //
36
+ // Every attempt to add, change, append, or remove a header will be
37
+ // tested against the rules here. Disallowed header mutations will be
38
+ // ignored unless ``disallow_is_error`` is set to true.
39
+ //
40
+ // Attempts to remove headers are further constrained -- regardless of the
41
+ // settings, system-defined headers (that start with ``:``) and the ``host``
42
+ // header may never be removed.
43
+ //
44
+ // In addition, a counter will be incremented whenever a mutation is
45
+ // rejected. In the ext_proc filter, that counter is named
46
+ // ``rejected_header_mutations``.
47
+ // [#next-free-field: 8]
48
+ message HeaderMutationRules {
49
+ // By default, certain headers that could affect processing of subsequent
50
+ // filters or request routing cannot be modified. These headers are
51
+ // ``host``, ``:authority``, ``:scheme``, and ``:method``. Setting this parameter
52
+ // to true allows these headers to be modified as well.
53
+ google.protobuf.BoolValue allow_all_routing = 1;
54
+
55
+ // If true, allow modification of envoy internal headers. By default, these
56
+ // start with ``x-envoy`` but this may be overridden in the ``Bootstrap``
57
+ // configuration using the
58
+ // :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
59
+ // field. Default is false.
60
+ google.protobuf.BoolValue allow_envoy = 2;
61
+
62
+ // If true, prevent modification of any system header, defined as a header
63
+ // that starts with a ``:`` character, regardless of any other settings.
64
+ // A processing server may still override the ``:status`` of an HTTP response
65
+ // using an ``ImmediateResponse`` message. Default is false.
66
+ google.protobuf.BoolValue disallow_system = 3;
67
+
68
+ // If true, prevent modifications of all header values, regardless of any
69
+ // other settings. A processing server may still override the ``:status``
70
+ // of an HTTP response using an ``ImmediateResponse`` message. Default is false.
71
+ google.protobuf.BoolValue disallow_all = 4;
72
+
73
+ // If set, specifically allow any header that matches this regular
74
+ // expression. This overrides all other settings except for
75
+ // ``disallow_expression``.
76
+ type.matcher.v3.RegexMatcher allow_expression = 5;
77
+
78
+ // If set, specifically disallow any header that matches this regular
79
+ // expression regardless of any other settings.
80
+ type.matcher.v3.RegexMatcher disallow_expression = 6;
81
+
82
+ // If true, and if the rules in this list cause a header mutation to be
83
+ // disallowed, then the filter using this configuration will terminate the
84
+ // request with a 500 error. In addition, regardless of the setting of this
85
+ // parameter, any attempt to set, add, or modify a disallowed header will
86
+ // cause the ``rejected_header_mutations`` counter to be incremented.
87
+ // Default is false.
88
+ google.protobuf.BoolValue disallow_is_error = 7;
89
+ }
90
+
91
+ // The HeaderMutation structure specifies an action that may be taken on HTTP
92
+ // headers.
93
+ message HeaderMutation {
94
+ message RemoveOnMatch {
95
+ // A string matcher that will be applied to the header key. If the header key
96
+ // matches, the header will be removed.
97
+ type.matcher.v3.StringMatcher key_matcher = 1 [(validate.rules).message = {required: true}];
98
+ }
99
+
100
+ oneof action {
101
+ option (validate.required) = true;
102
+
103
+ // Remove the specified header if it exists.
104
+ string remove = 1
105
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
106
+
107
+ // Append new header by the specified HeaderValueOption.
108
+ core.v3.HeaderValueOption append = 2;
109
+
110
+ // Remove the header if the key matches the specified string matcher.
111
+ RemoveOnMatch remove_on_match = 3;
112
+ }
113
+ }
@@ -0,0 +1,96 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3;
4
+
5
+ import "envoy/extensions/load_balancing_policies/common/v3/common.proto";
6
+
7
+ import "google/protobuf/duration.proto";
8
+ import "google/protobuf/wrappers.proto";
9
+
10
+ import "udpa/annotations/status.proto";
11
+ import "validate/validate.proto";
12
+
13
+ option java_package = "io.envoyproxy.envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3";
14
+ option java_outer_classname = "ClientSideWeightedRoundRobinProto";
15
+ option java_multiple_files = true;
16
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3;client_side_weighted_round_robinv3";
17
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
18
+
19
+ // [#protodoc-title: Client-Side Weighted Round Robin Load Balancing Policy]
20
+ // [#extension: envoy.load_balancing_policies.client_side_weighted_round_robin]
21
+
22
+ // Configuration for the client_side_weighted_round_robin LB policy.
23
+ //
24
+ // This policy differs from the built-in ROUND_ROBIN policy in terms of
25
+ // how the endpoint weights are determined. In the ROUND_ROBIN policy,
26
+ // the endpoint weights are sent by the control plane via EDS. However,
27
+ // in this policy, the endpoint weights are instead determined via qps (queries
28
+ // per second), eps (errors per second), and utilization metrics sent by the
29
+ // endpoint using the Open Request Cost Aggregation (ORCA) protocol. Utilization
30
+ // is determined by using the ORCA application_utilization field, if set, or
31
+ // else falling back to the cpu_utilization field. All queries count toward qps,
32
+ // regardless of result. Only failed queries count toward eps. A config
33
+ // parameter error_utilization_penalty controls the penalty to adjust endpoint
34
+ // weights using eps and qps. The weight of a given endpoint is computed as:
35
+ // ``qps / (utilization + eps/qps * error_utilization_penalty)``.
36
+ //
37
+ // Note that Envoy will forward the ORCA response headers/trailers from the upstream
38
+ // cluster to the downstream client. This means that if the downstream client is also
39
+ // configured to use ``client_side_weighted_round_robin`` it will load balance against
40
+ // Envoy based on upstream weights. This can happen when Envoy is used as a reverse proxy.
41
+ // To avoid this issue you can configure the :ref:`header_mutation filter <envoy_v3_api_msg_extensions.filters.http.header_mutation.v3.HeaderMutation>` to remove
42
+ // the ORCA payload from the response headers/trailers.
43
+ //
44
+ // See the :ref:`load balancing architecture
45
+ // overview<arch_overview_load_balancing_types>` for more information.
46
+ //
47
+ // [#next-free-field: 10]
48
+ message ClientSideWeightedRoundRobin {
49
+ // Whether to enable out-of-band utilization reporting collection from
50
+ // the endpoints. By default, per-request utilization reporting is used.
51
+ google.protobuf.BoolValue enable_oob_load_report = 1;
52
+
53
+ // Load reporting interval to request from the server. Note that the
54
+ // server may not provide reports as frequently as the client requests.
55
+ // Used only when enable_oob_load_report is true. Default is 10 seconds.
56
+ google.protobuf.Duration oob_reporting_period = 2;
57
+
58
+ // A given endpoint must report load metrics continuously for at least
59
+ // this long before the endpoint weight will be used. This avoids
60
+ // churn when the set of endpoint addresses changes. Takes effect
61
+ // both immediately after we establish a connection to an endpoint and
62
+ // after weight_expiration_period has caused us to stop using the most
63
+ // recent load metrics. Default is 10 seconds.
64
+ google.protobuf.Duration blackout_period = 3;
65
+
66
+ // If a given endpoint has not reported load metrics in this long,
67
+ // then we stop using the reported weight. This ensures that we do
68
+ // not continue to use very stale weights. Once we stop using a stale
69
+ // value, if we later start seeing fresh reports again, the
70
+ // blackout_period applies. Defaults to 3 minutes.
71
+ google.protobuf.Duration weight_expiration_period = 4;
72
+
73
+ // How often endpoint weights are recalculated. Values less than 100ms are
74
+ // capped at 100ms. Default is 1 second.
75
+ google.protobuf.Duration weight_update_period = 5;
76
+
77
+ // The multiplier used to adjust endpoint weights with the error rate
78
+ // calculated as eps/qps. Configuration is rejected if this value is negative.
79
+ // Default is 1.0.
80
+ google.protobuf.FloatValue error_utilization_penalty = 6 [(validate.rules).float = {gte: 0.0}];
81
+
82
+ // By default, endpoint weight is computed based on the :ref:`application_utilization <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.application_utilization>` field reported by the endpoint.
83
+ // If that field is not set, then utilization will instead be computed by taking the max of the values of the metrics specified here.
84
+ // For map fields in the ORCA proto, the string will be of the form ``<map_field_name>.<map_key>``. For example, the string ``named_metrics.foo`` will mean to look for the key ``foo`` in the ORCA :ref:`named_metrics <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.named_metrics>` field.
85
+ // If none of the specified metrics are present in the load report, then :ref:`cpu_utilization <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.cpu_utilization>` is used instead.
86
+ repeated string metric_names_for_computing_utilization = 7;
87
+
88
+ // Configuration for slow start mode.
89
+ // If this configuration is not set, slow start will not be not enabled.
90
+ common.v3.SlowStartConfig slow_start_config = 8;
91
+
92
+ // Optional overrides for the OOB reporting connection (alternative port,
93
+ // ``:authority``, transport socket selection). Honored only when
94
+ // ``enable_oob_load_report`` is true.
95
+ common.v3.OrcaOobReportingConfig oob_reporting_config = 9;
96
+ }