Envoy · Schema

Envoy Listener

A listener configuration defines a network address and port where Envoy accepts connections, along with filter chains that process those connections through a pipeline of network and HTTP filters.

Cloud-NativeLoad BalancingProxyService Mesh

Properties

Name Type Description
name string Unique name for the listener.
address object The address the listener listens on for new connections.
filter_chains array Filter chains to process connections received by the listener.
listener_filters array Filters applied at the listener level before filter chain matching.
traffic_direction string Specifies the intended direction of traffic for the listener.
per_connection_buffer_limit_bytes integer Soft limit on read and write buffer size per connection.
bind_to_port boolean Whether the listener should bind to the port. Used for virtual listeners.
enable_reuse_port boolean Whether to use SO_REUSEPORT for the listener socket.
tcp_backlog_size integer The maximum length of the TCP pending connections queue.
transparent boolean Whether the listener should use transparent mode.
freebind boolean Whether to set IP_FREEBIND socket option.
access_log array Access log configuration for the listener.
connection_balance_config object Balances connections across worker threads.
metadata object Metadata for the listener.
View JSON Schema on GitHub

JSON Schema

envoy-listener.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.envoyproxy.io/schemas/listener",
  "title": "Envoy Listener",
  "description": "A listener configuration defines a network address and port where Envoy accepts connections, along with filter chains that process those connections through a pipeline of network and HTTP filters.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Unique name for the listener."
    },
    "address": {
      "type": "object",
      "description": "The address the listener listens on for new connections.",
      "properties": {
        "socket_address": {
          "type": "object",
          "properties": {
            "protocol": {
              "type": "string",
              "enum": ["TCP", "UDP"],
              "default": "TCP"
            },
            "address": {
              "type": "string",
              "description": "IP address or hostname to bind to."
            },
            "port_value": {
              "type": "integer",
              "description": "Port number to bind to.",
              "minimum": 0,
              "maximum": 65535
            }
          },
          "required": ["address", "port_value"]
        },
        "pipe": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Unix domain socket path."
            },
            "mode": {
              "type": "integer"
            }
          }
        }
      }
    },
    "filter_chains": {
      "type": "array",
      "description": "Filter chains to process connections received by the listener.",
      "items": {
        "type": "object",
        "properties": {
          "filter_chain_match": {
            "type": "object",
            "description": "Match criteria for selecting this filter chain.",
            "properties": {
              "destination_port": {
                "type": "integer"
              },
              "prefix_ranges": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "address_prefix": { "type": "string" },
                    "prefix_len": { "type": "integer" }
                  }
                }
              },
              "server_names": {
                "type": "array",
                "description": "SNI domains to match.",
                "items": { "type": "string" }
              },
              "transport_protocol": {
                "type": "string",
                "description": "Transport protocol to match (e.g., 'tls', 'raw_buffer')."
              },
              "application_protocols": {
                "type": "array",
                "description": "ALPN protocols to match.",
                "items": { "type": "string" }
              }
            }
          },
          "filters": {
            "type": "array",
            "description": "Network filters in the chain.",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the filter (e.g., 'envoy.filters.network.http_connection_manager')."
                },
                "typed_config": {
                  "type": "object",
                  "description": "Filter-specific typed configuration."
                }
              },
              "required": ["name"]
            }
          },
          "transport_socket": {
            "type": "object",
            "description": "Transport socket for this filter chain (e.g., TLS).",
            "properties": {
              "name": {
                "type": "string"
              },
              "typed_config": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "listener_filters": {
      "type": "array",
      "description": "Filters applied at the listener level before filter chain matching.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the listener filter (e.g., 'envoy.filters.listener.tls_inspector')."
          },
          "typed_config": {
            "type": "object"
          }
        },
        "required": ["name"]
      }
    },
    "traffic_direction": {
      "type": "string",
      "description": "Specifies the intended direction of traffic for the listener.",
      "enum": ["UNSPECIFIED", "INBOUND", "OUTBOUND"]
    },
    "per_connection_buffer_limit_bytes": {
      "type": "integer",
      "description": "Soft limit on read and write buffer size per connection."
    },
    "bind_to_port": {
      "type": "boolean",
      "description": "Whether the listener should bind to the port. Used for virtual listeners.",
      "default": true
    },
    "enable_reuse_port": {
      "type": "boolean",
      "description": "Whether to use SO_REUSEPORT for the listener socket."
    },
    "tcp_backlog_size": {
      "type": "integer",
      "description": "The maximum length of the TCP pending connections queue."
    },
    "transparent": {
      "type": "boolean",
      "description": "Whether the listener should use transparent mode."
    },
    "freebind": {
      "type": "boolean",
      "description": "Whether to set IP_FREEBIND socket option."
    },
    "access_log": {
      "type": "array",
      "description": "Access log configuration for the listener.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "typed_config": {
            "type": "object"
          },
          "filter": {
            "type": "object"
          }
        }
      }
    },
    "connection_balance_config": {
      "type": "object",
      "description": "Balances connections across worker threads.",
      "properties": {
        "exact_balance": {
          "type": "object"
        }
      }
    },
    "metadata": {
      "type": "object",
      "description": "Metadata for the listener.",
      "additionalProperties": true
    }
  },
  "required": ["name", "address", "filter_chains"]
}