浅析nDPI中Hyperscan的集成计划
日期:2023-12-11 20:12:54   来源:数据采集转换类

  Hyperscan是英特尔推出的一款高功能的正则表达式匹配库,非常适用于布置在比如DPI/IPS/IDS解决计划中。nDPI 是现在使用比较广泛的开源DPI源码库,将nDPI源码进行二次开发布置到资源受限的路由器产品中时,其间心模块耗费了很多的内存。

  nDPI是由ntop担任保护的一款很盛行的开源DPI库,它一起支撑Windows和Unix/Linux两种体系,支撑跨渠道体会[1]。如图一结构图所示,nDPI库主要由网络数据收集模块、数据预处理模块、协议检测匹配模块及特征库相关模块组成。数据收集模块从网卡实时收集数据或解析已有的pcap文件;数据预处理模块担任对网络数据来进行接纳、数据分组及数据整型及过滤;其间协议检测匹配模块是nDPI最中心的模块,它依据现有的协议规矩特征库对整型后的报文数据进行规矩匹配。匹配算法的功能及匹配进程中对内存及CPU等硬件资源的耗费对总体系至关重要。

  nDPI中一个重要的匹配进程是字符串的多模匹配。字符串的多模匹配可以敏捷过滤掉无法匹配的规矩以削减需求逐条匹配的规矩数,然后提高匹配的功能。nDPI中使用了Aho-Corasick算法进行多字符串的匹配,因为原生Aho-Corasick算法,需求将一切规矩转化成Trie树结构,因而占用较大的内存。而Hyperscan具有本身优化过的匹配引擎进行匹配,很多削减了匹配进程中对内存的耗费。咱们用Hyperscan代替了这一算法,下降了内存耗费及CPU占用率,而且带来了明显的功能提高。

  除了引擎的匹配算法的集成,咱们在预处理器模块中也添加了Hyperscan。在Http预处理时,利用了Hyperscan查找相关关键字来进一步加快预处理的流程。

  咱们选取了MT7981B芯片+OpenWrt体系作为测验渠道,选用了nDPI自带的协议规矩库文件来测验,一起以实在网卡收集到数据报文作为数据输入。如图三所示,原生nDPI内存耗费较大为56MB,而选用nDPI+Hyperscan的计划下,内存耗费下降为5.7MB,内存占用仅仅为原生nDPI的非常之一。

  通过Hyperscan集成后的nDPI在内存耗费上远远低于原始nDPI。现有嵌入式网络设备产品中内存资源非常严重,集成Hyperscan后的nDPI组件对内存资源的优化,有利于DPI及其相关这类的产品在端侧嵌入式网络产品中的布置。