TWI477106B - 用於在交換器asic中整合線路速率應用識別的系統和方法 - Google Patents

用於在交換器asic中整合線路速率應用識別的系統和方法

Info

Publication number
TWI477106B
TWI477106B TW101134012A TW101134012A TWI477106B TW I477106 B TWI477106 B TW I477106B TW 101134012 A TW101134012 A TW 101134012A TW 101134012 A TW101134012 A TW 101134012A TW I477106 B TWI477106 B TW I477106B
Authority
TW
Taiwan
Prior art keywords
stream
packet
tracker
signature
switch
Prior art date
Application number
TW101134012A
Other languages
English (en)
Other versions
TW201325134A (zh
Inventor
Joseph Tardo
Duc Hua
Nate Hill
Stanislas Wolski
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of TW201325134A publication Critical patent/TW201325134A/zh
Application granted granted Critical
Publication of TWI477106B publication Critical patent/TWI477106B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0254Stateful filtering

Description

用於在交換器ASIC中整合線路速率應用識別的系統和方法
本發明總體上涉及網絡系統,更具體地,涉及用於在交換器ASIC(特定功能積體電路)中整合獨立的線路速率應用識別(line-rate application recognition)的系統和方法。
深度封包檢測(DPI)系統能夠實現複雜的服務,諸如入侵檢測、串流整形和負載平衡。這樣的DPI系統的關鍵元件是被設計為將封包有效載荷與多個已知簽名的簽名匹配引擎。日益提高的網絡速度使得DPI系統為了滿足這種提高的性能要求而負擔增加。迄今為止,現有的解決方案需要添加昂貴的外部處理器,通常帶有專門的加速器硬體。因此,所需要的是能夠以有效且經濟的方式執行線速應用識別的DPI系統和方法。
作為在權利要求中更完整闡述的用於在交換器ASIC中集成的線速應用識別的系統和/或方法,基本上如附圖中的至少一個所示和/或結合附圖中的至少一個所描述。
(1)一種在交換器ASIC中具有整合的線速應用識別的交換器,包括:流量跟蹤器會話表,所述串流跟蹤器會話表具有多個條目,所述多個條目中的每一個與獨特的封包串流關聯,其中,至少基於共用源以及由多個封包共享的目的地址來區分封包串流;串流跟蹤器,審閱在入口管道進入所述交換器的封包,在識別出要被跟蹤的新的封包串流時,所述串流跟蹤器在所述串流跟 蹤器會話表中創建條目,所述串流跟蹤器審閱與識別出的所述串流相關聯的封包並生成將連同經審閱的所述封包被轉發至所述交換器中的儲存器管理單元的串流訊息,所述串流訊息包括標識經審閱的所述封包關聯的特定封包串流的串流指數;以及簽名匹配引擎,從所述交換器中的所述儲存器管理單元接收經審閱的所述封包和所述串流訊息,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查經審閱的所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發生至所述入口管道的響應封包中,其中,所述串流跟蹤器使用在所述入口管道接收的所述響應封包中包含的串流指數來更新所述串流跟蹤器會話表中的條目,以表明要施加到由所述串流跟蹤器審閱的後續封包的策略,所述後續封包與所述串流跟蹤器會話表中的所述條目關聯的串流相關。
(2)根據(1)所述的交換器,其中,基於源地址、目的地址、源端口、目的端口和協議來識別封包串流。
(3)根據(1)所述的交換器,其中,所述串流跟蹤器會話表位於能夠看到雙向串流中的所有封包的位置。
(4)根據(1)所述的交換器,其中,在多個管道中共享所述串流跟蹤器會話表。
(5)根據(1)所述的交換器,其中,所述簽名匹配引擎包含在與出口管道分離的輔助管道中。
(6)根據(1)所述的交換器,其中,所述表達式匹配狀態機是確定有限狀態自動機狀態機。
(7)根據(1)所述的交換器,其中,所述響應封包包括標識應當應用於串流中的封包的策略的策略指數。
(8)一種用於執行封包檢測的交換器,包括:入口管道,所述入口管道包括審閱在所述入口管道進入交換器的封包的串流跟蹤器,在識別出要被跟蹤的新的封包串流時,所述串流跟蹤器在 串流跟蹤器會話表中創建條目,所述串流跟蹤器審閱與所述新的封包串流相關聯的其它封包並生成將連同經審閱的所述封包被轉發至所述交換器中的儲存器管理單元的串流訊息,所述串流訊息包括標識經審閱的所述封包關聯的特定封包串流的串流指數;以及耦接至所述儲存器管理單元的輔助管道,所述輔助管道與同樣耦接至所述儲存器管理單元的出口管道分離,所述輔助管道包括簽名匹配引擎,所述簽名匹配引擎從所述交換器中的所述儲存器管理單元接收經審閱的所述封包和所述串流訊息,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查經審閱的所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發送至所述入口管道中的所述串流跟蹤器的響應封包中。
(9)根據(8)所述的交換器,其中,基於源地址、目的地址、源端口、目的端口和協議來識別封包串流。
(10)根據(8)所述的交換器,其中,所述表達式匹配狀態機是確定有限狀態自動機狀態機。
(11)根據(8)所述的交換器,其中,所述響應封包包括標識應當應用於串流中的封包的策略的策略指數。
(12)一種用於執行封包檢測的交換器,包括:耦接至所述交換器中的儲存器管理單元的輔助管道,所述輔助管道與同樣耦接至所述儲存器管理單元的出口管道分離,所述輔助管道包括簽名匹配引擎,所述簽名匹配引擎從所述交換器中的所述儲存器管理單元接收封包,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發生至所述交換器的入口管道的響應封包中,其中,所述入口管道中的串流跟蹤器使用在所述交換器的所述入口管道上接收的所述響應封包,以對包含在所述響應封包中的串流 指數標識的封包串流中的後續封包應用策略行為。
(13)根據(12)的方法,其中,基於源地址、目的地址、源端口、目的端口和封包協議來識別封包串流。
(14)根據(12)的方法,其中,所述表達式匹配狀態機是確定有限狀態自動機狀態機。
(15)根據(12)的方法,其中,所述響應封包包括標識應當應用於串流中的封包的策略的策略指數。
(16)根據(12)的方法,其中,由所述入口管道中的所述串流跟蹤器將所述封包轉發至所述簽名匹配引擎。
(17)根據(12)的方法,其中,在所述串流跟蹤器和所述簽名匹配引擎之間不存在直接連接。
100‧‧‧核心晶片
110‧‧‧串流跟蹤器
112‧‧‧串流跟蹤器會話表
114‧‧‧串流跟蹤器策略表
116‧‧‧輸出FIFO(先進先出)
120‧‧‧SM引擎
400‧‧‧SM引擎
410‧‧‧封包緩衝器
420‧‧‧串流管理
422‧‧‧串流表
430‧‧‧正規表達式處理器
440‧‧‧匹配處理器
500‧‧‧封包緩衝器
900‧‧‧匹配處理器
1002‧‧‧驗證封包
1004‧‧‧驗證串流
1006‧‧‧確定性有限狀態自動機
1008‧‧‧後匹配處理
為了描述可以獲得本發明的上述和其它優點和特徵的手段,將參照附圖中所示出的具體實施方式來呈現以上簡要描述的本發明的更具體描述。應理解,這些附圖僅描述了本發明的典型實施方式,而不應認為是限制其範圍,將通過使用附圖以額外的特徵和細節來描述和解釋本發明,其中:圖1示出示例串流跟蹤器的組件的框圖。
圖2示出會話表的實例。
圖3示出隨著每個封包被傳遞至簽名匹配引擎的報頭中的入口管道生成和出口管道生成字段的實例。
圖4示出簽名匹配引擎的實施方式。
圖5示出封包緩衝器的實施方式。
圖6示出具有四個正則表達式引擎的實例。
圖7示出範圍值編碼佈局的實例。
圖8示出點陣圖編碼佈局的實例。
圖9示出匹配處理器的實施方式。
圖10示出簽名匹配封包串流的實例。
圖11示出簽名匹配串流表條目中的字段的實施方式。
圖12示出匹配表條目中的字段的實施方式。
圖13A至圖13C示出結果封包的示例格式。
圖14描述了結果報頭中的字段。
圖15示出針對封包的檢索策略行為的示例實施方式。
下面將詳細討論本發明的各種實施例。雖然討論具體的實現方式,但應理解,這僅是出於說明目的。相關技術領域的技術人員將認識到,在不脫離本發明的精神和範圍的情況下,可使用其它組件和配置。
在本發明中,DPI通常是指以下機制,在該機制中,可檢查串流中的封包從而確定潛在的應用。可通過在所交換的應用數據的最初2K字節中尋找“揭秘(telltale)”模式來確認幾乎所有受關注的應用,雖然有些可能需要更多字節。對於數量較大的應用,不會在單個封包中發生確鑿的數據匹配,而是需要在針對串流的多個封包中匹配模式。
根據本發明,串流跟蹤能夠為具有有效載荷數據的串流選擇出那些初始封包,並發送副本以供簽名匹配。由於僅對這些採樣的封包執行簽名匹配,所以不需要以系統封包吞吐率進行簽名匹配。
根據本發明,DPI可用於擴展常規分類,因為它能夠超越L2至L4報頭,並針對附加訊息而瀏覽整個封包。因此,其提供了以下能力:檢查有效載荷中的任意字段並將這些字段與最常見應用的已知簽名匹配。一旦識別出,則提供通過各種手段(諸如速率計、服務質量排隊、重定向、封包過濾等)監督這些串流的能力。
在本發明中,可以通過兩個主要單元:簽名匹配(SM)引擎和串流跟蹤器來實現DPI。SM引擎提供檢查封包的有效載荷中的任意字段的能力。這可以作為找尋簽名的正則表達式匹配狀態機 或在具體應用中發現的公共模式來體現,並在找到時表明匹配。一旦串流排隊等待檢查,就可以負責處理和識別串流。
由串流跟蹤器處理串流管理和策略行為。因為對於識別應用所需的有效載荷可能不一定包含在單個封包中,所以需要串流跟蹤器。因此,提供了一種方法,其用於儲存和跟蹤構成串流的大量的這些封包組。在操作中,串流跟蹤器可以將串流組合和格式化為字節串流,以便可以進行正則表達式匹配。此外,一旦串流被分類,串流跟蹤器就能夠提供對這些串流進行跟蹤並對串流串串流的封包應用行為的手段。
可以將串流跟蹤器處理分解和分組成下面列出的一組基本功能。
‧識別串流:解析輸入封包。識別所關注的串流
‧跟蹤串流:創建狀態條目並保持串流狀態
‧導向封包以供檢測:將封包轉發至SM引擎以供簽名匹配
‧處理簽名匹配結果:獲得簽名匹配結果、更新策略、CPU通知
‧應用行為:對後續封包應用簽名策略行為
‧終止串流:標識何時應該終止串流並不再跟蹤串流
‧報告統計:生成具有統計的記錄,並輸出到CPU
圖1示出串流跟蹤器的組件和該串流跟蹤器如何裝入交換器結構核心晶片100的管道結構中的框圖。如圖所示,串流跟蹤器110可以分解為兩個主要結構:串流跟蹤器會話表112和串流跟蹤器策略表114。正如其名稱所暗示的,會話表112可負責識別和保持串流的狀態,而策略表114可負責一旦串流已被分類即對它們應用行為。會話表112可保持關於串流的所有訊息,包括鍵標、狀態、計數器和策略指數。策略表114可保持一旦串流已被分類即可應用到該串流中的封包的行為。這兩個表都可位於入口字段處理器(IFP)級中的入口管道。如進一步的說明,串流跟蹤器會 話表112還具有附接的輸出FIFO(先進先出)116,其用於在串流已經結束時報告該串流的狀態和封包/字節計數器。
SM引擎120可位於輔助管道(AXP)中。在一個實施方式中,在串流跟蹤器110和SM引擎120之間沒有直接的介面。相反,可以通過每個封包排隊的報頭來實現串流跟蹤器110和SM引擎120之間的通訊。
串流跟蹤器會話表可放置在可觀察和記錄雙向串流的所有封包的位置處。在單個管道實現方式中,因為在處理所有封包時它們都在同一路徑串流動,所以有很大的靈活性。入口或出口管道的任何位置都會看到雙向串流中的所有封包。在多管道的情況下(即,每個管道只能看到針對端口子集的封包),在管道間可共享會話表。這保證了兩個方向都可以被跟蹤。可替換地,會話表被定位使得其能夠由入口和出口管道兩者存取。在此,並非在串流進入晶片時跟蹤所有串流,而是將跟蹤集中在從前面板埠進入的封包,以及出口至前面板埠的封包。這是有效的,原因在於雙向串流的正向和反向路徑中的封包會通過相同的前面板埠。該埠對分組允許來自不同的前面板埠的串流被獨立地跟蹤,並允許用於擴展到多個管道的裝置。將會話表分割成更小的組塊使得查詢頻寬增加成比例的量。只要會話表的相同實例(instance)跟蹤前面板埠對,會話表就可以被分割成任意數量的組塊。
在下面的描述中,使用入口管道中的單個觀測點,其中,當所有輸入的通訊量進入晶片,且在入口管道中應用所有串流跟蹤行為時,記錄所有輸入的通訊量。應當理解的是,本發明的原理並不限於這種實現方式。
為了說明串流跟蹤器的串流識別功能,考慮檢查遵循TCP/UDP L4協議IP的封包的實例。在此,可通過標準5元組(IP源和目的地址,L4源和目的埠以及IP協議)識別串流,並且可以跟蹤串流達整個連接持續時間。可通過觀察封包(TCP連接)內 的標記來檢測串流創建和終止。連接是雙向的,因此可以檢測和處理串流的兩個方向。應注意,雖然以下的說明參照示例TCP/UDP串流,但是本發明的原理並不限於這種串流類型。
可以每個物理埠或以WLAN虛擬埠為單位來實現串流跟蹤。可以有不同的配置選項,其可選擇地過濾允許哪種類型的封包創建串流跟蹤器條目。
串流跟蹤每埠屬性可來自於四個源之一:入口物理埠、出口物理埠、源虛擬埠或目的地虛擬埠。如果四個來源中的任何來源可用,則該串流適於進行串流創建。
如果輸入的封包在串流跟蹤埠進入或者如果輸入的封包在串流跟蹤埠出去,則它們適於進行串流跟蹤。在一個實例中,跟蹤輸入或輸出前面板埠的串流。如果有兩個觀測點,一個作為封包在埠上進入的觀測點,另一個作為封包出去該埠的觀測點,則可以完成該過程。在一個實施方式中,在入口管道中只使用一個觀測點。
在一個實施方式中,可以進行一些預過濾來限制應被考慮以供串流跟蹤的封包。該預過濾可容納有限資源,該有限資源規定多少串流可以被跟蹤和簽名匹配。此外,不需要對每種類型的封包進行串流跟蹤。在此,可以應用某些約束以簡化實現方式。在一般情況下,串流跟蹤的範圍可考慮SM引擎的能力、串流跟蹤器的能力以及應被跟蹤的受關注的串流。
一旦串流識別和適當性得到解決,則可以確定何時是適當時間來開始跟蹤串流。對於TCP連接,檢測交換的最初幾個封包通常足以識別基本應用。對於許多簽名,進行匹配所需的數據在串流中較早發生,並且對於整個串流持續時間僅可用一次。為此,針對TCP串流的串流跟蹤可在檢測到新的TCP連接開始時啟動,該TCP連接的開始由SYN或SYN-ACK封包表示。對於UDP串流,對於串流開始沒有等效指示符,因此可將看到的第一個封包 視為初始封包。一旦確定了需要跟蹤串流,可保持該串流的狀態,以便按照有序方式進行處理。被創建從而保持針對所有跟蹤的串流的狀態的數據結構稱為會話表。
為了識別串流過交換器的基本應用,SM引擎需要存取將跨越TCP/UDP串流中的多個封包的數據。在本發明中,構造可識別輸入TCP/UDP串流和儲存其狀態的數據結構。來自SM引擎的、關於所識別的串流的簽名匹配結果也儲存並應用至已識別的串流的後續封包。標準5元組可用於識別串流並作為用於索引到會話表的鍵標。圖2示出會話表字段的一個實例。
SM引擎可以在TCP/UDP串流的兩個方向上檢測封包。為了適應這種情況,可以將會話表設置為使得每個條目在兩個方向上跟蹤封包。對於這兩個方向的5元組基本上是相同的,其中不同之處在於調換了源/目的地字段。可以標準化鍵標,使得經哈希運算後產生獨立於方向的相同結果。這可以經由源和目標IP地址的簡單算術比較來進行。方向位可以儲存在條目中以指示儲存的順序。
一旦在會話表中已創建了串流條目,就將該串流中的封包發送至SM引擎進行處理。在理想的情況下,將所有封包都發送至SM引擎,直至能夠生成匹配。然而,緩衝和處理需求會使其不切實際。因此,可將串流跟蹤器設計為僅發送該串流的最初N個封包(或字節),以保證可緩衝和處理設定數目的串流。這可能是足夠的,原因在於,對於大部分所關注的應用,所需的封包含在串流的最初幾個封包中。
如圖1所示,SM引擎120包括在AXP中。如所指出的,在一個實施方式中,沒有從串流跟蹤器110到SM引擎120的直接接口。相反,可通過附至被轉發到SM引擎120的每個封包的報頭來中繼訊息。可在入口管道中計算報頭的一部分,而當該封包出列並由出口管道處理時,可添加另一部分。圖3示出在隨著每 個封包被傳遞到SM引擎120的報頭中的入口管道生成字段和出口管道生成字段的實例。
發送至SM引擎的封包串流注釋有第一標記和最後標記。這些標記可用於對準和劃界正被跟蹤和發送以供處理的串流。串流指數可與各個封包一起傳遞,指示封包屬於哪個串流。只要數據變得對於任何串流可用,SM引擎就可開始處理。不必等待串流的所有封包都變為可用。每個串流跟蹤器條目在連接的兩個方向上記錄串流,所以報頭可提供方向位,用於指示封包是正向還是反向路徑的一部分。
串流中的所有封包都可被標記有用作針對該串流的ID的時間戳。這可用於當由SM引擎正在出列封包時檢查串流一致性。從串流跟蹤器接收的不一致時間戳值可表明或是發生了錯誤或是已經創建了新的串流並且正在以相同的串流指數進行跟蹤。無論在哪種情況下,SM引擎都應停止對當前串流的處理,記錄錯誤,並且在檢測到開始標記時啟動對該新的串流的處理。
串流跟蹤器可將本地序列數(Packet_num)添加到轉發至SM引擎的每個封包的報頭。該數字代表封包被串流跟蹤器看到的順序。SM引擎可使用該數字來確認在MMU中沒有丟失封包。可通過觀看帶有LAST標記設置的封包來確定發送的封包總數。在此,應注意,針對串流的兩個方向可共享該計數。錯誤位指示符(FT_error)發出信號指示:檢測到某種錯誤進而不應該處理該封包。在這種情況下,針對該串流,不應該發送其它封包。然後,SM引擎應嘗試與先前發送的封包進行簽名匹配。
在將封包呈現給SM引擎之前,可以預先解析這些封包,以便可以提取對於該封包的相關偏移量。恰好在將偏移量發送至SM引擎所駐留的AXP之前,可由出口管道進行偏移量計算。應注意,這些偏移量不必連同每個封包而儲存在MMU中。因此,在出口管道提取該訊息的成本相對較低。
發送至SM引擎的字節數和封包的最大數可以是可配置的。串流跟蹤器可轉發封包以供處理,直至超過最大有效載荷閾值(例如,2k字節)、最大封包閾值(例如,10)等。串流跟蹤器可被配置為跟蹤發送至SM引擎的封包/字節數,並且也跟蹤看到的針對該串流封包/字節的累計總數。
在一般情況下,SM引擎使用可編程狀態機來對串流中的前幾個封包的L4有效載荷進行模式匹配。如果識別到匹配,則發送消息至串流跟蹤器,從而啟動同一串流中的其它封包的行為。在一個實施方式中,SM引擎作為AXP內部的非-線速功能而實現。
圖4示出SM引擎的實施方式。如圖所示,SM引擎400有四個主要的子塊:封包緩衝器410、串流管理420、正則表達式處理器430和匹配處理器440。封包緩衝器410接收封包和元數據,對其進行緩衝,並在需要時發送報告封包。串流管理420處理串流確認,並將匹配數據儲存在簽名匹配串流表422中。正規表達式處理器430包含可編程狀態機。在一個實施方式中,正規表達式處理器430具有32個可編程狀態機,其被分組為八個正規表達式瓦片。最後,匹配處理器440在檢查其它限定符之後求解最佳匹配,並且如果需要,則利用封包將消息發送至交換器管道中的串流跟蹤器。除了這四個主要子塊,SM引擎400還包括用於控制和狀態的寄存器。
封包緩衝器410管理通過SM引擎400的封包和報頭數據。圖5更詳細地示出封包緩衝器的實施方式。在一個實施方式中,有四個進出封包緩衝器500的封包串流。封包數據來自AXP。當封包被接收時,元數據和某些報頭字段被寫入16-條目隊列。此外,完整的封包被儲存於儲存器中。
正規表達式引擎讀取並處理有效載荷。正規表達式引擎通過32字節高速緩存器與封包緩衝器500接口,從而保持四條儲存器線路。每個正規表達式引擎可獨立處理該數據窗口中的任何字節。
如果存在匹配或封包被標記為最後一個封包,則匹配訊息和報頭字段被放置在要出去的4-條目隊列中。然後,該封包與任何匹配訊息一起被發送出AXP接口至串流跟蹤器。
在一個實施方式中,可使能封包緩衝器來執行數個封包檢查,以確定該封包對於匹配是否有效,或者是否應該丟棄該封包。丟棄的封包不會產生匹配結果,且中間封包將被丟棄。例如,封包緩衝器可響應AXP控制信號、串流跟蹤器誤差信號(例如,FT報頭包括使已經排隊以供簽名匹配的封包無效的錯誤位)、TCP/UDP校驗和、封包長度(例如,小於或等於接收的實際有效載荷字節數的IP長度)等。
串流管理420包括SM串流表查詢、串流有效性檢查,並針對同一串流中的其它封包儲存串流結果。一旦封包已被確定為有效,則正規表達式引擎開始匹配。
SM引擎中的SM串流表422從屬於串流跟蹤器。串流跟蹤器將串流與索引關聯,並將該索引提供至SM引擎。簽名匹配在SM串流表422中進行查找。當匹配完成後,將串流的狀態寫回到SM串流表422中。
如果到達的封包被標記為首個封包,則基於報頭和元數據來初始化SM串流表條目。然後,正規表達式引擎開始匹配該封包。否則,如果該封包不是首個封包,則針對來自SM串流表422的先前串流數據進行數個不同的檢查。如果所有的檢查都通過,則正規表達式引擎開始匹配。
控制寄存器可用於確定如何處理串流檢查失敗。如果啟用的檢查失敗,則丟棄並計數封包,置位狀態位,且不進行匹配。如果檢查被禁用,則仍對失敗的檢查進行計數,並置位狀態位,但是將當前的串流值插入表中,且設置“丟失的包”標記以表示失敗。
SM引擎的關鍵元件是基於儲存器的狀態機組,其被設計為將 封包字節串流針對正規表達式大集合進行並行匹配。在一個實施方式中,SM引擎具有32個正規表達式引擎,用於存取用於儲存狀態樹和多封包模式上下文的總共1MB的片上儲存器。
這32個正規表達式引擎和片上儲存器可在八個瓦片中平均劃分。如圖6所示,每個瓦片可具有共享128KB單埠儲存器的四個正規表達式引擎。四個獨立的正規表達式引擎(RE0、RE1、RE2、RE3)接收對應於輸入封包的應用有效載荷(例如,第4層有效載荷)的字節串流。對於每個字節,正規表達式引擎發出一個或更多儲存器讀取,以取出用於確定狀態樹的“下一個狀態”的“當前狀態”訊息。重複執行該序列,直至到達封包的最後。每當檢測到“匹配狀態”時,正規表達式引擎輸出匹配ID。這些匹配被轉發至匹配處理器。
在一個實施方式中,正規表達式狀態表儲存器是258位寬和4k條目深。每行包括2位編碼類型和32字節狀態表數據。多達四個正規表達式引擎和一個軟件接入埠共享單個狀態表儲存器。它們在那些當前活動之間循環運行。非活動的那些允許其它利用儲存器頻寬。
對於每個瓦片,狀態表是128KB儲存器,用於保持針對多達四個正規表達式引擎的狀態、轉換和多包狀態上下文。狀態表訊息允許正規表達式引擎來基於當前狀態和數據字節確定下一個狀態。
如果啟用,則正規表達式引擎可管理狀態表儲存器中的數據結構(例如,2KB至16KB)中的多封包狀態上下文。在一個實施方式中,SM引擎可跟蹤高達8k單獨的串流。這是影響所有基於串流的跟蹤的單獨設置。如果當前狀態指針是16位或使用16個交叉簽名標記,則取決於所跟蹤的串流數,針對該上下文,可在狀態表儲存器中保留高達每個引擎16KB的儲存。在一個實施方式中,不會將狀態表訊息放置在儲存了上下文的同一個區域 中。當正規表達式引擎不需要多封包狀態上下文時,該空間可用於附加狀態表訊息。
如果在SM串流表中沒有有效的串流,則多封包匹配上下文空間不需要進行初始化。串流中的首個封包從寄存器中得到其開始狀態,然後在封包的最後,將其狀態保存到儲存器的上下文區域中。僅在同一有效串流中的後續的封包上,是由多封包狀態上下文確定的開始狀態。
在一個實施方式中,有支持狀態和過渡數據的兩個編碼:範圍值(RangeValue)和點陣圖(BitMap)。RangeValue(RV)狀態是被作為RangeValue條目而編碼的可能狀態機過渡的可變長度列表。RV條目編碼可包括具有接受的字符範圍的下一個狀態指針。範圍可以由最小(min)和最大(max)字符(每個具有0至255的字符範圍)來指定。在此,如果max_char=min_char,則指定單字符過渡,如果max_char>min_char,則指定多字符過渡。此外,特定RV條目編碼可用於指示(例如)匹配ID(Match ID)位於下一個狀態指針字段。圖7中示出示例RangeValue編碼佈局。
另一方面,點陣圖編碼可包括256位的點陣圖字段,以表示哪些字符採取非默認過渡。每個位都可對應ASCII字符的過渡,其中“0”表示過渡到下一個默認狀態,“1”表示過渡到由下一個狀態指針列表表示的、非默認的下一個狀態。在點陣圖字段之後,所有有效的“下一個狀態指針”都被連續(以與點陣圖矢量中所經歷的相同順序)放置在儲存器中。下一個狀態指針尾隨著多達每行15個指針連同訊息(Info)字段。訊息字段被複製到每行,從而僅必須讀出包含由點陣圖表示的指針的行。在一個實施方式中,訊息字段可包括匹配狀態字段和匹配ID字段。圖8中示出示例性BitMap編碼佈局。
匹配處理器的主要功能是用於在由正規表達式引擎報告的、與給定串流關聯的所有匹配中確定出最佳簽名,用於篩選掉由正 規表達式引擎報告的、不具有與簽名(例如,應用於給定的L4埠範圍,或僅應用於UDP或匹配必須以EOP發生)關聯的正確限定符的匹配,用於通過封包緩衝器將“最佳匹配”與其它元數據一起轉發至串流跟蹤器,以及針對交叉簽名標記進行更新和檢查。
圖9示出匹配處理器的實施方式,如圖所示,匹配處理器900從正規表達式處理器(即,每正規表達式一個引擎)接收32個匹配串流。內部地,它們被分為八塊,並分配到專用的256深的匹配表儲存器。簡單循環仲裁器可用於服務8個匹配FIFO中的一個,並授予其存取匹配表儲存器的權利。
由於有四個不同的匹配表儲存器,所以匹配處理器900每個時鐘週期可處理最多四個匹配。如果每個引擎在每個字節上生產一個匹配,則平均每個週期4-8個匹配(取決於每個狀態的儲存器查找的數量)。每個週期處理四個匹配給出同一最壞情況下的吞吐量,然而在正常情況下,不會成為限制因素,原因是不會在每個引擎的每個字節上發生匹配。
對於由正規表達式引擎報告的每個匹配,匹配處理器900讀取來自由匹配ID索引的匹配表的條目。匹配處理器然後檢查限定符,以確定匹配是否是有效的。例如,某些簽名僅應用於具有給定L4埠範圍的封包。在這個實例中,如果觸發簽名,但是埠範圍檢查失敗,則簡單地丟棄該匹配。
一旦匹配已合格,則匹配處理器900確定該匹配(如果它是第一個匹配,則它會被自動儲存)是否是比當前儲存的匹配具有更高優先順序的匹配。每個簽名都具有與其關聯的匹配優先順序字段和匹配報告級。通過考慮這些字段連同匹配ID,匹配處理器900確定最佳匹配以進行報告。
匹配處理器900被設計為:如果封包被標記為最後,則匹配處理器生成報告,即使沒有發現有效的匹配。如果最佳匹配報告級為“最終報告”或“發送報告”,則也在當前封包結束時生成 報告。
為了進一步說明SM引擎的處理,現在參考圖10,其示出簽名匹配封包串流。如圖所示,簽名匹配過程開始於驗證封包1002。如果封包通過了該驗證,則過程繼續到驗證串流1004。如果串流被驗證,則過程繼續到運行確定性有限狀態自動機(DFA)1006,以針對多個模式同時匹配封包。
一般情況下,DFA是狀態圖,其中,封包字節連同當前狀態確定下一狀態將是什麼。圖中的一些狀態將是匹配狀態,表明可能的簽名匹配。正規表達式引擎使用表示儲存在儲存器中的該圖的狀態表遍歷該圖。應理解,在不脫離本發明的原理的情況下,可以使用其它類型的狀態表。
一旦DFA運行,則過程繼續到後匹配處理1008,以確定到目前為止的最佳匹配,然後,如果有指示則將響應發送至串流跟蹤器。下面詳細提供簽名匹配封包串流的每個階段內的示例處理。
可通過執行各種檢查來驗證封包。例如,如果已經由串流跟蹤器將封包標記為錯誤,將不處理該封包。在另一個實例中,可以做出有關封包的長度是否足以容納L4有效載荷的確定。這將檢測(例如)封包是否已在中間系統中被截斷。在又一實例中,可以進行校驗和驗證,以檢測封包是否已在中間系統中損壞。應理解,在驗證過程中進行的檢查的具體集合可以取決於實現方式。
如前所述,簽名匹配保持從屬串流表,其被配置有與串流跟蹤器會話表相同數量的條目。由串流指數(串流ID,Flow Id)索引該從屬串流表,串流跟蹤器在簽名匹配請求中包含該指數。圖11示出簽名匹配串流表條目中的字段的實施方式。
當簽名匹配具有要處理的封包時,它提取串流指數,並使用它來查找從屬串流表條目。然後,通過執行各種處理(諸如將Flow_Timestamp與簽名匹配請求中的時間戳進行匹配以確保封包屬於當前的串流,檢查Flow_entry_valid字段,檢查 Next_packet_num是否匹配簽名匹配要求中的封包數以確保封包是下一個期望的封包,等等)來驗證串流。
在封包和串流已被驗證之後,可以執行簽名匹配。簽名包括兩部分:待匹配的實際正規表達式和一組匹配屬性。可通過軟件將正規表達式編譯至正規表達式引擎所使用的並儲存在狀態表儲存器中的狀態表。該儲存器可以是可配置的,以便保持狀態表和多封包匹配狀態。
載入狀態表中的每個簽名可在由軟件配置的簽名匹配表中具有對應的一組匹配屬性。簽名匹配可被設計為處理作為正規表達式寫入的簽名。然後,正規表達式被編譯至狀態表,並使用正規表達式引擎與封包有效載荷進行匹配。
正規表達式可使用以下結構來代表一組字符串的簡明描述:
‧交替(alternation,間隔)-正規表達式由通過“|”分隔的零個或多個分支組成。如果替換的分支中的至少一個分支匹配,則正規表達式匹配。
‧級聯(concatenation)-分支由零個或更多個序列組成。為了匹配,分支必須以指定順序匹配序列中的所有塊。
‧定量(閉合)-塊由可能由以下字符中的一個跟隨的原子組成:“*”,“+”,或“?”(這些被稱為重複字符)。
‧後面跟隨“*”的原子匹配原子的0個或多個匹配序列。
‧後面跟隨“+”的原子匹配原子的1個或多個匹配序列。
‧後面跟隨“?”的原子可選地匹配原子或空串。
‧後面跟隨“{ }”中所括的數字的原子匹配原子的確切數量的匹配的序列。
‧原子是下列之一:
‧通配符-“.”匹配任何單個字符。這必須能夠包括所有字符(包括換行),但也可以如下所述被修改為排除換行符。
‧起始錨-“^”-作為塊的首個字符,在封包有效載荷開始處 匹配空串,將該塊錨定在首個字節。然而,如果狀態表具有使能的交叉封包狀態,則該塊被錨定在邏輯“串流”的首個字節。這是首個封包中的有效載荷的首個字節,這必須伴隨第一標記集。
‧停止錨-“$”作為塊的最後一個字符,在封包有效載荷結尾處匹配空串,將塊錨定在最後一個字節。然而,如果狀態表具有使能的交叉封包狀態,則塊必須被錨定在邏輯“串流”的最後一個字節,即,針對該串流匹配的最後一個字節。
‧轉義一後面跟隨單個字符的“\”,匹配特殊字符,如“\r”表示回車字符,或“\W”表示空格字符。單個“\”可通過另一個“\”進行轉義。
‧文字十六進制-後面跟隨兩個十六進制字符的“\X”,匹配十六進制值,例如,\x0F。
‧分組表達式-括號中的正規表達式(對於針對正規表達式的匹配進行匹配)
‧範圍-在“[]”中括起來的字符序列。範圍通常匹配來自序列的任意單個字符。如果序列以“^”開始,則其匹配不是來自該序列的其餘部分的任何單個字符。如果序列中的兩個字符由“-”分離,則對於它們之間的ASCII字符(例如,“[0-9]”匹配任何十進制數字)的完整列表,這是速記的。為了在序列中包括文字“]”,使其成為第一個字符(跟隨可能的“^”),或者使用“\”轉義。為了包括文字“-”,使其成為第一個或最後一個字符,否則使用“\”轉義。
‧除了上述之一以外的任何單個字符,匹配該字符。例如,串“abcdef”由五個原子的序列組成。
正規表達式被括號括起來,且後面可跟隨以下修飾符中的一個或多個:
‧(“/”),表示不區分大小寫的匹配
‧(“/X”),表示完全忽略空格的匹配
‧(“/N”),表示忽略所有NULL字符的匹配
可以支持錨定在換行符上的匹配,從而對應於使用修飾符“/m”。
下面是一些正規表達式例子。首先基於單個響應封包(第一塊,被視為單行線上的連續串)或POST請求封包(第二塊)認識HTTP。這會進行不區分大小寫的匹配並使用來自範圍“[\x09-\x0d-~]”的零個或多個字符匹配空格運行。應注意,在此範圍內的空格是有義字符,並可能由\x20表示。
(^http/(0\.9|1\.0|1\.1)[1-5][0-9][0-9][\x09-\x0d-~]*(connection:|content-type:|content-length:|date:)|^post[\x09-\x0d-~]* http/[01]\.[019])/i
下面會使用不區分大小寫的匹配認識特殊類型的HTTP請求。應注意,其並未被錨定在任何事物的開始,而且可報告在有效載荷中的任何地方開始的匹配。
(http/(0\.9|1\.0|1\.1).*(user-agent:itunes))/i
典型的HTTP報頭可以有由換行符分隔的多個報頭字段。下面將在顯示換行符終止的行內的HTTP請求中的用戶代理報頭字段中的具體內容進行匹配,然後匹配內容類型響應報頭。因此,這取決於交叉封包狀態來繼續對響應封包進行匹配。
((user-agent:quicktime\(qtver=[0-9].[0-9].[0-9];os=[\x09-\x0d-~]+\)\x0d\x0a).*(content-type:[\x09-\x0d-~]+video/quicktime\x0d\x0a))/i
以下兩個簽名針對DirectConnect對等會話識別特定交換。第一個簽名查找在封包開始處以“$Lock”錨定並在封包結尾處以“|”錨定的封包。這必須在服務器到客戶端(反向)方向被賦予資格,並設置交叉簽名標記。第二個簽名也必須在該封包的開始和結尾處被錨定,並且必須通過特定的交叉簽名標記被設置的事實賦予資格,並且該簽名處於客戶端到服務器(正向)方向。僅在第二個匹配(其潛在地可能在該串流的稍後發生幾個封包)之後報告匹配。在一般情況下,資格可用於有利於避免潛在的誤報。
^\x24Lock.*\x7c$
^\x24ValidateNick.*\x7c$
可基於單個封包(其通常是連接上交換的第一個封包)識別很多應用。對於需要檢查多個封包的那些應用,由本發明提供兩種模式。以下,這兩種模式被稱為交叉封包狀態模式和交叉簽名標記模式。以每個串流為單位保持這些狀態。每個DFA可支持這些模式中的至少一個的可選配置。
一般情況下,可針對每個正規表達式引擎來打開和關閉這些模式。為了允許單個模式匹配交叉任意封包邊界,當針對同一串流的另一個封包來到時,正規表達式引擎可以將當前狀態上下文保存在稍後要被檢索的正規表達式狀態表儲存器中。這樣,模式可繼續被匹配,而不論在兩個封包之間有多少其它串流被分析。
交叉封包狀態模式在邏輯上等同於重組單個緩衝器中的串流,然後在該緩衝器之間匹配。在此,串流被認為是以它們到達的順序的有效載荷的簡單串聯,而不論方向(例如,HTTP請求然後HTTP響應)如何。然而,取代在緩衝器中累積串流,DFA隨著封包到達對其進行匹配,從而在封包結束時保存匹配狀態,並使用該匹配狀態作為下一個的起始狀態。為了支持交叉封包狀態模式,DFA能夠以每個數據串流為單位將下一個狀態指針保持在其大小與串流表的大小相同的交叉封包狀態表中。
在交叉簽名標記模式下,針對每個封包使用不同的簽名,但僅在出現匹配的特定序列時才報告匹配。交叉簽名標記用於鏈接匹配,通過在不被報告的情況下使一個成功的匹配設置標記,並使隨後的一個依賴於所設置的該標記,以便賦予匹配資格。為此,標記的向量可與串流狀態關聯。在一個實施方式中,至少16個標記支持交叉簽名標記模式使能的每個DFA。這些標記都可以作為標記的全域池,以利用使能的交叉簽名標記模式來賦予來自任何DFA的匹配的資格。
通過交叉簽名標記模式,第一個簽名包含對匹配初始封包的內容的表達式,並且作為匹配行為來設置交叉簽名標記位。第二個簽名將包括修飾符,僅在指定的簽名標記位已經被串流中的前一個封包置位時才考慮該修飾符。
匹配處理器處理交叉簽名標記更新以及檢查。由於這些交叉簽名標記是特定串流的屬性,所以交叉簽名標記被儲存在狀態表的配置區域中。當封包正在被處理時,有兩個保持的交叉簽名標記副本。一個是更新副本,其中根據當前封包進行變化。另一副本用於檢查並反映前一個封包結尾處的交叉簽名標記的狀態。
針對交叉簽名標記更新,匹配表中的以下字段(參見圖12)可以被定義為:Match_cross_sig_flag_index,用於指定行為應用至哪個交叉簽名標記;Match_cross_sig_flag_is_set,當置位時,由索引引用的交叉簽名標記將在當前封包結束時由匹配處理器設置;以及Match_cross_sig_flag_is_cleared,當其複位時,由索引引用的交叉簽名標記將在當前封包結束時由匹配處理器複位。
更新交叉簽名標記的簽名首先應當通過其所有的匹配限定符是有效的。然而,更新交叉簽名標記的簽名不需要是最高優先順序或最佳匹配。如果匹配是有效的,則交叉簽名標記將被更新。
可以針對交叉簽名標記檢查來定義匹配表內的以下字段:Check_cross_sig_flag_index,用於指定檢查應用至哪個交叉簽名標記;Check_cross_sig_flag_is_set,當對其置位時,匹配是有效的;以及Check_cross_sig_flag_is_cleared,當不對其置位時,匹配是有效的。被檢查的交叉簽名應標記應已經被同一串流中的先前封包設置。
對於新串流的第一個封包,匹配處理器可以將所有的交叉簽名標記初始化為“0”。當正規表達式引擎檢測需要交叉簽名標記更新的匹配時,匹配處理器修改交叉簽名標記的更新副本。一旦匹配處理器達到EOP條件,則其傳送交叉簽名標記的該更新的副 本,以按照每個串流來儲存。
對於後續封包,狀態錶針對該特定串流讀取活動的交叉簽名標記訊息。如果任何檢測到的匹配指示了交叉簽名標記變化,則修改該更新的副本。只要簽名匹配要求交叉簽名標記檢查,交叉簽名標記的檢查副本(而不是更新的副本)就用於此目的。
交叉簽名標記被儲存在數據串流表和狀態表儲存器中。在一個實施方式中,其可以按照16個標記塊被配置,多達512個標記。前16個標記按照每個串流被儲存在16位Cross_sig_flags字段的串流表中。如果被配置,其餘31個標記塊可以儲存在狀態表中。針對該每個串流儲存的配置是作為特定多封包模式處於正規表達式引擎中。對於8K串流,標記塊將需要16KB的狀態表儲存器,以分配用於儲存。可以在1至32個塊中使能任意數量。如果啟用了所有512個標記,則將分配512KB或儲存器。
如果被啟用,每個引擎可以具有其儲存的標記的特定範圍。在一個實施方式中,正規表達式引擎1可以管理用於標記16至32的儲存,一直到達正規表達式引擎31,其可以管理標記496至511的儲存。正規表達式引擎0無需儲存前16個標記,因為它們可以被儲存在數據串流表中。儲存標記的正規表達式引擎可以完全獨立於對標記進行更新的正規表達式引擎。此外,啟用的引擎/標記塊不必是連續的。任何塊都可以獨立地在相應的正規表達式引擎中啟用或禁用。在封包的開始,所有儲存標記的引擎都可以將標記加載到全域標記緩衝器。任何簽名可以更新任何標記。在封包結尾,更新被寫回狀態表中。
一般情況下,正規表達式匹配將封包有效載荷與簽名數據庫比較,並報告所有匹配。匹配基於狀態機,並有多個狀態機或DFA。每個DFA在特定狀態下開始,並針對封包的每個字節進行過渡,直到它達到不再採取過渡的狀態,或直到它達到有效載荷的結尾。
基本上,DFA被實現為狀態表。邏輯上,DFA狀態表中的每個狀態包含兩部分:256條目下一狀態跳轉表和匹配報告值。下一狀態跳轉表中的每個條目構成指向另一個DFA狀態的指針。匹配報告值表示狀態是否是匹配狀態(即,匹配正規表達式)以及要報告的值。
輸入串的處理開始於第一字節以及起始DFA狀態表。字節用於索引至下一狀態表,以獲得指向下一狀態的指針。使用下一DFA狀態在串中重複針對下一個字節的查找,直到或是達到沒有用於輸入字節的下一個狀態指針的狀態或是達到串的結尾。如果在運行期間由狀態表示,則將會報告該匹配。
對於許多正規表達式,下一狀態表是相對稀疏的(即,只有少數精確匹配條目具有實際的下一狀態指針),或具有指向相同的下一狀態(例如,針對值的範圍)的多個條目。
DFA可能會達到沒有過渡的狀態,在這種情況下,在封包完成之前,完成該狀態。特定IDLE狀態可用於防止針對該封包的進一步匹配。
在針對封包進行處理期間,每個DFA可以報告一個或多個匹配。每個匹配可以指示match_index成為簽名匹配表中的一個,並且指示它是否在該封包的最後一個字節上匹配。圖12示出簽名匹配表條目中的屬性的示例。可以按照每個簽名有一個簽名匹配表條目。
一般情況下,簽名匹配表可包括三種屬性:匹配(Match),其用於匹配處理期間;檢查(Check),其用於賦予匹配作為確定最佳匹配的一部分的資格;以及報告(Report),其包括如果是最佳匹配則在簽名匹配響應中要發送至串流跟蹤器的值。
在一個實施方式中,邏輯上具有一個1024條目簽名匹配表,它被劃分成4個256條目子表。每組八個DFA引擎可以被配置為共享簽名匹配子表,並將8位匹配索引報告到它的表。在此,應 注意,陰影數據串流表可以作為10位實體而保持針對該串流的最佳匹配索引,其中最佳匹配索引的兩個最低有效位可用於選擇簽名匹配表。
針對多個原因,DFA可以報告多個匹配。特別地,通配符可能導致正規表達式匹配多個地方中的輸入。此外,因為協議具有“子協議”,所以不同的正規表達式可以匹配。例如,這可能在以下情況發生:當要區分HTTP上運行的不同應用時,或當有誤報(即,簽名太概括並且在本不應該時卻進行了匹配)時。
後匹配處理可以使用簽名匹配表中的標準使得有資格匹配,求解有資格的匹配從而找到迄今為止針對該數據串流或所有發現的那些數據串流的最佳匹配,並根據需要發送匹配報告封包。邏輯上,在對所有DFA進行了匹配封包之後,可針對每個封包進行後匹配處理。
通過將來自針對有資格的候選匹配的簽名匹配表的報告參數與目前為止最佳匹配的那些報告參數進行比較,推斷出封包的最佳匹配。在一個實施方式中,最佳匹配可以求解如下:如果匹配是最終的,且目前為止沒有最佳匹配,則採取新的匹配;如果兩者都是最終的,則採取具有較高優先順序的匹配;如果兩者具有相同的優先順序,則採取較小編號簽名id的匹配。匹配應該在無依賴關係的情況下以任意順序求解。
在求解了有資格的匹配之後,按照需要發送匹配報告封包。在一個實施方式中,如果報告了最佳匹配,那麼如果是最終的,或者如果來自簽名匹配的最後一個封包,則報告最佳匹配。然後,串流條目失效,以在串流跟蹤器處理簽名匹配響應之前,忽略可能會到達簽名匹配的隨後封包。如果報告了最佳匹配,如果不是最終的,但指示報告應發送,則簽名匹配響應被創建並發送至串流跟蹤器。
如果沒有匹配要報告,但它是最後一個封包,則串流無效, 並且發送簽名匹配響應,以指示沒有匹配的簽名。最後,如果沒有匹配,而且這不是最後一個封包,且有交叉封包狀態,則串流表中的交叉數據狀態被更新。
如已經描述的,一旦SM引擎完成了處理數據串流,則響應被發送回串流跟蹤器,以便適當行為可應用於串流的其餘封包。如上所述,這可通過利用從AXP至入口管道的封包接口來完成。封包被注入入口管道,以便串流跟蹤器會話表可以被更新。使得結果通過封包中繼這提供了更新會話表的通用方法,該方法與結果是否來自內部簽名匹配引擎、外部簽名匹配引擎或這兩者組合無關。這允許表存取要利用輸入的封包串流和CPU開始更新被調度的會話表。當在入口管道調度結果封包時,隱式完成針對儲存器存取會話表的仲裁。
在一個實施方式中,內部SM引擎可以被優化,以針對一組最常見的簽名匹配。為了擴大串流識別功能,可以添加外部簽名匹配引擎或CPU來處理更複雜的情況,並提供縮放簽名個數的方法。
圖13A至圖13C中示出結果封包的示例格式。如圖所示,圖13A的封包包括觸發匹配的原始未修改的封包、8字節結果報頭和L2封裝報頭。在圖13B中進一步詳細說明了8字節結果報頭,而在圖13C中進一步詳細說明了8字節結果報頭中包含的結果標記。
通過將目的MAC地址和類型字段與預配置值匹配,在簽名結果封包進入入口管道時識別它們。當串流跟蹤器從SM引擎接收到結果封包時,它使用報頭中的串流指數來檢索會話表條目。然後針對會話項中的值驗證報頭中的時間戳,以確保結果的確是針對該串流。處於串流跟蹤目的,串流指數和時間戳可以用於唯一地標識該串流。如果存在不匹配或者如果串流條目是不正確的狀態,則該條目將不會被更新。這可能在以下情況發生:如果SM引擎提供的是針對已經結束的串流的結果,或者由於一些其它的 錯誤條件,導致串流跟蹤和SM引擎不同步。
SM引擎接收串流中的封包用於處理,其主動尋找字節串流上匹配的。根據匹配規則是如何配置的,可能存在以下情況:期望SM引擎繼續搜索字節串流,即使在發現了中間匹配結果以後。由於更多的封包到達進而更多的數據可用,這可以有助於尋找更好的匹配。為了適應這種情況,串流跟蹤器可以被佈置為從SM引擎接受中間結果。這可以通過最後位清零而顯示在結果報頭中。中間結果被儲存在會話條目中,但並不立即是指串流跟蹤器利用該結果。僅在設置的超時期間之後從未接收到最終結果匹配時,才會利用其並對其採取行為。
圖14中進一步描述了結果報頭中的字段。其指示是否找到匹配,應如何處理串流,並提供了有關哪個簽名匹配的訊息。如果有匹配,則更新針對該條目的串流狀態。策略指數、簽名id和年齡指數被儲存供以後使用。串流中的後續封包的分析將看到該串流已被簽名匹配且由策略指數指定的該行為將被應用於封包。串流條目保持這種狀態,直到串流終止或處於非活動狀態達指定時間量。
如前面所指出的,Final位表明該結果是否是中間結果或者它是否應該被立即採取行為。Keep_flow位表明串流是否應保持在會話表中並被跟蹤,或者它是否不受關注並應該被釋放以供另一個串流再使用。Apply_action位表明是否跟蹤的串流應該對串流中的隨後的封包應用行為,或者它是否應該被視為僅計數的串流。如果針對串流而激活行為,則報頭中指定的策略指數用於檢索一組行為,以應用於該封包。SM_error標記表明在串流處理期間遇到錯誤。這將被記錄在針對串流的會話表中,但如果此位被置位,則將不會對串流採取特定行為。Http_persistent標記表明該串流所需的特定處理。在發送新封包以進行匹配之前,該串流將繼續進行到活動狀態,並等待檢測到新連接。Age指數提供了簽名特定 非活動超時值,其可用於規定何時應當將活動的數據串流從會話表中刪除。Copy_to_cpu字段指定封包是否應該被複製到CPU。
在正常處理過程中,會話表條目更新由硬體硬體專門處理,原因在於更新串流狀態所需的所有訊息可獨立於CPU干預而被檢索。對會話表條目的這些更新包括經由封包發送並且不需要任何顯式CPU控制的簽名匹配結果。在某些情況下,針對CPU利用不能被硬體直接存取的訊息來更新會話表可能是必要的。這可以經由發給會話表的表運算命令(例如,tbl_insert,tbl_lookup和tbl_delete)支持。
一旦串流已被簽名匹配,期望對串流中的後續封包應用策略行為。串流跟蹤器提供了一種方法,其儲存來自SM引擎的結果,識別串流中的後續封包,並對這些封包應用指定的行為。可支持的一些行為包括丟失、計量、改變優先順序或服務類別(CoS)、鏡像、複製封包至CPU等。
串流跟蹤器可以平衡現有的策略行為和IFP中定義的決議邏輯。這提供了一組穩健的行為,其可以應用至進行串流跟蹤的任何串流。會話表可以被集成到IFP模塊中,因此,它看起來像另一片。如圖15所示,串流跟蹤器會話表查找可與其它片中的字段處理器三態內容尋址儲存器(TCAM)查找一致,並可產生用於針對封包檢索策略行為的索引。
在一個實施方式中,在策略表中具有共256個條目。在此,假設每個支持的簽名將需要一個策略表條目。對可能會被看到的不同簽名的大致數量來設置該表的大小。雖然可能針對串流的每個方向提供不同的策略行為,但在實際使用中,可以接受對串流的兩個方向應用相同策略行為。
可以利用IFP中可用的現有資源進行串流計量。在一個實施方式中,支持用於針對每個正被跟蹤的串流的單獨的速率計。所支持的策略索引的數目可以限制可選擇的計量器數量。在一個實 施方式中,使用共同的共享計量器來節串流帶有特定的簽名匹配索引的所有串流。還可以在IFP中包括額外的模式,其可以重新映射所選的計量器,以便按照每個埠為單位來跟蹤它們。這將允許串流按照每個簽名/每個埠為單位來計量。
作為串流跟蹤功能的一部分,硬體監視每個單獨串流並確定何時應終止串流並從會話表中移走。串流條目的數量可以由於多種原因而過期,包括:不活動(例如,在足夠長的時間內沒有看到封包),顯式指示符(例如,TCP串流有顯式地表明該串流結束的封包),處理中的錯誤(例如,在匹配過程中,錯誤檢測或超時),CPU終止,等等。
每當有更新串流的會話表條目的事件時,可以由串流跟蹤器執行這些檢查。這可能是存取該表的串流中的定期封包的結果、來自更新條目的SM引擎的結果封包、CPU表操作命令,或通過背景年齡掃描過程。在上述每種情況下,所執行的檢查依賴於串流條目的狀態。
通過閱讀前面的詳細描述,本發明的這些和其它方面對於本領域的技術人員將變得顯而易見。雖然上面已經描述了本發明的一些顯著特徵,但是本發明能夠有各種實現方式和可以按照在閱讀所公開的本發明之後對於本領域的普通技術人員顯而易見的多種方式來實現和執行,因此,上面的描述不應該被認為排除這些其它實施方式。此外,應理解,本文所採用的措辭和術語是用於說明的目的,並且不應該被視為限制。
100‧‧‧核心晶片
110‧‧‧串流跟蹤器
112‧‧‧串流跟蹤器會話表
114‧‧‧串流跟蹤器策略表
116‧‧‧輸出FIFO(先進先出)
120‧‧‧SM引擎

