Hyperscan

Hyperscan 是一个高性能的多个正则表达式匹配库,它使用混合自动机技术来允许同时匹配大量正则表达式,以及跨数据流匹配正则表达式。Hyperscan 支持由 PCRE 使用的 模式语法

Hyperscan 仅在 contrib 镜像 中有效。

Hyperscan 可用作 通用匹配 的匹配器,或在全局范围内启用为正则表达式引擎。

作为通用匹配的匹配器

通用匹配已在 Envoy 中的几个组件和扩展中实现,包括 过滤器链匹配器路由匹配器RBAC 匹配器。Hyperscan 匹配器可以在通用匹配器中用作以下结构中的自定义匹配器

1                        custom_match:
2                          name: hyperscan
3                          typed_config:
4                            "@type": type.googleapis.com/envoy.extensions.matching.input_matchers.hyperscan.v3alpha.Hyperscan
5                            regexes:
6                            - regex: allowed.*path

Hyperscan 匹配器中正则表达式匹配的行为可以配置,请参考 API 参考

Hyperscan 匹配器还支持多模式匹配,允许同时报告对多个模式的匹配。多模式匹配可以在以下结构中打开

 1                        custom_match:
 2                          name: hyperscan
 3                          typed_config:
 4                            "@type": type.googleapis.com/envoy.extensions.matching.input_matchers.hyperscan.v3alpha.Hyperscan
 5                            # The following multiple patterns match input including allowed.*path and excluding
 6                            # den(y|ied). E.g., the path /allowed/path will be matched, while the path
 7                            # /allowed/denied/path will not be matched.
 8                            regexes:
 9                            - regex: allowed.*path
10                              id: 1
11                              quiet: true
12                            - regex: den(y|ied)
13                              id: 2
14                              quiet: true
15                            - regex: 1 & !2
16                              combination: true

作为正则表达式引擎

Hyperscan 正则表达式引擎的行为与默认的正则表达式引擎 Google RE2 相似,例如它默认情况下打开 UTF-8 支持。Hyperscan 正则表达式引擎可以使用以下配置轻松配置。

1default_regex_engine:
2  name: envoy.regex_engines.hyperscan
3  typed_config:
4    "@type": type.googleapis.com/envoy.extensions.regex_engines.hyperscan.v3alpha.Hyperscan