PF_RING 6.0.2在Redhat 6.3 x86_64上编译和安装

前言

本文详细描述Linux下PF_RING的编译和安装过程。

PF_RING版本:6.0.2(当前最新版本)

官方网址:http://www.ntop.org/products/pf_ring/

下载网址:http://sourceforge.net/projects/ntop/files/PF_RING/

Linux系统:Redhat 6.3(x86_64)

GCC版本:GCC 4.4.6

下载PF_RING

1)确认是否安装PF_RING

如果你已经安装pf_ring,你可能需要执行:rmmodpf_ring

如果你不确定你是否安装pf_ring,执行:modinfopf_ring

2)从下载网址下载最新版本的PF_RING:

PF_RING-6.0.2.tar.gz  2014-09-24   21.9MB

上传到安装Redhat 6.3的服务器的/opt目录下。

以root用户登录到服务器:

#cd /opt

#tar zxf PF_RING-6.0.2.tar.gz

#cd PF_RING-6.0.2

编译和安装PF_RING

1)编译pf_ring内核文件

进入内核模块目录:

cd /opt/PF_RING-6.0.2/kernel

编译pf_ring内核模块:

make &&make install

在RHEL 6.3中PF_RING内核模块安装的目录:

/lib/modules/2.6.32-279.el6.x86_64/kernel/net/pf_ring

加载pf_ring内核模块:

modprobe pf_ringtransparent_mode=1

或者

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内核模块:

lsmod | greppf_ring

查看加载信息:

cat/proc/net/pf_ring/info

删除pf_ring内核模块:

rmmd pf_ring

2)编译pf_ring开发库

进入到/opt/PF_RING-6.0.2/userland/lib目录下编译pf_ring库:

#cd /opt/PF_RING-6.0.2/userland/lib

#./configure --prefix=/opt/pfring

报错:checkingif libnuma is present... no

Please install libnuma-dev in order to usePF_RING

解决:需要安装libnuma-dev库,可以从光盘或者ISO镜像中查找numactl*.rpm包使用rpm -ivh命令进行安装。

#make && make intall

注:编译完成的pf_ring库和头文件可以在/opt/pfring中找到。

注:缺少lib/pf_ring.h头文件可以在/usr/include/linux/pf_ring.h中找到,或则/opt/PF_RING-6.0.2/kernel/linux目录下找到。

3)编译支持PF_RING的libpcap库

#cd /opt/PF_RING-6.0.2/userland/libpcap

#./configure --prefix=/opt/pfring/

#make && make install

注:修改源码,将pf_ring的内核ring缓冲区设为10M,默认是2M

源代码:userland/libpcap-1.1.1-ring/pcap-linux.c

函数:int activate_mmap(pcap_t*handle);

代码片段:

3310         if (handle->opt.buffer_size == 0) {

3311                 /* by defaultrequest 2M for the ring buffer */

3312                handle->opt.buffer_size = 2*1024*1024;

3313         }

注:编译完成的libpcap库和头文件可以在/opt/pfring中找到。

4)编译pf_ring示例代码

#cd /opt/PF_RING-6.0.2/userland/examples

#make

#./alldevs

1. lan (PF_RING)

2. usbmon1 (USB bus number 1)

3. any (Pseudo-device that captures on allinterfaces)

4. lo (No description available)

该目录下还有一些实用的PF_RING工具:pfcount、pfsend等。

5)编译和安装PF_RING支持的驱动

*使用ethtool工具查看网卡的型号,例如:ethtool -i eth0

#lspci | grep Ethernet

*进入到驱动目录,注意这里使用非零拷贝的驱动:

cd /opt/PF_RING-6.0.2/drivers/PF_RING_aware/non-ZC-drivers/intel

*编译PF_RING支持的网卡:

#cd e1000/e1000-8.0.35/src

#make && make install

在Redhat 6.3下网卡驱动安装的位置:

/lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

*卸载和安装PF_RING驱动:

卸载驱动:# rmmod e1000

安装驱动:# modprobe e1000

查看驱动:# ethtol -i eth0

