xds: apply node identifier optimization (#7876)

Omit the node identifier from subsequent discovery requests on the same stream.
Restricted to non-incremental xDS for tractability.

Risk Level: low, affects xDS protocol but guarded by an option
Testing: Unit/integration tests are updated
Docs Changes: xDS spec clarification
Release Notes: omit the node identifier from subsequent discovery requests

Fixes: #7860

Signed-off-by: Kuat Yessenov <kuat@google.com>

Mirrored from https://github.com/envoyproxy/envoy @ 8e07e8297d7d5e68cf6d6d7e49ba98d2500cdef7
pull/620/head
data-plane-api(CircleCI) 5 years ago
parent 8302dc52c4
commit 88cc388b31
  1. 3
      envoy/api/v2/core/config_source.proto
  2. 7
      xds_protocol.rst

@ -65,6 +65,9 @@ message ApiConfigSource {
// For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
// rate limited.
RateLimitSettings rate_limit_settings = 6;
// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
bool set_node_on_first_message_only = 7;
}
// Aggregated Discovery Service (ADS) options. This is currently empty, but when

@ -135,6 +135,13 @@ versioning across resource types. When ADS is not used, even each
resource of a given resource type may have a distinct version, since the
Envoy API allows distinct EDS/RDS resources to point at different :ref:`ConfigSources <envoy_api_msg_core.ConfigSource>`.
Only the first request on a stream is guaranteed to carry the node identifier.
The subsequent discovery requests on the same stream may carry an empty node
identifier. This holds true regardless of the acceptance of the discovery
responses on the same stream. The node identifier should always be identical if
present more than once on the stream. It is sufficient to only check the first
message for the node identifier as a result.
.. _xds_protocol_resource_update:
Resource Update

Loading…
Cancel
Save