Linux 的 libpcap 详细流程为:网卡硬中断 - 软中断 - 内核协议栈 - 系统调用 -socket 接口 -libpcap 接口 - 用户应用程序,在这个流程中,可以看出数据的 copy 比较多。所以 libpcap 抓包丢包严重也不用感到奇怪了,为了减少丢包率,采用 libpcap-pfring 方
Linux 的 libpcap 详细流程为:网卡硬中断 -> 软中断 -> 内核协议栈 -> 系统调用 ->socket 接口 ->libpcap 接口 -> 用户应用程序,在这个流程中,可以看出数据的 copy 比较多。所以 libpcap 抓包丢包严重也不用感到奇怪了,为了减少丢包率,采用 libpcap-pfring 方法。
下面讲解 fedora 9 下如何安装 PF-RING ,安装过程如下:
1)cd /home 然后再这里建立一个目录 mkdir rfring-libpcap
2)cd rfring-libpcap
3)svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/ 下载 PF-RING
4)PF-RING 下载完后, cd /PF-RING/legacy 下, vi mkpatch.sh 修改内核版本号 ={SUBLEVEL : -25.14}
5)./mkpatch.sh 下载内核到 workspace 中,生成目录 linux-2.6.25-14-686-smp-PF_RING 和补丁文件 linux-2.6.25-14-686-smp-PF_RING.patch.gz 。
6) 按下面操作
mv linux-2.6.25-14-686-smp-PF_RING/ linux-2.6.25-14-686-smp-PF_RING.bak/
zcat linux-2.6.25-14-686-smp-PF_RING.patch.gz | patch -p0
7 ) cd linux-2.6.25 编译内核
#vi Makefile 在这个地方加上一个自定义的后缀: EXTRAVERSION = -PF_RING ,这会显示在界面启动的时候看到
8 ) make oldconfig 主要目的是选择 RF_RING
9) make menuconfig 检查 Networking->Networking options —>PF_RING sockets ( EXPERIMENTAL )
10) 然后就开始编译内核了,按我以前写的一篇博客操作 make
11 ) make modules
12 ) make modules_install
13) make install
14) cd /root/grub
15) vim menu.lst 删除 menuhidden
16) cd ../..
cp kernel/include/linux/ring.h /usr/include/linux/
17) 编译源码和 libpcap
cd userland
make
cd lib/
make install
cd ../libpcap-1.1.1-ring/
make install
18) reboot 重启系统