注意:当通信网卡也使用该驱动程序时,请务必现场操作,如果使用ssh远程卸载驱动会造成网络不能连接。

注:建议采集使用的网卡和通信使用的网卡分别使用不同的驱动。

注:设置网卡名称和MAC地址,请编译下面的文件:

/etc/udev/rules.d/70-persistent-net.rules

编译和安装PF_RING的命令整理如下(无需作为root用户执行):

# 编译内核

cd /opt/PF_RING-6.0.2/kernel

make && sudo make install

# 编译PF_RING库

cd ../userland/lib

./configure –prefix=/usr/local/pfring&& make && sudo make install

# 编译libpcap库

cd ../libpcap-1.1.1-ring

./configure –prefix=/usr/local/pfring&& make && sudo make install

# 编译TCPDUMP

cd ../tcpdump-4.1.1

./configure –prefix=/usr/local/pfring&& make && sudo make install

# 更新动态库

sudo ldconfig

# 加载模块

sudo modprobe pf_ring

# 提升到root权限,执行

modinfo pf_ring && cat/proc/net/pf_ring/info

# 增加ixgbe模块的节流率

rmmod ixgbe

modprobe ixgbe InterruptThrottleRate=4000

# 为了符合高速网络的需要,我们需要增加ring槽位的数量

rmmod pf_ring

modprobe pf_ring transparent_mode=1 min_num_slots=65534 enable_tx_capture=0

使用PF_RING

如果使用支持PF_RING的libpcap的话,记得在应用程序的头文件中加入#define HAVE_PF_RING定义或CXXFLAGS中加入-DHAVE_PF_RING。

如果直接使用PF_RINGAPI编写代码不需要加入上面的定义。

PF_RINGAPI使用请阅读doc目录下的UserGuide.pdf文件,或者阅读userland目录下examples中的pfcount代码。

….

编译PF_RING问题

问题1:./runlex.sh: line 83: flex: command not found;

./runlex.sh: line 118: flex: command not found

回答: sudo yuminstall flex

问题2:make[2]: yacc: Command not found

answer:sudo yum install bison

问题3:cannot find -lnuma

answer:sudo yum install numactl-devel

对于Redhat 6.3版本需要从网上下载:numactl-devel-2.0.7-3.el6.x86_64.rpm