Claims (10)

  1. 一種在交換器ASIC(特定功能積體電路)中具有整合的線路速率應用識別的交換器,包括:串流跟蹤器會話表,所述串流跟蹤器會話表具有多個條目,所述多個條目中的每一個與獨特的封包串流關聯,其中,至少基於共用源以及由多個封包共享的目的地址來區分封包串流;串流跟蹤器,審閱在入口管道進入所述交換器的封包,在識別出要被跟蹤的新的封包串流時,所述串流跟蹤器在所述串流跟蹤器會話表中創建條目,所述串流跟蹤器審閱與識別出的所述串流相關聯的封包並生成將連同經審閱的所述封包被轉發至所述交換器中的儲存器管理單元的串流訊息,所述串流訊息包括標識經審閱的所述封包關聯的特定封包串流的串流指數;以及簽名匹配引擎,從所述交換器中的所述儲存器管理單元接收經審閱的所述封包和所述串流訊息,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查經審閱的所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發生至所述入口管道的響應封包中,其中,所述串流跟蹤器使用在所述入口管道接收的所述響應封包中包含的串流指數來更新所述串流跟蹤器會話表中的條目,以表明要施加到由所述串流跟蹤器審閱的後續封包的策略,所述後續封包與所述串流跟蹤器會話表中的所述條目關聯的串流相關。
  2. 根據申請專利範圍第1項所述的交換器,其中,基於源地址、目的地址、源埠、目的埠和協議來識別封包串流。
  3. 根據申請專利範圍第1項所述的交換器,其中,所述串流跟蹤器會話表位於能夠看到雙向串流中的所有封包的位置。
  4. 根據申請專利範圍第1項所述的交換器,其中,在多個管道中共享所述串流跟蹤器會話表。
  5. 根據申請專利範圍第1項所述的交換器,其中,所述簽名匹配引擎包含在與出口管道分離的輔助管道中。
  6. 根據申請專利範圍第1項所述的交換器,其中,所述表達式匹配狀態機是確定有限狀態自動機狀態機。
  7. 根據申請專利範圍第1項所述的交換器,其中,所述響應封包包括標識應當應用於串流中的封包的策略的策略指數。
  8. 一種用於執行封包檢測的交換器ASIC,包括:入口管道,所述入口管道包括審閱在所述入口管道進入交換器的封包的串流跟蹤器,在識別出要被跟蹤的新的封包串流時,所述串流跟蹤器在串流跟蹤器會話表中創建條目,所述串流跟蹤器審閱與所述新的封包串流相關聯的其它封包並生成將連同經審閱的所述封包被轉發至所述交換器中的儲存器管理單元的串流訊息,所述串流訊息包括標識經審閱的所述封包關聯的特定封包串流的串流指數;以及耦接至所述儲存器管理單元的輔助管道,所述輔助管道與同樣耦接至所述儲存器管理單元的出口管道分離,所述輔助管道包括簽名匹配引擎,所述簽名匹配引擎從所述交換器中的所述儲存器管理單元接收經審閱的所述封包和所述串流訊息,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查經審閱的所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發送至所述入口管道中的所述串流跟蹤器的響應封包中。
  9. 一種用於執行封包檢測的交換器ASIC,包括:入口管道,所述入口管道包括審閱在所述入口管道進入交換器的封包的串流跟蹤器,在識別出要被跟蹤的新的 封包串流時,所述串流跟蹤器在串流跟蹤器會話表中創建條目,所述串流跟蹤器審閱與所述新的封包串流相關聯的其它封包並生成將連同經審閱的所述封包被轉發至所述交換器中的儲存器管理單元的串流訊息,所述串流訊息包括標識經審閱的所述封包關聯的特定封包串流的串流指數;以及耦接至所述交換器中的儲存器管理單元的輔助管道,所述輔助管道與同樣耦接至所述儲存器管理單元的出口管道分離,所述輔助管道包括簽名匹配引擎,所述簽名匹配引擎從所述交換器中的所述儲存器管理單元接收封包,所述簽名匹配引擎使用針對已知簽名進行搜索的表達式匹配狀態機檢查所述封包,其中,所述簽名匹配引擎將來自所述表達式匹配狀態機的結果包含在由所述簽名匹配引擎發生至所述交換器的入口管道的響應封包中,其中,所述入口管道中的串流跟蹤器使用在所述交換器的所述入口管道上接收的所述響應封包,以對包含在所述響應封包中的串流指數標識的封包串流中的後續封包應用策略行為。
  10. 根據申請專利範圍第9項的交換器,其中,在所述串流跟蹤器和所述簽名匹配引擎之間不存在直接連接。
