# hyperscan
**Repository Path**: kunpengcompute/hyperscan
## Basic Information
- **Project Name**: hyperscan
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: BSL-1.0
- **Default Branch**: aarch64
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 10
- **Created**: 2020-01-21
- **Last Updated**: 2025-09-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目介绍
Hyperscan是一款高性能的开源正则表达式匹配库,在支持PCRE的大部分语法的前提下,增加了特定的语法和工作模式来保证其在真实网络场景下的实用性。Hyperscan针对不同使用场景设计了多种高效匹配算法,以及结合SIMD指令,实现了正则表达式的高性能匹配。Hyperscan适用于部署在诸如DPI/IPS/IDS/FW等场景中。在鲲鹏平台上,华为基于NEON指令集对Hyperscan进行了改造,以适配AAarch64架构,同时针对算法进行了优化。
# 版本说明
**表 1** 版本说明
Kunpeng Hyperscan
|
开源Hyperscan
|
特性
|
2.5.1
|
5.4.2
|
正则表达式匹配与匹配函数。
|
# 环境部署
Hyperscan当前适配的处理器和操作系统为鲲鹏920系列处理器,openEuler 22.03操作系统,若您在使用过程中遇到问题,请先检查使用的环境是否在已验证的环境范围内。
**表 1** Hyperscan已验证环境
操作系统
|
CPU类型
|
openEuler 22.03 LTS SP3
|
鲲鹏920系列处理器
|
具体编译方法可以参考《[Hyperscan编译指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/cg-hyperscan/kunpengaccel_hyperscan_02_0001.html)》。
# 快速上手
hsbench是Hyperscan官方提供的性能Benchmark工具,通过hsbench的测试结果能够对比使用开源Hyperscan和Kunpeng Hyperscan的性能差异。
1. 进入创建好的“build”目录。
```
cd build
```
2. 获取hsbench规则集和输入数据,并解压到“build/hsbench-samples”目录。
[获取链接](https://cdrdv2.intel.com/v1/dl/getContent/739375)
3. 运行hsbench。
```
./bin/hsbench -e ./hsbench-samples/pcre/snort_literals -c ./hsbench-samples/corpora/gutenberg.db -N -n1
```
# 安装后验证
运行结果:
```
Signatures: ./hsbench-samples/pcre/snort_literals
Hyperscan info: Version: 5.4.2 Features: Mode: BLOCK
Expression count: 3,116
Bytecode size: 923,384 bytes
Database CRC: 0xc4b8895e
Scratch size: 5,183 bytes
Compile time: 0.137 seconds
Peak heap usage: 23,830,528 bytes
Time spent scanning: 0.025 seconds
Corpus size: 6,701,044 bytes (3,280 blocks)
Matches per iteration: 4,302 (0.657 matches/kilobyte)
Overall block rate: 132,895.00 blocks/sec
Mean throughput (overall): 2,172.04 Mbit/sec
Max throughput (per core): 2,172.10 Mbit/sec
```
运行结果参数说明如下:
- Time spent scanning:使用目标规则集扫描目标数据库,扫描所用的时间。
- Matches per iteration:每次迭代,按规则集匹配命中的数量。
- Mean throughput \(overall\):平均吞吐量(Mbit每秒)。
- Max throughput \(per core\):所有CPU核中的最大吞吐量(Mbit每秒)。
# 贡献指南
如果使用过程中有任何问题,或者需要反馈特性需求和bug报告,可以提交issues联系我们,具体贡献方法可参考[这里](https://gitcode.com/boostkit/community/blob/master/docs/contributor/contributing.md)。
# 免责声明
此代码仓计划参与Hyperscan软件开源,仅作Hyperscan性能提升,编码风格遵照原生开源软件,继承原生开源软件安全设计,不破坏原生开源软件设计及编码风格和方式,软件的任何漏洞与安全问题,均由相应的上游社区根据其漏洞和安全响应机制解决。请密切关注上游社区发布的通知和版本更新。鲲鹏计算社区对软件的漏洞及安全问题不承担任何责任。