歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> libpcap丟包原理分析及Fedora 9 內核2.6.25.14下安裝PF-RING的詳細過程

libpcap丟包原理分析及Fedora 9 內核2.6.25.14下安裝PF-RING的詳細過程

日期:2017/2/28 16:19:10   编辑:Linux教程

看到網上有人講解Fedora 9下安裝PF-RING的過程,都是幾年前的了,比較老了,我安裝PF-RING就是為了使用libpcap庫,libpcap的原理是通過socket將數據包從網卡 捕獲數據包,然後在提交給應用程序,和winpcap很大的區別是,libpcap采用的是2個緩沖區,內核類似的一個乒乓操作。winpcap采用的是環狀緩沖區,在winpcap下當網卡有數據到來時,npf.sys就會將數據拷貝到內核緩沖區中,而內核驅動實際上是一個Ndis協議驅動,當內核緩沖區的數據包大小達到一個阈值mintocopysize時,它就會將數據包拷貝到應用緩沖區中,kernelbuffer和userbuffer,及mintocopysize都提供了函數進行設置的。那麼為什麼在windows平台進行包捕獲的時候,千兆網的條件下,都很少有包丟失呢,為什麼在linux環境下進行包捕獲,丟包率很大,這就要仔細分析源碼了,winpcap的npf.sys是一個Ndis協議驅動,它和TCP/IP協議是同一層的,即采用winpcap捕獲數據包,數據包就不需要經過tcp/ip層了,而libpcap是linux下的捕獲包,他是在應用層之上的,及在tcp/ip協議上,本來通過socket可以捕獲包的,libpcap不過是對socket進行了一次封裝,在socket上面有提供了一層接口,方面用戶的調用。libpcap捕獲包的流程如下:

Linux 的 libpcap 詳細流程為:網卡硬中斷 -> 軟中斷 -> 內核協議棧 -> 系統調用 ->socket 接口 ->libpcap 接口 -> 用戶應用程序,在這個流程中,可以看出數據的 copy 比較多。所以 libpcap 抓包丟包嚴重也不用感到奇怪了,為了減少丟包率,采用 libpcap-pfring 方法。

下面講解 Fedora 9 下如何安裝 PF-RING ,安裝過程如下:

1)cd /home 然後再這裡建立一個目錄 mkdir rfring-libpcap

2)cd rfring-libpcap

3)svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/ 下載 PF-RING

4)PF-RING 下載完後, cd /PF-RING/legacy 下, vi mkpatch.sh 修改內核版本號 ={SUBLEVEL : -25.14}

5)./mkpatch.sh 下載內核到 workspace 中,生成目錄 linux-2.6.25-14-686-smp-PF_RING 和補丁文件 linux-2.6.25-14-686-smp-PF_RING.patch.gz 。

6) 按下面操作

mv linux-2.6.25-14-686-smp-PF_RING/ linux-2.6.25-14-686-smp-PF_RING.bak/

zcat linux-2.6.25-14-686-smp-PF_RING.patch.gz | patch -p0

7 ) cd linux-2.6.25 編譯內核

#vi Makefile 在這個地方加上一個自定義的後綴: EXTRAVERSION = -PF_RING ,這會顯示在界面啟動的時候看到

Copyright © Linux教程網 All Rights Reserved