【转】PF_RING开发指南

转自:PF_RING开发指南-yww680169-ChinaUnix博客

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)可以工作在混杂模式(经过网卡的报文全部可以被捕获到);

 

官网:

最新版本4.7,下载网址<。

最新版本的目录结构:

Drivers/

Drivers/Broadcom/

Drivers/Intel/

Drivers/myricom/

Kernel/    内核有关的补丁

Userland/  用户空间代码

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

Userland/libpcap-xxx-ring PF_RING支持的Libpcap增强库

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

2.       编译

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

# ethtool -i ethx

# lsmod | grep e1000e

# rmmod e1000e           此处为e1000e驱动

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

2.1.  编译内核

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

# tar -zxf PF_RING.4.7.0.tar.gz

# cd PF_RING.4.7.0/kernel

# make

# sudo make install             内核安装需要root用户权限

insmod /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]

    实例:

    # sodu insmod pf_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

# sodu make install

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

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

# rpm -e libpcap --nodefs  

# cd ../libpcap

# ./configure

# make

# sudo make install

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

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

# cd /userland/examples

# make

# ./pfcount -i eth0     捕获eth0网口的数据报文

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

2.3.  编译网卡的驱动

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

# cd ../../ drivers/intel/e1000e/e1000e-1.3.10a/src

# make

# sodu make install

开始安装驱动,进入/lib/modules//kernel/net目录,可以看到有pf_ring目录,进入到该目录下进行PF_RING模块的安装。

# sodu insmod pf_ring.ko transparent_mode=1

安装网卡驱动,进入到目录lib/modules//kernel/drivers/net下进行网卡驱动安装。

# sodu insmod e1000e.ko

# sodu modprobe e1000e  (只能载入/lib/modules//中模块)

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

# dmesg

[PR_RING]…… 信息。

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

启动自动加载PF_RING模块,修改/etc/modprobe.conf文件

# vi /etc/modprobe.conf

在文件的尾部增加一行 modprobe pf_ring

系统重启后内核会自动加载pf_ring模块,modprobe只能加载/lib/modules下的模块。

3. 使用

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

请详细的内容请参考网址:

用户手册:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wince中BIB文件的详细介绍

wince中BIB文件的详细介绍 在WinCE中使用的一个重要的文件就是BIB文件&#xff0c;全称Binary Image Builder File。在WinCE的编译过程中会用到BIB文件&#xff0c;应该是在最后的Makeimg阶段。所有的BIB文件会被合并成CE.bib文件&#xff0c;然后Romimage.exe会根据BIB文件中的…

【转】libpcap实现机制及接口函数

转自&#xff1a;libpcap实现机制及接口函数 - 简书 1.Libpcap 的工作原理 Libpcap的工作原理可以描述为&#xff0c;当一个数据包到达网卡时&#xff0c;通过网络分接口&#xff08;即旁路机制&#xff09;将数据包发给BPF过滤器&#xff0c;匹配通过的数据包可以被libpcap利…

打印机打印第一页的问题

有的时候打印文档的时候&#xff0c;很多页纸&#xff0c;但是打印机总是在第一页打完后就卡住。不动了。 解决办法&#xff1a;打印机属性 –》 高级 - 》“高级打印”的选择取消掉就OK啦。转载于:https://www.cnblogs.com/cryloo/archive/2010/01/27/1657921.html

WinCE BSP的BIB文件介绍

在WinCE中使用的一个重要的文件就是BIB文件&#xff0c;全称Binary Image Builder File。在WinCE的编译过程中会用到BIB文件&#xff0c;应该是在最后的Makeimg阶段。所有的BIB文件会被合并成CE.bib文件&#xff0c;然后Romimage.exe会根据BIB文件中的描述来决定哪些文件最终被…

惊!MySQL官网巨变,下载被取消

随着欧盟的批准&#xff0c;甲骨文宣布收购Sun交易完成&#xff0c;与此同时甲骨文一系列动作也迅速展开。 甲骨文因MySQL被欧盟卡了大半年&#xff0c;在中国&#xff0c;MySQL的用户非常多&#xff0c;MySQL的前途无疑让人牵肠挂肚。并购之前&#xff0c;甲骨文说了很多&…

【转】【C++学习笔记】C++异常处理

转自&#xff1a;【C学习笔记】C异常处理&#xff01;你绝对不能错过的干货&#xff01; - 知乎 合理地使用C异常处理&#xff0c;能够使我们写出来的程序更加稳定强健&#xff0c;不易崩溃。那么&#xff0c;应该如何使用C异常处理呢&#xff1f;下面&#xff0c;我们就来向大…

关于WinCE中config.bib的问题

这两天在看关于bootloader的事情。以前的同事提到开机速度的问题&#xff0c;顺便也就提到了nk的大小的问题。这一连串的事情使得想回头再看看config.bib的事情。这篇文章也算来总结下。也接触过一些ARM的芯片以及对应的BSP包。config.bib文件在msdn上一段解释如下&#xff1a;…

【转】源码分析C++的string实现

转自&#xff1a;源码分析C的string实现 - 知乎 我们平时使用C开发过程中或多或少都会使用std::string&#xff0c;但您了解string具体是如何实现的吗&#xff0c;这里程序喵给大家从源码角度分析一下。 读完本文相信您可以回答以下问题&#xff1a; string的常见的实现方式…

wince bib文件合成

在WINCE中,reg文件和bib文件是两种重要的文件,它影响了整个的CE系统。在解析的过程中&#xff0c;原始的Common.bib, Config.bib, Project.bib, Platform.bib等文件会合成为ce.bib,而原始的Common.reg, Project.reg, Platform.reg等文件会合成Reginit.ini文件&#xff0c;并进一…

WINCE的BIB文件解析

BIB的全称为Binary Image Builder&#xff0c;在Wince编译过程中的最后MakeImage阶段会用到BIB文件&#xff0c;BIB文件的作用是指示构建系统如何构建二进制映像。所有的BIB文件会被合并成CE.bib文件&#xff0c;然后打包工具Romimage.exe会根据BIB文件中的描述来决定哪些文件最…

做一个项目,平时都用到哪些工具提高效率(上)

做.NET 相关项目&#xff0c;Visual Studio 2008,SQL Server 2000/2005是标准的配置&#xff0c;但是&#xff0c;除此之外&#xff0c;还可以应用哪些工具来提高工作效率&#xff0c;让项目做的更轻松。 1 需要一个代码生成工具&#xff0c;生成实体层&#xff0c;数据访问代…

【转】傅里叶分析之掐死教程(完整版)更新于2014.06.06

转自&#xff1a;傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 - 知乎 作 者&#xff1a;韩 昊 知 乎&#xff1a;Heinrich 微 博&#xff1a;花生油工人 知乎专栏&#xff1a;与时间无关的故事 谨以此文献给大连海事大学的吴楠老师&#xff0c;柳…

wince6.0编译命令分析

下面从CSDN帮助文档简要说明vs2005下面的系统编译命令&#xff0c;这些命令位于Build->Advanced Build Commonds 一共有六条命令&#xff0c;分别是&#xff1a; 1.Sysgen 2.Clean Sysgen 3.Build and Sysgen 4.Rebuild and Clean Sysgen 5.Build Current BSP and Subprojec…

【转】C,C++宏中#与##的讲解

转自&#xff1a;C,C宏中#与##的讲解 - MoreWindows - 博客园 文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作&#xff08;Stringizing operator&#xff09;&#xff0c;简单说就是在它引用的…

wince对中文字体的支持

最近情况真的是很糟&#xff0c;小小年纪&#xff0c;得了好几样小毛病&#xff0c;弄得每天都提不起精神来&#xff0c;恍恍惚惚的&#xff0c;幸好有妻子的支持&#xff0c;她不论自己多忙多累&#xff0c;一看到我情绪不好&#xff0c;就给与很多安慰&#xff0c;百般鼓励&a…

提示信息的窗口效果

代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><title>提示信息的窗口效果<…

【转】C++中如何区分构造函数与重载operator()得到的仿函数?

转自&#xff1a;C中如何区分构造函数与重载operator()得到的仿函数?求大神!_360问答 此外,你觉得仿函数(functor)是否能完全取代function呢? 以下是个人使用C仿函数&#xff0c;function表达式的一些体悟。 首先是定义形式&#xff1a; 构造函数无返回值&#xff0c;而o…

WINCE添加新字体需要注意的一些问题

之前测试使用dgwulm.ttf字体&#xff08;GPS软件WolfNCU中带的&#xff09;&#xff0c;发现了一些添加新字体的时候可能被忽视的问题。 在WINCE系统中&#xff0c;除了将字体文件加入到系统内核NK之外&#xff0c;还可以动态的方式添加新字体&#xff0c;使用函数AddFontReso…

开源CRM Hipergate

Hipergate是一个用java写的开源CRM。有一个在线演示的Demo(http://demo-en.hipergate.org/)&#xff0c;并且支持中文。 该软件运行的屏幕截图请看这里&#xff1a;http://www.hipergate.org/docs/screenshots/ 开发语言&#xff1a; Java 操作系统&#xff1a; 跨平台 软件主…

【转】RAX,eax,ax,ah,al 关系

转自&#xff1a;RAX,eax,ax,ah,al 关系_迪迦 • 奥特曼-CSDN博客_rax和eax |63..32|31..16|15-8|7-0||AH.|AL.||AX.....||EAX............| |RAX...................|一般寄存器:AX、BX、CX、DX AX:累积暂存器&#xff0c;BX:基底暂存器&#xff0c;CX:计数暂存器&#xff0c…