我正在寻找 Linux 中的快速状态防火墙,它可以处理大量数据包并将其中一些数据包发送到外部程序。
是否可以让 netfilter(iptables、nftables)与英特尔 DPDK 一起使用以提高性能?
我正在寻找 Linux 中的快速状态防火墙,它可以处理大量数据包并将其中一些数据包发送到外部程序。
是否可以让 netfilter(iptables、nftables)与英特尔 DPDK 一起使用以提高性能?
您需要从 6WIND 部署加速软件堆栈才能继续使用 iptables、iproute2 等。DPDK 不提供网络堆栈。
假设你正在使用 Linux 内核 iptables、路由条目、IPsec 条目等,使用 iptables、setkey、iproute2 等不加修改;然后 6WIND 的软件堆栈将数据包处理卸载到他们的加速堆栈中。
因此,您可以保留 Linux 管理工具(Web 界面、Openstack 等),而 6WIND 软件堆栈负责提供性能。它也适用于 DPDK 和其他 CPU,如 Tilera、Cavium Octeon、Broadcom XLP,...
有关更多信息,请参阅他们的网站。
我曾尝试 DPDK KNI 在 Linux netfilter 中使用 iptables。它起作用了,但整体性能比纯内核 iptalbes 差一点。
根据我的简单 NAT 实验,iptables 在 1G 链路上为 64 字节数据包提供 290Mbps。带有 KNI 的 iptables 显示为 240Mbps。
虽然 DPDK KNI 运行在 PMD 模式并消除了中断,但它并没有增加带宽,因为 Linux 内核也采用了 NAPI(New API),它将运行时模式从中断更改为轮询,反之亦然。
当我为 NAT 运行我的简单 DPDK 应用程序时,它显示 761Mbps,这几乎是理论上 64 字节数据包的最大带宽。
我认为 Linux 内核中的 softirq 会消耗大量时间来处理数据包。