图片分页wordpress主题,杭州seo营销公司,广东省交通建设监理检测协会网站,网站开发专业毕业设计转自#xff1a;PF_RING开发指南-yww680169-ChinaUnix博客
1. 概述
PF_RING是Luca Deri发明的提高内核处理数据包效率#xff0c;并兼顾应用程序的补丁#xff0c;如Libpcap和TCPDUMP等#xff0c;以及一些辅助性程序#xff08;如ntop查看并分析网络流量等#…转自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 内容检查以至于只有符合负载过滤的包才能通过;
10PF_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_mode0|1|2]
[min_num_slotsx][enable_tx_capture1|0][enable_ip_defrag1|0][quick_mode1|0] 实例 # sodu insmod pf_ring.ko transparent_mode1
当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_mode1
安装网卡驱动进入到目录lib/modules//kernel/drivers/net下进行网卡驱动安装。
# sodu insmod e1000e.ko
# sodu modprobe e1000e (只能载入/lib/modules//中模块)
安装完毕使用dmesg命令查看驱动是否安装成功如果成功的话可以看到
# dmesg
[PR_RING]…… 信息。
PF_RING会安装一个类型为27的协议簇可以使用sockPF_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来提高包捕获的性能。
请详细的内容请参考网址
用户手册