[英]How to run Netfilter (iptables, nftables) with DPDK
我正在Linux中寻找一种快速的有状态防火墙,该防火墙可以处理许多数据包并将其中一些发送到外部程序。
是否可以使netfilter(iptables,nftables)与Intel 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.