前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pfring模块安装使用

pfring模块安装使用

作者头像
随心助手
发布2019-10-25 00:39:19
4.1K0
发布2019-10-25 00:39:19
举报
文章被收录于专栏:nginx遇上redisnginx遇上redis
  1. 1. 概述

PF_RING是Luca Deri发明的提高内核处理数据包效率,并兼顾应用程序的补丁,如Libpcap和TCPDUMP等,以及一些辅助性程序(如ntop查看并分析网络流量等)。PF_RING是一种新型的网络socket,它可以极大的改进包捕获的速度。并且有如下特征:

1) 可以用于Linux 2.6.18以上的内核;

2) 4.x版本的PF_RING可以直接应用于内核,不需要给内核打补丁;

3) PF_RING驱动可以进行包捕获的加速;

4) 支持使用商用网络适配器的10 GB的硬件包过滤

5) 设备驱动无关(推荐使用支持NAPI的网卡(intel网卡)来获得最好的性能);

6) 基于内核的包捕获和采样;

7) Lipcap支持与基于pcap的应用程序的无缝集成;

8) 可以指定上百个头过滤到BPF中;

9) 内容检查,以至于只有符合负载过滤的包才能通过;

10)PF_RING的插件可以用于增强包解析和内容过滤;

11)可以工作在混杂模式(经过网卡的报文全部可以被捕获到);

最新版本6.0.1,下载网址 http://www.ntop.org/products/pf_ring/

最新版本的目录结构:

Drivers/

Kernel/ 内核有关的补丁

Userland/ 用户空间代码

Userland/lib用户空间库用于控制PF_RING

Userland/libpcap-1.1.1-ringPF_RING支持的Libpcap增强库

Userland/examples/包计数应用(使用它作为测试使用)

###

基本库:

libnuma-dev

yuminstall numactl-devel

###

  1. 2. 编译

编译安装PF_RING之前需要卸载原来的网卡驱动,卸载之前使用ethtool命令查看当前网卡的类型和驱动版本。

ethtool-i eth0

lsmod| grep igb

rmmodigb

注:如果使用ssh远程卸载驱动会造成网络不能连接,务必现场操作。

2.1.编译内核

解压缩PF_RING安装包,进入到Kernel目录下编译和安装内核补丁。

tarzxvf PF_RING-6.0.1.tar.gz

cdPF_RING.6.0.1/kernel

make

makeinstall

insmodpf_ring.ko transparent_mode=1

当PF_RING激活时,会创建/proc/net/pf_ring目录,使用cat命令查看设置:

cat/proc/net/pf_ring/info

注1:为了编译PF_RING内核模块,你需要安装Linux内核的头文件(或者内核源代码)。

2.2. 编译用户空间PF_RING库

进入到用户空间库userland/lib下,编译和安装。

cd../userland/lib

./configure

make

makeinstall

如果需要使用libpcap抓包分析,请卸载之前安装的libpcap,然后进入/userland/libpcap-1.1.1-ring/目录下配置、编译和安装驱动。

rpm-qa libpcap 查看安装的libpcap,如果有libpcap则强制卸载

rpm-e libpcap --nodeps

cd../libpcap-1.1.1-ring

./configure

make

makeinstall

注:为了使用PF_RING的优点,请使用PF_RING使能的libpcap.a重新编译应用。

进入到userland/examples目录编译例子程序。

cd/userland/examples

make

./pfcount-i eth0

注:使用drivers/intel/ixgbe下的驱动(支持DNA的ixgbe驱动的网卡)+DNA驱动技术可以达到线速采集,PF_RING模块必须在DNA驱动之前加载。

2.3. 编译网卡的驱动

进入到drivers目录下,根据ethtool -i ethx命令查看的网卡类型和驱动进入指定的目录进行编译和安装。

cd../../drivers/PF_RING_aware/non-ZC-drivers/intel/e1000/e1000-8.0.35/src

make

makeinstall

开始安装驱动

进入/lib/modules/2.6.32-431.el6.x86_64/kernel/net目录,可以看到有pf_ring目录,进入到该目录下进行PF_RING模块的安装。

cd

cd/lib/modules/2.6.32-431.el6.x86_64/kernel/net

insmodpf_ring.ko transparent_mode=1

安装网卡驱动

进入到目录/lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net下进行网卡驱动安装。

insmode1000.ko 若没有卸载原有驱动会报错

modprobee1000 (只能载入/lib/modules/2.6.32-431.el6.x86_64/中模块)

安装完毕,使用dmesg命令查看驱动是否安装成功,如果成功的话,可以看到:

dmesg

[PR_RING]…… 信息。

PF_RING会安装一个类型为27的协议簇,可以使用sock(PF_RING, SOCK_RAW,0)打开一个socket,使用libpcap的朋友不需要修改程序,需要重新编译,链接的时候请加上libpfring.so。

3. 使用

使用用户空间中的PF_RING库API来编写代码,并且使用用户空间中的libpfring.a和libpcap.a编译代码就可以使用PF_RING来提高包捕获的性能。

请详细的内容请参考网址:http://www.ntop.org/PF_RING.html

用户手册:https://svn.ntop.org/svn/ntop/trunk/PF_RING/doc/UsersGuide.pdf

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档