TW101134012A 2011-11-30 2012-09-17 用於在交換器asic中整合線路速率應用識別的系統和方法 TWI477106B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161565423P 2011-11-30 2011-11-30
US13/331,542 US8724496B2 (en) 2011-11-30 2011-12-20 System and method for integrating line-rate application recognition in a switch ASIC

Publications (2)

Publication Number Publication Date
TW201325134A TW201325134A (zh) 2013-06-16
TWI477106B true TWI477106B (zh) 2015-03-11

Family

ID=46799949

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101134012A TWI477106B (zh) 2011-11-30 2012-09-17 用於在交換器asic中整合線路速率應用識別的系統和方法

Country Status (6)

Country Link
US (1) US8724496B2 (zh)
EP (1) EP2600577A1 (zh)
KR (1) KR101409921B1 (zh)
CN (1) CN103139072B (zh)
HK (1) HK1182846A1 (zh)
TW (1) TWI477106B (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9584573B2 (en) * 2012-08-29 2017-02-28 Ericsson Ab Streaming policy management system and method
US9130826B2 (en) * 2013-03-15 2015-09-08 Enterasys Networks, Inc. System and related method for network monitoring and control based on applications
US9201889B1 (en) 2013-03-15 2015-12-01 Emc Corporation Integrated search for shared storage
US9239874B1 (en) * 2013-03-15 2016-01-19 Emc Corporation Integrated search for shared storage using index throttling to maintain quality of service
US9621642B2 (en) 2013-06-17 2017-04-11 Telefonaktiebolaget Lm Ericsson (Publ) Methods of forwarding data packets using transient tables and related load balancers
US9137165B2 (en) 2013-06-17 2015-09-15 Telefonaktiebolaget L M Ericsson (Publ) Methods of load balancing using primary and stand-by addresses and related load balancers and servers
US9400811B2 (en) * 2013-07-05 2016-07-26 Juniper Networks, Inc. Systems and methods for increasing the scalability of software-defined networks
US9118571B2 (en) * 2013-07-08 2015-08-25 Telefonaktiebolaget L M Ericsson (Publ) Methods of operating load balancing switches and controllers using matching patterns with unrestricted characters
US9485183B2 (en) 2014-04-25 2016-11-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for efectuating packet distribution among servers in a network
CN105099918B (zh) * 2014-05-13 2019-01-29 华为技术有限公司 一种数据查找匹配的方法和装置
US9456030B2 (en) * 2014-09-15 2016-09-27 Telefonaktiebolaget Lm Ericsson (Publ) Methods of operating load balancing switches and controllers using modified flow entries
WO2016171691A1 (en) * 2015-04-23 2016-10-27 Hewlett Packard Enterprise Development Lp Network infrastructure device to implement pre-filter rules
EP3266174B1 (en) 2015-04-30 2021-07-14 Hewlett Packard Enterprise Development LP Uplink port oversubscription determination
CN106131050B (zh) * 2016-08-17 2022-12-09 裴志永 数据包快速处理系统
US10298606B2 (en) * 2017-01-06 2019-05-21 Juniper Networks, Inc Apparatus, system, and method for accelerating security inspections using inline pattern matching
US20180324061A1 (en) * 2017-05-03 2018-11-08 Extrahop Networks, Inc. Detecting network flow states for network traffic analysis
US10033750B1 (en) 2017-12-05 2018-07-24 Redberry Systems, Inc. Real-time regular expression search engine
CN108418758B (zh) * 2018-01-05 2021-01-29 网宿科技股份有限公司 一种单包识别方法及流量引导方法
CN108734149B (zh) * 2018-05-29 2022-01-18 创新先进技术有限公司 一种文本数据扫描方法和装置
US10764193B2 (en) * 2019-01-30 2020-09-01 Verizon Patent And Licensing, Inc. Routing network traffic associated with an application based on a transaction of the application
CN110381032B (zh) * 2019-06-24 2022-01-07 东软集团股份有限公司 一种多核系统中的会话表项处理方法、装置及相关产品
KR102072700B1 (ko) * 2019-07-31 2020-02-03 (주)소울시스템즈 전수 패킷 처리 기반의 실시간 애플리케이션 성능 모니터링 장치 및 방법
CN111182072A (zh) * 2019-12-31 2020-05-19 奇安信科技集团股份有限公司 会话请求的应用识别方法、装置和计算机设备
CN111343107B (zh) * 2020-01-22 2022-03-04 苏州盛科通信股份有限公司 信息处理方法、以太网交换芯片以及存储介质
US11356333B2 (en) * 2020-01-24 2022-06-07 Arista Networks, Inc. Predicting forwarding destinations for packets
CN111817960B (zh) * 2020-07-23 2022-02-01 杭州迪普信息技术有限公司 流控设备的报文转发方法及装置
US11398982B2 (en) * 2020-09-16 2022-07-26 Inside Packet Ltd. System and method for processing a network message
CN112966047B (zh) * 2021-03-05 2023-01-13 上海沄熹科技有限公司 一种基于分布式数据库的复制表功能实现方法
KR102521426B1 (ko) * 2021-10-29 2023-04-13 에스케이텔레콤 주식회사 가상 스위치 장치 및 그 트래픽 처리 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001065343A1 (en) * 2000-03-02 2001-09-07 Check Point Software Technologies Ltd. System, device and method for rapid packet filtering and processing
US7411910B1 (en) * 2004-07-06 2008-08-12 Juniper Networks, Inc. Systems and methods for automatic provisioning of data flows

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7002982B1 (en) * 1998-07-08 2006-02-21 Broadcom Corporation Apparatus and method for storing data
US6650640B1 (en) * 1999-03-01 2003-11-18 Sun Microsystems, Inc. Method and apparatus for managing a network flow in a high performance network interface
JP3381687B2 (ja) 1999-11-25 2003-03-04 日本電気株式会社 フロー識別装置、フロー処理装置、フロー識別方法及びフロー処理方法
US7596139B2 (en) * 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7389360B1 (en) * 2001-11-05 2008-06-17 Juniper Networks, Inc. Context switched route lookup key engine
US7844688B2 (en) 2001-11-20 2010-11-30 P-Cube Ltd. Apparatus, method, and software for analyzing network traffic in a service aware network
FR2833441A1 (fr) * 2001-12-11 2003-06-13 Koninkl Philips Electronics Nv Dispositif de commutation comportant des moyens de decodage local
US7359974B1 (en) 2002-03-29 2008-04-15 Packeteer, Inc. System and method for dynamically controlling aggregate and individual packet flow characteristics within a compressed logical data tunnel
US7376125B1 (en) 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
US20050114700A1 (en) * 2003-08-13 2005-05-26 Sensory Networks, Inc. Integrated circuit apparatus and method for high throughput signature based network applications
US7512071B2 (en) * 2004-06-15 2009-03-31 Sun Microsystems, Inc. Distributed flow enforcement
US20060006248A1 (en) * 2004-07-06 2006-01-12 Chin-Chiang Wu Floating rotatable fountain decoration
US8448234B2 (en) * 2007-02-15 2013-05-21 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for deep packet inspection for network intrusion detection
US8416773B2 (en) * 2007-07-11 2013-04-09 Hewlett-Packard Development Company, L.P. Packet monitoring
US8072894B2 (en) 2007-11-07 2011-12-06 Juniper Networks, Inc. Systems and methods for flow monitoring
US8239340B2 (en) * 2008-04-11 2012-08-07 Trevor Hanson Message conduit systems with algorithmic data stream control and methods for processing thereof
US20090303990A1 (en) * 2008-06-06 2009-12-10 Emulex Design & Manufacturing Corporation Off-Chip Interface for External Routing
EP2366156B1 (en) * 2008-12-16 2013-03-20 Telefonaktiebolaget LM Ericsson (publ) String matching method and apparatus
CN101588305B (zh) * 2009-06-30 2012-02-08 杭州华三通信技术有限公司 一种携带多层标签的报文处理方法和交换机
US9031081B2 (en) * 2009-08-06 2015-05-12 Broadcom Corporation Method and system for switching in a virtualized platform
JP2011040903A (ja) * 2009-08-07 2011-02-24 Seiko Epson Corp 画像処理装置
US9008082B2 (en) * 2009-12-07 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) Handling data packets received at a routing node
US8934483B2 (en) * 2011-01-20 2015-01-13 Broadcom Corporation Data center switch
US9202196B2 (en) * 2011-05-06 2015-12-01 Verizon Patent And Licensing Inc. Rule-based tracking of products based on intelligent identifiers
US8681794B2 (en) * 2011-11-30 2014-03-25 Broadcom Corporation System and method for efficient matching of regular expression patterns across multiple packets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001065343A1 (en) * 2000-03-02 2001-09-07 Check Point Software Technologies Ltd. System, device and method for rapid packet filtering and processing
US7411910B1 (en) * 2004-07-06 2008-08-12 Juniper Networks, Inc. Systems and methods for automatic provisioning of data flows

