envoyproxy / envoyproxy/envoy

Filter Chain DS support

Open
#39,141 10 comments 3 reactions 1 assignee Claimed by @kyessenov View on GitHub
area/filter_chains area/xds enhancement no stalebot
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 22h
Merged PRs (30d)
430

Description

This is a feature tracking issue for adding filter chain discovery service support in Envoy.

Filter chain discovery can be looked at in two ways:
1. A filter chain is explicitly specified in the bootstrap configurations, but its configuration is discovered at runtime
2. Listener's filter chains are not specified in the bootstrap, rather than being discovered at runtime. This can either be all of the listener's filter chains or some of them (a model where some of the filter chains are static and some are runtime-discovered, but they co-exist within the same listener)

Although the goal is achieving both of the capabilities above, first step focuses on the 2nd capability of FCDS.
This feature was mentioned in the past in https://github.com/envoyproxy/envoy/issues/4540.

There have been improvements to Envoy's listeners since then. For example, when Envoy receives an LDS update, it only adjusts the filter chains which have been modified, preventing the draining of connections of unaffected filter chains.
While this is useful for most cases, in some other cases this is still not robust enough. In a deployment where a filter chain represents a small scoped system object, a single listener may contain a high number of filter chains. A single change (add/remove/update) requires xDS server to send the entire listener object and Envoy to process that object. If the updates are frequent, this becomes an issue that causes high config update latencies as well as busier main-thread.
Having the ability to stream updates just for a specific filter chain change not only simplifies the deployments and control plane management but also improves how Envoy copes with this kind of use case.

The roadmap for this feature:

- [ ] API changes with unimplemented annotation
- [ ] Add FCDS service implementation, unit tests, integration tests
- [ ] (If needed) Refactoring work in ``listener_impl``
- [ ] Consume FCDS in listener, unit tests, integration tests, documentation

cc @envoyproxy/api-shepherds, @ggreenway

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.