参考的是这个大牛的文章:http://blog.csdn.net/fan_hai_ping/article/details/6705170
系统环境:centos6.5 开发版
PF_RING版本:PF_RING-5.6.2
0. 卸载系统自带的网卡驱动
编译安装PF_RING之前需要卸载原来的网卡驱动,卸载之前使用ethtool命令查看当前网卡的类型和驱动版本。
# ifconfig //查看网卡的名称,如果是单网卡一般是eth0,双网卡的话,找到你要使用pf_ring的网卡名字替换下面的eth0
注:如果使用ssh远程卸载驱动会造成网络不能连接,务必现场操作。
1. 首先安装:numactl-2.0.3
2. 编译安装PF_RING内核模块
解压缩PF_RING安装包,进入到Kernel目录下编译和安装内核补丁。
# tar -zxf PF_RING.4.7..tar.gz
insmod
[min_num_slots=x][enable_tx_capture=|][enable_ip_defrag=|][quick_mode=|]
加载pf_ring内核模块,进入/lib/modules/
# sodu insmod pf_ring.ko transparent_mode= //最好设置一下,官方解释是2的性能最好,但是有大神测试后发现差别并不是很大
具体的mode取值的测试可以参考这个链接:
当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
如果需要使用libpcap抓包分析,请卸载之前安装的libpcap,然后进入/userland/libpcap-xxx-ring/目录下配置、编译和安装驱动。
卸载原来的libpcap:
# rpm -qa libpcap //查看安装的libpcap,如果有libpcap则强制卸载
安装pf_ring的libpcap:
# cd ../libpcap
注:为了使用PF_RING的优点,请使用PF_RING使能的libpcap.a重新编译应用。
4. 编译网卡的驱动
进入到drivers目录下,根据ethtool -i ethx命令查看的网卡类型和驱动进入指定的目录进行编译和安装。
# cd /root/soft/PF_RING/PF_RING-5.6./drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src
安装网卡驱动,进入到目录lib/modules/
//网卡所在目录: /root/soft/PF_RING/PF_RING-5.6.2/drivers/PF_RING_aware/intel/e1000e/e1000e-2.0.0.1/src
安装完毕,使用dmesg命令查看驱动信息:
# dmesg | grep Ethernet
5. 测试网络的接收的包数
进入到userland/examples目录编译例子程序。
# cd
注:使用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
手机扫一扫
移动阅读更方便
你可能感兴趣的文章