自由转载 ^_^ 同时请注明原文出处: 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~ 使用截图如下:
以上工具都是我使用过的,还有很多没有使用过的工具,也在以后的文章中整理,关于第二类分析工具相关软件在下一篇文章中整理。