PF_RING FT (Flow Table)

快速辅助流处理和L7协议检测

大多数网络监控和安全应用都基于流处理,包括数据包捕获、解码和分类。PF_RING™是一个灵活的框架,可用于加速数据包捕获,利用PF_RING™ZC驱动程序或专用适配器,并提取数据包元数据。这让应用程序专注于数据包处理,而不是处理数据包捕获和数据包解析,同时以最佳性能运行。

PF_RING™FT更进一步,它在数据包分类活动中协助任何流处理应用程序。PF_RING™FT实现了可用于跟踪流的流表,并提供了许多挂钩,以便能够自定义和扩展它,以便在其上构建任何类型的应用程序,包括探针、IDS、IPS、L7防火墙。

尽管PF_RING™随PF_RING™一起分发,但该库可与任何第三方数据包捕获框架(包括Libpcap和DPDK)一起使用,因为它的数据输入API与捕获无关。

清晰简单的API

在PF_RING™FT之上设计和实现流处理应用程序非常简单,因为它提供了清晰的API,可用于在几行代码中完成复杂的工作。以下代码段显示了如何使用PF_RING™FT轻松捕获流量并导出流信息。有关完整的代码示例,请查看PF_RING™中可用的演示应用程序。有关更多信息,请参阅指南API文档。

ft = pfring_ft_create_table(0);
pfring_ft_set_flow_export_callback(ft, processFlow, NULL);

while (1) {
if (pfring_recv(pd, &packet, 0, &header, 0) > 0)
action = pfring_ft_process(ft, packet, &header);
}

void processFlow(pfring_ft_flow *flow, void *user){
pfring_ft_flow_key *k = pfring_ft_flow_get_key(flow);
pfring_ft_flow_value *v = pfring_ft_flow_get_value(flow);
/* flow export here with metadata in k and v */
}

事件hooks

在PF_RING™FT之上设计的应用程序流是事件驱动的。通过几个hooks,可以注册诸如“新流”,“流过期”,“数据包分类”之类的事件,并访问流信息,以便基于流状态计算动作。可以使用应用程序定义的自定义元数据扩展流信息。

nDPI集成

PF_RING™FT与nDPI本地集成在一起,可直接提供L7协议信息。应用程序本身不需要直接处理nDPI库,因为所有事情都在幕后发生,获取L7协议就像通过API启用L7检测并从流元数据中读取L7协议一样容易。除了协议检测之外,PF_RING™FT还利用nDPI类别和Intel Hyperscan对模式匹配的支持对流量进行了分类。

L7过滤和分流

PF_RING™FT具有L7过滤引擎,可以供内联应用程序使用,以根据应用程序协议过滤流。除了内置的过滤引擎之外,应用程序还可以根据自定义策略标记流以对其进行过滤或分流。

IDS加速

PF_RING™FT L7过滤引擎还可用于加速CPU绑定的应用程序,例如IDS / IPS(包括SuricataBroSnort)以及基于应用程序协议的分流。丢弃大象流已成为减少IDS / IPS需要检查的通信量(通常是多媒体通信量)的一种常见而有效的做法,从而显着减少数据包丢失并改善系统性能。
Suricata具有使用eBPF分流大象流的本地支持(旁路),这意味着一旦检测到大象流,该应用程序就会在内核空间中注入过滤规则(5元组)。这种方法有局限性:它要求Suricata中的规则集能够检测所有多媒体协议,数据包解析不灵活,因为eBPF程序无法循环(它不适用于封装,包括vlan和QinQ),不能保持流状态(处理流过期非常复杂)。
利用PF_RING™FT,基于PF_RING或基于Libpcap的应用程序可以利用L7分流,而无需更改任何代码行。由于PF_RING™FT基于nDPI进行协议检测,因此过滤多媒体流量信息只在配置文件中列出协议名称。有关加速Suricata或其他IDS的更多信息,请参阅用户指南

性能

PF_RING™FT经过高度优化,能够在低端Xeon E3上使用单个CPU内核处理10 Gbit的线速,并在多核系统上扩展至100 Gbit。您可以使用github上的演示应用程序自己进行测试。

流量采集卡内核数每个内核性能所有内核性能
10 Gbit / 1-kbyte packetsIntel 10G11.2 Mpps / 10 Gbps1.2 Mpps / 10 Gbps
10 Gbit / 64-byte packetsIntel 10G114.8 Mpps / 10 Gbps14.8 Mpps / 10 Gbps
100 Gbit / 1-kbyte packetsFPGA 100G110.8 Mpps / 90 Gbps10.8 Mpps / 90 Gbps
100 Gbit / 1-kbyte packetsFPGA 100G42.8 Mpps / 24 Gbps11.5 Mpps / 96 Gbps
100 Gbit / 1-kbyte packetsFPGA 100G6 + 6 (2 CPUs)0.95 Mpps / 8 Gbps11.5 Mpps / 96 Gbps
100 Gbit / 64-byte packetsFPGA 100G111.3 Mpps / 7.6 Gbps11.3 Mpps / 7.6 Gbps
100 Gbit / 64-byte packetsFPGA 100G411.2 Mpps / 7.6 Gbps45.2 Mpps / 30.4 Gbps
100 Gbit / 64-byte packetsFPGA 100G6 + 6 (2 CPUs)10.8 Mpps / 7.3 Gbps130 Mpps / 87.6 Gbps

上表显示了使用以下各项进行性能测试的结果:

  • PF_RING FT 7.1
  • Ubuntu Linux 16.04
  • CPU Intel E3-1230 v5 3.4GHz DDR4 2133(10 Gbit测试)
  • CPU 2个Intel E5-2630 v2 2.6GHz DDR3 1600(100 Gbit测试)

操作系统

参考资料

许可license

PF_RING™FT是根据EULA发行的,每个系统都需要一个许可证。

得到它

如果在测试PF_RING™FT之后您决定永久使用它,则需要许可证。PF_RING™FT可从ntop网站获得。如果您对大量产品感兴趣或需要批量折扣,请与我们联系。相反,如果您正在寻找该软件,则可以在此处下载