论文部分内容阅读
随着互联网带宽的不断增长,网络安全技术面临越来越繁重的数据监测任务。而数据包被动捕获技术在是网络安全领域一切监测应用的基础,例如网络检测软件、各种入侵检测系统、防火墙以及网络调试等应用,都需要数据包捕获技术。由于目前流行的操作系统存在缺陷(Linux等),在千兆网环境下的数据包捕获应用往往性能很差,丢包率相当严重。一种将网卡接收和处理数据包的方式由中断模式改为设备轮询模式的方法,被提出来解决千兆网环境下的数据包捕获的问题。基于这一思路,NAPI(基于轮询机制的网络数据处理机制)技术被提出来实现这一改进:该技术通过一次硬中断来启动轮询机制,使得CPU在处理中断方面的的负担大为降低。在此基础上,Luca Deri等人提出了一种新的方法:PF_RING技术,该技术融合了设备轮询机制、NAPI技术和零拷贝技术。通过PF_RING技术,即使一台常规的PC机也能在千兆网环境下捕获所有数据而不产生丢包。PF_RING以通用性为目标,通过封装使得使用Socket(套接字)函数和libpcap(专用数据包捕获函数库)函数的应用程序可以直接使用该技术。但是PF_RING技术存在占用内存大和数据拷贝等问题。因为PF_RING的适用性要求,使得该方案并没有真正的实现零拷贝。针对这一问题,提出了在PF_RING基础上做出修改的方案:主要包括取消环形缓冲区、通过内存映射直接使用DMA(直接内存访问)缓存等。修改后的PF_RING虽然在对硬件通用性方面不如原本的PF_RING,但真正实现了零拷贝。实验显示,修改后的PF_RING,对高速网络下的数据包捕获应用,性能表现有进一步的提高,拥有更好的资源利用效率。修改方案也为将来在该领域提出更好的高速网络数据包捕获方案做出准备。