From 0624a096421b85ffe7dc8f398bb2618efb2a47e7 Mon Sep 17 00:00:00 2001 From: Rama Chavali Date: Sun, 10 Mar 2019 10:44:46 +0530 Subject: [PATCH 1/4] update xds docs with warming Signed-off-by: Rama Chavali --- api/XDS_PROTOCOL.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/api/XDS_PROTOCOL.md b/api/XDS_PROTOCOL.md index fe0362ef16f18..ca3a4676f3653 100644 --- a/api/XDS_PROTOCOL.md +++ b/api/XDS_PROTOCOL.md @@ -151,7 +151,9 @@ For EDS/RDS, the management server does not need to supply every requested resource and may also supply additional, unrequested resources. `resource_names` is only a hint. Envoy will silently ignore any superfluous resources. When a requested resource is missing in a RDS or EDS update, Envoy will retain the last -known value for this resource. The management server may be able to infer all +known value for this resource except in the case where the `Cluster` or `Listener` +is being warmed. See [Resource warming](#resource-warming) section below on the expectations +during warming. The management server may be able to infer all the required EDS/RDS resources from the `node` identification in the `DiscoveryRequest`, in which case this hint may be discarded. An empty EDS/RDS `DiscoveryResponse` is effectively a nop from the perspective of the respective @@ -209,6 +211,15 @@ multiple `DiscoveryRequests` at a version until a new version is ready. An implication of the above resource update sequencing is that Envoy does not expect a `DiscoveryResponse` for every `DiscoveryRequest` it issues. +### Resource warming + +[`Clusters`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/cluster_manager.html#cluster-warming) and [`Listeners`](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/lds#config-listeners-lds) go through +`warming` before they can serve requests. This process happens both during [`Envoy initialization`] (https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/init.html#initialization) and when the `Cluster` or `Listener` is +updated. Warming of `Cluster` is completed only when a `ClusterLoadAssignment` response is supplied by management +server. Similarly warming of `Listener` is completed only when a `RouteConfiguration` is suppled by management server if +the listener refers to as RDS configuration. Management Server is expected to provide the EDS/RDS updates during warming. If management +server does not provide EDS/RDS information, Envoy will not initialize it self during initialization phase and the updates sent via CDS/LDS will not take effect till EDS/RDS responses are supplied. + #### Eventual consistency considerations Since Envoy's xDS APIs are eventually consistent, traffic may drop briefly From 2e71cdec33ddf332f7149bfd2d5302631e4da21d Mon Sep 17 00:00:00 2001 From: Rama Chavali Date: Sun, 10 Mar 2019 11:02:51 +0530 Subject: [PATCH 2/4] format and minor correction Signed-off-by: Rama Chavali --- api/XDS_PROTOCOL.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/api/XDS_PROTOCOL.md b/api/XDS_PROTOCOL.md index ca3a4676f3653..62f035fb8ab5d 100644 --- a/api/XDS_PROTOCOL.md +++ b/api/XDS_PROTOCOL.md @@ -213,12 +213,17 @@ expect a `DiscoveryResponse` for every `DiscoveryRequest` it issues. ### Resource warming -[`Clusters`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/cluster_manager.html#cluster-warming) and [`Listeners`](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/lds#config-listeners-lds) go through -`warming` before they can serve requests. This process happens both during [`Envoy initialization`] (https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/init.html#initialization) and when the `Cluster` or `Listener` is -updated. Warming of `Cluster` is completed only when a `ClusterLoadAssignment` response is supplied by management -server. Similarly warming of `Listener` is completed only when a `RouteConfiguration` is suppled by management server if -the listener refers to as RDS configuration. Management Server is expected to provide the EDS/RDS updates during warming. If management -server does not provide EDS/RDS information, Envoy will not initialize it self during initialization phase and the updates sent via CDS/LDS will not take effect till EDS/RDS responses are supplied. +[`Clusters`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/cluster_manager.html#cluster-warming) +and [`Listeners`](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/lds#config-listeners-lds) +go through `warming` before they can serve requests. This process happens both during +[`Envoy initialization`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/init.html#initialization) +and when the `Cluster` or `Listener` is updated. Warming of `Cluster` is completed only when a +`ClusterLoadAssignment` response is supplied by management server. Similarly warming of `Listener` +is completed only when a `RouteConfiguration` is suppled by management server if the listener +refers to an RDS configuration. Management Server is expected to provide the EDS/RDS updates during +warming. If management server does not provide EDS/RDS information, Envoy will not initialize +it self during initialization phase and the updates sent via CDS/LDS will not take effect till +EDS/RDS responses are supplied. #### Eventual consistency considerations From cd8ce60ccc8860961a987bc47c56f43baca9a573 Mon Sep 17 00:00:00 2001 From: Rama Chavali Date: Sun, 10 Mar 2019 19:01:44 +0530 Subject: [PATCH 3/4] review comments Signed-off-by: Rama Chavali --- api/XDS_PROTOCOL.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/XDS_PROTOCOL.md b/api/XDS_PROTOCOL.md index 62f035fb8ab5d..26895c4698005 100644 --- a/api/XDS_PROTOCOL.md +++ b/api/XDS_PROTOCOL.md @@ -218,11 +218,11 @@ and [`Listeners`](https://www.envoyproxy.io/docs/envoy/latest/configuration/list go through `warming` before they can serve requests. This process happens both during [`Envoy initialization`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/init.html#initialization) and when the `Cluster` or `Listener` is updated. Warming of `Cluster` is completed only when a -`ClusterLoadAssignment` response is supplied by management server. Similarly warming of `Listener` -is completed only when a `RouteConfiguration` is suppled by management server if the listener -refers to an RDS configuration. Management Server is expected to provide the EDS/RDS updates during -warming. If management server does not provide EDS/RDS information, Envoy will not initialize -it self during initialization phase and the updates sent via CDS/LDS will not take effect till +`ClusterLoadAssignment` response is supplied by management server. Similarly, warming of `Listener` +is completed only when a `RouteConfiguration` is suppled by management server if the listener +refers to an RDS configuration. Management server is expected to provide the EDS/RDS updates during +warming. If management server does not provide EDS/RDS responses, Envoy will not initialize +itself during initialization phase and the updates sent via CDS/LDS will not take effect till EDS/RDS responses are supplied. #### Eventual consistency considerations From a5fc1372a0a6b99d212a1a0a03c55dfa1b4af0f7 Mon Sep 17 00:00:00 2001 From: Rama Chavali Date: Tue, 12 Mar 2019 08:01:10 +0530 Subject: [PATCH 4/4] review comments Signed-off-by: Rama Chavali --- api/XDS_PROTOCOL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/XDS_PROTOCOL.md b/api/XDS_PROTOCOL.md index 26895c4698005..dac4cc11e77da 100644 --- a/api/XDS_PROTOCOL.md +++ b/api/XDS_PROTOCOL.md @@ -219,10 +219,10 @@ go through `warming` before they can serve requests. This process happens both [`Envoy initialization`](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/init.html#initialization) and when the `Cluster` or `Listener` is updated. Warming of `Cluster` is completed only when a `ClusterLoadAssignment` response is supplied by management server. Similarly, warming of `Listener` -is completed only when a `RouteConfiguration` is suppled by management server if the listener +is completed only when a `RouteConfiguration` is supplied by management server if the listener refers to an RDS configuration. Management server is expected to provide the EDS/RDS updates during warming. If management server does not provide EDS/RDS responses, Envoy will not initialize -itself during initialization phase and the updates sent via CDS/LDS will not take effect till +itself during the initialization phase and the updates sent via CDS/LDS will not take effect until EDS/RDS responses are supplied. #### Eventual consistency considerations