1、pfring(pf_ring)简介
pfring(pf_ring)主页http://www.ntop.org/products/pf_ring/;
pfring(pf_ring)是一种加速处理数据包的实现方法,能够比较有效地提高网卡获取和发送数据包的速度,类似所谓的“零拷贝”技术;
pfring(pf_ring)的安装包中带有支持pfring(pf_ring)的libpcap,与原版的libpcap接口兼容;
2、e100e网卡上安装pfring(pf_ring)
下载pfring(pf_ring),地址为http://www.ntop.org/get-started/download/#PF_RING
按照文档中的说明进行编译:
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卸载掉旧驱动,新的就会自动加载; 3、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(在源码包中),重新编译程序;
4、pfring(pf_ring)安装过程中遇到的问题
pfring(fp_ring)使用过程中的kernel panic(内核崩溃):
初步测试,认为是多个使用pfring的程序同时抓包导致,同一时刻只是用一个pfring程序,一般不会出现此问题;
来源:oschina
链接:https://my.oschina.net/u/1269531/blog/164322