GRPC C++  1.66.0
xDS Features in gRPC

This document lists the xDS features supported in various gRPC language implementations and versions.

Note that a gRPC client will simply ignore the configuration of a feature it does not support. The gRPC client does not generate a log to indicate that some configuration was ignored. It is impractical to generate a log and keep it up-to-date because xDS has a large number of APIs that gRPC does not support and the APIs keep evolving too. In the case where an xDS field corresponding to a feature is supported but the value configured for that field is not supported, a gRPC client will NACK such a configuration. We recommend reading the first gRFC on xDS support in gRPC to understand the design philosophy.

Not all cluster load balancing policies are supported. A gRPC client will NACK the configuration that contains unsupported cluster load balancing policy. This will cause all cluster configurations to be rejected by the client because the xDS protocol currently requires rejecting all resources in a given response, rather than being able to reject only an individual resource from the response. Due to this limitation, you must ensure that all clients support the required cluster load balancing policy before configuring that policy for a service. For example, if you change the ROUND_ROBIN policy to RING_HASH, you must ensure that all the clients are upgraded to a version that supports RING_HASH.

The EDS policy will not support overprovisioning, which is different from Envoy. Envoy takes the overprovisioning into account in both locality-weighted load balancing and priority failover, but gRPC assumes that the xDS server will update it to redirect traffic when this kind of graceful failover is needed. gRPC will send the envoy.lb.does_not_support_overprovisioning client feature to the xDS server to tell the xDS server that it will not perform graceful failover; xDS server implementations may use this to decide whether to perform graceful failover themselves.

The EDS policy will not support per-endpoint stats; it will report only per-locality stats.

An lb_endpoint is ignored if the health_status is not HEALTHY or UNKNOWN. The optional load_balancing_weight is always ignored.

Initially, only google_default channel creds will be supported to authenticate with the xDS server.

The gRPC language implementations not listed in the table below do not support xDS features.

Features gRFCs C++, Python, Ruby, PHP Java Go Node
xDS Infrastructure in gRPC client channel:
  • LDS->RDS->CDS->EDS flow
  • ADS stream
A27 v1.30.0 v1.30.0 v1.30.0 v1.2.0
Load Balancing:
  • Virtual host domains matching
  • Only default path ("" or "/") matching
  • Priority-based weighted round-robin locality picking
  • Round-robin endpoint picking within locality
  • Cluster route action
  • Client-side Load reporting via LRS
A27 v1.30.0 v1.30.0 v1.30.0 v1.2.0
Request matching based on: Request routing to multiple clusters based on weights A28 v1.31.0 v1.31.0 v1.31.0 v1.3.0
Case insensitive prefix/full path matching: v1.34.0 v1.34.0 v1.34.0 v1.3.0
Support for xDS v3 APIs A30 v1.36.0 v1.36.0 v1.36.0 v1.4.0
Support for xDS v2 APIs A27 < v1.51.0 < v1.53.0 < v1.54.0 < v1.8.0
Maximum Stream Duration:
  • Only max_stream_duration is supported.
A31 v1.37.1 v1.37.1 v1.37.0 v1.4.0
Circuit Breaking:
  • Only max_requests is supported.
A32 v1.37.1 (N/A for PHP) v1.37.1 v1.37.0 v1.4.0
Fault Injection:
Only the following fields are supported:
  • delay
  • abort
  • max_active_faults
  • headers
A33 v1.37.1 v1.37.1 v1.37.0 v1.4.0
Client Status Discovery Service A40 v1.37.1 (C++)
v1.38.0 (Python)
v1.37.1 v1.37.0 v1.5.0
Aggregate Clusters and Logical DNS Clusters A37 v1.47.0 v1.39.0 v1.52.2 v1.9.0
Aggregate Cluster Behavior Fixes A75 v1.61.0
Ring hash load balancing policy:
Only the following policy specifiers are supported:
  • header
  • filter_state with key io.grpc.channel_id
Only XX_HASH function is supported.
A42 v1.40.0
(C++ and Python)
v1.40.1 1.41.0 v1.10.0
Retry:
Only the following fields are supported:
  • retry_on for the following conditions: cancelled, deadline-exceeded, internal, resource-exhausted, and unavailable.
  • num_retries
  • retry_back_off
A44 v1.40.0
(C++ and Python)
v1.40.1 1.41.0 v1.8.0
Security:
Uses certificate providers instead of SDS
A29 v1.41.0
(C++ and Python)
v1.41.0 1.41.0
Authorization (RBAC):
  • LOG action has no effect
  • CEL unsupported and rejected
A41 v1.51.0
(C++ and Python)
v1.42.0 1.42.0
Least Request LB Policy A48 v1.48.0
Outlier Detection:
Only the following detection types are supported:
  • Success Rate
  • Failure Percentage
A50 v1.51.0 v1.49.0 v1.50.0 v1.7.0
Ignore Resource Deletion A53 v1.48.0 v1.48.0 v1.55.0 v1.7.0
Custom Load Balancer Configuration A52 v1.55.0 v1.47.0 v1.56.0 v1.10.0
xDS Federation A47 v1.55.0 v1.55.0 v1.55.0
Client-Side Weighted Round Robin LB Policy A58 v1.55.0 v1.54.0 v1.56.0
Pick First A62 v1.58.0 v1.58.1 v1.56.0
StringMatcher for Header Matching A63 v1.56.0 v1.53.0 v1.56.0 v1.9.0
LRS Custom Metrics Support A64 v1.54.0 v1.57.0 v1.63.0
mTLS Credentials in xDS Bootstrap File A65 v1.65.0 v1.61.0
Stateful Session Affinity A55, A60, A75 v1.61.0
xDS Locality label for OpenTelemetry metrics A78 v1.63.0 (C++) v1.64.0