论文部分内容阅读
网络嗅探系统是一种软硬件结合,通过分析捕获网络上的数据,达到掌握整个网络中信息传输的设备系统。嗅探对于掌握网络数据是一种有力手段,尤其在拓扑结构复杂的局域网中,将网络上需要的数据完整的抓取下来是至关重要的。随着近几年网络技术的迅速发展,复杂的网络拓扑应用越来越广泛,监测网络中数据流的工作也越来越复杂,使用嗅探作为掌控网络的手段尤为重要,至今在网络监测系统中,嗅探已经成为了不可或缺的部分。嗅探系统是基于网络传输中产生的实际数据作为原始数据进行嗅探,实时分析网络通信。与基于操作系统上层数据的监测系统相比,基于网络数据的嗅探系统成为了网络监测系统的主流。但是随着网络技术的飞速发展,流量压力与网络带宽的不断增加,这种嗅探技术面临着高速网络传输所带来的挑战。在高速网络中,数据包捕获的效率不高是传统的基于网络的监测系统的难题。针对这个挑战,在这方面国际上有许多先进的技术,其核心是数据处理算法的改进,底层数据的DMA拷贝实现,其中比较著名的技术如NAP I及LibTrace等。文主要针对传统嗅探方式提出了改进方案,并基于改进后的方案设计了一个新型的网络数据嗅探监测系统,旨在使用通用设备并将嗅探性能尽可能提高,以达到不丢包的目的。本文基于Linux平台提出了一种新型的嗅探库一一Netingale。目前这方面的技术中,Linux内采用了NAPI机制、一些程序采用了数据被动捕获的理念及思想、Lawrence Berkeley Laboratory的Network Research Group应用Linux的BPF机制开发了用于捕获网络数据的LibPcap库和Pcap标准、以及A. Biswas总结之前零拷贝技术和半轮询技术的发展,设计出DMA-ring网络报文捕获机制。我们的工作是建立在这些技术基础上进行的。本文的主要工作如下:●改进了LibPcap的数据捕获机制:通过LibPcap的数据捕获机制——BPF,分析其捕获效率低下的原因,在此基础上对NAPI机制、缓冲机制提出一种改进方案。传统的NAPI机制在应对数据流量压力较小的网络中具有很好的稳定性,但是这种机制在应对较大数据流量的网络环境下会产生大量丢包的情况;改进后的机制将使用CPU的多线程处理机制,能提高设备轮询的效率。LibPcap在嗅探数据时使用的缓冲机制过程中,使用到了两次复制的过程,高速网络环境中在复制的过程会导致丢包;改进后的缓冲机制实现零拷贝的思想,通过mmap等方法实现绕过数据拷贝,并且使用DMA-ring的思想,设计一种环形缓冲队列代替LibPcap的缓冲队列。这两种方法改进缓冲机制可提高软件嗅探的性能。●提出了一种新型的嗅探系统中间件Netingale:使用数据被动捕获的方式,分析Linux内核源码,并基于LibPcap的开源程序,实现上述的改进方案。在实现Netingale的工作中,Linux内核会对捕获的数据进行处理。改进后的方案将尽可能减少Linux内核对数据的处理流程,并通过优化LibPcap、BPF的流程,达到更快的数据处理效率。●基于Netingale实现了千兆网络中的嗅探系统RACOON:从系统的应用环境入手分析,设计网络拓扑图、搭建系统运行网络环境及软硬件环境、部署RACOON系统、在嗅探机端编写抓包程序并在控制机端编写系统控制应用,最后实现整个系统。●设计实验测试RACOON的嗅探性能:通过小型的千兆局域网模拟上述环境进行试验设计,将RACOON与当今多个软件进行同等环境下的测试,并对比测试结果分析性能。实验从最通用的网络环境出发,通过长时间大量反复试验,统计实验数据并对抓包率/丢包率数据进行数理统计,得出RACOON系统对比不同平台下的不同软件的嗅探性能优劣的结论来验证RACOON嗅探的性能。