一、pfring(pf_ring)简介网络
pfring(pf_ring)主页http://www.ntop.org/products/pf_ring/;tcp
pfring(pf_ring)是一种加速处理数据包的实现方法,可以比较有效地提升网卡获取和发送数据包的速度,相似所谓的“零拷贝”技术;测试
pfring(pf_ring)的安装包中带有支持pfring(pf_ring)的libpcap,与原版的libpcap接口兼容;spa
二、e100e网卡上安装pfring(pf_ring)接口
下载pfring(pf_ring),地址为http://www.ntop.org/get-started/download/#PF_RING文档
按照文档中的说明进行编译:get
cd PF_RING/kernel make sudo insmod ./pf_ring.ko cd ../userland make源码
源码目录结构以下:编译
drivers:支持pfring的网络驱动,要是用使用pfring的话,须要进入到相应的驱动目录用make install命令安装;下载
kernel:内核模块代码;好像是5.0之后的pfring都不准要从新编译内核,只须要按照上面的命令编译经过之后,插入模块sudo insmod ./pf_ring.ko就能使用;
userland:pfring提供的用户应用程序,主要包括libpcap-1.1.1-ring(支持pfirng 的libpcap,若是要用pfring,须要卸载掉原来的libpcap安装此libpcap)、tcpdump-4.1.1(支持pfring的tcpdump,可用来测试pfring的抓包速率)、examples(一些pfring用例,包括pfcount:一个支持数据包统计程序;pcount:未支持pfring的数据包统计程序;pfsend:支持pfring的数据包发送程序)、snort(基于pfring的snortsp的DAQ模块);
按照上面的方法编译完成之后,进入本身的网络驱动对应的drivers目录,个人驱动时e1000e,则进入PF_RING-5.0.0/drivers/PF_RING_aware/intel/e1000e/e1000e-1.3.10a/src目录,make,makeinstall之后,新的支持pfring的e1000e驱动就安装好了,用rmmod e1000e卸载掉旧驱动,新的就会自动加载; 三、pfring(pf_ring)用法
在用支持pfring的抓包程序来抓包之前,还须要插入pr_ring模块,命令以下:insmod pf_ring.ko transparent_mode=2;关于pf_ring选项,在下一篇文章中讲;
此时,就能够用pfring带的tcpdump和pfcount来抓包了。
pfring对小包的提速效果较好,我用千兆的发包仪器线速发包,对于64的小包,pfring的接受速率时通常的libpcap的2-3倍;可是对于1518的大包,速度好像就差很少了。
注意:本身程序若是要是用pfring,则须要安装pfring自带的libpcap-ring(在源码包中),从新编译程序;
四、pfring(pf_ring)安装过程当中遇到的问题
pfring(fp_ring)使用过程当中的kernel panic(内核崩溃):
初步测试,认为是多个使用pfring的程序同时抓包致使,同一时刻只是用一个pfring程序,通常不会出现此问题;