论文部分内容阅读
网络安全随着互联网的兴起而产生,并随着互联网的发展而不断发展进步。在早期,人们通过对IP包的头部进行分析,发现网络流中的异常数据包,从而对IP包进行相应的处理。如今,随着网络的发展,越来越多的应用出现在网络上,如网上银行、电子商务等,这些新型的应用对网络的安全提出了更高的要求,这种单纯基于IP包的头部进行分析的方法已经不再适用,而需要对IP包的应用层数据进行分析,即需要进行深度包检测,挖掘出其中的危险因素。这种深度包检测技术是现在IDS/IPS(Intrusion Detection/Prevention System)系统的核心技术之一,其关键的算法之一是多模式匹配算法。
按照算法底层采用引擎的不同,多模式匹配算法可以分成基于NFA(Nondeterministic Finite Automata)的算法和基于DFA(Deterministic FiniteAutomata)的算法。基于NFA引擎的算法对内存的需求较少,但其匹配速度很慢,因此不能适用于速度较快的宽带网络。而基于DFA引擎的算法具有较快的匹配速度,但它需要很多的内存,因此许多学者提出了对DFA的压缩方法。他们在提出这些压缩方法时,对整个DFA中的所有状态和转移都平等对待,把压缩方法应用于所有的状态和转移。但在实验中,我们发现对DFA节点的访问呈现这样一种规律:越靠近根节点的节点,其节点数越少,但其访问频率越高;越远离根节点的节点,其节点数越多,但其访问频率越低。基于这个规律,我们把一个DFA分成两个部分:靠近报节点的部分,称为HDFA(Head DFA),其节点数很少,但其访问频率很高;远离根节点的部分,称为GDFA(General DFA),其节点数很多,但其访问频率很低。针对两个部分的不同特征,本文采取这样的策略:对于HDFA,尽量提高其访问效率,对于GDFA,尽量压缩其大小。
在多模式匹配算法中,DFA占用的内存主要用于存储转移条目,所以减少转移条目的数量可以有效地压缩DFA。本文,我们采用动态默认转移的方法将99%以上的failto转移删除了,从而节约了大量的内存。针对HDFA只有少数状态和转移但却具有较高的访问率的特点,我们采用高速器件或者将之装入高速缓存,让HDFA的匹配周期短于GDFA的匹配周期,从而能够较大地提高整个匹配过程。由于HDFA的状态和转移都少,占用的内存也少,不管从技术上讲还是从经济方面看,采用高速的器件或者将之装入高速缓存都是可行的。