自由轉載 ^_^ 同時請注明原文出處: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~ 使用截圖如下:
以上工具都是我使用過的,還有很多沒有使用過的工具,也在以后的文章中整理,關於第二類分析工具相關軟件在下一篇文章中整理。
