Skip to content
Guides 7 Connection Type: 1 views

Envoy Proxy

Understand Envoy Proxy's key features and benefits as a modern proxy for microservices, enhancing performance and reliability.

Envoy Proxy is an open-source, high-performance edge and service proxy designed for cloud-native applications, acting as a universal data plane for microservices architectures. It abstracts network complexities, providing advanced traffic management, observability, and security capabilities essential for distributed systems.

Envoy functions as a transparent proxy for all network traffic between services, allowing developers and operators to focus on application logic rather than network concerns. Its architecture is built for modern microservices deployments, offering features that traditional proxies often lack or implement less efficiently.

Core Architectural Principles

Envoy's design prioritizes performance, extensibility, and dynamic configuration. It operates as a single process, multi-threaded server, leveraging event-driven I/O to handle a high volume of concurrent connections and requests efficiently.

L3/L4 Filter Architecture

Envoy employs a pluggable filter chain architecture at both network (L3/L4) and application (L7) layers. This allows for highly customizable processing of network traffic.
* Network Filters: Operate on raw byte streams. Examples include TCP proxy, TLS termination, and rate limiting at the connection level.
* HTTP Filters: Operate on HTTP requests and responses. Examples include Gzip compression, request ID injection, JWT authentication, and advanced routing.

This modularity enables sophisticated policy enforcement and traffic manipulation at various stages of the request lifecycle.

Key Features for Microservices

HTTP/2 and gRPC Support

Envoy provides first-class support for HTTP/2 and gRPC, essential protocols in modern microservices. It can bridge HTTP/1.1 clients to HTTP/2 services, terminate HTTP/2 connections, and facilitate gRPC proxying, including advanced features like gRPC-aware load balancing and routing.

Advanced Load Balancing

Envoy offers a suite of sophisticated load balancing algorithms beyond simple round-robin:
* Least Request: Routes to the backend with the fewest active requests.
* Ring Hash: Consistent hashing for better cache utilization and sticky sessions.
* Maglev (Power of Two Choices): Picks two random hosts and selects the one with fewer active requests, balancing simplicity with near-optimal distribution.
* Random: For simple, unbiased distribution.
* Original Destination: Routes to the intended destination IP without service discovery.

It also supports automatic retries, circuit breaking, outlier detection, and health checking to ensure traffic is only sent to healthy instances, improving resilience.

Dynamic Configuration (xDS API)

A cornerstone of Envoy's cloud-native design is its dynamic configuration capabilities through the xDS (Discovery Service) API. Instead of static configuration files, Envoy can receive updates for various resources dynamically:
* Listener Discovery Service (LDS): Listeners (ports Envoy binds to).
* Route Discovery Service (RDS): HTTP routing rules.
* Cluster Discovery Service (CDS): Upstream clusters (groups of backend services).
* Endpoint Discovery Service (EDS): Endpoints (individual instances) within clusters.
* Secret Discovery Service (SDS): TLS certificates and private keys.
* Runtime Discovery Service (RTDS): Dynamic runtime configuration values.

This allows for zero-downtime configuration changes, enabling continuous deployment and integration with service mesh control planes (e.g., Istio, App Mesh) that manage these configurations.

Observability

Envoy is designed with observability as a first-class citizen, providing deep insights into network traffic:
* Detailed Statistics: Emits a large number of statistics (over 100 per upstream cluster) covering connections, requests, errors, latency, and more, which can be scraped by Prometheus or similar systems.
* Distributed Tracing: Supports popular tracing systems like Jaeger, Zipkin, and AWS X-Ray, propagating trace contexts (e.g., B3, W3C Trace Context) and generating spans for each hop.
* Access Logging: Comprehensive, customizable access logs detailing every request, including headers, response codes, and timing information.

These features are crucial for debugging, performance analysis, and monitoring distributed microservices.

Security Features

Envoy provides robust security features, often offloading these concerns from application code:
* TLS Termination and Origination: Handles TLS encryption/decryption, allowing services to communicate over plain text internally while maintaining secure external communication.
* Mutual TLS (mTLS): Facilitates secure, authenticated communication between services within a mesh by validating client certificates.
* Rate Limiting: Enforces request rate limits to protect services from overload or abuse.
* Authentication and Authorization: Integrates with external authorization services (e.g., OPA) through its External Authorization filter, enabling fine-grained access control.

