论文部分内容阅读
随着用户规模不断增大和网络应用日益丰富,互联网运行状况变得异常复杂。为了提高互联网的安全性与可管理性,应用层协议识别成为网络安全、管理设备的重要基础,我国下一代网络防火墙标准中已经将应用层协议识别列为核心要素之一。然而,随着互联网接入带宽的快速增长,40Gbps及更高性能网络已经逐渐开始部署,现有协议识别方法由于计算复杂度高、存储消耗大等原因导致处理能力不足,无法适应高速网络环境。为了解决上述问题,本文从未来互联网发展的实际需求出发,以高性能为主要目标,研究基于FPGA的应用层协议识别方法,以满足未来产业界对相关技术的需求。本文的主要贡献如下:提出了一个基于FPGA芯片的高性能应用层协议识别框架,通过基于简单字符串特征的协议识别方法降低协议识别的计算复杂度,并使用高效流管理进一步降低匹配引擎的工作负载。具体来说,该方法针对FPGA的硬件特性对流表数据结构、流表条目索引策略、表项过期管理机制、协议识别方法、并行引擎流水线、子系统协同机制等进行优化以达到协议识别的高性能。在Net FPGA10G开源硬件平台上的实验证明,原型系统能够支持百万级流条目过滤,针对128个协议进行检测,数据处理能力超过36 Gbps,识别准确率约为92%。为了进一步提高协议识别能力,提出一个基于正则表达式的协议识别引擎自动生成方法,通过适合FPGA硬件特性的数据结构、匹配方法等以提高协议识别性能。具体来说,该方法基于正则表达式协议特征对协议特征进行识别,主要包括一个多字符输入非确定状态机的转换算法以及一个FPGA识别引擎生成架构。前者允许协议识别状态机每周期处理多个字符;后者针对硬件特性进行优化以提高正则表达式匹配的性能。实验证明,该方法生成的协议识别引擎不仅可以达到与L7-filter相同的协议识别能力,而且数据处理能力超过10Gbps。同现有基于多字符输入状态机方法相比,性能提高约62%。提出一个面向100Gbps网络的协议识别加速方法以进一步提高识别引擎的处理性能。该方法首先对L7-filter规则集进行分析,总结正则表达式协议特征中广泛存在的模式;然后针对现有多字符状态机在输入字符宽度较大时产生状态机规模膨胀的问题进行研究;最后使用分而治之的策略,通过有针对性的数据模型、算法优化和匹配架构设计等研究以达到提高处理能力的目的。基于Virtex6 FPGA的实验表明,原型系统在保证识别准确率的前提下能够提供约115Gbps吞吐率,最多可以识别约850个互联网应用协议。