问题4:grammar.c:(.text+0x44e): undefined reference to `pcap_lex‘

answer: 删除掉老的libpcap 1.0.0之前的版本。

#rpm -aq | grep libpcap  如果存在则删除它

#yum remove libpcap

问题5:insmod: error inserting ‘pf_ring.ko‘: -1 Unknown symbol in module

解决:没有卸载当前的网卡驱动,导致新的驱动加载不了,因此需要先卸载网卡驱动后再重新进行加载。

问题6: --nodefs: unknown option

解决:rpm --nodeps -e libpcap

配置PF_RING

1.加载ixgbe驱动,我们发现设置InterruptThrottleRate为4000是最优的。

modprobe ixgbe InterruptThrottleRate=4000

2.加载PF_RING驱动,使用透传模式2,并且设置合理的缓冲区大小。

modprobe pf_ring.ko transparent_mode=2min_num_slots=16384

3.优化以太网设备,关闭影响吞吐量的选项。使用合适的接口替代eth3。

ethtool -C eth3 rx-usecs 1000

ethtool -C eth3 adaptive-rx off

ethtool -K eth3 tso off

ethtool -K eth3 gro off

ethtool -K eth3 lro off

ethtool -K eth3 gso off

ethtool -K eth3 rx off

ethtool -K eth3 tx off

ethtool -K eth3 sg off

4.设置CPU的亲和力

为了让Snort达到5Gbps吞吐量,我们需要更好的硬件(24核CPU Intel X567),使用PF_RING NAPI或DNA进行加速,选择使用Silicom网卡。

禁用TX捕获:insmodpf_ring.ko enable_tx_capture=0

增加ring slots数量,使用透传模式1:insmod pf_ring.ko enable_tx_capture=0transparent_mode=1 min_num_slots=16384

时间: 2024-12-15 07:21:14

PF_RING 6.0.2在Redhat 6.3 x86_64上编译和安装的相关文章

在Linux CentOS上编译并安装Clang 3.5.0

编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装. (注:CentOS的版本是6.6) 一.安装libstdc++4.7 wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo yum install devtoolset-2-gcc dev

Oracle Database 11g Release 2(11.2.0.3.0) RAC On Redhat Linux 5.8 Using Vmware Workstation 9.0

一,简介 二,配置虚拟机 1,创建虚拟机 (1)添加三块儿网卡: 主节点 二节点 eth0:    公网  192.168.1.20/24   NAT eth0:    公网  192.168.1.21/24   NAT eth1:私网  192.168.2.20/24     host-only eth1:      私网  192.168.2.21/24   host-only eth2:    DHCP    Bridged eth2:     DHCP    Bridged 主机名: t

RedHat Ent 6.5 64bit编译安装hadoop2.4.1

感谢原帖:http://blog.csdn.net/w13770269691/article/details/16883663/ step 1.修改yum:(针对redhat ent未注册用户,注册用户直接跳过这一步) 参考:http://blog.csdn.net/zhngjan/article/details/20843465 step 2.下载源码包:http://mirrors.hust.edu.cn/apache/hadoop/common/stable2/ wget http://m

Mac上编译并运行Android5.0源码

下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和Building the System. 我是在OSX 10.10.3上编译的AOSP,记录一下中途碰到的各种问题. 下载 AOSP需要FQ,而且经常会断,还好是断点续传,坚持个两三天怎么也能下下来. case sensitive system 我在Mac上对file system只会用Disk U

移植 libuv 到 Visual C++ 6.0 并支持在 Windows XP 系统下编译

移植版的 libuv:https://github.com/liigo/libuv-vc6 (支持VC6和XP,作者Liigo). 我从一年前(大概2013年6,7月份)开始在业余时间做这项移植工作,走走停停,陆续用了一两个月的时间,才基本完成.这期间做了详细的移植记录,现在发布出来,希望对某些人有用.就在昨天(2014年7月12日),我又把移植的代码同步到最新的libuv(https://github.com/joyent/libuv)并发布到Github上:但是之前的移植记录没有变更,或许在

在 Linux 系统上源码安装 GTK+ 2.0

在 Linux 系统上源码安装 GTK+ 2.0==================================================Keywords: GTK+, Install, Linux, SourceAuthor:       whyglinux (whyglinux AT hotmail DOT com)Date:          2007-01-07==================================================目录0. 前言1.

在RedHat Server 5.4上安装YUM【利用网易免费yum源,配置和更新yum】

今天碰上要给一台装有Linux的机器做维护,于是就以为按照以往经验就能解决问题,但是神奇的发现机器上一堆的软件包都没有安装,最要命的是连软件包管理器也都没有安装,本以为是FreeBSD,查了一下才发现是RedHat Linux Server 5.4,于是开始着手安装YUM,在Google搜索了一下,发现貌似类似的情况不多,但是这确实不是我第一次遇到RedHat没有yum了,因为上次遇到的时候是别人让帮忙看看,解决不了也就没留心,但这次维护是必要的,于是尝试了许久,这大概是我最不舒服的一次经历了,

mac OS X Yosemite 上编译hadoop 2.6/2.7及TEZ 0.5.2/0.7 注意事项

1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 应该选择mac ox 64位的版本 http://download.oracle.com/otn-pub/java/jdk/7u79-b1

Ubuntu14.0上编译安装Hadoop

Ubuntu14.0上编译安装Hadoop 环境: hadoop-2.5.0.tar hadoop-2.5.0-src.tar jdk-7u71-linux-x64 protobuf-2.5.0.tar Maven3.0 安装步骤: 1 安装jdk ,配置环境变量 2 安装依赖包 3 安装maven 4安装protobuf-2.5.0.tar 5 编译Hadoop 6 安装hadoop 6.1 单机模式 6.2 伪分布模式 6.3 集群模式 1 安装jdk ,配置环境变量 下载jdk版本:jdk