Also Published As

Publication number Publication date
HK1182846A1 (zh) 2013-12-06
US20130136011A1 (en) 2013-05-30
KR20130085919A (ko) 2013-07-30
EP2600577A1 (en) 2013-06-05
CN103139072B (zh) 2016-04-20
CN103139072A (zh) 2013-06-05
KR101409921B1 (ko) 2014-06-19
US8724496B2 (en) 2014-05-13
TW201325134A (zh) 2013-06-16

Similar Documents

Publication Publication Date Title
TWI477106B (zh) 用於在交換器asic中整合線路速率應用識別的系統和方法
US9258225B2 (en) System and method for efficient matching of regular expression patterns across multiple packets
CN110753064B (zh) 机器学习和规则匹配融合的安全检测系统
US7949683B2 (en) Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US7577758B2 (en) Hardware support for wire-speed, stateful matching and filtration of network traffic
US9356844B2 (en) Efficient application recognition in network traffic
US8180803B2 (en) Deterministic finite automata (DFA) graph compression
US7701941B2 (en) Network switch with mutually coupled look-up engine and network processor
US8392590B2 (en) Deterministic finite automata (DFA) processing
US8473523B2 (en) Deterministic finite automata graph traversal with nodal bit mapping
US8515965B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US11836385B2 (en) High speed data packet flow processing
US20070223389A1 (en) Methods and apparatus for improving security while transmitting a data packet
US9612934B2 (en) Network processor with distributed trace buffers
KR100864889B1 (ko) Tcp 상태 기반 패킷 필터 장치 및 그 방법
CN114338439B (zh) 一种通用的网络流量解析装置和方法
Han et al. A multifunctional full-packet capture and network measurement system supporting nanosecond timestamp and real-time analysis
CN112965970A (zh) 一种基于哈希算法的异常流量并行检测方法及系统
WO2004059448A2 (en) Packet inspection

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees