前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Intel DPDK正则库Hyperscan介绍

Intel DPDK正则库Hyperscan介绍

作者头像
通信行业搬砖工
发布2024-02-29 16:22:50
2560
发布2024-02-29 16:22:50
举报
文章被收录于专栏:网络虚拟化网络虚拟化

Hyperscan是 Intel 的高性能正则表达式匹配库,可在 x86 平台上运行,并支持 Perl 兼容正则表达式 (PCRE) 语法、正则表达式组的同时匹配和流操作。它是在 BSD 许可下作为开源软件发布的。Hyperscan 提供了灵活的 C API 和多种不同的操作模式,以确保其在实际网络场景中的适用性。此外,专注于高效算法和英特尔® Streaming SIMD Extensions(英特尔® SSE)的使用使 Hyperscan 能够实现高匹配性能。适用于深度包检测(DPI)、入侵检测系统(IDS)、入侵防御系统(IPS)、防火墙等使用场景,已在全球网络安全解决方案中部署。Hyperscan 还被集成到广泛使用的开源 IDS 和 IPS 产品中,如Snort * 和Suricata *。

引擎盖下

Hyperscan 的工作流可以分为两部分:编译时和运行时。

编译时间

Hyperscan 带有一个用 C++ 编写的正则表达式编译器。如图 1 所示,它以正则表达式作为输入。根据可用的英特尔® 架构平台特性、用户定义的模式和模式特性,Hyperscan 通过复杂的图形分析和优化过程生成相应的模式数据库。生成的数据库也可以序列化并存储在内存中供运行时以后使用。

了解更多Intel dpdk和vpp相关知识,欢迎关注我们:

图1:Hyperscan编译过程

图 2:Hyperscan 运行时

运行

Hyperscan 运行时是用 C 语言开发的。图 2 显示了运行时主要组件的高级框图。您需要为扫描时使用的临时信息预先分配一个scratch空间,然后使用编译好的数据库调用Hyperscan的扫描API来触发内部匹配引擎(非确定性有限自动机(NFA)、确定性有限自动机(DFA)等) ) 来匹配语料库。Hyperscan 借助英特尔处理器提供的单指令、多数据 (SIMD) 指令加速这些引擎,并将匹配项通过用户提供的回调函数传递给用户应用程序进行处理。由于 Hyperscan 模式数据库是只读的,用户可以在多个 CPU 内核或多个线程之间共享数据库,以增强匹配的可扩展性。

特征

多功能功能

Hyperscan 支持对多个 Intel 处理器进行交叉编译,并针对不同的指令集进行特定优化。它没有操作系统限制,同时支持虚拟机和容器场景,涵盖大部分 PCRE 语法,并支持包含“.*”和“[^>] *”等语法的复杂表达式。提供不同的操作模式(流、块和向量),以满足不同场景的需求。如果通过使用每个模式标志请求,Hyperscan 可以在输入流中找到匹配数据的开始和结束位置。有关详细信息,请参阅Hyperscan 开发人员参考指南的当前版本 。

大规模匹配

根据复杂性,Hyperscan 可以支持匹配大量规则。与大多数常规匹配引擎不同,Hyperscan 支持多模式匹配。为每条规则指定唯一的 ID 后,Hyperscan 可以将规则编译到数据库中,并在匹配过程中输出所有当前匹配的规则 ID。

图 3:按时间顺序分散在不同单位的数据

流媒体模式

Hyperscan 支持三种操作模式:块模式、流模式和向量模式。块模式是最直接的,其中扫描单个连续的数据块,找到匹配项时将匹配项返回给调用者。Streaming 模式是为在需要扫描的数据被分成多个数据包的组网场景中进行跨数据包匹配而设计的。在流模式下,Hyperscan 可以保存当前数据块的匹配状态,并在新数据块到达时将其用作初始匹配状态。如图 3 所示,无论“xxxxabcxxxxxxxdefx”数据如何随时间拆分为数据包,流模式都能保证最终匹配的一致性。此外,Hyperscan 可以压缩保存的匹配状态以减少应用程序的内存占用。流模式操作提供了一种简单的方法来扫描一段时间内到达的数据,而无需缓冲和重新扫描数据包或将扫描限制在历史数据的固定窗口。最后,还有向量模式,它提供按顺序扫描一组在内存中不连续的数据块。

高性能和可扩展性

Hyperscan 至少需要英特尔® Streaming SIMD Extensions 3 指令集,并利用 SIMD 指令来加速匹配性能。下面,我们提供了一个公开可用的性能演示的简要总结,Hyperscan 的性能分析与 hsbench。

我们使用三种不同的模式集进行此分析。

  • Snort 文字是从 Snort* 3 网络入侵检测系统随附的示例规则集中提取的一组 3,316 个文字模式。
  • Snort PCREs是一组 847 个正则表达式,它也是从包含 Snort 3 的示例规则集中提取的,取自针对 HTTP 流量的规则。
  • Teakettle 2500是一组 2,500 个合成模式,由一个脚本生成,该脚本生成复杂度有限的正则表达式。我们在 alexa200.db 上测试了这些模式集,这是一个大型流量样本,由一个自动 Web 浏览器的 PCAP 捕获构建而成,该浏览器浏览了 Alexa* 上列出的顶级网站的一个子集。

图 4 显示了英特尔® 至强® 处理器 E5-2699 v4 @ 2.20 GHz 在块模式下 Hyperscan 的匹配性能 (Gbps)。

图 4:不同规则集上块模式下的 Hyperscan 性能。

图 4 显示 Hyperscan 可以使用不同的规则集实现良好的单核性能。此外,它具有很高的可扩展性,其匹配性能随着使用的内核数量的增加几乎呈线性增长。

Hyperscan 和 DPDK 的集成

图 5:Hyperscan 和数据平面开发套件集成的性能

数据平面开发工具包(DPDK)可实现高速网络分组处理和转发,并在工业中广泛应用。Hyperscan 和 DPDK 可以集成到高性能 DPI 解决方案中。图 5 显示了集成解决方案的性能数据。在测试中,我们使用真实模式和 HTTP 流量作为输入。Hyperscan 和 DPDK 的集成提供了高性能,并且在此测试中,在更大的数据包大小下,性能可以达到线速。

概括

Hyperscan 提供了一个灵活、易于使用的库,使您能够以高性能和良好的可扩展性同时匹配大量模式,并为网络数据包处理提供独特的功能。Hyperscan与DPDK的集成也为DPI、IDS、IPS等相关产品提供了成熟高效的解决方案。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 通信行业搬砖工 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引擎盖下
    • 编译时间
      • 运行
      • 特征
        • 多功能功能
          • 大规模匹配
            • 流媒体模式
              • 高性能和可扩展性
              • Hyperscan 和 DPDK 的集成
              • 概括
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档