在UTM中存在很多特征,包括病毒特征、入侵特征、内容过滤对象特征、垃圾邮件特征等,对这些特征进行匹配是比较耗用系统资源的,通过优化算法,提高匹配效率是必需的。
在过去的几十年内学术界提出了若干的多模匹配算法,并且在产业界得到了很好的应用,在商业产品中应用较多的有Aho-Corasick、Wu-Manber和ExB算法或它们的变种。根据研究发现,所有这些算法的性能分析全部是基于理想的存储模型,忽略访问存储器的性能开销。由于存储器速度远低于处理器速度,两者相差一个数量级以上,为避免存储器效能低造成系统整体的效能低下,绝大多数系统采用多级存储结构,以增加少量的高速缓存隐藏存储器的性能瓶颈。但是在多串匹配算法中,数据结构非常庞大,并且匹配过程中不断在非连续的地址间跳转,此时高速缓存的命中率大幅下降,不考虑访问存储器开销显然已不能反映各算法在实际应用中的效能了。
实际上不存在一种普适的算法能够在各种情况下都有非常好的表现,同样的算法可能在不同的数据源、特征集、处理器结构上性能相差甚远。我们将结合具体的硬件(处理器)架构和匹配规则的分布类型,将其抽象为与匹配算法效能相关的若干关键参数,计算出当前适用的最优算法。具体采用动态和静态两种方式来实现自适应选择。
静态自适应在系统初始化时进行,统计各协议变量特征及相关匹配模式特征,结合备选多模式匹配算法的性能特征,为规则匹配树节点选择最优的多模式匹配算法。控制参数包括处理器类型、主频、Cache Line长度、L2Cache容量、存储器时延、最短模式长度、次短模式长度、模式数量、模式字符集大小、同前缀模式数量等。动态自适应在系统运行过程中采样统计影响算法效率的网络数据,如果统计值显示当前网络数据趋势稳定,则进行动态算法选择,确定是否有大幅超过当前算法效率的算法模块存在,并进行调用。