zoukankan      html  css  js  c++  java
  • 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.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模块的安装。

    # 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
  • 相关阅读:
    谈谈Nullable<T>的类型转换问题
    MiniProfiler使用方法
    捕获变量
    web服务相关的问题或技巧
    对接mysql数据库遇见的一些问题
    委托
    导出到Excel
    斐波那契数列的运算时间
    .net framework摘抄与理解
    sql 语句
  • 原文地址:https://www.cnblogs.com/etangyushan/p/3679662.html
Copyright © 2011-2022 走看看