Linux 核心 5.7 將加速 NetFilter 中的複雜清單匹配

Netfilter網路封包過濾並修改子系統的開發者 發表 一組補丁,可顯著加快大型匹配列表(nftables 集)的處理速度,這需要檢查子網路、網路連接埠、協定和 MAC 位址的組合。 補丁已經被分支接受 nf-下一個,將建議包含在 Linux 5.7 核心中。 最明顯的加速是由於 吸引人的 AVX2指令(未來計畫針對ARM發布類似的基於NEON指令的最佳化)。

模組中包含的優化 nft_set_pipapo (PIle Packet POlicies),解決了將封包內容與過濾規則中使用的任意欄位狀態範圍(例如 IP 和網路連接埠範圍)進行匹配的問題(nft_set_rbtree 和 nft_set_hash 操縱區間匹配和值的直接反映)。 在配備 AMD Epyc 256 處理器的系統上使用 2 位元 AVX7402 指令進行向量化的 pipapo 版本在解析包括連接埠協定組合在內的 420 萬筆記錄時顯示出 30% 的效能提升。 在解析 1000 筆記錄時比較子網路和連接埠號碼的組合時,IPv87 的增幅為 4%,IPv128 的增幅為 6%。

Linux 核心 5.7 將加速 NetFilter 中的複雜清單匹配

另一項最佳化允許使用8 位元匹配組而不是4 位,也顯示出顯著的效能提升:解析66 萬個連接埠協定條目時提升30%,子網路IPv43 埠提升4%,子網路IPv61 埠提升6 %。 總的來說,考慮到 AVX2 優化,pipapo 在這些測試中的表現分別提高了 766%、168% 和 269%。 複雜比較獲得的特徵領先單一字段檢查 RB樹 (連接埠+協定測試除外),但到目前為止,它們落後於使用直接檢查 哈希值 並刪除基於 netdev 的處理程序。

Linux 核心 5.7 將加速 NetFilter 中的複雜清單匹配

來源: opennet.ru

添加評論