Envoy's Role in Microservices Architectures

Sidecar Proxy

The most common deployment pattern for Envoy in a microservices environment is as a sidecar proxy. In this model, each service instance runs an Envoy proxy alongside it, typically within the same pod in Kubernetes. All inbound and outbound network traffic for the service is transparently intercepted and managed by the sidecar.

This approach offers several benefits:
* Network Abstraction: Application developers write services that communicate with localhost, and the Envoy sidecar handles routing, retries, and other network concerns.
* Polyglot Support: Enables consistent network policies and features across services written in different languages and frameworks.
* Isolation: Network concerns are isolated from business logic, simplifying development and deployment.

Service Mesh Data Plane

Envoy serves as the de facto data plane for many popular service mesh implementations (e.g., Istio, Linkerd, AWS App Mesh). In a service mesh, a control plane manages and configures a fleet of Envoy proxies (the data plane). The control plane uses the xDS API to dynamically update the configuration of all Envoys in the mesh, enforcing traffic policies, security, and observability across the entire microservices ecosystem.

Edge Proxy / API Gateway

Envoy can also be deployed at the edge of a network as an API gateway or reverse proxy. In this role, it handles ingress traffic, performs authentication, rate limiting, TLS termination, and routes requests to appropriate backend services within the microservices architecture. Its advanced L7 routing capabilities make it suitable for complex edge routing requirements.

Configuration Example

A basic Envoy configuration defines listeners, filter chains, and clusters. This example shows a listener on port 10000 that proxies HTTP requests to an upstream service cluster named web_service.

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: web_service
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
  - name: web_service
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    # Comment out the following line to test on v6.
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: web_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: webserver.example.com # Replace with your actual service hostname/IP
                port_value: 80

Comparison with Other Proxies

Feature Envoy Proxy Nginx HAProxy
Primary Use Case Service Mesh, Sidecar, API Gateway, Edge Web Server, Reverse Proxy, Load Balancer High-Performance L4 Load Balancer, L7
Architecture Event-driven, C++, highly modular filters Event-driven, C, module-based Event-driven, C, highly optimized
Dynamic Config Full xDS API for all resources Reloads config (disruptive) or commercial API Runtime API for limited changes, config reload
HTTP/2 & gRPC First-class support, advanced features Good support Good support
Observability Extensive metrics, tracing, access logs Basic metrics, limited tracing Detailed stats, basic logging
Load Balancing Advanced L7 (consistent hash, Maglev), L4 Basic L7 (round-robin, least conn), L4 Advanced L4, some L7 (least conn, source)
Service Discovery Integrated with xDS, DNS, static DNS, static, some commercial integrations DNS, static, some commercial integrations
Circuit Breaking Yes No (requires external logic) Yes
Outlier Detection Yes No (requires external logic) No (requires external logic)
Service Mesh Role Data Plane (primary choice) Not designed for this role Not designed for this role
Extensibility C++ filters, WASM extensions Lua scripting, C modules Lua scripting, C modules

Practical Considerations

Performance Tuning

Envoy is highly performant out of the box, but specific deployments may benefit from tuning. Key areas include:
* Thread Configuration: Adjusting the number of worker threads to match CPU cores.
* Buffer Management: Optimizing read/write buffer sizes.
* Connection Pool Sizing: Configuring max connections and requests per connection to upstream clusters.

Resource Consumption

While efficient, running an Envoy sidecar for every service instance increases overall resource consumption (CPU, memory). This trade-off is often acceptable for the operational benefits provided by a service mesh. Careful monitoring of resource usage is crucial in large deployments.

Debugging

Envoy provides an admin interface (typically on port 15000) that offers valuable debugging endpoints:
* /stats: Current statistics.
* /config_dump: Dumps the current active configuration.
* /clusters: Status of upstream clusters.
* /hot_restart: Initiates a graceful hot restart.

These endpoints are instrumental for troubleshooting configuration issues, monitoring health, and understanding traffic flow.

Auto-update: 04.03.2026
All Categories

Advantages of our proxies

25,000+ proxies from 120+ countries