首页 > 其他分享 >PF_RING调研及实践

PF_RING调研及实践

时间:2022-12-01 18:34:58浏览次数:45  
标签:libpcap 网卡 编译 PF pf RING ring 调研


一 PF_RING简介

1.与libpcap不同,pf_ring核心思想是通过DMA将网卡流量直接MMAP到用户空间(绕过内核网络协议栈),避免libpcap的网卡->内核,内核→用户空间的方式,压缩拷贝次数,节省了CPU处理时间;

2.pf_ring每创建一个socket便分配一个环形缓冲区(ring_buffer),用户可以通过mmap直接访问ring_buffer,新数据从网卡抓取时可以直接覆盖ring_buffer已被用户读取的空间,如果ring_buffer已满,新数据被丢弃;

3.pf_ring自带的libpcap可与原libpcap应用程序无缝集成,只需增加相关宏定义;

4.使用pf_ring零拷贝功能,需要卸载原机器网卡驱动,并编译安装与原机器型号匹配的pf_ring支持的网卡驱动。

二 PF_RING编译安装及部署

1.pf_ring源码:

2.pf_ring编译安装顺序:

卸载网卡驱动=》编译安装内核=》编译安装库=》编译安装libpcap=》编译安装网卡驱动=》编译安装dap(可选)=》重启机器

3.网卡驱动卸载:

ethtool -i ens192 #ens192使用ifconfig命令查看网卡名称


显示如下:

driver: igb

version: 3.2.6-k

firmware-version: 1.10-0

...

驱动名是igb

使用命令确认驱动存在:

lsmod | grep igb

使用命令卸载驱动:

rmmod igb #执行此步 会导致xshell断开,可以使用串口通信查询目标机器

4.内核编译安装:

#解压压缩包并进入

cd PF_RING-7.8.0/kernel

./configure && make && make install

#也可以直接执行make install 因为解压包时编译好的内核

#安装内核3

insmod pf_ring.ko transparent_mode=1 #安装内核

cat /proc/net/pf_ring/info # 验证内核是否支持pf_ring

显示如下:

 

5.userland库编译及安装(包括libpf_ring.so等):

cd PF_RING-7.8.0/userland/lib

./configure && make && make install

#也可以直接执行make install 因为解压包时编译好的库

6.libpcap库编译及安装(需要卸载原系统自带的libpcap):

#卸载原系统libpcap

rpm -qa libpcap #卸载libpcap包,执行该命令后,系统的/usr/lib64/libpcap.so*会被删除

rpm -e libpcap --nodeps #--nodeps不验证依赖包 -e直接卸载

#安装pf_ring自带libpcap

cd PF_RING-7.8.0/userland/libpcap #libpcap是1.9.1版本和libpcap_1.9.1一样,哪个目录都行

./configure && make && make install

#也可以直接执行make install 因为解压包时编译好的库

安装成功,显示如下:

 

7.编译及安装网卡驱动(在实体机验证通过 虚拟机卸载网卡驱动后在编译安装,重启后出现虚拟机启动不了情况):

cd PF_RING-7.8.0/drivers #这个目录有Makefile

make #如果报pf_ring.h找不到,转下面步骤:

vim /etc/profile

#添加:

C_INCLUDE_PATH=/usr/include/linux #pf_ring.h在此目录里

CPLUS_INCLUDE_PATH=/usr/include/linux

export C_INCLUDE_PATH

export CPLUS_INCLUDE_PATH

#保存退出,执行:

source /etc/profile

cd intel

#选择与原网卡驱动一致的目录,比如igb目录,执行:

cd igb/igb-5.3.18-zc/src

modprobe ptp #此步在insmod之前执行 是igb.ko依赖步骤

insmod igb.ko

modprobe igb

reboot #必须重启机器生效

#注意,压缩包时编译好的驱动,因此可跳过make直接进行安装

8.验证pf_ring库安装成功:

cd PF_RING-7.8.0/userland/examples

