Skip to content

Terminal network filter that forwards the raw byte stream to an upstream cluster.

AttachmentType URL (@type)Per-route overrideBuild feature
Filter chain (filters, terminal)type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxyNot applicableNone

What it does

The TCP proxy forwards the connection's bytes verbatim to an upstream cluster — no HTTP parsing, no request-level filters. Use it for any non-HTTP protocol, or for TLS passthrough where the filter chain is selected by SNI and the encrypted stream is relayed untouched. Like the HTTP connection manager, it is a terminal filter: exactly one ends each filter chain.

Minimal configuration

The fragment sits under filter_chains[].filters of a listener:

- name: tcp
  typed_config:
    "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
    cluster: backend

Fields

FieldTypeRequiredDefaultDescription
cluster / weighted_clustersoneofYes—Target cluster, or a weighted split (see below).
stat_prefixstringNo—Accepted for Envoy compatibility but ignored; Arion logs a warning.
access_loglistNoemptyConnection access loggers; see access logs.

All other Envoy TCP proxy fields — idle timeouts, max_connect_attempts, hash policies, tunneling — are unsupported, and a configuration that sets them is refused at startup.

Weighted clusters

Traffic can be split across clusters by weight; each entry needs a name and a weight greater than zero:

weighted_clusters:
  clusters:
    - name: backend-v1
      weight: 90
    - name: backend-v2
      weight: 10

Ordering and interactions

The TCP proxy runs after network RBAC, rate limit and connection limit filters have admitted the connection; declaring any of them after the TCP proxy in the same chain is a startup error. When the listener has a TLS inspector, filter_chain_match.server_names routes different SNIs to different TCP proxy chains — a pattern the Route TCP at L4 guide extends in its production notes.

Continue

Start typing to search the site.

↑ ↓ to move Enter to open Esc to close