Search code examples
envoyproxy

Does Envoy's incremental xDS variant only provide performance benefits for LDS and CDS?


Incremental xDS is a variant of xDS where updates only contain resources added/changed/removed.

As far as I understand, for resource types other than Listeners and Clusters, delivery of changes is incremental already in the SotW variant and deletion is indicated by a lack of a reference from parent resources.

Does this mean that the benefits of incremental xDS only apply to the LDS and CDS APIs?


Solution

  • You are correct in saying that Incremental is designed to perform Deltas on current resource snapshots within the Envoy management server.

    LDS and CDS obviously receive benefits from incremental, but the protocol is a bit more nuanced than you think. The other resource xDS servers DO show performance benefits as the subscription model is quite a bit different than SOTW. Some functionality did carry over into incremental xDS, but quite a bit changed internally. We are looking to add performance benchmarks inside of go-control-plane once this PR goes in: https://github.com/envoyproxy/go-control-plane/pull/387.

    SOTW xDS will still send all resources that envoy requests regardless. Incremental operates on a diffing mechanism that will only send changes to clients that the server believes are needed. I would recommend reading through the merged control plane code for incremental to see how it works under the hood. If you have any more questions feel free to reach out to me in the envoy slack!

    I would be happy to come back and report real metrics in a test environment once that code merges upstream :)