網路安全系統必須即時將高速資料流與數千個特徵簽章進行比對。Aho-Corasick 吸引人之處在於其執行時間與字串數量無關,但其轉移表可能十分龐大。

Pao、Lin 與 Liu 在 2010 年 ACM TACO 論文中,保留了有用的線性串流行為,同時著手處理記憶體成本問題。透過納入管線化處理,狀態圖被縮減為僅含前向邊的字元 trie。

該論文報告,對於從 Snort 擷取出的 6,166 條字串簽章集,每字元約需 18 位元,控制邏輯成本低,且能藉由雙埠 FPGA 記憶體同時處理兩條串流,將吞吐量提升一倍。

將自動機管線化為 trie

它將演算法的比對承諾,與其自動機某種笨重的實作方式分離開來。

trie 與表格的配置方式,以管線友善的記憶體取代了一般轉移。

增量式的簽章變更可以更新查找表,而無須重新配置 FPGA 電路。

在改變實體表示的同時,保留演算法的不變量。當狀態機針對硬體進行配置時,同樣的搜尋邏輯便能變得實用。

P-AC 是入侵偵測領域一個很好的硬體教材:突破點並非新的比對規則,而是一種表示方式,使已知規則變得夠小、夠平行且夠可更新,足以應付高速封包串流。

追溯依據

參考來源

  1. A memory-efficient pipelined implementation of the aho-corasick string-matching algorithm ACM Transactions on Architecture and Code Optimization via OpenAlex · api.openalex.org ·