af_packet vs pfring

PF_RING 技术解析:高性能数据包处理框架

PF_RING首页、文档和下载 - 高速数据包处理框架 - OSCHINA - 中文开源技术交流社区

PF_RING简单介绍 - 知乎

PF_RING设计

从前面的介绍可以看出,轮询和mmap都可以提升数据包抓取性能,所以在PF_RING中,沿用了这两种技术。另外,PF_RING还引入了环形buffer。

PF_RING架构

图2给出了PF_RING的整体架构设计,在介绍完轮询、mmap和缓行buffer后,PF_RING的工作过程看图2就一目了然了。具体流程如下:

  • 应用调用mmap进行内存映射;
  • 数据包到达网卡后,处理器以轮询的方式将数据包写到环形buffer;
  • 应用调用read从环形buffer里面读数据包;

af_packet vs pfring

suricata抓包方式之一 AF_PACKET - Rabbit_Dale - 博客园

前言

    linux提供了原始套接字RAW_SOCKET,可以抓取数据链路层的报文。这样可以对报文进行深入分析。今天介绍一下AF_PACKET的用法,分为两种方式。第一种方法是通过套接字,打开指定的网卡,然后使用recvmsg读取,实际过程需要需要将报文从内核区拷贝到用户区。第二种方法是使用packet_mmap,使用共享内存方式,在内核空间中分配一块内核缓冲区,然后用户空间程序调用mmap映射到用户空间。将接收到的skb拷贝到那块内核缓冲区中,这样用户空间的程序就可以直接读到捕获的数据包了。PACKET_MMAP减少了系统调用,不用recvmsg就可以读取到捕获的报文,相比原始套接字+recvfrom的方式,减少了一次拷贝和一次系统调用。libpcap就是采用第二种方式。suricata默认方式也是使用packet mmap抓包。

2、测试例子

  为了方便测试,可以使用linux提供的sock_filter过滤ip地址。使用tcpdump可以反汇编出来过滤的条件。以www.qq.com为例进行说明:

ping www.qq.com得到ip地址:101.226.103.106

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值