./configure && make && make install #这步也可以不做 因为压缩包里是编译好的二进制文件

./pfcount -i eth2

执行功,显示如下:

 

8.pfring-daq-module安装(可选):

cd PF_RING/userland/snort/pfring-daq-module

autoreconf -ivf

./configure

make

cp .libs/daq_pfring.so /usr/local/lib/daq/

三 使用PF_RING测试snort

1.编译安装snort

2.执行指令:

snort --daq-dir=/usr/local/lib/daq --daq pfring --daq-mode passive -i ens192 -v -e

显示:

 

由上图可看成snort已加载了pfring驱动。

四 抓包引擎支持PF_RING

1.确保编译环境已卸载系统自带的libpcap并且已安装pf_ring的libpcap

2.修改.cpp,增加宏定义:

#ifndef HAVE_PF_RING

#define HAVE_PF_RING

#endif

修改makefile,增加:

RUNLIB = ... -lpfring

...

CFLAG = -DHAVE_PF_RING

3.编译

标签:libpcap,网卡,编译,PF,pf,RING,ring,调研
From: https://blog.51cto.com/u_15899033/5903561

相关文章

  • Spring面试题及答案整理(2023)
    Spring经典面试题及答案,每道都是认真筛选出的大厂高频面试题,助力大家能找到满意的工作!下载链接:全部面试题及答案PDF其他互联网大厂面试题1:阿里巴巴Java面试题2:阿里云Ja......
  • SpringSecurity表单登录流程源码分析
    先看看这种核心流程图这张图是SpringSecurity认证涉及到的核心类让应用Debug启动点击表单登录进入到这个就是上图中的绿色过滤器,这个类中首先进入attemptAuthenticatio......
  • 前后端分离项目VUE使用axios调用微服务SpringBoot后端接口无法获取参数
    前言首先这是一个很简单却又很恶心的问题,简单就是只需要根据服务端的入参规则传参就行了,恶心就是在写前端时,大多数是只知道入参和请求方式的,但是这里就会涉及到一些小的知识......
  • SpringSecurity OAuth2开发相关聚合文章
    前言说真的,SpringSecurityOAuth2这套框架会的人真的不多,尤其是比较深入的使用,这也是我聚合这篇文章的初衷!就相对我自己学习这个而言,也花了好多时间,从简单学习SpringSecurit......
  • Spring Cloud整合SpringSecurity OAuth2(全网最强)
    前言本文是梳理整合SpringCloud和SpringSecurityOAuth2的搭建流程!好久没撸SpringSecurityOAuth2这系列代码了,都快忘了,特写此文章梳理脉络!开干!!!Maven版本微服务版本<spring-......
  • SpringBoot过滤器工具类解决跨域问题模板
    放入目录config即可@ConfigurationpublicclassCorsConfigimplementsFilter{@OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseres,F......
  • Spring按条件加载Bean
    @ConditionalOnClass(DefaultMQProducer.class)~~春波特:属性直接使用类是不科学的,需要用(name=“类全名”)方式,这样在类不在classpath时,不会抛出CNFE......
  • SpringSecurity OAuth2异常处理OAuth2Exception
    前言在我们使用SpringSecurityOAuth2做认证授权时,默认返回都是SpringSecurityOAuth2提供好的,返回不是很友好,本章就是针对这些异常做统一返回处理,主要解决返回格式问题,......
  • SpringSecurity OAuth2 关于 UserAuthenticationConverter
    前言之前写了一大堆关于SpringSecurityOAuth2的相关文章,本以为可以告一段落了,但是有了解到一个新东西,之前没注意到的,就是UserAuthenticationConverter,本章就来看看这是......
  • SpringSecurityOAuth2授权流程源码分析(自定义验证码模式)
    前言周末闲来无事,谢谢自己的项目,然后想把老的授权模式改造一下,老的是基于SpringSecurity的实现,想升级为SpringSecurityOAuth2模式,于是看了下之前搭建的SpringSecurityO......