块模式与流模式区别

块模式与流模式区别

块模式是Hyperscan中基础的模式,调用函数为hs_scan()。用户每次调用时,将对一段完整的数据块进行匹配。匹配只限于该数据块内,而与上一次的hs_scan() 调用无关。在通常情况下块模式是所有模式中最高效的。

流模式在真实网络场景下,数据被拆分成多个报文发送,在只接收到部分数据流的情况下使用块模式匹配会导致跨数据流的匹配点被遗漏,可行的方法只有等全部数据流接收完成后再统一进行匹配,此举会增加内存的开销及报文处理的复杂度。

由此,在Hyperscan中我们引入流模式。通过额外的流内存对流匹配信息进行记录,保证在丢弃了过去所有流数据的情况下匹配过程仍然能够正确执行。