Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add details and example of sublinear route matching using Generic Matching API #37158

Open
wants to merge 29 commits into
base: main
Choose a base branch
from

Conversation

krajshiva
Copy link
Contributor

Commit Message:
Additional Description: Add details on sublinear route matching with examples using Generic Matching API
Risk Level: Low
Testing:
Docs Changes: Add more details for routing using Generic Matching API
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

krajshiva and others added 25 commits November 13, 2024 05:16
Signed-off-by: Kirtimaan <[email protected]>
adding pics

Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
update diagrams and code links

Signed-off-by: Kirtimaan <[email protected]>
fix the link to trie lookup table template class

Signed-off-by: Kirtimaan <[email protected]>
update content

Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
Signed-off-by: Kirtimaan <[email protected]>
@krajshiva
Copy link
Contributor Author

@phlax closed #37117 and updated content in user doc space as suggested.

Copy link
Member

@phlax phlax left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

currently this is failing a lot of CI - most importantly the docs build

if you can fix that i can do a more thorough review

ping me offline if you want help figuring out what needs to be changed

re the configs - one of the reasons we use a complete bootstrap config and literalinclude is that the configs are then validated (in a couple of ways)

prefix: ""
route:
cluster: cluster_3
clusters:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these clusters will need to be specified - the config is not valid otherwise

Sublinear Route Matching
~~~~~~~~~~~~~~~~~~~~~~~~

An incoming request to Envoy needs to be matched to a cluster based on defined `routes <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_. Typically, a well understood, linear route search matching with O(n) search cost (see `Virtual Host <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_ → `Routes <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-route>`_) is employed which can become a scalability issue with higher latencies as the number of routes go up to o(1k+). To overcome these scalability challenges the Generic Matcher API ( `Virtual Host → matcher{} <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_) → `matcher_tree <https://www.envoyproxy.io/docs/envoy/latest/xds/type/matcher/v3/matcher.proto#envoy-v3-api-msg-xds-type-matcher-v3-matcher-matchertree>`_ can offer a robust and flexible framework for route matching with two distinct sublinear matching implementations:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An incoming request to Envoy needs to be matched to a cluster based on defined `routes <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_. Typically, a well understood, linear route search matching with O(n) search cost (see `Virtual Host <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_ → `Routes <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-route>`_) is employed which can become a scalability issue with higher latencies as the number of routes go up to o(1k+). To overcome these scalability challenges the Generic Matcher API ( `Virtual Host → matcher{} <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_) → `matcher_tree <https://www.envoyproxy.io/docs/envoy/latest/xds/type/matcher/v3/matcher.proto#envoy-v3-api-msg-xds-type-matcher-v3-matcher-matchertree>`_ can offer a robust and flexible framework for route matching with two distinct sublinear matching implementations:
An incoming request to Envoy needs to be matched to a cluster based on defined :ref:`routes <envoy_v3_api_msg_config.route.v3.VirtualHost>`_. Typically, a well understood, linear route search matching with O(n) search cost (see :ref:`Virtual Host <envoy_v3_api_msg_config.route.v3.VirtualHost>`_ → :ref:`Routes <envoy_v3_api_msg_config.route.v3.Route>`_) is employed which can become a scalability issue with higher latencies as the number of routes go up to o(1k+). To overcome these scalability challenges the Generic Matcher API ( `Virtual Host → matcher{} <https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-virtualhost>`_) → `matcher_tree <https://www.envoyproxy.io/docs/envoy/latest/xds/type/matcher/v3/matcher.proto#envoy-v3-api-msg-xds-type-matcher-v3-matcher-matchertree>`_ can offer a robust and flexible framework for route matching with two distinct sublinear matching implementations:

internal links need to use :ref: - ive updated a couple, but im not 100% that ive pointed the links to the correct place

you can find the ref target by clicking "View page source" on the rendered docs pages

not sure exactly the issue that is preventing the docs from building - but its related to these links

@phlax phlax self-assigned this Nov 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants