網絡分流器|基於複合存儲的100Gbps DPI技術
正則表達式
深度報文檢測是使用預約義的一系列規則在流級上對報文載荷(而非僅僅是報文頭)進行匹配,並根據匹配的結果決定對報文所採用的動做的一個過程。算法
(1)依靠更高性能的服務器或服務器集羣來加速DPI吞吐量,因爲在報文流上執行多機器或多核的負載均衡很是方便,這種方法很容易達到很高的處理性能,缺點是代價比較大。後端
(2)依靠更好的軟件算法來提升匹配性能,目前研究界普通採用以AC算法做爲基礎來優化性能,主要有WU-MANBER、SBOM、一次多字節(俗稱多步)、BloomFilter等方法,可是DPI過程要求的先後狀態轉移是關聯的,即下一次訪問的地址與上一次訪問的狀態和當前報文字節的內容緊密相關,受限於存儲器自己(主要是DDR)的性能,軟件優化的空間很是有限。服務器
(3)依靠各類多核NPU自帶的匹配引擎來加速,目前國外兩大多核NPU巨頭Broadcom和Cavium都有在其NPU上內置了DPI加速引擎,如Cavium內置的HFA引擎宣稱其單個NPU能夠達到24Gbps的處理能力,可是實測性能與宣稱性能之間相差巨大。尤爲是配置正則表達式規則時,帶通配符的規則會對其性能形成十分顯著的影響。網絡
老是,雖然研究界和產業界都很是關注深度報文檢測,當前DPI技術的技術發展仍然沒法遇上相關應用領域的現實要求。數據結構
在深度報文檢測(DPI)中,首先要將關鍵字或正則表達式特徵編譯成有限狀態自動機(Finite State Automata,FSA),並將FSA的狀態表配置在存儲器中。匹配過程當中,每處理報文的一個字節都須要至少一次查表,以獲取下一次要訪問的狀態地址。匹配的速度取決於訪存次數和每次訪存的時延,而對於一個給定的報文,訪存次數等於報文負載長度。所以要提升匹配的速度就須要儘可能減小每次訪存的時延。負載均衡
在輕量級的網絡下,網絡鏈路速率低。若是規則數比較少,能夠把每條規則編譯成一個FSA,狀態表配置在高速存儲器中,以得到較高的匹配速度。然而,隨着網絡帶寬的快速增長,10G比特的網絡已經開始應用於園區網絡中;規則的數目也增長到數百甚至上千條。將每條規則編譯成單個FSA的方案已經沒法知足性能需求。若是將全部規則編譯成一個FSA,可能發生狀態爆炸。狀態表的規模可能超過數100G字節,遠超過目前高速存儲器的容量,只能配置在外部磁盤這樣的低速存儲器中,訪存時延大大提升。ide
DPI技術的關鍵實際上是訪存的性能,尤爲是隨機訪存的性能,若是可以設計一種存儲結構,既可以支持很高的隨機訪問性能(如達到幾十個Gbps以上),又可以有比較大的容量(如到幾十兆的大小),則經過良好的狀態表數據結構優化,使得狀態表的訪問可以相對彙集;而後對訪存過程加以優化,如流水化訪存、Bank交錯、並行化訪存等措施來進一步提升訪問狀態表的效率,則高性能的DPI是能夠實現的。性能
湖南戎騰網絡創新團隊在國家天然科學基金的支持下,研究出來的高性能DPI技術,借鑑了計算機系統的Cache結構。在計算機系統中,因爲局部性原理,能夠用先進先出、最近最少使用等替換算法,使Cache有較高的命中率。可是在深度報文檢測中,報文的內容倒是徹底隨機的,難以預知下一個要處理的字節內容,會轉向哪一個狀態。選擇那些常常被訪問的狀態存儲到高速存儲器中是提升性能的關鍵。戎騰經過獨有的馬爾科夫預測技術,很好地解決了狀態訪問的預測問題。
圖1 複合存儲匹配引擎優化
整個匹配引擎採用兩層甚至三層,經過複合存儲及並行和流水技術,解決性能和存儲容量之間的矛盾,既可以經過一級匹配引擎的並行達到很高的性能,又可以經過二級存儲達到大容量的狀態表空間。這種結構既適合於關鍵字匹配,也適合於正則表達式匹配。
經過咱們的分析,輔以軟硬一體化流表技術,總體報文處理能力通常是核心匹配引擎4倍的性能。即若是核心匹配引擎可以達到n Gbps的性能,則總體報文處理能力就可以4n Gbps左右的性能,也就是說PET160S系統已經完成能夠知足雙向100Gbps以太網全帶寬的關鍵字DPI能力,而CNT16S也能夠知足實網條件下雙向100Gbps以太網(實網條件下,上下行流量不會超過200Gbps*80%)的正則表達式DPI要求。
當前,正在研製基於PCI-E的DPI加速卡,可望於近期在單塊PCI加速卡上實現40Gbps左右的關鍵字匹配性能和20Gbps的正則表達式匹配性能,以硬件加速卡的形式爲防火牆、***檢測系統、高速網絡管控、CDN、運營商信令分析提供硬件加速。