加速 Netfilter(通过避免使用 Netfilter)

作者:Zack Brown

Imre Palik 试图加速 Linux 的一些网络代码,但遭到了顽固的反对。 从本质上讲,他希望网络数据包绕过 netfilter 代码,除非绝对必要。 他说,Netfilter 的设计是为了灵活性,但牺牲了速度。 根据他的测试,绕过它可以使系统速度提高 15%。

Netfilter 是一种基础设施,它为用户在处理和限制网络流量方面提供了巨大的能力和灵活性。 Imre 的想法是,如果用户不想过滤网络数据包,则甚至不应该遍历 netfilter 代码。 因此,他希望让用户禁用任何不需要它的防火墙的 netfilter。

最初有一些兴趣,也有一些关于他是如何计算出 15% 的速度提升的问题。 Florian Westphal 试图推断出速度提升可能来自哪里。 但是 David S. Miller 否决了这个想法,他说,在通过 perf 进行适当分析之前,任何速度提升的估计都只是猜测。

David 坚决拒绝应用网络补丁,除非有更可靠的迹象表明它们会改善情况。

Imre 解释了他的测试方法,并断言它们对他来说似乎是合理的。 但是 Pablo Neira Ayuso 认为 Imre 的方法太随意了。 他说,需要一种更通用的方法来进行此类测试。

David 对 Imre 的测试完全不满意。 他说,正确的解决方案是加速 netfilter,这样就不需要绕过它,而不是试图绕过 netfilter,即使在没有配置实际过滤器的情况下也是如此。 David 说:“我们需要找到一种干净通用的方法,以便在不使用 netfilter 规则时,使 netfilter 钩子尽可能便宜。”

另一方面,David Woodhouse 认为 15% 的速度提升就是 15% 的速度提升,我们不应该对意外之财挑剔。

但是,David M 坚持立场。 他说,netfilter 钩子是根本问题,“我绝对宁愿看到解决根本问题,而不是随意地用这个和那个旋钮来戳它。”

David W 和其他人开始寻找方法来满足 David M,而无需实际重写 netfilter 钩子。 David W 建议让钩子在检测到它们没有用处时自动禁用自己。

最终,该主题没有得出结论,尽管似乎很明显,目前,Imre 的代码已经胎死腹中。 问题在于 15% 确实是 15%,即使速度提升并不完美,也是有益的。 可以想象,没有人会想出一种好的方法来修复 netfilter 钩子,并且 Imre 的补丁会收到更好的测试和更有意义的性能数据。 到那时,即使是 David M 也可能会说可以。

注意:如果您在上面被提及,并想在评论区上方发布回复,请将您的回复文本发送至 ljeditor@linuxjournal.com。

Zack Brown 是 Linux JournalLinux Magazine 的技术记者,并且是“Kernel Traffic”每周新闻通讯和“Learn Plover”速记打字教程的前作者。 他于 1993 年在他的 386 上安装了 Slackware Linux,该 386 具有 8 MB 的 RAM,并且他的思想被开源社区永久性地震撼了。 他是 Crumble 纯策略棋盘游戏的开发者,您可以用几块纸板自己制作。 他还喜欢写小说、尝试动画、改革拉班记谱法、设计和缝制自己的衣服、学习法语以及与朋友和家人共度时光。

加载 Disqus 评论