为什么Intel放弃Hyperscan:Vectorscan项目背后的开源反击战
【免费下载链接】vectorscanA portable fork of the high-performance regular expression matching library项目地址: https://gitcode.com/gh_mirrors/ve/vectorscan
Vectorscan是 Intel 高性能正则表达式匹配库Hyperscan的开源分叉(fork)版本,一款可跨平台移植的高性能多模式正则匹配引擎。当 Intel 在 5.4 之后将 Hyperscan 转为闭源、并拒绝了社区的 ARM 移植请求后,Vectorscan 以 BSD 许可证发起了这场"开源反击战",让 ARM/Power 平台也能用上顶级性能的正则扫描能力。
一、背景:Hyperscan 是怎样的高性能正则引擎?
在讲"反击"之前,先说清楚 Hyperscan 有多能打:
- 多模式并行匹配:一次扫描可同时匹配数万条正则表达式,而非常见引擎"一条表达式一个匹配器"的模式
- 混合自动机技术:编译期把正则转换为多种引擎(NFA/DFA/字面量过滤器)协同工作,兼顾速度与内存
- 流式匹配:支持跨数据块边界的流式扫描,天然适合网络流量分析
- 典型用途:深度包检测(DPI)、入侵检测/防御系统(IDS/IPS)、安全网关的规则引擎
其核心能力分布在几个模块中:
| 模块 | 职责 |
|---|---|
| 正则解析器 | 解析 PCRE 语法的正则表达式,构建 NFA |
| NFA 图优化 | 对 NFA 做压缩、等价化、区域切分等变换 |
| 匹配引擎群 | Rose、Truffle、McSheng、Sheng、LimEx、FDR 等多种专用引擎 |
| 流式与报告 | 流状态管理、SOM 位置跟踪、匹配结果上报 |
对开发者来说,入口就是公开 API 头文件 src/hs.h 与 C 调用库 src/hs.cpp。
二、Intel 为什么放弃开源 Hyperscan?
1. 许可证"变脸":5.5 起闭源
这是最直接的导火索。根据项目 README.md 中引用的 Intel 官方说明:
The latest open-source version (BSD-3 license) of Hyperscan on Github is 5.4. Intel conducts continuous internal development and delivers new Hyperscan releases under Intel Proprietary License (IPL) beginning from 5.5 for interested customers.
也就是说:
- ✅ 开源(BSD-3)版本永远停在 5.4
- ❌ 5.5、5.6 的新版本改为Intel 专有许可证(IPL)闭源,需要联系 Intel 商务获取
- ⚠️ 原有开源用户从此不再有安全更新和功能演进,且面临许可证风险
开源时代的完整变更记录见 CHANGELOG.md。
2. ARM 移植请求被拒
Vectorscan 的起点其实是一次"善意的尝试":社区开发者想把 Hyperscan 移植到 ARM(NEON/SVE 指令集),并向 Intel 提交了 PR,但遭到拒绝(至少短期内不会合并)。
Hyperscan 的引擎代码大量依赖 Intel 的 SIMD 优化,ARM 服务器(如 AWS Graviton、各类国产化芯片)此前根本没有对等的高性能正则库可选。
三、Vectorscan:一场面向多架构的开源反击
Vectorscan 的做法很务实:fork 最后一个开源版本 5.4,保持 API/ABI 兼容,同时彻底走向多架构。
核心承诺
- 🔓坚持 BSD 许可证,并承诺保持开源(见 LICENSE)
- 🔗100% 兼容 Hyperscan 5.4 的 API 与 ABI,现有 Hyperscan 用户可低成本切换;但明确不追赶 5.5/5.6 的闭源新 API
- ⚡ 不墨守成规:凡认为能提升性能或可移植性,就大胆重构(例如抽象掉所有 Intel 专属
#ifdef)
多架构支持进展(截至 5.4.12)
| 平台 | 状态 |
|---|---|
| x86(SSE4.2/AVX2/AVX512) | ✅ 完整支持,含 Fat Runtime |
| ARM NEON/ASIMD(aarch64) | ✅ 100% 功能完整,支持 Fat Runtime |
| Power VSX(ppc64le) | ✅ 100% 功能完整 |
| ARM SVE/SVE2 | 🚧 已启用构建,持续完善中 |
| 无 SIMD 平台 | 🆕 引入 SIMDe 模拟后端(5.4.12 起) |
截至 2025 年的 5.4.12 版本,官方 CI 已对200 多种配置组合做回归测试,覆盖 Linux(x86/Arm/Power)、FreeBSD 14、macOS 14+(含 Apple M1/M2/M3)。
四、Vectorscan 安装与使用:新手最快上手指南
一键安装(Debian/Ubuntu)
sudo apt install libvectorscan5 # 运行库 sudo apt install libvectorscan-dev # 开发包Fedora 用户可用dnf install vectorscan vectorscan-devel;Arch 有 AUR 包可用。
源码编译:CMake 三步走
git clone https://gitcode.com/gh_mirrors/ve/vectorscan cd vectorscan && mkdir build && cd build cmake ../ && make -j$(nproc)常用 CMake 选项(详见 README.md):
-DBUILD_SHARED_LIBS=On:构建动态库-DFAT_RUNTIME=On:Fat 运行时,一份库自适应 SSE/AVX/NEON 等多种指令集(x86 与 AArch64 Linux 可用)-DBUILD_SVE2=On:启用 ARM SVE2 代码-DBUILD_SIMDE_BACKEND=On:用 SIMDe 模拟 SSE4.2,让无 SIMD 平台也能编译运行
新手示例:从 30 行代码开始
项目自带三个由浅入深的示例(examples/):
- examples/simplegrep.c—— 极简版 grep:单模式编译、块模式扫描、scratch 内存管理,演示最小完整用法
- examples/pcapscan.cc—— 扫描网络抓包文件,演示多模式编译与流式匹配
- examples/patbench.cc—— 找出规则集中"最烧性能"的正则表达式
配套工具链同样齐全:
- 性能基准:tools/hsbench/
- 功能自检:tools/hscheck/
- 数据库转储:tools/hsdump/
- 跨引擎正确性碰撞测试:tools/hscollider/
完整 API 参考文档位于 doc/ 目录(含编译指南、运行时接口、序列化等章节)。
五、源码导读:Vectorscan 核心模块在哪里?
想深入源码的读者,可以从这几个路径入手:
- 公开 API 与运行时分发:src/hs.h、src/hs_runtime.h、src/dispatcher.c
- NFA 引擎群:src/nfa/(LimEx、Truffle、Sheng、McSheng、Shufti、Vermicelli 等,按 x86/arm/ppc64le 分子目录)
- Rose 字节码引擎:src/rose/,Hyperscan 的"主力"解释器引擎
- FDR 字面量过滤器:src/fdr/,Teddy 算法家族,先筛掉不可能匹配的数据
- NFA 图构建与优化:src/nfagraph/
- 正则语法解析:src/parser/
- Chimera 库(Hyperscan 的编译产物加载库):chimera/
- 测试与验证:unit/(含 GTest 单元测试集)
六、谁适合使用 Vectorscan?🎯
- ARM 服务器上的安全/DPI 开发者:此前无高性能多模式正则引擎可选,现在有了
- 依赖 Hyperscan 但被闭源卡住的项目:API/ABI 兼容 5.4,迁移成本接近于零
- BSD 许可证洁癖用户:闭源 IPL 版本无法用于自由软件生态,Vectorscan 是合规替代
- 嵌入式/异构硬件:借助 SIMDe 后端,理论上任何平台都能编译运行
七、总结
Intel 放弃开源 Hyperscan 是商业决策,但开源生态不会因此停摆。Vectorscan 用兼容的 API、BSD 许可证和真正的多架构支持证明了:当大厂关上门,社区可以打开一扇更大的门。对于 ARM/Power 平台的性能敏感型正则匹配需求,它已经是目前唯一活跃维护的开源高性能方案。⚡
【免费下载链接】vectorscanA portable fork of the high-performance regular expression matching library项目地址: https://gitcode.com/gh_mirrors/ve/vectorscan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考