PF_RING™是一种新型的网络套接字,可显着提高数据包捕获速度,并且具有以下特性:
- 适用于Linux内核2.6.32及更高版本。
- 无需修补内核:只需加载内核模块。
- 使用商用网络适配器的10 Gbit硬件数据包过滤
- 用户空间ZC(新一代DNA,Direct NIC Access,直接NIC访问)驱动程序可实现极高的数据包捕获/传输速度,这是因为NIC NPU(网络处理单元)在没有任何内核干预的情况下将数据包从用户域推送/获取数据包。使用10Gbit ZC驱动程序,您可以以线速发送或接收任何大小的数据包。
- PF_RING ZC库,用于在线程、应用程序、虚拟机之间以零拷贝分发数据包。
- 设备驱动程序独立。
- 支持Accolade,Exablaze,Endace,Fiberblaze,Inveatech,Mellanox,Myricom / CSPI,Napatech,Netcope和Intel(ZC)网络适配器。
- 基于内核的数据包捕获和采样。
- Libpcap支持(请参见下文)可与现有的基于pcap的应用程序无缝集成。
- 除BPF外,还可以指定数百个标题过滤器。
- 内容检查,以便仅通过与有效负载过滤器匹配的数据包。
- 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内核模块捕获系统事件。
来源:oschina
链接:https://my.oschina.net/u/4414407/blog/4322106