12 KiB
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:
|
A27 | v1.30.0 | v1.30.0 | v1.30.0 | v1.2.0 |
Load Balancing:
|
A27 | v1.30.0 | v1.30.0 | v1.30.0 | v1.2.0 |
Request matching based on:
|
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:
|
A31 | v1.37.1 | v1.37.1 | v1.37.0 | v1.4.0 |
Circuit Breaking:
|
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:
|
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:
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:
|
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):
|
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:
|
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 | |||
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 |