libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程
2011-03-25 13:48
567 查看
看到网上有人讲解fedora 9下安装PF-RING的过程,都是几年前的了,比较老了,我安装PF-RING就是为了使用libpcap库,libpcap的原理是通过socket将数据包从网卡 捕获数据包,然后在提交给应用程序,和winpcap很大的区别是,libpcap采用的是2个缓冲区,内核类似的一个乒乓操作,详细见我的庖丁解牛--winpcap源码彻底解密一系列的文章。winpcap采用的是环状缓冲区,在winpcap下当网卡有数据到来时,npf.sys就会将数据拷贝到内核缓冲区中,而内核驱动实际上是一个Ndis协议驱动,当内核缓冲区的数据包大小达到一个阈值mintocopysize时,它就会将数据包拷贝到应用缓冲区中,kernelbuffer和userbuffer,及mintocopysize都提供了函数进行设置的。那么为什么在windows平台进行包捕获的时候,千兆网的条件下,都很少有包丢失呢,为什么在linux环境下进行包捕获,丢包率很大,这就要仔细分析源码了,winpcap的npf.sys是一个Ndis协议驱动,它和TCP/IP协议是同一层的,即采用winpcap捕获数据包,数据包就不需要经过tcp/ip层了,而libpcap是linux下的捕获包,他是在应用层之上的,及在tcp/ip协议上,本来通过socket可以捕获包的,libpcap不过是对socket进行了一次封装,在socket上面有提供了一层接口,方面用户的调用。libpcap捕获包的流程如下:
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
重启系统
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
重启系统
相关文章推荐
- libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程
- libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程
- libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过
- Fedora下集成PF_RING的详细过程
- Fedora下集成PF_RING的详细过程(配图)
- Fedora下集成PF_RING的详细过程(配图)
- linux fedora 14(内核2.6.35.6) PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- linux fedora 14(内核2.6.35.6) PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- linux内核中socket的创建过程源码分析(详细分析)
- pxe网络安装操作系统 原理与详细过程
- Fedora13下安装zabbix 1.8详细过程
- RedHat Fedora 8详细安装过程 PDF文件
- CentOS6.8 4.4.43内核 安装PF_RING
- pxe网络安装操作系统 原理与详细过程
- Vmware安装ubuntu编译android内核源码详细过程
- pxe网络安装操作系统 原理与详细过程
- kernel-2.6.32-431.el6.src.rpm内核源码安装过程和问题分析
- Fedora13(双系统)及Discuz本地安装详细过程
- Fedora 20 详细安装过程(图文详解)包括U盘制作过程
- 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3.5的详细分析及安装过程