Ntop是一款Linux下常用的开源监控软件。它可以监控的数据包括:网络流量、协议使用情况、系统负载、端口状态、数据包发送时间等。正常情况下,它就像一个被动声纳,默默地接收来自网络的各种信息。通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,但是一旦超过Ntop数据,Ntop就无法准确分析网络流量和各种数据,影响网络管理。下面介绍一种提高Ntop性能的方法。通常Ntop的抓包分析功能都是由Ntop自己完成的,但是他们都是使用libpcap来实现抓包的,速度都不能超过100M。分析了libpcap的流程,我们了解到第一个数据包经过网卡硬中断→软中断→内核协议栈→系统调用→socket→->libpcap接口→用户申请,在这个过程中,可以看出数据的副本很多,所以libpcap高速抓包丢包严重也就不足为奇了。对于千兆网络,需要使用PF_RING技术来接收数据包。PF_Ring运行在Linux的内核层。架构图如下图所示。它采用了类似的零拷贝技术,PF_Ring从网卡获取数据的速度比libpcap快了一倍,在千兆环境下几乎没有丢包。对于必须要熟悉内核的朋友,可以使用下面的方法,先给内核源码打补丁(以下内容需要读者有Linux内核编译基础)。1).zcatlinux-2.6.25-1-686-smp-PF_RING.patch.gz|补丁-p02)。在/usr/src/目录下的linux-2.6.25目录下,编辑Makefile,添加最后一个自定义后缀(如-PF_RING):EXTRAVERSION=-PF_RING3).makemenuconfig这里按y选择PF_RING,然后保存修改.config并退出。然后开始编译内核#make#makemodulesinstall编译好的模块#makeinstall注意:在grub中添加bzImage启动新内核(注意新添加的内核不是默认启动项)(使用makeinstall避免手动的复制bzImage和生成initrd的繁琐过程)进入libpcap-1.1.1-ring目录,修改源码,设置pf_ring的内核ringbuffer为2M,默认0.5M,然后修改MakeFile,指向安装目录tousr/,默认指向usr/local。然后编译make,然后makeinstall;这样,将libpfring.so、pfring_e1000e_dna.h、pfring.h、libpfring.a复制到usr/include或usr/lib中,并用libpcap-1.1.1-ring的库文件替换掉原来的libpcap库文件;如果你觉得这种修改内核的方法比较复杂,这里推荐一个简单的方法给你:去www.ntop.org,下载PF_RING-5.1.0.tar.gz包,解开PF_RING运行即可它作为一个独立的模块,不需要打补丁到内核,直接make就可以了。#insmod./pf_ring.koloadmodule#dmesg|grepRING[PF_RING]WelcometoPF_RING3.9.3#这部分是PF_RING初始化的输出[PF_RING]Ringslots4096[PF_RING]Slotversion9[PF_RING]CaptureTX是[RX+TX][PF_RING]IPDefragmentNo[PF_RING]Initializedcorrectly[PF_RING]registered/proc/net/pf_ring/[PF_RING]successfullyallocated815104bytesat0xd0ad4000#每次运行PF_RING程序后都会输出这样的调试信息[PF_RING]allocated4115slots[slot_len=198][revF_RING=81/proc/net/pf_ring/2849-eth0.0注意机器刚启动的时候ls/proc/net/pf_ring/是看不到这个目录的,只有需要PF_RING的程序第一次运行的时候才会生成这个目录和安装了一个info文件,在shell中输入:#dmesg|grepPF_RING来验证配置是否成功,见图4。当看到图4所示的输出时,说明Ntop性能提升成功。这时候你的Ntop系统已经提升了抓包性能,可以适应更大的流量。网络环境。
