繁体   English   中英

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

[英]How to run Netfilter (iptables, nftables) with DPDK

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

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

DPDK具有“内核网络接口”,其工作方式与分接/调整设备类似,但为零拷贝。 使用这些,您可以在用户空间中执行RX / TX,然后将数据包传递到linux网络堆栈中。 除了可能消除一些IRQ开销外,我不知道这是否会为您带来很多性能。

如果您还不熟悉 netfilter,则还有其他选择,可能是使用一个用户空间BSD网络堆栈(例如libuinet )或在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链路为290个字节的数据包提供了290Mbps的速度。 带有KNI的iptables显示240Mbps。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM