Route discovery service (RDS)

{
  "cluster": "...",
  "route_config_name": "...",
  "refresh_delay_ms": "..."
}
cluster
(required, string) The name of an upstream cluster that hosts the route discovery service. The cluster must run a REST service that implements the RDS HTTP API. NOTE: This is the name of a statically defined cluster in the cluster manager configuration, not the full definition of a cluster as in the case of SDS and CDS.
route_config_name
(required, string) The name of the route configuration. This name will be passed to the RDS HTTP API. This allows an Envoy configuration with multiple HTTP listeners (and associated HTTP connection manager filters) to use different route configurations. By default, the maximum length of the name is limited to 60 characters. This limit can be increased by setting the --max-obj-name-len command line argument to the desired value.
refresh_delay_ms
(optional, integer) The delay, in milliseconds, between fetches to the RDS API. Envoy will add an additional random jitter to the delay that is between zero and refresh_delay_ms milliseconds. Thus the longest possible refresh delay is 2 * refresh_delay_ms. Default value is 30000ms (30 seconds).

REST API

GET /v1/routes/(string: route_config_name)/(string: service_cluster)/(string: service_node)

Asks the route discovery service to return the route configuration for a particular route_config_name, service_cluster, and service_node. route_config_name corresponds to the RDS configuration parameter above. service_cluster corresponds to the --service-cluster CLI option. service_node corresponds to the --service-node CLI option. Responses are a single JSON object that contains a route configuration as defined in the route configuration documentation.

A new route configuration will be gracefully swapped in such that existing requests are not affected. This means that when a request starts, it sees a consistent snapshot of the route configuration that does not change for the duration of the request. Thus, if an update changes a timeout for example, only new requests will use the updated timeout value.

As a performance optimization, Envoy hashes the route configuration it receives from the RDS API and will only perform a full reload if the hash value changes.

Attention

Route configurations that are loaded via RDS are not checked to see if referenced clusters are known to the cluster manager. The RDS API has been designed to work alongside the CDS API such that Envoy assumes eventually consistent updates. If a route references an unknown cluster a 404 response will be returned by the router filter.