论文部分内容阅读
随着网络的发展,网络上的非法信息严重威胁了网络的安全,因此,需要对有害的或不符合安全策略的信息进行过滤。传统的过滤技术基于数据包头部进行过滤,但越来越多的有害信息隐藏于数据包内容中,仅仅依靠传统的过滤技术无法有效的解决此问题。由于正则表达式描述能力强大、灵活、丰富,因此利用正则表达式匹配技术作为过.滤关键技术来实现对网络数据流的过滤。正则表达式规则转换成确定型有穷自动机(Deterministic Finite Automaton, DFA)时存在“空间爆炸×问题,会消耗大量的内存空间,导致无法有效地直接将DFA状态表存储于内存里,因此,需要对DFA状态表进行压缩以减少占用的内存空间。在高速网络流环境下,过滤数据需要消耗大量的计算能力,而现场可编程门阵列(Field-Programmable Gate Array, FPGA)具有硬件并行性的特点,很适合用来处理大量的网络流。针对上述问题,结合FPGA并行加速的特点,本文研究基于正则表达式匹配的高速网络流过滤技术,并在NetFPGA-10G平台上设计与实现高速网络流过滤系统。主要包括以下几点:(1)提出一种改善ClusterFA压缩率的算法,称之为En_ClusterFA算法。为了解决正则表达式匹配中的“空间爆炸”问题,前人提出了基于簇聚类的DFA压缩算法,即ClusterFA算法,但该算法的分组个数取理想值较为困难,且其类中心向量表中每一行连续重复的转移状态出现频率较高。针对此问题,提出一种改善ClusterFA压缩率的算法,即En_ClusterFA算法:提取类中心向量表行与行之间相同的首尾部分,并对其进行游程编码以建立索引表,然后对类中心向量表余下部分的转移状态进行游程编码。实验结果表明,与ClusterFA算法中DFA状态表的压缩率相比,En_ClusterFA算法平均提高了4%。(2)利用En_ClusterFA算法的优点和FPGA的并行加速特点,在NetFPGA-10G平台上设计与实现高速网络流过滤系统:在硬件上通过精确串匹配和DFA匹配,识别和过滤得到相应的网络流后将其传至内核驱动层对应的数据缓冲区,然后绕过协议栈,直接拷贝至用户空间。为了验证精确串匹配和DFA匹配功能的正确性,在硬件里对过滤得到的数据包个数分类进行统计,然后在用户界面上显示出来。实验结果验证了En_ClusterFA算法在FPGA上实现的正确性。