高速数据包捕获、过滤和分析PF_RING

僤鯓⒐⒋嵵緔 提交于 2020-08-17 08:59:36

PF_RING™是一种新型的网络套接字,可显着提高数据包捕获速度,并且具有以下特性:

  1. 适用于Linux内核2.6.32及更高版本。
  2. 无需修补内核:只需加载内核模块。
  3. 使用商用网络适配器的10 Gbit硬件数据包过滤
  4. 用户空间ZC(新一代DNA,Direct NIC Access,直接NIC访问)驱动程序可实现极高的数据包捕获/传输速度,这是因为NIC NPU(网络处理单元)在没有任何内核干预的情况下将数据包从用户域推送/获取数据包。使用10Gbit ZC驱动程序,您可以以线速发送或接收任何大小的数据包。
  5.  PF_RING ZC库,用于在线程、应用程序、虚拟机之间以零拷贝分发数据包。
  6. 设备驱动程序独立。
  7.  支持Accolade,Exablaze,Endace,Fiberblaze,Inveatech,Mellanox,Myricom / CSPI,Napatech,Netcope和Intel(ZC)网络适配器。
  8. 基于内核的数据包捕获和采样。
  9. Libpcap支持(请参见下文)可与现有的基于pcap的应用程序无缝集成。
  10. 除BPF外,还可以指定数百个标题过滤器。
  11. 内容检查,以便仅通过与有效负载过滤器匹配的数据包。
  12. PF_RING™插件,用于高级数据包解析和内容过滤。

Vanilla PF_RING™

PF_RING™正在通过Linux NAPI轮询来自NIC的数据包。这意味着NAPI将数据包从NIC复制到PF_RING™循环缓冲区,然后userland应用程序从环读取数据包。在这种情况下,有两个轮询程序,即应用程序和NAPI,这会导致用于此轮询的CPU周期。优点是PF_RING™可以将传入的数据包同时分发到多个环(因此有多个应用程序)。

 

PF_RING™模块

PF_RING™具有模块化架构,可以使用除标准PF_RING™内核模块以外的其他组件。当前,其他模块集包括:

  • ZC模块。
    查看ZC页面以获取更多信息。
  • 基于FPGA的板卡模块。
    这些模块增加了对许多供应商的支持,包括Accolade,Exablaze,Endace,Fiberblaze,Inveatech,Mellanox,Myricom / CSPI,Napatech,Netcope。
  • 堆栈模块。
    该模块可用于将数据包注入linux网络堆栈。
  • 时间轴模块。
    该模块可用于使用PF_RING™API从n2disk转储集中无缝提取流量。
  • Sysdig模块。
    该模块使用sysdig内核模块捕获系统事件。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!