PC/サーバーハードウェアを使用してスループットの高いルーターを作成するよう求められました。私はpf、iptables、tcに比較的慣れていますが、このように高い離脱率とそれほど多くのルールを見たことがありません。うまくいかない愚かな解決策を避けるのに役立つことを願っています。
私の目標は、毎秒少なくとも100のクライアントを追加および削除して、少なくとも10,000の同時クライアントをサポートすることです。各クライアントには、次の機能を備えた単純な双方向ルーティングルールがあります。
- IPv6のみ
- パケット転送(ソースおよび宛先アドレスの交換)
- 受信したバイト数を記録します。
- 一定量のデータ受信後に配信を停止
私が懸念しているのは、1秒あたり100のルールセットを作成して破棄すると、一部の隠されたミューテックスがパフォーマンスを低下させることです。
私の候補ソリューションは次のとおりです。
- これが私が好む解決策です。
- iptables + tcを備えたDebian。
- カスタムカーネルモジュール。やりたくありませんが、必要ならばやります。
次の中で最もスケーラブルなソリューションは何ですか?最高のパフォーマンスを得るにはどのようなヒントを使用する必要がありますか?
答え1
私はあなたがやっていることを試したことがありませんが、おそらくOpenBSDを使用してこれを行う最善の方法はテーブルを使用することです。テーブルからIPを簡単に追加/削除できるからです。