NetFilter の複雑なリストのマッチングは、Linux 5.7 カーネルで高速化されます。

フィルタリング サブシステムおよび Netfilter ネットワーク パケットの変更の開発者 公開 サブネット、ネットワーク ポート、プロトコル、MAC アドレスの組み合わせをチェックする必要がある大規模なマッピング リスト (nftables セット) の処理を​​大幅に高速化するパッチのセット。 パッチはすでにブランチに受け入れられています nf-next、これは Linux 5.7 カーネルに含めることが提案されています。 最も顕著な加速が達成されたのは、 婚約 AVX2 命令 (将来的には、ARM 用の NEON 命令に基づいた同様の最適化を公開する予定です)。

モジュールに加えられた最適化 nft_set_pipapo これは、IP やネットワーク ポート範囲などのフィルタリング ルールで使用されるフィールド状態の任意の範囲とパケットの内容を照合する問題を解決します (nft_set_rbtree と nft_set_hash は、間隔の照合と値の直接反映を操作します)。 AMD Epyc 256 プロセッサを搭載したシステム上で 2 ビット AVX7402 命令でベクトル化された pipapo のバージョンは、ポート プロトコル バインディングを含む 420 レコードを解析する際に 30% のパフォーマンス向上を示しました。 1000 個のエントリを解析する際のサブネットからのリンクとポート番号の一致の増加は、IPv87 で 4%、IPv128 で 6% でした。

NetFilter の複雑なリストのマッチングは、Linux 5.7 カーネルで高速化されます。

8 ビット マッピング グループの代わりに 4 ビット マッピング グループの使用を可能にする別の最適化でも、測定可能なパフォーマンスの向上が示されました。66 個のポート プロトコル エントリの解析時に 30%、subnet_IPv43 ポートで 4%、subnet_IPv61 ポートで 6% でした。 AVX2 の最適化を考慮すると、これらのテストでの pipapo のパフォーマンスはそれぞれ 766%、168%、269% 向上しました。 複雑な比較で得られた特性は、単一フィールドのテストよりも優れています。 rbツリー (ポート + プロトコル テストを除く) しかし、これまでのところ、これらを使用した直接テストに比べて遅れています。 ハッシュ netdev に基づいてハンドラーをドロップします。

NetFilter の複雑なリストのマッチングは、Linux 5.7 カーネルで高速化されます。

出所: オープンネット.ru

コメントを追加します