iptables 的 hashlimit 模块效率如何?

iptables 的 hashlimit 模块效率如何?

我正在寻找一种基于 IP 的速率限制解决方案。在最新的 Intel x86_64 CPU 核心上,hashlimit iptables 模块可以处理多少个数据包?1.000/秒?1.000.000/秒?

答案1

就我从源代码看到的情况而言,netfilter 必须经历的最相关的附加机制是散列新条目、更新条目信用、查找条目以及清理所需的底层哈希表(参见 /proc/net/ipt_hashlimit )。

因为使用了哈希表,所以所有这些操作都是常数时间的,而且相当快,除了表清理。如果你有来自所有不同用户的大量请求,后者会很昂贵。

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

顺便提一下,你可能需要查看PFBSD 上的速率限制选项。

答案2

哈希表一般比较高效,并且大多具有线性可扩展性。

..虽然看着选项,但要仔细检查周围表-gcinterval因为它可能对性能影响最大。哈希表的垃圾收集可能是最昂贵的操作。如果我预计 hashlimit 实现中存在瓶颈,那么它将围绕 gc 代码。

相关内容