package envoy.config.route.v3

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message ClusterSpecifierPlugin

route_components.proto:502

Configuration for a cluster specifier plugin.

Used in: RouteAction, RouteConfiguration

message CorsPolicy

route_components.proto:682

Cors policy configuration. .. attention:: This message has been deprecated. Please use :ref:`CorsPolicy in filter extension <envoy_v3_api_msg_extensions.filters.http.cors.v3.CorsPolicy>` as as alternative. [#next-free-field: 14]

Used in: RouteAction, VirtualHost

message Decorator

route_components.proto:1790

Used in: Route

message DirectResponseAction

route_components.proto:1768

Used in: Route

message FilterAction

route_components.proto:227

A filter-defined action type.

Used in: Route

message FilterConfig

route_components.proto:2546

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<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>`, :ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, or :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config<envoy_v3_api_field_config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config>` to add additional flags to the filter.

message HeaderMatcher

route_components.proto:2356

.. 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 <envoy_v3_api_field_config.route.v3.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name <envoy_v3_api_field_config.route.v3.HeaderMatcher.name>` header will match, regardless of the header's value. [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.] [#next-free-field: 15]

Used in: accesslog.v3.HeaderFilter, common.matcher.v3.HttpHeadersMatch, rbac.v3.Permission, rbac.v3.Principal, RateLimit.Action.HeaderValueMatch, RetryPolicy, RouteMatch, VirtualCluster, tap.v3.HttpHeadersMatch, extensions.filters.http.fault.v3.HTTPFault, extensions.filters.http.health_check.v3.HealthCheck, extensions.filters.http.oauth2.v3.OAuth2Config, extensions.filters.network.dubbo_proxy.v3.RouteMatch, extensions.filters.network.thrift_proxy.v3.RouteMatch

message HedgePolicy

route_components.proto:1630

HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.

Used in: RouteAction, VirtualHost

message InternalRedirectPolicy

route_components.proto:2505

HTTP Internal Redirect :ref:`architecture overview <arch_overview_internal_redirects>`. [#next-free-field: 6]

Used in: RouteAction

message NonForwardingAction

route_components.proto:1787

[#not-implemented-hide:]

Used in: Route

(message has no fields)

message QueryParameterMatcher

route_components.proto:2482

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]

Used in: RateLimit.Action.QueryParameterValueMatch, RouteMatch, extensions.filters.http.cache.v3.CacheConfig.KeyCreatorParams

message RateLimit

route_components.proto:1882

Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`. Also applies to Local rate limiting :ref:`using descriptors <config_http_filters_local_rate_limit_descriptors>`. [#next-free-field: 7]

Used in: RouteAction, VirtualHost, extensions.filters.http.local_ratelimit.v3.LocalRateLimit, extensions.filters.http.ratelimit.v3.RateLimitPerRoute, extensions.filters.network.thrift_proxy.v3.RouteAction

message RateLimit.Action

route_components.proto:1886

[#next-free-field: 13]

Used in: RateLimit

message RateLimit.Action.DestinationCluster

route_components.proto:1918

The following descriptor entry is appended to the descriptor: .. code-block:: cpp ("destination_cluster", "<routed target cluster>") Once a request matches against a route table rule, a routed cluster is determined by one of the following :ref:`route table configuration <envoy_v3_api_msg_config.route.v3.RouteConfiguration>` settings: * :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` indicates the upstream cluster to route to. * :ref:`weighted_clusters <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>` chooses a cluster randomly from a set of clusters with attributed weight. * :ref:`cluster_header <envoy_v3_api_field_config.route.v3.RouteAction.cluster_header>` indicates which header in the request contains the target cluster.

Used in: Action

(message has no fields)

message RateLimit.Action.DynamicMetaData

route_components.proto:2075

The following descriptor entry is appended when the :ref:`dynamic metadata <well_known_dynamic_metadata>` contains a key value: .. code-block:: cpp ("<descriptor_key>", "<value_queried_from_dynamic_metadata>") .. attention:: This action has been deprecated in favor of the :ref:`metadata <envoy_v3_api_msg_config.route.v3.RateLimit.Action.MetaData>` action

Used in: Action

message RateLimit.Action.GenericKey

route_components.proto:2025

The following descriptor entry is appended to the descriptor: .. code-block:: cpp ("generic_key", "<descriptor_value>")

Used in: Action

message RateLimit.Action.HeaderValueMatch

route_components.proto:2042

The following descriptor entry is appended to the descriptor: .. code-block:: cpp ("header_match", "<descriptor_value>")

Used in: Action

message RateLimit.Action.MaskedRemoteAddress

route_components.proto:2004

The following descriptor entry is appended to the descriptor and is populated using the masked address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`: .. code-block:: cpp ("masked_remote_address", "<masked address from x-forwarded-for>")

Used in: Action

message RateLimit.Action.MetaData

route_components.proto:2094

The following descriptor entry is appended when the metadata contains a key value: .. code-block:: cpp ("<descriptor_key>", "<value_queried_from_metadata>") [#next-free-field: 6]

Used in: Action

enum RateLimit.Action.MetaData.Source

route_components.proto:2095

Used in: MetaData

message RateLimit.Action.QueryParameterValueMatch

route_components.proto:2139

The following descriptor entry is appended to the descriptor: .. code-block:: cpp ("query_match", "<descriptor_value>")

Used in: Action

message RateLimit.Action.QueryParameters

route_components.proto:1963

The following descriptor entry is appended when a query parameter contains a key that matches the ``query_parameter_name``: .. code-block:: cpp ("<descriptor_key>", "<query_parameter_value_queried_from_query_parameter>")

Used in: Action

message RateLimit.Action.RemoteAddress

route_components.proto:1993

The following descriptor entry is appended to the descriptor and is populated using the trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`: .. code-block:: cpp ("remote_address", "<trusted address from x-forwarded-for>")

Used in: Action

(message has no fields)

message RateLimit.Action.RequestHeaders

route_components.proto:1929

The following descriptor entry is appended when a header contains a key that matches the ``header_name``: .. code-block:: cpp ("<descriptor_key>", "<header_value_queried_from_header>")

Used in: Action

message RateLimit.Action.SourceCluster

route_components.proto:1897

The following descriptor entry is appended to the descriptor: .. code-block:: cpp ("source_cluster", "<local service cluster>") <local service cluster> is derived from the :option:`--service-cluster` option.

Used in: Action

(message has no fields)

message RateLimit.HitsAddend

route_components.proto:2234

Used in: RateLimit

message RateLimit.Override

route_components.proto:2216

Used in: RateLimit

message RateLimit.Override.DynamicMetadata

route_components.proto:2218

Fetches the override from the dynamic metadata.

Used in: Override

message RedirectAction

route_components.proto:1662

[#next-free-field: 10]

Used in: Route, extensions.http.custom_response.redirect_policy.v3.RedirectPolicy

enum RedirectAction.RedirectResponseCode

route_components.proto:1665

Used in: RedirectAction

message RetryPolicy

route_components.proto:1406

HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`. [#next-free-field: 14]

Used in: RouteAction, VirtualHost

message RetryPolicy.RateLimitedRetryBackOff

route_components.proto:1522

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 <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_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.

Used in: RetryPolicy

message RetryPolicy.ResetHeader

route_components.proto:1466

Used in: RateLimitedRetryBackOff

enum RetryPolicy.ResetHeaderFormat

route_components.proto:1409

Used in: ResetHeader

message RetryPolicy.RetryBackOff

route_components.proto:1446

Used in: RetryPolicy

message RetryPolicy.RetryHostPredicate

route_components.proto:1430

Used in: RetryPolicy

message RetryPolicy.RetryPriority

route_components.proto:1414

Used in: RetryPolicy

message Route

route_components.proto:248

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 <envoy_v3_api_msg_config.route.v3.HeaderMatcher>`. [#next-free-field: 20]

Used in: RouteList, VirtualHost

message RouteAction

route_components.proto:742

[#next-free-field: 42]

Used in: Route

enum RouteAction.ClusterNotFoundResponseCode

route_components.proto:745

Used in: RouteAction

message RouteAction.HashPolicy

route_components.proto:838

Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer <arch_overview_load_balancing_types>`. [#next-free-field: 7]

Used in: RouteAction

message RouteAction.HashPolicy.ConnectionProperties

route_components.proto:904

Used in: HashPolicy

message RouteAction.HashPolicy.Cookie

route_components.proto:882

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.

Used in: HashPolicy

message RouteAction.HashPolicy.CookieAttribute

route_components.proto:857

CookieAttribute defines an API for adding additional attributes for a HTTP cookie.

Used in: Cookie

message RouteAction.HashPolicy.FilterState

route_components.proto:923

Used in: HashPolicy

message RouteAction.HashPolicy.Header

route_components.proto:842

Used in: HashPolicy

message RouteAction.HashPolicy.QueryParameter

route_components.proto:912

Used in: HashPolicy

enum RouteAction.InternalRedirectAction

route_components.proto:758

Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior. [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.]

Used in: RouteAction

message RouteAction.MaxStreamDuration

route_components.proto:1010

Used in: RouteAction

message RouteAction.RequestMirrorPolicy

route_components.proto:782

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``. This behavior can be disabled by setting ``disable_shadow_host_suffix_append`` to ``true``. .. 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: 7]

Used in: RouteAction, RouteConfiguration, VirtualHost

message RouteAction.UpgradeConfig

route_components.proto:980

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 <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.upgrade_configs>` but does not affect any custom filter chain specified there.

Used in: RouteAction

message RouteAction.UpgradeConfig.ConnectConfig

route_components.proto:986

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.

Used in: UpgradeConfig

message RouteConfiguration

route.proto:27

[#next-free-field: 18]

Used in: ScopedRouteConfiguration, extensions.filters.network.http_connection_manager.v3.HttpConnectionManager

message RouteList

route_components.proto:235

This can be used in route matcher :ref:`VirtualHost.matcher <envoy_v3_api_field_config.route.v3.VirtualHost.matcher>`. When the matcher matches, routes will be matched and run.

message RouteMatch

route_components.proto:515

[#next-free-field: 17]

Used in: Route, extensions.filters.http.jwt_authn.v3.RequirementRule

message RouteMatch.ConnectMatcher

route_components.proto:547

An extensible message for matching CONNECT or CONNECT-UDP requests.

Used in: RouteMatch

(message has no fields)

message RouteMatch.GrpcRouteMatchOptions

route_components.proto:518

Used in: RouteMatch

(message has no fields)

message RouteMatch.TlsContextMatchOptions

route_components.proto:523

Used in: RouteMatch

message ScopedRouteConfiguration

scoped_route.proto:84

Specifies a routing scope, which associates a :ref:`Key<envoy_v3_api_msg_config.route.v3.ScopedRouteConfiguration.Key>` to a :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. The :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` can be obtained dynamically via RDS (:ref:`route_configuration_name<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration_name>`) or specified inline (:ref:`route_configuration<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration>`). The HTTP connection manager builds up a table consisting of these Key to RouteConfiguration mappings, and looks up the RouteConfiguration to use per request according to the algorithm specified in the :ref:`scope_key_builder<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>` assigned to the HttpConnectionManager. For example, with the following configurations (in YAML): HttpConnectionManager config: .. code:: ... scoped_routes: name: foo-scoped-routes scope_key_builder: fragments: - header_value_extractor: name: X-Route-Selector element_separator: "," element: separator: = key: vip ScopedRouteConfiguration resources (specified statically via :ref:`scoped_route_configurations_list<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scoped_route_configurations_list>` or obtained dynamically via SRDS): .. code:: (1) name: route-scope1 route_configuration_name: route-config1 key: fragments: - string_key: 172.10.10.20 (2) name: route-scope2 route_configuration_name: route-config2 key: fragments: - string_key: 172.20.20.30 A request from a client such as: .. code:: GET / HTTP/1.1 Host: foo.com X-Route-Selector: vip=172.10.10.20 would result in the routing table defined by the ``route-config1`` RouteConfiguration being assigned to the HTTP request/stream. [#next-free-field: 6]

Used in: extensions.filters.network.http_connection_manager.v3.ScopedRouteConfigurationsList

message ScopedRouteConfiguration.Key

scoped_route.proto:93

Specifies a key which is matched against the output of the :ref:`scope_key_builder<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>` specified in the HttpConnectionManager. The matching is done per HTTP request and is dependent on the order of the fragments contained in the Key.

Used in: ScopedRouteConfiguration

message ScopedRouteConfiguration.Key.Fragment

scoped_route.proto:97

Used in: Key

message Tracing

route_components.proto:1807

Used in: Route

message Vhds

route.proto:160

Used in: RouteConfiguration

message VirtualCluster

route_components.proto:1861

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 <config_http_filters_router_vcluster_stats>`. .. 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.

Used in: VirtualHost

message VirtualHost

route_components.proto:45

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]

Used in: RouteConfiguration

enum VirtualHost.TlsRequirementType

route_components.proto:48

Used in: VirtualHost

message WeightedCluster

route_components.proto:368

Compared to the :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` field that specifies a single upstream cluster as the target of a request, the :ref:`weighted_clusters <envoy_v3_api_field_config.route.v3.RouteAction.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.

Used in: RouteAction, extensions.filters.network.dubbo_proxy.v3.RouteAction, extensions.filters.network.generic_proxy.action.v3.RouteAction

message WeightedCluster.ClusterWeight

route_components.proto:372

[#next-free-field: 13]

Used in: WeightedCluster