Hyperscan 5.0.0 新特性

Hyperscan 5.0.0 版本已于2018年7月9日在Github ( https://github.com/intel/hyperscan ) 上发布。

这一新版本主要涉及3个改进:

加入Hyperscan/libpcre混合库,支持所有PCRE语法特性;

加入“逻辑组合”新特性,满足对多规则进行自定义的逻辑组合匹配的需求;

加入Hyperscan工具对Windows操作系统的支持(包括win32/64平台);

混合库Chimera

o 特性概要:

该库有效整合Hyperscan与libpcre,旨在支持PCRE完整语法的同时,亦能获益于Hyperscan的高性能优势。对于任何覆盖PCRE所有语法的目标规则集,Chimera对其同时进行Hyperscan与PCRE编译,得到混合database,运行时根据Hyperscan本身对具体规则语法的支持程度,来决定是否用Hyperscan直接进行匹配验证,亦或先扮演过滤角色,由PCRE进行最终匹配验证。

o 应用要点:

Chimera库提供与原生Hyperscan库类似的编译时期和运行时期API。Chimera被设计为和PCRE有相同的匹配行为,包括了贪婪和非贪婪,以及捕获机制等等。同时,Chimera和PCRE一样会同时返回匹配的起始位置和结束位置。与Hyperscan返回所有的匹配位置不同,Chimera只返回无重叠区域的匹配区间。例如,规则 /foofoo/ 在语料 “foofoofoofoo” 中返回的匹配区间仅为(0, 6) 和 (6, 12)。值得注意的是,Chimera对正则语法的支持虽然更加完善,但其匹配性能相较纯Hyperscan而言仍会有所下降,我们建议只在需要对PCRE语法进行完全支持的情况下使用Chimera,而对于Hyperscan本身足够应付的场合仍沿用Hyperscan库以获得高性能表现。

规则“逻辑组合”

o 特性概要:

该特性提供了新的规则使用场景:对于一组规则来说,用户可能关心部分规则的匹配,也可能需要部分规则不被匹配,单个规则有自己的逻辑语义,而整组规则的逻辑组合后的整体匹配行为,才是用户所需要的结果。我们为规则的逻辑语义定义了3种逻辑操作符,即常见的 “NOT”,“AND”,“OR”。规则的逻辑组合用中缀表示法来书写,它包含操作符,操作子,和小括号。操作子是规则ID,定义在别处,操作符为!(NOT),&(AND),|(OR)。例如 ((301 OR 302) AND 303) AND (304 OR NOT 305) 可表示为((301 | 302) & 303) & (304 | !305)。操作符优先级为! > & > |。

o 应用要点:

逻辑组合表达式的匹配仍然沿用Hyperscan的编译和运行时API,只是需要对其设置新的标志位HS_FLAG_COMBINATION来确指。同时,逻辑组合表达式和其内部操作子对应的规则必须同时进行编译。在执行逻辑组合的匹配过程时,每个内部操作子对应规则的匹配位置仍然会被正常报告,在这些位置中,一旦逻辑组合的布尔值为TRUE,组合本身也会在当前位置报告成功匹配对于只关心逻辑组合结果的情况,标志位HS_FLAG_QUITE可用来取消逻辑组合内部子规则的匹配报告。

Windows支持:

Hyperscan库,包括基本测试工具hsbench,hscheck,hscollider以及hsdump目前可以在Windows8或Windows更新版本上编译和运行,编译工具为Intel C++ Compiler或者Visual Studio 2017。需要注意的是,为了在Windows上正常支持Ragel,用户可能需要借助Cygwin来进行源码构建。

优化了编译阶段无向图的实现,使得图拷贝的开销减少,提升了规则的编译效率。

Bugfix:

o Issue #86: 为安装的PCRE包提供hscollider支持。


github:https://github.com/intel/hyperscan/releases/tag/v5.0.0

安装指南:https://intel.github.io/hyperscan/dev-reference/getting_started.html 


转自:https://mp.weixin.qq.com/s/QOctINBbeskccQn7NMOUlA


!符号代表当前位置没发生匹配

关于逻辑表达式的距离: "101 & 102 & !105"

对于有非逻辑符的表达式, 如果101和102都匹配了, 在当前位置105没匹配中, 则

"101 & 102 & !105" 表达式会计算为true, on_match会返回逻辑表达式的id。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355