论文部分内容阅读
随着计算机应用的普及和网络的快速发展,网络流量和带宽在急速增长,各种网络应用系统对网络安全的要求也愈来愈高。尤其是随着光纤宽带的应用,网络带宽甚至已经达到了万兆水平,一些传统的网络报文捕获工具(如Libpcap)已经无法满足当前网络应用在高速网络环境下对报文捕获的需求。为了给路由器、防火墙、IDS等系统提供一个可靠的报文捕获系统,那么研究高流量,高负载情况下的报文捕获技术就显得极为迫切和需要了。目前解决这一问题的方法主要分为两种。第一种是从硬件着手,设计专用的网络数据包捕获设备,将报文捕获和处理终端分离开来,这样做虽然极大的提升了报文捕获和处理的效率,但是也带来的高昂的硬件成本。第二种是采用软件的机制,通过对操作系统内部的数据处理流程进行优化和改进来达到高效率的报文捕获并且降低系统资源的消耗,这样就极大的节约设施成本并且也具有很大的平台通用性。本文参考国内外的相关文献和已有的研究成果,通过对Linux内核和相关网络设备技术的研究,分析了数据包在整个操作系统接收过程的瓶颈因素,并通过实现一种高性能的报文捕获平台来解决这些瓶颈因素,使得网络数据包的捕获性能得到了很大的提高。本人主要工作和创新点如下:1.首先研究Linux操作系统协议栈的内部特点和对网络报文的处理流程,其次对传统报文捕获工具Libpcap也进行了特点分析2.建立了传统Linux内核协议栈报文接收流程的性能模型,从网络驱动层和内核协议栈处理两方面着手分析,对高速数据包接收的瓶颈因素进行了归纳。3.在前几章研究分析的基础之上,设计了一种高性能的零拷贝报文捕获平台ZeroC。ZeroC由三大部分组成,一部分是网卡驱动模块,另一部分是位于内核空间的零拷贝模块,最后一部分是用户接口模块,并且兼容Libpcap的接口。4.对ZeroC和Libpcap两种报文捕获平台进行测试,并对测试的数据结果进行对比分析。