ラボの紹介Hyperscan は、Intel の高性能な正規表現マッチング ライブラリで、DPI/IPS/IDS などのソリューションへの導入に適しています。nDPI は現在、広く使用されているオープン ソースの DPI ライブラリですが、nDPI のソース コードをさらに開発して、リソースが制限されたルーター製品に導入すると、そのコア モジュールが大量のメモリを消費します。 パート01: nDPIフレームワークの紹介図1 nDPIフレームワーク図 nDPIは、ntopが管理する非常に人気のあるオープンソースのDPIライブラリです。WindowsとUnix / Linuxシステムの両方をサポートし、クロスプラットフォームエクスペリエンスをサポートしています[1] 。図1のフレームワーク図に示すように、nDPIライブラリは主にネットワークデータ取得モジュール、データ前処理モジュール、プロトコル検出およびマッチングモジュール、および機能ライブラリ関連モジュールで構成されています。データ取得モジュールは、ネットワークカードからデータをリアルタイムで収集するか、既存のpcapファイルを解析します。データ前処理モジュールは、ネットワークデータの受信、データのグループ化、データの成形とフィルタリングを担当します。その中でも、プロトコル検出およびマッチングモジュールはnDPIの中核モジュールです。既存のプロトコルルール機能ライブラリに従って、成形されたパケットデータに対してルールマッチングを実行します。マッチングアルゴリズムのパフォーマンスと、マッチングプロセス中のメモリやCPUなどのハードウェアリソースの消費は、システム全体にとって重要です。 パート02、nDPIへのHyperscanの統合図 2. hYperscan を統合した DPI フレームワーク図。 Hyperscan と nDPI の統合は、主に次の 2 つの側面に重点を置いています。
nDPIにおける重要なマッチングプロセスは、複数パターンの文字列マッチングです。複数パターンの文字列マッチングは、マッチングできないルールを迅速に除外することで、個別にマッチングする必要のあるルールの数を減らし、マッチングパフォーマンスを向上させます。nDPIは複数文字列マッチングにAho-Corasickアルゴリズムを使用します。しかし、ネイティブのAho-Corasickアルゴリズムでは、すべてのルールをTrie木構造に変換する必要があり、大量のメモリを消費します。一方、Hyperscanは独自の最適化されたマッチングエンジンを搭載しており、マッチングプロセス中のメモリ消費を大幅に削減します。このアルゴリズムをHyperscanに置き換えることで、メモリ消費とCPU使用率を削減し、パフォーマンスを大幅に向上させました。
エンジンのマッチングアルゴリズムを統合するだけでなく、プリプロセッサモジュールにHyperscanを追加しました。HTTPプリプロセス中にHyperscanを使用して関連キーワードを検索することで、プリプロセスをさらに高速化します。 パート03、メモリの最適化テストプラットフォームとしてMT7981Bチップ + OpenWrtシステムを選択し、nDPIに付属するプロトコルルールライブラリファイルを使用してテストを行いました。同時に、実際のネットワークカードから収集したデータパケットをデータ入力として使用しました。図3に示すように、ネイティブnDPIは比較的大きなメモリ(56MB)を消費しますが、nDPI + Hyperscanソリューションではメモリ消費量が5.7MBに削減され、ネイティブnDPIのメモリ使用量のわずか10分の1にまで削減されています。 パート04、結論Hyperscanと統合されたnDPIは、オリジナルのnDPIと比較してメモリ消費量が大幅に削減されます。既存の組み込みネットワークデバイスではメモリリソースが極めて限られていますが、Hyperscan統合後のnDPIコンポーネントのメモリ最適化により、エッジサイドの組み込みネットワーク製品へのDPIおよび関連製品の導入が容易になります。 |