具有高流失率规则集的高性能路由。哪种方法最有可能扩展到 C10K 及更高版本?

具有高流失率规则集的高性能路由。哪种方法最有可能扩展到 C10K 及更高版本?

我被要求使用 PC/服务器硬件创建一个高吞吐量路由器。我对 pf、iptables 和 tc 比较熟悉,但我从未遇到过如此高的流失率和如此多的规则。我希望你能帮助我避免采取行不通的愚蠢解决方案。

我的目标是支持至少 10,000 个并发客户端,每秒至少添加和删除 100 个客户端。每个客户端都有简单的双向路由规则,具有以下功能:

  • 仅限 IPv6
  • 转发数据包(替换源地址和目标地址)
  • 记录收到的字节数
  • 收到一定数量的数据后停止转发

我担心的是,由于某些隐藏的互斥体,每秒创建和销毁 100 个规则集会降低性能。

我的候选解决方案是:

  • OpenBSD 与 pf.这是我的首选解决方案。
  • Debian 与 iptables + tc。
  • 自定义内核模块。我不想这样做,但如果必须的话我会这样做。

这些解决方案中哪一个的扩展性最好?我应该使用哪些技巧来获得最佳性能?

答案1

虽然我从未尝试过做您正在做的事情,但使用 OpenBSD 执行此操作的最佳方法可能是使用表,因为您可以轻松地从表中添加/删除 IP。

相关内容