解決方案
網路安全系統必須即時將高速資料流與數千個特徵簽章進行比對。Aho-Corasick 吸引人之處在於其執行時間與字串數量無關,但其轉移表可能十分龐大。
Pao、Lin 與 Liu 在 2010 年 ACM TACO 論文中,保留了有用的線性串流行為,同時著手處理記憶體成本問題。透過納入管線化處理,狀態圖被縮減為僅含前向邊的字元 trie。
該論文報告,對於從 Snort 擷取出的 6,166 條字串簽章集,每字元約需 18 位元,控制邏輯成本低,且能藉由雙埠 FPGA 記憶體同時處理兩條串流,將吞吐量提升一倍。
達成成果
將自動機管線化為 trie
奏效原因
它將演算法的比對承諾,與其自動機某種笨重的實作方式分離開來。
trie 與表格的配置方式,以管線友善的記憶體取代了一般轉移。
增量式的簽章變更可以更新查找表,而無須重新配置 FPGA 電路。
可應用之處
在改變實體表示的同時,保留演算法的不變量。當狀態機針對硬體進行配置時,同樣的搜尋邏輯便能變得實用。
後續影響
P-AC 是入侵偵測領域一個很好的硬體教材:突破點並非新的比對規則,而是一種表示方式,使已知規則變得夠小、夠平行且夠可更新,足以應付高速封包串流。
追溯依據
參考來源
- A memory-efficient pipelined implementation of the aho-corasick string-matching algorithm ACM Transactions on Architecture and Code Optimization via OpenAlex · api.openalex.org ·