Traffic Director limitations with proxyless gRPC applications

This document contains limitations that apply to Traffic Director with proxyless gRPC application. For information about quotas and limits, see the Quotas and limits page.

General limitations

  • You cannot configure backend services and routing rule maps with the gRPC protocol in the Google Cloud Console. The Cloud Console is read-only for these resources.

  • gRPC 1.30.0, with the most recent patch, or higher currently supports proxyless gRPC applications in the C++, Java, Go, Python, PHP, Ruby, and C# languages.

  • Proxyless gRPC supports endpoint discovery, routing, load balancing, and load reporting.

    • For the minimum gRPC version required to support some advanced traffic management features, see Traffic Director features.
    • If you need unsupported advanced traffic management features configure your gRPC clients to use proxyless gRPC services only for a subset of services. You can use sidecar proxies to communicate with servers that require functionality that is not yet supported by proxyless gRPC services.
  • In gRPC version 1.30.0, only round-robin load balancing is supported. Other load balancing algorithms are not supported.

    • Traffic Director provides a prioritized, weighted list of localities (one instance group or one NEG) to the gRPC client. Traffic Director calculates this based on the closest available zone, its capacity and the balancing mode of the backend service. For a particular request, the gRPC client picks one or more localities based on the priority and weight and does round robin load balancing to the backends within those localities.
  • Failover: The failover from one zone (locality) to another starts when the current zone capacity falls below 50%. This threshold is not configurable.

  • In some cases, the configuration commands related to a target gRPC proxy and forwarding rule referencing a target gRPC proxy might take up to a minute.

URL map limitations

The following URL map traffic management features are supported with proxyless gRPC services:

  • hostrules
  • Features supported in pathMatcher of hostRules
    • name
    • description
    • defaultService
    • defaultRouteAction
    • weightedBackendServices
      • backendService
      • weight
    • pathRules
    • service
    • routeAction
      • weightedBackendServices
        • backendService
        • weight
    • paths
    • routeRules
    • priority
    • description
    • matchRules
      • prefixMatch
      • fullPathMatch
      • regexMatch
      • headerMatches (all fields)
    • service
    • routeAction
      • weightedBackendServices
        • backendService
        • weight

The following URL map limitations apply when you use proxyless gRPC services:

  • Wildcard characters in the host rules and default rules of a URL map, including the implicitly created * host rule of a URL map, are not supported. Such entries are skipped when host matching is done.

  • The following features are not supported:

    • ignoreCase and queryParameterMatches in routeRules
    • headerAction, urlRewrite, timeout, retryPolicy, requestMirrorPolicy, corsPolicy, faultInjectionPolicy and urlRedirect route actions.
    • The defaultService, defaultRouteAction, defaultUrlRedirect and headerAction of the URL map are not used by proxyless gRPC services. If a matching hostRule is not found when a proxyless gRPC client looks up a service name, Traffic Director returns a name lookup error instead of using the default service or action of the URL map.
    • headerAction in weightedBackendServices.
  • In URL map header match rules, only non-binary user-specified custom metadata and the content-type header are supported. The following transport-level headers cannot be used in header matching rules: :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout and grpc-trace-bin.

  • When you update a URL map host rule to change from one backend service to another, traffic might be dropped momentarily while the new configuration is pushed to the clients. To avoid this limitation, configure traffic splitting with weighted backend services. After this, slowly shift traffic from the old backend service to the new backend service.

Target gRPC proxy limitations

When a URL map is referenced by a target gRPC proxy, the following URL map features cannot be configured whether you are using sidecar proxy or a proxyless gRPC service. This is because these HTTP protocol-specific features do not apply to the gRPC protocol:

  • ignoreCase match rule
  • queryParameterMatches match rule
  • urlRewrite route action
  • urlRedirect route action
  • corsPolicy action

Backend service limitations

The following backend service features are not supported with proxyless gRPC services that are supported with sidecar proxy:

  • sessionAffinity
  • affinityCookieTtlSec
  • consistentHash
  • circuitBreakers
  • outlierDetection