自由转载 ^_^ 同时请注明原文出处:http://www.cnblogs.com/wangvsa/archive/2012/07/18/2598326.html
在上一篇文章中使用tcpdump实现了基于ip的流量统计,在选择tcpdump之前我参考了许多文章论文,也在网上
搜索到了很多相关软件(大多是linux的,也有部分软件有windows版本),在此简单整理一下。
这些软件按其功能大体可以分为两类:一类主要提供捕获数据包的功能,这类软件中有的可以作为logger使用,
有的则不行,即其只能实时的现实当前网络状况;另一类主要提供了分析功能,比如根据用户需求提取相应信息,根
据数据来图形化等。
一、数据包捕获软件
关于数据包的捕获的实现方式有多种:基于libpcap库、使用零拷贝技术、使用PF_RING接口、直接使用系统调用
等。直接使用系统调用是效率最低、丢包率最高的。其次,根据网上的文章中所介绍来看,使用零拷贝技术效率最高、
丢包率最低。我实测过使用零拷贝的netsniff-ng和基于libpcap库的tcpdump,并没有太大差距,都没有出现丢包现象。
测试环境是千兆网卡满负荷(与上篇文章同一个机器~.~)。
下面逐个介绍一下:
1.tcpdump - dump traffic on a network
这个应该软件应该是使用比较广泛,效率较高,基于libpcap库实现,它可以将捕获到的数据包信息记录到一个pcap
文件当中去,然后以后在分析。tcpdump支持filter可以有用户设置过滤器。它还提供了很多实用的选项,比如可以设置记
录时间间隔、记录文件大小限制、记录数据包信息大小限制、达到一定时间或大小时执行某命令等。同时,tcpdump可以
读取pcap文件(即使其变成人眼可识的文字形式),读取时也有多种选项可以设置。
应用方法就很多了,我上一篇文章就是用它作为logger,然后自己统计流量。
2.netsniff-ng - the packet sniffing beast
这个工具是使用零拷贝的,效率很高,正如其介绍一样beast。。。netsniff-ng实际是一个工具套装,其包含了很多小
工具如:
trafgen, a high-performance zero-copy network traffic generator
flowtop, a top-like netfilter connection tracking tool
同时,netsniff-ng也支持bpf,而且还支持pcap文件格式输入及读取。
下图使用这个工具测试网卡最高传输速率,方法是先用trafgen产生traffic让网卡满负荷,在用netsniff-ng抓包分析,详细
介绍点这(里面还有一些基础tcp/ip知识,很实用)
[root@shopper2 tmp]# trafgen -d p1p1 -c /etc/netsniff-ng/trafgen/nst_udp_pkt_1472.txf -n 1000000 -b 0
1 [root@emachine shm]# netsniff-ng -i p32p1 -o /dev/shm/c1.pcap -s -n 1000000 -b 0
2
3 netsniff-ng 0.5.6.0
4 RX: 238.41 MB, 122064 Frames each 2048 Byte allocated
5 OUI UDP TCP ETH
6 IRQ: p1p1:48 > CPU0
7 PROMISC
8 BPF:
9 (000) ret #-1
10 MD: RX SCATTER/GATHER
11
12 1000000 frames incoming
13 1000000 frames passed filter
14 0 frames failed filter (out of space)
15 [root@emachine shm]#
16
17 [root@emachine shm]# pwd
18
19 /dev/shm
20 [root@emachine shm]#
21
22 [root@emachine shm]# ls -al
23
24 total 1497072
25 drwxrwxrwt 2 root root 60 Oct 24 06:19 .
26 drwxr-xr-x 22 root root 4100 Oct 24 05:55 ..
27 -rw------- 1 root root 1530000024 Oct 24 07:34 c1.pcap
28 [root@emachine shm]#
29
30 [root@emachine shm]# capinfos ./c1.pcap
31
32 File name: ./c1.pcap
33 File type: Wireshark/tcpdump/... - libpcap
34 File encapsulation: Ethernet
35 Packet size limit: file hdr: 65535 bytes
36 Number of packets: 1000000
37 File size: 1530000024 bytes
38 Data size: 1514000000 bytes
39 Capture duration: 12 seconds
40 Start time: Mon Oct 24 07:34:22 2011
41 End time: Mon Oct 24 07:34:35 2011
42 Data byte rate: 123044025.00 bytes/sec
43 Data bit rate: 984352199.97 bits/sec
44 Average packet size: 1514.00 bytes
45 Average packet rate: 81270.82 packets/sec
3.iptraf - Interactive Colorful IP LAN Monitor
这个软件的功能也比较多,他可以实时检测,并提供多种监测机制,可以使用filter,可以作为logger。
我没有在满负荷的千兆网卡上测试,但是我看了一下这个工具的源代码,应该是直接使用了系统调用来捕捉
数据包。下面这个界面可以选择检测机制、设置filter、设置logger文件名及路径等。
运行界面如下:
4.argus - auditing network activity
这个软件也是功能强大,官网上说了很多它的使用案例,介绍也是比较详细。这个软件记录数据包信息的时候使用自己
的文件格式,他同时也支持pcap文件格式,可以将pcap转成argus格式,但是反过来不行。还有一点要注意,转换不一定都
能成功,比如使用tcpdump记录时限制了数据包的大小,此时转换就会失败。
argus包含argus-server和argus-client。其中argus用来抓包(也支持filter)。这个软件还有一个特点就是,
argus-server抓包时可以打开一个端口,然后client通过这个端口连接过来然后读取server抓的包的信息。
argus-clinet包含很多解析分析工具(十多种)。可以读取argus(压缩的也可以读)、pcap等格式的文件然后再次过
滤文件中一些不需要的内容再写到文件中(可以存储为文本格式或arugs格式)。
5.iftop - display bandwidth usage on an interface by host (没有官网)
这个软件不提供logger功能,但是能以比较简洁的形式将当前网络状态展示出来(与其他ip的数据交换)。
具体使用请man~ 使用截图如下:
以上工具都是我使用过的,还有很多没有使用过的工具,也在以后的文章中整理,关于第二类分析工具相关软件在下一篇文章中整理。