Skip to content

Listener-scoped ClientTrafficPolicy settings are silently dropped when multiple listeners share an address:port #9652

Description

@HusseinKabbout

Follow up issue from: #9315 (comment)

Description:

When multiple Gateway listeners share an address:port, they collapse into a
single xDS Listener with one filter chain per section. ClientTrafficPolicy
fields that map to Listener-scoped Envoy config have only one value available
for the whole socket:

  • ConnectionInspectionTimeout -> listener_filters_timeout
  • Connection.BufferLimit -> per_connection_buffer_limit_bytes
  • TCPKeepalive -> tcp_keepalive
  • EnableProxyProtocol -> proxy protocol listener filter

Since CTP is tracked one-per-section, both policies are Accepted, the
first-processed value wins for the entire socket, and the other is dropped with
no status condition, warning, or log line.

The existing port-overlap check skips TLS listeners, assuming each gets its own
filter chain, which is true for filter-chain-scoped settings, but not listener-scoped ones.
See the existing TODO in internal/xds/translator/translator.go.

Expected: a cross-listener consistency check that rejects conflicting
listener-scoped values across sections sharing an address:port, surfacing the
conflict via status rather than resolving it silently.

Repro steps:

  1. Gateway with two HTTPS listeners on :443 (different hostnames, own certs).
  2. One ClientTrafficPolicy per section with differing
    Connection.BufferLimit values (e.g. 29Mi and 300Mi).
  3. Both policies report Accepted=True.
  4. envoy config_dump shows a single per_connection_buffer_limit_bytes on :443 --> one
    value was dropped.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions