论文部分内容阅读
近十五年里因特网普及之迅速,据报道中国的网络用户由96年的10万增长到现在的3.38亿,可见人们已经非常依赖网络这个载体来交换信息和处理事务。同时基于网络的应用也日渐多元化,如:网上购物、聊天、电子邮件、博客等。但是在含有众多应用的网络环境中也存在着各种隐患,网站遭受黑客攻击,用户数据的泄露等事件频繁发生。为了有效地应对复杂的网络环境,各种防范软件相应浮出水面,如:网络监控系统,杀毒软件,防火墙软件等。无论上述的网络应用还是网络安全领域的各种防范软件都依靠于底层的数据包捕获,可见数据包捕获在高速发展的网络领域中占据的重要地位。传统的数据包捕获过程中的中断处理,协议栈的处理和数据从内核空间到用户空间的拷贝等过程都需要处理器资源。在网络传输速度有很大提升的今天,对数据的实时采集往往由中断频率过高和数据处理速度过慢造成丢包现象,直接影响到基于其工作的系统的性能。如何高效地数据包捕获成为很多学者研究的课题。本文所研究的数据包捕获方案是以某企业网络监控系统为背景,依靠以太网的广播特性实现的。重点研究的是在高流量的网络环境下对数据包捕获性能的改善。我们首先通过对数据包捕获流程的分析寻找出数据捕获过程中影响其性能的各种因素,然后根据这些因素将目前在数据包捕获领域出现的改进方案进行归类,最后选择零拷贝的思想实现网络监控系统中的底层数据捕获部分,并在文章的最后一部分对此捕获系统进行了性能上的测试。高效捕获系统的具体实现是基于内核提供给用户空间的内存映射接口去完成的。我们的主要工作有三点:第一,需要修改网卡驱动源码,将数据包放入指定的内核空间中;第二,设计内核共享缓冲区的数据结构,以便实现数据包的填充和释放的同步;第三,提供给后期编程者数据包获取接口。在以后的工作中,我们还要设计一个精简的基于应用层的“网络协议栈”,来完善数据包的处理功能。