libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程

本文主要是介绍libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      看到网上有人讲解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 重启系统

 

 


 

 

这篇关于libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599869

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和