centos6.5下PF_RING安装方法
参考的是这个大牛的文章: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 # ethtool -i eth0 //查看网卡的驱动名称 # lsmod | grep e1000e //查看网卡驱动是否存在 # rmmod e1000e //卸载电脑自动安装的网卡驱动 此处为e1000e驱动
注:如果使用ssh远程卸载驱动会造成网络不能连接,务必现场操作。
1. 首先安装:numactl-2.0.3
2. 编译安装PF_RING内核模块
解压缩PF_RING安装包,进入到Kernel目录下编译和安装内核补丁。
# tar -zxf PF_RING.4.7..tar.gz # cd PF_RING.4.7./ # make //直接在跟目录下面make,进行全部编译 # cd PF_RING.4.7./kernel # make # sudo make install //内核安装需要root用户权限 insmod <PF_RINGPATH>/kernel/pf_ring.ko [transparent_mode=||] [min_num_slots=x][enable_tx_capture=|][enable_ip_defrag=|][quick_mode=|]
加载pf_ring内核模块,进入/lib/modules/<redhat-version>/kernel/net目录,可以看到有pf_ring目录,进入到该目录下进行PF_RING模块的安装。
# sodu insmod pf_ring.ko transparent_mode= //最好设置一下,官方解释是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./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
centos6.5下PF_RING安装方法的更多相关文章
- CentOS6.5下Oracle11G-R2安装、卸载
CentOS6.5下Oracle11G-R2安装.卸载 资源下载地址(包含本人全部安装过程中,系统备份文件):http://download.csdn.net/detail/attagain/7700 ...
- Linux下软件安装方法即路径设置
Linux下软件安装方法即路径设置 http://www.cnblogs.com/edward259/archive/2010/07/02/1770066.html
- centos6.7下编译安装lnmp
很多步骤不说明了,请参照本人的centos6.7下编译安装lamp,这次的架构是nginx+php-fpm一台服务器,mysql一台服务器 (1)首先编译安装nginx: 操作命令: yum -y g ...
- (转载)EhLib 在 Delphi 7 下的安装方法
EhLib 在 Delphi 7 下的安装方法 1.将 EhLib 解压到一个目录,如:E:\VCL\EhLib: 2.将 EhLib 安装目录下 Common 目录.DataService 目录下的 ...
- centos6.7下 编译安装MySQL5.7
centos6.7下编译安装MySQL5.7 准备工作 #-----依赖包及MySQL和boost安装包----- #yum包安装: shell> yum -y install gcc-c++ ...
- Linux(CentOS6.5)下编译安装PHP5.6.22时报错”configure: error: ZLIB extension requires gzgets in zlib”的解决方式(确定已经编译安装Zlib,并已经指定Zlib路径)
本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! 今天在CentOS6.5下编译安装PHP时,一直报错 confi ...
- CentOS6.5_64bit下编译安装MySQL-5.6.23
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/44785511 ************************************** ...
- CentOS6.5下编译安装LAMP环境
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架.该框架能够满足大流量.大并发量的网站需求:当然.也可以直接使用高性能的服务器.高性能的负载均衡硬件以及CDN ...
- elasticsearch-5.2在windows下的安装方法
elasticsearch-5.2.1安装方法 1. 安装java 下载安装java jdk 1.7 以上 配置java环境变量 右击[我的电脑]---[属性]-----[高级系统设置]---[环境变 ...
随机推荐
- python 基础 1.3 使用pycharm给python传递参数及pycharm调试模式
一.通过pycharm 给python传递函数 1. 在pycharm终端中写入要获取的参数,进行获取 1>启动pycharm 中Terminal(终端) 窗口 点击pycharm左下角的图标, ...
- EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见
问题反馈 最近在线上遇到一位老朋友咨询关于EasyPlayer播放器的事情,大概现象就是分别用EasyPlayer和vlc播放大华摄像机的RTSP流,流地址是:rtsp://admin:admin12 ...
- 带有button而且能够运行单击事件的WINFORM窗口,体悟C#的创建过程
using System; using System.Drawing; using System.Windows.Forms; namespace Window{ class Window{ stat ...
- SAP数据表相关
[转]SAP 数据表相关信息 今天用到了根据字段取数据元素描述,以前做过忘啦,在谢兄的帮助下搞定,把他的总结粘出来记住. 存储域(Domain)信息的表为DD01L:存储数据元素(Data Eleme ...
- Django的模型层(2)---多表操作
多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对 ...
- 多线程(一) NSThread
OS中多线程的实现方案: 技术 语言 线程生命周期 使用频率 pthread C 程序员自行管理 几乎不用 NSthread OC 程序员自行管理 偶尔使用 GCD C 自动管理 经常使用 NSOpe ...
- cinder挂载卷的过程原理
LVM名称介绍 PV:物理磁盘 VG:卷组,多个PV可以组成一个VG,一个VG可以划分成多个LV(逻辑卷). PP:物理区块,将一个VG逻辑的划分成连续的小块. LP:逻辑区块,若干个PP组成一个LP ...
- join()方法作用
当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1 废话不多说看代码: package com.toov5.thread; public class JoinThreadT ...
- TYOI 1015 Game:博弈 结论【步数之和的奇偶性】
题意: 明明和亮亮在玩一个游戏. 桌面上一行有n个格子,一些格子中放着棋子. 明明和亮亮轮流选择如下方式中的一种移动棋子(图示中o表示棋子,*表示空着的格子): (1)当一枚棋子的右边是空格子的话,可 ...
- BZOJ 1680 [Usaco2005 Mar]Yogurt factory:贪心【只用考虑上一个】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1680 题意: 在接下来的n周内,第i周生产一吨酸奶的成本为c[i],订单为y[i]吨酸奶. ...