「すべての着信トラフィック」とはどういう意味ですか? IPパケットをフィルタリングしており、スケーラブルなソリューションが必要な場合は、強くお勧めします。彼らが望むことをするために使用できるいくつかのSDNハードウェアがありますが、それはプロジェクトの範囲外です。
とにかく、あなたの質問に(少なくとも部分的に)答えて、あなたにいくつかの一般的なヒントを与えます(node.js特有ではありません)。まず、明確にすべき事項がいくつかあります。
- IPv4についてのみ話していますか?
- にかかわらず、あなたは彼らがルートルックアップをやっている時にルータが行うことに似て適用することができ
(彼らはリストからIPアドレスを追加/削除 ます)リストダイナミックです。あなたはpatricia trie(Radix tree)を作り、それを検索することができます(それについて真剣に考えているのであれば、thisの記事を見てください)。ルーティングの世界では、10msは生涯と見なされるため、速度の遅いCPU(1GHz未満)のソフトウェアベースのルータでも、10msの時間内に数百のIPv4ルックアップを実行する可能性があることに注意してください。 hedgar2017にも同様の例があります。リソースの量(トラフィック量)によっては、パフォーマンスについて心配する必要はありません(ユーザーセッションを確立するときだけIPをチェックしている場合)。
IPv6をやっている場合(少なくとも計画しておく必要があります)、そのアプローチは似ています。私が言及することは、IPv6が128ビットを持っていても、ISPは各ユーザーに/ 48(または最悪のシナリオ/ 64)プレフィックスを割り当てることです。ツリーを/ 48までビルドして、より高速なルックアップを得ることができます。
これらのアドレスはヒットしそうですか?どのように最終的にそれらを見ても、[ブルームフィルタ](https://en.wikipedia.org/wiki/Bloom_filter)は検索の要求を減らすのに役立ちます。 –
IPV4アドレスの場合は、合計アドレス空間の半分以上を除外します。したがって、アドレスをブラックリストに載せるのではなく、リストにないアドレスをホワイトリストに登録するほうが簡単かもしれません。 _unblocked_のアドレスをいくつ圧縮できますか? –