centos6.5下PF_RING安裝方法

參考的是這個大牛的文章:http://blog.csdn.net/fan_hai_ping/article/details/6705170
node

系統環境:centos6.5 開發版vim

PF_RING版本:PF_RING-5.6.2centos

 

0. 卸載系統自帶的網卡驅動網絡

編譯安裝PF_RING以前須要卸載原來的網卡驅動,卸載以前使用ethtool命令查看當前網卡的類型和驅動版本。ssh

# ifconfig  //查看網卡的名稱,若是是單網卡通常是eth0,雙網卡的話,找到你要使用pf_ring的網卡名字替換下面的eth0
 # ethtool -i eth0  //查看網卡的驅動名稱
 # lsmod | grep e1000e //查看網卡驅動是否存在
 # rmmod e1000e //卸載電腦自動安裝的網卡驅動 此處爲e1000e驅動

注:若是使用ssh遠程卸載驅動會形成網絡不能鏈接,務必現場操做。tcp

 

1. 首先安裝:numactl-2.0.3性能

2. 編譯安裝PF_RING內核模塊測試

解壓縮PF_RING安裝包,進入到Kernel目錄下編譯和安裝內核補丁。ui

# tar -zxf PF_RING.4.7.0.tar.gz # cd PF_RING.4.7.0/ # make //直接在跟目錄下面make,進行所有編譯
 # cd PF_RING.4.7.0/kernel # make # sudo make install //內核安裝須要root用戶權限
 insmod <PF_RINGPATH>/kernel/pf_ring.ko [transparent_mode=0|1|2] [min_num_slots=x][enable_tx_capture=1|0][enable_ip_defrag=1|0][quick_mode=1|0]

 

加載pf_ring內核模塊,進入/lib/modules/<redhat-version>/kernel/net目錄,能夠看到有pf_ring目錄,進入到該目錄下進行PF_RING模塊的安裝。spa

# sodu insmod pf_ring.ko transparent_mode=1   //最好設置一下,官方解釋是2的性能最好,可是有大神測試後發現差異並非很大

具體的mode取值的測試能夠參考這個連接:

http://jaseywang.me/2015/02/28/%E9%80%9A%E8%BF%87-tcpcopypf_ring-%E5%AF%B9-bcm-5719-%E5%B0%8F%E5%8C%85%E5%81%9A%E7%9A%84%E5%A4%9A%E7%BB%84-benchmark/

 

當PF_RING激活時,會建立/proc/net/pf_ring目錄,使用cat命令查看pf_ring的屬性信息:

# cat /proc/net/pf_ring/info

注:爲了編譯PF_RING內核模塊,你須要安裝Linux內核的頭文件(或者內核源代碼)。

 

3. 編譯安裝PF_RING所需依賴

進入到用戶空間庫userland/lib下,編譯和安裝。

# cd ../userland/lib # ./configure # make # sodu make install

 

若是須要使用libpcap抓包分析,請卸載以前安裝的libpcap,而後進入/userland/libpcap-xxx-ring/目錄下配置、編譯和安裝驅動。

卸載原來的libpcap:

# rpm -qa libpcap          //查看安裝的libpcap,若是有libpcap則強制卸載
 # rpm --nodeps -e libpcap //按照原文的報錯,沒有--nodefs選項,使用的是--nodeps,不驗證包依賴性, –e 選項,意思是擦除erase  

 

安裝pf_ring的libpcap:

# cd ../libpcap # ./configure # make # sudo make install

注:爲了使用PF_RING的優勢,請使用PF_RING使能的libpcap.a從新編譯應用。

 

4. 編譯網卡的驅動

進入到drivers目錄下,根據ethtool -i ethx命令查看的網卡類型和驅動進入指定的目錄進行編譯和安裝。

# cd /root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src # make # sodu make install

 

安裝網卡驅動,進入到目錄lib/modules/<redhat-version>/kernel/drivers/net下進行網卡驅動安裝。

//網卡所在目錄: /root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src
 # sodu insmod e1000e.ko  //安裝pf_ring網卡驅動
 # sodu modprobe e1000e //只能載入/lib/modules/<kernel ver>/中模塊

 

安裝完畢,使用dmesg命令查看驅動信息:

# dmesg | grep Ethernet

 

5. 測試網絡的接收的包數

進入到userland/examples目錄編譯例子程序。

# cd <PF_RING PATH>/userland/examples # make # ./pfcount -i eth0     //捕獲eth0網口的數據報文

注:使用drivers/intel/ixgbe下的驅動(支持DNA的ixgbe驅動的網卡)+DNA驅動技術能夠達到線速採集,PF_RING模塊必須在DNA驅動以前加載。

 

6. 常見錯誤及解決方法

    1. 編譯網卡模塊驅動錯誤

       驅動所在目錄:/root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src

       錯誤信息:/root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src/kcompat.h:3039: error: conflicting types for ‘netdev_features_t’

解決方法:vim kcompat.h +3039    // 註釋掉第3039行

    2. 網卡驅動模塊所在目錄:/root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src

加載網卡驅動模塊:insmod e1000e.ko
相關文章
相關標籤/搜索