摘要:Ntop是一款Linux下常見的開源監控軟件,它可以監測的數據包括:網絡流量、使用協議、系統負載、端口情況、數據包發送時間等。正常情況下它工作的時候就像一部被動聲納,默默的接收看來自網絡的各種信息,通過對這些數據的分析,網絡管理員可以深入了解網絡當前的運行狀況,不過一旦超過Ntop數據包的處理能力,Ntop隨即出現性能問題,從而導致Ntop無法準確分析網絡流量和各種數據,對網絡管理造成影響。下文介
Ntop是一款Linux下常見的開源監控軟件,它可以監測的數據包括:網絡流量、使用協議、系統負載、端口情況、數據包發送時間等。正常情況下它工作的時候就像一部被動聲納,默默的接收看來自網絡的各種信息,通過對這些數據的分析,網絡管理員可以深入了解網絡當前的運行狀況,不過一旦超過Ntop數據包的處理能力,Ntop隨即出現性能問題,從而導致Ntop無法準確分析網絡流量和各種數據,對網絡管理造成影響。下文介紹了一種提高Ntop性能的方法。
通常Ntop的抓包分析功能,是通過Ntop自己完成,但它們都是通過libpcap來實現抓包,且速度不能超過100M,分析一下libpcap的流程我們明白,首先數據包通過路徑為網卡硬中斷→軟中斷→內核協議棧→系統調用→socket→->libpcap接口→用戶應用程序,在這個流程中,可以看出數據的copy比較多,所以在高速率下libpcap 抓包丟包嚴重也不用感到奇怪了。
對于千兆的網絡就需要采用PF_RING技術來接受數據包了,PF_Ring運行于Linux的內核層,體系結構圖如下圖所示,它采用類類似零拷貝技術,而且PF_Ring從網卡獲取的數據的速度比libpcap有成倍的提高,而且在千兆環境下幾乎不丟包。
對于內核必須熟悉的可以用下面的方法,首先給內核源碼打補丁(以下內容需要讀者具備Linux內核編譯基礎)。
1).zcat linux-2.6.25-1-686-smp-PF_RING.patch.gz | patch -p0
2).在/usr/src/目錄下的linux-2.6.25目錄中,編輯Makefile 在這個地方加上一個自定義的后綴(比如-PF_RING):EXTRAVERSION?=?-PF_RING
3).make menuconfig
這里按y選上PF_RING,然后保存修改到.config退出。然后就開始編譯內核#make
#make?modules?安裝編譯好的modules
#make?install
注意:將bzImage添加到grub中,以便用新內核啟動(注意,新添加的內核不是默認啟動項)
(用 make install 可以免去手動復制bzImage并生成initrd的繁瑣過程)
進入libpcap-1.1.1-ring目錄下,修改源碼,將pf_ring的內核ring緩沖區設為2M,默認0.5M,然后修改MakeFile,將安裝目錄指向usr/,默認指向usr/local。接著編譯make,然后make install;這樣,就將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 以獨立模塊運行就成了,沒有必要打 patch 到內核后直接make就可以。#insmod?./pf_ring.ko?加載模塊
#?dmesg?|?grep?RING
[PF_RING]?Welcome?to?PF_RING?3.9.3?#?這一部分是PF_RING初始化時輸出的
[PF_RING]?Ring?slots?4096
[PF_RING]?Slot?version?9
[PF_RING]?Capture?TX?Yes?[RX+TX]
[PF_RING]?IP?Defragment?No
[PF_RING]?Initialized?correctly
[PF_RING]?registered?/proc/net/pf_ring/
[PF_RING]?successfully?allocated?815104?bytes?at?0xd0ad4000?#?以后每次運行PF_RING程序,會輸出這樣的調試信息
[PF_RING]?allocated?4115?slots?[slot_len=198][tot_mem=815104]
[PF_RING]?removed?/proc/net/pf_ring/2849-eth0.0
注意,剛啟動機器時,ls /proc/net/pf_ring/ 是看不到這個目錄的,只有當需要PF_RING的程序第一次運行時,才會生成這個目錄以及一個info文件
安裝完成后在shell下輸入:
#dmesg |grep PF_RING即可驗證是否配置成功,參見圖4。
當你看到如圖4所示的輸出后就預示著這次對Ntop的性能提上改造成功,這時你的Ntop系統在數據包捕獲性能上就比先前有所提高,能夠適應更加大流量的網絡環境。