ntop linux,Linux下開源監控軟件Ntop的性能提升方案

摘要: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有成倍的提高,而且在千兆環境下幾乎不丟包。

cc77d0e79cd229fbecfb9444e76a4a8c.png

對于內核必須熟悉的可以用下面的方法,首先給內核源碼打補丁(以下內容需要讀者具備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

af6420506e37d99a0dbd89615cadf1a5.png

3e33cccccb31ca7b8e548b11fe0d6f21.png

這里按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。

bf0d421da995e8345e38a78885a8fb05.png

當你看到如圖4所示的輸出后就預示著這次對Ntop的性能提上改造成功,這時你的Ntop系統在數據包捕獲性能上就比先前有所提高,能夠適應更加大流量的網絡環境。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282810.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282810.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java異常處理教程

異常是在沒有定義正常執行路徑時在Java程序的執行期間可能出現的條件。Java通過將執行操作的代碼與處理錯誤的代碼分離來處理錯誤。 當發生異常時,Java會創建一個包含有關異常的所有信息的對象,并將其傳遞給相應的異常處理代碼。有關異常的信息包括異常的…

性能優化8--內存泄露

一.根源: 內存泄露簡單說就是已經沒有用的資源,但是由于被其他資源引用著無法被GC銷毀。 二.內存泄露常見場景 1.單例導致內存泄露 單例的靜態特性使得它的生命周期同應用的生命周期一樣長,如果一個對象已經沒有用處了,但是單例還…

那些年,登山徒步記錄,立貼

2018年1月-9月份暫無數據。(慘無人道,已經喪失了自我。) 10月份2017年2月份02月12日 25.00KM 牛木外線3月份暫無數據。 4月份1.04月09日 16.00KM 火鳳線 5月份1.05月06日 20.00KM 漁帽線(第一機耕路) 6月份1.06月11日 …

記一次 .NET 某打印服務 非托管內存泄漏

一:背景 1. 講故事前段時間有位朋友在微信上找到我,說他的程序出現了內存泄漏,能不能幫他看一下,這個問題還是比較經典的,加上好久沒上非托管方面的東西了,這篇就和大家分享一下,話不多說&#…

android靜態方法如何測試,android – 如何使用mock()和spy()測試靜態方法

通常情況下,如果你最終使用PowerMock,這是一個很好的跡象,表明你最有可能是錯誤的方式.如果不是直接引用畢加索,而是創建一個組件,它的職責是加載圖像,讓我們說類ImageLoader.這會給你什么?>關注點分離:如果明天你決定轉移到Glide,你不應該改變你使用…

mysql經典的8小時問題-wait_timeout

2019獨角獸企業重金招聘Python工程師標準>>> 前段時間 現網突然頻繁報出 連接不上數據庫,偶滴的妖孽,其他地方都是用mysql,也沒遇到這個問題呀。 java.io.EOFExceptionat at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913…

Chrome DevTools — Network

記錄網絡請求 默認情況下,只要DevTools在開啟狀態,DevTools會記錄所有的網絡請求,當然,記錄都是在Network面板展示的。 停止記錄網絡請求 點擊Stop recording network log紅色圖標,當它變為灰色時,表示DevT…

Blazor University 中文版網站已上線

在學習 Blazor 的過程中,找到了一個網站 Blazor University(https://blazor-university.com)。發現網站內容非常詳實,正像首頁所說的:通過瀏覽本網站中的信息,我打算帶您從完全的新手到Blazor的所有方面的專…

android:paddingtop 百分比,相對層中的百分比寬度

相對層中的百分比寬度我正在為登錄進行表單布局。Activity在我的Android應用程序中。下面的圖片是我希望它看起來的樣子:我能夠通過以下方式實現這個布局XML..問題是,這有點麻煩。我不得不對主機EditText的寬度進行硬編碼。具體而言,我必須具…

MySQL 查看表結構簡單命令

一、簡單描述表結構,字段類型 desc tabl_name; 顯示表結構,字段類型,主鍵,是否為空等屬性,但不顯示外鍵。 例如:desc table_name 二、查詢表中列的注釋信息 select * from information_schema.columns wher…

簡單獲取任意app的URL Schemes

簡單說明 最近業務需要,一直在查詢App的scheme相關信息,找到一種比較可靠的方法,分享給大家 步驟如下: 在電腦上使用iTunes下載那個app下載完后,在itunes里點擊這個app,選擇->Show in Finder&#xff0c…

Java中short、int、long、float、double的取值范圍

一、基本數據類型的特點,位數,最大值和最小值。1、基本類型:short 二進制位數:16 包裝類:java.lang.Short 最小值:Short.MIN_VALUE-32768 (-2的15此方)最大值:Short.MAX_…

.Net之接口文檔精度丟失處理

目的最近兩天在給朋友講解如何使用ajax調用接口時候,我發現我用swagger調用接口返回的long類型的數據最后幾位都變成了0(例如:6974150586715898000),本來是以為sqlite數據庫不支持long類型導致我存進去的數據出了問題,然后我使用接…

android 訪問sqlite,android中訪問已有的sqlite數據庫

推薦文章每天進步記錄一點點話說經常性的操作svn出現各種問題,而度娘一直幫倒忙,是不是很手足無措.有時問題還是要記錄下來的.說不定還會有驚喜. 昨天遇到個問題,搜索了一下,發現第一條就是自己寫的.驚呆我了,更驚呆我的是,我是在csdn寫的,為什么在別的網站看到,完全一模一樣..…

Dnslog在SQL注入中的利用

參考文獻:www.anquanke.com/post/id/98096https://bbs.pediy.com/thread-223881.htm DNSlog在Web攻擊的利用 在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起DNS請求,這個時候就可以通過DNSlog把想獲得的數據外帶出來。 常用情況 S…

讓泛型的思維扎根在腦海——深刻理解泛型

1.前言往往一些剛接觸C#編程的初學者,對于泛型的認識就是直接跳到對泛型集合的使用上,雖然微軟為我們提供了很多內置的泛型類型,但是如果我們只是片面的了解調用方式,這會導致我們對泛型盲目的使用。至于為什么要使用泛型&#xf…

fgetcsv()函數

fgetcsv()函數。fgetcsv()函數可以讀取指定文件的當前行,使用CSV格式解析出字段,并返回一個包含這些字段的數組。語法格式如下:array fgetcsv(resource $handle [, int $length [, string $delimiter [, string $enclosure[,string $escape]]…

android 系統ui修改器,分享兩個效果 - Android 系統 UI 管理

SystemUIManage.gifDimming the System Bars (沉浸模式)知乎 和 Medium 中都使用到了這個效果,作為沉浸式閱讀模式。// This example uses decor view, but you can use any visible view.View decorView getWindow().getDecorView();int uiOptions View.SYSTEM_U…

打游戲要存進度-備忘錄模式

打游戲要存進度-備忘錄模式 學習自 《大話設計模式》 備忘錄模式漫談 備忘錄的這種設計思想是非常常見的,比如說圍棋游戲的悔棋,繪圖軟件的撤銷功能等等,都或多或少的使用了備忘錄模式來處理對象的狀態。 備忘錄(Memento): 在不破壞封裝性的前…

(10.1)Python學習筆記二

1、在項目工程中要模塊化測試一個開發的功能,在測試通過后交付給項目組其他人員繼續開發。要保證代碼開發的性能和效率以及可擴展性。 2、項目工程中的文件夾分類要功能模塊明確清晰,在python中引入某一個 文件夾下的文件可以使用如下方式: t…