如何使用DPDK运行Netfilter(iptables,nftables)

时间:2015-02-09 08:01:10

标签: linux linux-kernel iptables netfilter dpdk

我正在寻找Linux中的快速状态防火墙,它可以处理大量数据包并将其中的一些发送到外部程序。

是否可以使netfilter(iptables,nftables)与英特尔DPDK配合使用以提高性能?

3 个答案:

答案 0 :(得分:3)

DPDK有一个“内核网络接口”,有点像tap / tun设备,但是是零拷贝。使用这些,您可以在用户空间中执行RX / TX,然后将数据包传递到linux网络堆栈。我不知道除了可能消除一些IRQ开销之外,这是否会给你带来很多性能。

如果您未与netfilter结婚,其他一些选项可能是在DPDK之上使用一个用户空间BSD网络堆栈(例如libuinet)或rump kernel

答案 1 :(得分:2)

您需要从6WIND部署加速软件堆栈,以便继续使用iptables,iproute2等.DPDK不提供网络堆栈。

假设您正在使用Linux内核iptables,路由条目,IPsec条目等,使用iptables,setkey,iproute2等进行修改;然后6WIND的软件堆栈将数据包处理卸载到他们的加速堆栈中。

因此,您可以保留Linux管理工具(Web界面,Openstack等),而6WIND软件堆栈则可以提供性能。它在DPDK和其他CPU上也很有用,就像Tilera,Cavium Octeon,Broadcom XLP,......

有关详情,请访问他们的网站。

答案 2 :(得分:1)

我曾尝试过DPDK KNI在Linux netfilter中使用iptables。 它起作用,但总体性能比纯内核iptalbes略低。

根据我的简单NAT实验,iptables在1G链路上为64字节数据包提供290Mbps。与KNI的iptables显示240Mbps。

尽管DPDK KNI在PMD模式下运行并消除了中断,但它并没有增加带宽,因为Linux内核也采用NAPI(新API),它将运行时模式从中断更改为轮询,反之亦然。

当我运行用于NAT的简单DPDK应用程序时,它显示761Mbps,理论上几乎是64字节数据包的最大带宽。

我认为Linux内核中的softirq会耗费大量时间来处理数据包。