iptables的hashlimit模块的效率如何?

我正在寻找一个解决scheme,以IP为基础的速度限制。 在最近的Intel x86_64 CPU内核上,hashlimit iptables模块可以处理多less个数据包? 1.000 /秒? 1.000.000 /秒?

netfilter最重要的附加机制必须经过我从源头看到的哈希条目,更新条目信用,查找条目和清除所需的底层哈希表(请参阅/ proc / net / ipt_hashlimit) 。

因为使用哈希表,所有这些操作是恒定的时间,并且除了表清理以外相当快。 后者是昂贵的,如果你有来自不同用户的许多请求。

如果我必须对哈希限制开销做一个粗略的估计,那么我会把处理一个标准规则集的成本最多加15%。 像往常一样,最好的方法是测量。 如果你这样做,更新这篇文章:)

作为一个方面说明,你可能想看看BSD上的PF率限制选项。

散列表通常是有效的,并且大部分具有线性可扩展性。

..虽然看着选项,请仔细检查htable-gcinterval,因为它可能对性能影响最大。 Garbace收集的哈希表可能是最昂贵的操作。 如果我期望在hashlimit实现中遇到瓶颈,那么它将围绕gc代码。