Well Known Filter State Objects

The following list of filter state objects are consumed by Envoy extensions:

Filter state key

Purpose

envoy.tcp_proxy.cluster

TCP proxy dynamic cluster name selection
on a per-connection basis.
Accepts a cluster name as a constructor.

envoy.network.transport_socket.original_dst_address

Original destination cluster dynamic address selection.
Accepts an IP:PORT string as a constructor.
Fields:
- ip: IP address value as a string;
- port: port value as a number.

envoy.filters.listener.original_dst.local_ip

destination address selection for the internal listeners.
Accepts an IP:PORT string as a constructor.
Fields:
- ip: IP address value as a string;
- port: port value as a number.

envoy.filters.listener.original_dst.remote_ip

source address selection for the internal listeners.
Accepts an IP:PORT string as a constructor.
Fields:
- ip: IP address value as a string;
- port: port value as a number.

envoy.upstream.dynamic_host

upstream host override on a per-connection basis.
Accepts a host string as a constructor.

envoy.upstream.dynamic_port

upstream port override on a per-connection basis.
Accepts a port number string as a constructor.

The filter state object fields can be used in the format strings. For example, the following format string references the port number in the original destination cluster filter state object:

%FILTER_STATE(envoy.network.transport_socket.original_dst_address:FIELD:port)%