專利名稱::使用非確定性有限自動機的并行模式匹配的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算才幾網(wǎng)絡(luò),更具體i也,涉及網(wǎng)纟各安全。
背景技術(shù):
:企業(yè)計算機網(wǎng)絡(luò)通常包括交換數(shù)據(jù)并共享資源的相互連接的計算裝置的集合。這些裝置可包括例如網(wǎng)絡(luò)服務(wù)器、數(shù)據(jù)庫服務(wù)器、文件服務(wù)器、路由器、打印機、終端用戶計算機以及其它裝置。各種裝置可#丸行無凄史不同服務(wù)和通信協(xié)議。這些不同月良務(wù)和通信協(xié)議中的每一個都使得企業(yè)網(wǎng)絡(luò)暴露了不同的安全脆弱性。用于一企測網(wǎng)絡(luò)攻擊的常規(guī)r技術(shù)^f吏用才莫式匹配。例如,企業(yè)可部署一個或多個安全裝置,其檢查病毒或其它安全性威脅的網(wǎng)絡(luò)流量。這種安全裝置通常將正則表達式或子串匹配應(yīng)用到該網(wǎng)全各流量中,以在協(xié)議流中檢測所定義的模式。多種模式可用于嘗試檢測不同類型的攻擊并通常改善了這種攻擊檢測的準確性和強壯性。
發(fā)明內(nèi)容總的來說,本公開描述了用于確定符號流是否包括由正則表達式定義的才莫式的沖支術(shù)。如本文所述,這些才支術(shù)通過〗吏用一個或多個非確定性有限自動機(NFA)來表示該正則表達式。此外,這些技術(shù)可用于并^f亍評估該NFA中的多個狀態(tài)??上鄬τ诜柫髦械亩鄠€不同符號來評估這些狀態(tài)。NFA狀態(tài)的并行評估可使得能夠更快且更有效地檢測網(wǎng)絡(luò)攻擊,也就是說,確定符號流是否包括由正則表達式定義的任何模式。例如,侵入檢測和防范(IDP)裝置可使用一種NFA表示(representation),其接受遵從與計算機安全性威脅相關(guān)的模式的符號流。IDP裝置可包括基于硬件的能夠維持一組節(jié)點向量的模式匹配模塊。每一個節(jié)點向量都可暫時與符號流中的符號位置(即,該符號流中的位置)相關(guān)。例如,在符號流"abcdefg"中,符號"a"處于該符號流中的第一符號位置,符號"b"處于該符號流中的第二符號位置,等等。除非本文另外說明,術(shù)語"第一符號位置"、"第二符號位置"等,可標識符號流中的任何符號位置。例如,術(shù)語"第一符號位置,,可以指符號流開始之后的十個符號位置的符號位置。此外,每一個節(jié)點向量都可指定對應(yīng)于該節(jié)點向量當前符號位置的在NFA表示中的一組節(jié)點。也就是說,對于給定節(jié)點向量,指定的節(jié)點表示對于與該節(jié)點向量相關(guān)的特定符號位置來說是已一皮評估的、正^皮評估的、或者未纟皮評估的節(jié)點。除節(jié)點向量之外,IDP裝置的才莫式匹配才莫塊還可包括多個線程。每個線程都是運行以評估由節(jié)點向量指定的節(jié)點的石更件組件。由于NFA可有效地具有多個當前節(jié)點,所以這些線禾呈可并^f亍;l也i平估多個當前節(jié)點。當線禾呈評估節(jié)點時,這些線程可更新這些節(jié)點向量之一來指定附加節(jié)點或可輸出標識該符號流所遵從的特定模式的指示符。在一個實施例中,一種方法包括維持包括有多個節(jié)點的非確定性有限自動機(NFA)表示。NFA表示表示檢測符號流是否遵從由正則表達式定義的符號模式的NFA。此外,該方法還包括接收符號流。本方法進一步包4舌通過在利用第二線程評估NFA表示的第二節(jié)點時,利用第一線程同時評估NFA表示的第一節(jié)點,來確定符號流是否遵從由正則表達式所定義的符號^t式。此外,該方法包括當符號流不遵從由正則表達式定義的符號模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送符號流中的數(shù)據(jù)。在另一實施例中,一種裝置包括存儲單元,該存儲單元存^f諸包括有多個節(jié)點的非確定性有限自動才幾(NFA)表示。NFA表示表示檢測符號流是否遵從由正則表達式定義的符號模式的NFA。該裝置還包括才莫式匹配模塊,該才莫式匹配模塊通過在利用第二線程評估NFA表示的第二節(jié)點時,利用第一線程同時評估NFA表示的第一節(jié)點,來確定符號流是否遵從由正則表達式定義的符號模式。該裝置還包括網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口用于在符號流不遵從由正則表達式定義的模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送符號流中的數(shù)據(jù)。在另一實施例中,一種計算機可讀介質(zhì)包括指令。這些指令使得可編程處理器維持包括有多個節(jié)點的非確定性有限自動機(NFA)表示。NFA表示表示檢測符號流是否遵從由正則表達式所定義的符號模式的NFA。這些指令還使得可編程處理器接收符號流。此外,這些指令還使得可編程處理器通過在利用第二線程評估NFA表示的第二節(jié)點時,利用第一線程同時評估NFA表示的第一節(jié)點,來確定該符號流是否遵從由正則表達式定義的符號模式。此外,這些指令又使得可編程處理器在符號流不遵從由正則表達式定義的模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送符號流中的數(shù)據(jù)。在附圖和以下描述中闡述了本發(fā)明的一個或多個實施例的細節(jié)。本發(fā)明的其它特征、目的和有益效果將從說明書及其附圖、以及權(quán)利要求書中變得顯而易見。圖1是示出了包括侵入檢測和防范裝置(IDP)、受保護的網(wǎng)絡(luò)和公共網(wǎng)絡(luò)的示例性系統(tǒng)的框圖;圖2A是示出了列表狀態(tài)節(jié)點的示例性格式的框圖2B是示出了范圍狀態(tài)節(jié)點的示例性格式的框圖2C是示出了掩碼測試狀態(tài)節(jié)點的示例性格式的框圖3是示出了用于映射節(jié)點的示例性格式的框圖4是示出了模式匹配模塊的示例性細節(jié)的框圖5是示出了示例性的非確定性有限自動機表示的框圖6是示出了模式匹配模塊中的仲裁器的示例性操作的流程圖7是示出了用于評估狀態(tài)節(jié)點的處理引擎中的線程的示例性操作的流程圖8是示出了用于評估映射節(jié)點的示例性操作的流程圖9是示出了用于處理下一狀態(tài)元素的示例性操作的流程以及圖IO是示出了其中模式匹配模塊評估同一代碼(Unicode)符號的示例性節(jié)點的框圖。具體實施例方式總的來說,本公開描述了用于確定符號流是否包括由正則表達式所定義的模式的技術(shù)。如本文所述,該技術(shù)通過使用具有多個可-陂并^^平估的狀態(tài)的非確定性有限自動才幾(NFA)來表示該正則表達式。這些狀態(tài)可與符號流中的多個符號相關(guān)。并行評估多個狀態(tài)和多個符號可使得能夠更快確定符號流是否包括由正則表達式所定義的模式,因此,表示網(wǎng)絡(luò)攻擊或其它安全威脅。圖1是示出了包括侵入檢測和防范裝置(IDP)4、受保護網(wǎng)絡(luò)6和公共網(wǎng)絡(luò)8的示例性系統(tǒng)2的框圖。公共網(wǎng)絡(luò)8可為不安全的諸如互聯(lián)網(wǎng)的廣域網(wǎng)、無線網(wǎng)絡(luò)、局域網(wǎng)或者另一種計算機網(wǎng)絡(luò)。受保護網(wǎng)絡(luò)6可以是諸如在辦公室或網(wǎng)絡(luò)數(shù)據(jù)中心里的局域網(wǎng)的安全的計算才幾網(wǎng)絡(luò)。在系統(tǒng)2中,IDP裝置4連接到公共網(wǎng)絡(luò)8及受保護網(wǎng)絡(luò)6,以使從/>共網(wǎng)絡(luò)8流向受保護網(wǎng)絡(luò)6的網(wǎng)絡(luò)流量首先流到IDP裝置4。IDP裝置4可為單機網(wǎng)絡(luò)設(shè)備、另一網(wǎng)絡(luò)設(shè)備的組件(如,防火墻設(shè)備)、在網(wǎng)絡(luò)設(shè)備上執(zhí)行的軟件模塊、或者其它構(gòu)造。通常,IDP裝置4檢查來自公共網(wǎng)絡(luò)8的網(wǎng)絡(luò)流量并確定該網(wǎng)絡(luò)流量是否包括任何計算機安全威脅。計算才幾安全威脅是訪問每丈感信息的企圖、4尤亂組織運營的企圖、或是另一類型的攻擊。計算機安全威脅的實例包括計算機病毒、間諜軟件、、rootkits、試圖猜到密碼、以及網(wǎng)絡(luò)釣魚郵件(phishingemail)、與拒絕服務(wù)攻擊相關(guān)的請求、及其它類型的攻擊。如果IDP裝置4確定給定的網(wǎng)絡(luò)流量流不包括任何計算機安全威脅,則IDP裝置4就可將該網(wǎng)絡(luò)流量流傳送到受保護網(wǎng)絡(luò)6。否則,如果IDP裝置4確定了該網(wǎng)絡(luò)流量流包4舌一個或多個計算才幾安全威月辦,則IDP裝置4就可中斷(drop)網(wǎng)絡(luò)力fu量、i己錄該網(wǎng)紹一充量和/或轉(zhuǎn)發(fā)(forward)該流量到流量分析器以進行進一步分析。以此方式,IDP裝置4可防止包括有計算才幾安全威脅的網(wǎng)絡(luò)流量到達受保護網(wǎng)絡(luò)6。如圖l的實例所示,IDP裝置4可包括多個組件。本7>開示出這些組件僅4又是為了說明的目的。在一些情況下,IDP裝置4可包括少于圖1所示組件的組件,而在其他情況下,IDP裝置4可包括多于圖l所示組件的組件。此外,如本文所述的這些紐—件的功能可分布于單個的組件或裝置之中。當來自公共網(wǎng)絡(luò)8的網(wǎng)絡(luò)流量到達IDP裝置4時,第一網(wǎng)絡(luò)接口10可以處理來自公共網(wǎng)絡(luò)8的物理信號并且將《連3各層幀輸出到網(wǎng)絡(luò)層模塊12。在基于分組的網(wǎng)絡(luò)中,網(wǎng)絡(luò)層才莫塊12通常處理《連路層幀,以產(chǎn)生具有公共源和目的地址的網(wǎng)絡(luò)分組(packet,包)、、六傳輸層模塊14可使用這些網(wǎng)絡(luò)分組流中的每一個來產(chǎn)生傳輸層段的流。例如,傳輸層模塊14可以為每個網(wǎng)絡(luò)分組流都產(chǎn)生一個或多個傳輸控制協(xié)議(TCP)段的流。例如,傳輸層模塊14可基于鏈路層的幀來組合和輸出互連網(wǎng)協(xié)議(IP)分組流。IP分組在其共享公共的源地址、目的地址、源端口、目的端口以及協(xié)議時,盡管可能或多或少地—皮認為是顆粒流(granularflow),^f旦通常被i人為是同一分組流的一部分。在一些實施例中,可組合網(wǎng)全各層才莫塊12和傳輸層才莫塊14的功能以識別一個動作中的網(wǎng)絡(luò)分組流。這些傳輸層段又可由應(yīng)用層模塊16使用。應(yīng)用層才莫塊16可組合TCPl殳來組成應(yīng)用層凄t據(jù)并且從該教:據(jù)中捐_耳又應(yīng)用層消息(communication)。應(yīng)用層才莫塊16可包4舌一個或多個協(xié)議指定(protocol-specific)的插入式模塊,其為各種應(yīng)用層協(xié)議提取應(yīng)用層消息。例如,應(yīng)用層模塊16可包括從TCP段中提取超文本傳輸協(xié)議(HTTP)消息的插入式模塊、從TCP段中提取會話發(fā)起協(xié)議(SIP)消息的插入式才莫塊、以及l(fā)是取其它應(yīng)用層協(xié)議中的消息的插入式模塊。應(yīng)用層模塊16可支持的應(yīng)用層通信協(xié)議的其它實例包括文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)新聞傳送協(xié)議(NNTP)、簡單郵件傳送協(xié)議(SMTP)、遠程登錄協(xié)議、域名系統(tǒng)(DNS)、Gopher(因特網(wǎng)雙向溝通界面)、Finger(查找器)、郵局協(xié)議(POP)、安全套接字層(SSL)協(xié)議、輕量目錄訪問協(xié)議(LDAP)、安全外殼(SSH)、因特網(wǎng)消息訪問協(xié)議(IMAP)、月良務(wù)器消息塊(SMB)、動態(tài)主機配置協(xié)議(DHCP)和其它協(xié)議。應(yīng)用層模塊16可分析應(yīng)用層消息并提取符號串形式的協(xié),漢指定的元素(element)。如本文所-使用的,術(shù)語"應(yīng)用層元素"指的是在應(yīng)用層得到的協(xié)議指定的符號串。例如,應(yīng)用層才莫塊16可/人重新組合成的應(yīng)用層消息中提取協(xié)議指定的"上下文,,和"值"。通常,"上下文"故指定為唯一標識各種類型應(yīng)用層元素的應(yīng)用層消息流中的元素。;陂指定的元素為描述通信會話4是供應(yīng)用層基礎(chǔ)。上下文實例包括文件名、用戶名、應(yīng)用名、附加文檔名、協(xié)議指定的頭部信息、協(xié)議指定的認證數(shù)據(jù)、格式數(shù)據(jù)以及其它描述該通信會話的信息。作為特定實例,用于HTTP協(xié)議流的上下文可包^r:提供HTTP服務(wù)的服務(wù)器名和訪問該服務(wù)器的網(wǎng)絡(luò)瀏覽器(如,"InternetExplorer")的類型名。通過重新組合應(yīng)用層消息,應(yīng)用層模塊16可提取特定的上下文(如,瀏覽器類型)及對應(yīng)的值(如,"InternetExplorer")。應(yīng)用層模塊16可輸出這些應(yīng)用層元素作為該符號流的部分。例如,應(yīng)用層^t塊16可輸出包4舌表示應(yīng)用層元素的一組符號的符號流,該組符號其后跟著表示應(yīng)用層消息的一組符號。在應(yīng)用層^t塊16形成符號流之后,應(yīng)用層才莫塊16可以將這些符號流轉(zhuǎn)發(fā)到模式匹配模塊18。模式匹配模塊18可確定符號流是否包括與一個或多個計算枳^安全威脅相關(guān)的一個或多個符號模式。與計算機安全威脅相關(guān)的符號模式在本文被稱為"威脅簽名"。如果模式匹配模塊18確定了符號流包括威脅簽名,模式匹配模塊18就可將搜索結(jié)果輸出到應(yīng)用層模塊16。這些搜索結(jié)果可包括指示哪個威脅簽名已被;險測到的才莫式標識符。另外,這些搜索結(jié)果還可包括索引,其指示該威脅簽名在符號流中開始或結(jié)束的位置。當應(yīng)用層模塊16接收這些搜索結(jié)果時,應(yīng)用層才莫塊16可以使傳輸層才莫塊14中斷與該符號流有關(guān)的分組,將與該符號流有關(guān)的分組轉(zhuǎn)到另一目的地,或者執(zhí)行一些其它動作。否則,如果才莫式匹配才莫塊18沒有在該符號流中檢測到的威脅簽名,應(yīng)用層模塊16可以使傳輸層模塊14利用網(wǎng)絡(luò)層模塊12和第二網(wǎng)絡(luò)接口22將與該符號流有關(guān)的分組傳送到受保護的網(wǎng)全各6。為了確定符號流是否包括威脅簽名,模式匹配模塊18可^f吏用描述符號模式的一組正則表達式。正則表達式是根據(jù)某些語法^L則來描述一組字符串的字符串。例如,正則表達式"(a|b)*cde,,描述一組字符串,它們以任意數(shù)量的"a"或"b"符號開始,其后總是跟著"c,,符號,"c,,后可以跟著或者可以不跟著"d"符號,而"d,,后總是跟著"e"符號。舉例來說,由正則表達式描述的這組字才尋串包4舌"abcde,,、"bacde"、"ababce"、"ce"等等。正則表達式可包括由字母s(即,epsilon)表示的空字符串。例如,字符串"ab"ecde"與字符串"abcde"是相同的,這是因為5是空字符串。每個可能的正則表達式都可被表示為非確定性有限自動扭j(即,"NFA")。通常,有限自動機為一種由有限數(shù)量的狀態(tài)、這些狀態(tài)之間的轉(zhuǎn)換以及動作所構(gòu)成的行為的模型。NFA是有限自動^L,其為非確定性的,這是因為,對于每個狀態(tài)和輸入符號對,都可能有若干種可能的下一狀態(tài)。在執(zhí)行期間,NFA消耗符號流。也就是說,對于符號流中的每個符號來說,該NFA都轉(zhuǎn)換成新狀態(tài),直到所有符號都被消耗(即,都被評估)為止。在NFA中,還可能轉(zhuǎn)換為新狀態(tài)而不消耗符號流中的任何符號。這樣的轉(zhuǎn)換被稱為s轉(zhuǎn)換,這是因為在轉(zhuǎn)換期間只有空字符串s被"消耗"。由于NFA可以轉(zhuǎn)換成一種狀態(tài)而不消庫毛符號,所以,NFA可具有多個有戔文當前狀態(tài)。當NFA消耗符號流中的符號時,NFA可"接受"作為屬于被由通過NFA表示的正則表達式所定義的一組字符串的符號流。在NFA的當前狀態(tài)之一為接受狀態(tài)或者NFA可進行從NFA的當前狀態(tài)之一到接受狀態(tài)的一個或多個s轉(zhuǎn)換時,NFA接受該符號流。正如該/>開在以下所詳細描述的,因為NFA可有效i也處于多個當前狀態(tài),所以,可并4亍評估該多個當前狀態(tài)。IDP裝置4可將NFA表示23存儲在存儲模塊20之中。NFA表示23可表示NFA。在NFA表示23中,每個非接受狀態(tài)都可4皮表示為一個或多個節(jié)點25。節(jié)點25中的每一個都可以是將一個或多個符號映射到一個或多個下一狀態(tài)元素的數(shù)據(jù)結(jié)構(gòu)。例如,節(jié)點25之一可將符號"a"映射到在該節(jié)點中的下一狀態(tài)元素。這些符號可包括字母、數(shù)字、控制字符、Unicode符號、標點符號、西里爾字母或其他非拉丁字母或字符集中的符號、二進制符號、以及其它類型的符號。此外,正如本7>開以下詳細^兌明的,這些符號可包括描述符號類的元符號。下一狀態(tài)元素可為16位的值,其指示NFA中的接受或非4妻受狀態(tài)。如果下一狀態(tài)元素指示NFA的非接受狀態(tài),則該下一狀態(tài)元素可以包含節(jié)點索引。節(jié)點索引是從中可以得到節(jié)點存儲地址的值。例如,節(jié)點索引可為15位的值。通過左移節(jié)點索引兩個位置并通過加上基地址,可從節(jié)點索引得到節(jié)點的存儲地址。如果下一狀態(tài)元素指示NFA的4妻受狀態(tài),則下一狀態(tài)元素可包才舌指定由正則表達式所描述的符號模式的模式標識符。在NFA表示23中的節(jié)點25中的每一個都可以是狀態(tài)節(jié)點或是映射節(jié)點。狀態(tài)節(jié)點可將有限數(shù)量的符號映射到單個下一狀態(tài)元素。因為下一狀態(tài)元素可以指示NFA表示23中的節(jié)點,所以爿犬態(tài)節(jié)點可以將有限數(shù)量的符號映射到NFA表示23中的單個節(jié)點。映射節(jié)點可以為一組符號中的每個符號提供從這些符號之一到在該映射節(jié)點中的一《且下一4犬態(tài)元素中的一個下一纟犬態(tài)元素的映射。由于相同原因,映射節(jié)點可以為一組符號中的每個符號提供從這些符號之一到NFA表示23中的節(jié)點之一的映射。NFA表示23可包括若干種狀態(tài)節(jié)點。這些類型可包括列表狀態(tài)節(jié)點、范圍狀態(tài)節(jié)點以及掩碼測試狀態(tài)節(jié)點。列表狀態(tài)節(jié)點將一個或多個符號映射到單個下一狀態(tài)元素。范圍狀態(tài)節(jié)點將落入值的連續(xù)范圍中的符號映射到單個下一狀態(tài)元素。例如,范圍節(jié)點可指定高范圍值、低范圍值以及下一狀態(tài)元素。在當前符號大于或等于低范圍值而小于或等于高范圍值時該符號滿足范圍狀態(tài)節(jié)點的符號準則。當對符號與任意位掩碼上進行邏輯"與"運算產(chǎn)生等于所指定值的值時,掩碼測試狀態(tài)節(jié)點將該符號映射到單個下一狀態(tài)元素。舉例來說,掩碼測試狀態(tài)節(jié)點可包括掩碼、值、以及下一狀態(tài)元素。當對當前符號與該掩碼進行逐位邏輯"與"運算而產(chǎn)生的值與在掩碼測試狀態(tài)節(jié)點中所指定的值相匹配時,該符號就滿足才奄碼測試狀態(tài)節(jié)點的符號準則。在NFA表示23中的狀態(tài)節(jié)點可包括到NFA表示23中的第二節(jié)點的一個s轉(zhuǎn)換。該第二節(jié)點可為狀態(tài)節(jié)點或者映射節(jié)點。如果該第二節(jié)點是狀態(tài)節(jié)點,則該第二節(jié)點可包括到NFA表示23中的第三節(jié)點的一個s轉(zhuǎn)換等等。以此方式,NFA表示23可包括一個節(jié)點鏈,其中,一個節(jié)點通過s轉(zhuǎn)換鏈接到另一個節(jié)點。本公開可將這樣的節(jié)點鏈稱為s鏈。NFA表示23可使用s鏈來表示包括到多個狀態(tài)的轉(zhuǎn)換的NFA中的狀態(tài)。例如,NFA中的第一狀態(tài)可以將符號"a"映射到第二狀態(tài),并可以將符號"b"映射到第三狀態(tài)。在此實例中,NFA表示23可以包括表示第一狀態(tài)的第一狀態(tài)節(jié)點、表示第二狀態(tài)的第二節(jié)點、以及表示該第三狀態(tài)的第三節(jié)點。此外,NFA表示23還可以包括不表示NFA中的狀態(tài)的第四節(jié)點。第一節(jié)點可以將符號"a"映射到包括第二節(jié)點的節(jié)點索引的下一狀態(tài)元素。此外,第一節(jié)點還可以指定到第四節(jié)點的S轉(zhuǎn)換。第四節(jié)點可以將符號"b"映射到包括第三節(jié)點的節(jié)點索引的下一狀態(tài)元素。正則表達式編譯器26可以將正則表達式編譯成NFA表示23。當正則表達式編譯器26對正則表達式進行編譯時,正則表達式編譯器26可以將s鏈中的多個節(jié)點安置在存儲模塊20中的連續(xù)存儲位置中。因為s鏈中的節(jié)點被定位在連續(xù)的存儲位置中,因此可以使用單個存儲讀if又請求來沖企索這些節(jié)點。因此,s鏈中的多個節(jié)點可出現(xiàn)在高速緩存里,進而可被快速返回。例如,第一節(jié)點可包括到第二節(jié)點的s轉(zhuǎn)換,而第二節(jié)點可以包括到第三節(jié)點的s轉(zhuǎn)換。這些節(jié)點中的每一個都可存儲于連續(xù)存儲位置中。因此,當請求第一節(jié)點時,存儲模塊20可以返回第一節(jié)點、第二節(jié)點以及第三節(jié)點。當存儲模塊20返回這些節(jié)點時,高速緩存可以存儲第一節(jié)點、第二節(jié)點以及第三節(jié)點的副本。因此,當請求第二節(jié)點時,高速緩存可以返回第二節(jié)點。這可以明顯快于從存儲模塊20返回第二節(jié)點。映射節(jié)點可以為一組符號中的每一個符號都提供從該符號到在該映射節(jié)點中的一《且下一一犬態(tài)元素之中的一個下一^1犬態(tài)元素的映射。映射節(jié)點可以是長s鏈的有用替代。例如,正則表達式編譯器26可以創(chuàng)建單個映射節(jié)點而不是創(chuàng)建包括八個或更多狀態(tài)節(jié)點的s鏈。映射節(jié)點可遵AM立映射(bitmap)壓縮才幾制,其減少了每個映射節(jié)點的大小。例如,映射節(jié)點可以包括位映射部分和一個或多個下一狀態(tài)元素的組。在該實例中,位映射部分包4舌一組位。每一位都與一組符號中的一個符號相關(guān)。如果將與符號相關(guān)的位設(shè)為"1",則該映射節(jié)點將該符號映射到在該映射節(jié)點中的下一狀態(tài)元素之一。如果將與該符號相關(guān)的位設(shè)為"0",則該映射節(jié)點不將該符號映射到實際位于該映射節(jié)點中的下一狀態(tài)元素。相反,如果將與該25符號相關(guān)的位設(shè)為"0",則該映射節(jié)點將該符號映射到"邏輯"下一狀態(tài)元素。該"邏輯"下一狀態(tài)元素指定該NFA的"死"狀態(tài)的節(jié)點索引。該"邏輯"下一狀態(tài)元素并不實際處于該映射節(jié)點中,但當將與該符號相關(guān)的位設(shè)為"0"時,對于該符號來說,就隱含著該"邏輯"下一狀態(tài)元素的存在。通常,NFA表示23中的典型映射節(jié)點為大多數(shù)符號指定到"死"狀態(tài)的轉(zhuǎn)換。由于不包括到大多凄t符號的"死"狀態(tài)的這些轉(zhuǎn)變中的每一個的實際下一狀態(tài)元素,這些映射節(jié)點中的每一個都可顯著的更小。本公開在下面提供了有關(guān)圖3的映射節(jié)點的實例格式。NFA表示23還可包括非錨定(unanchored)映射節(jié)點。用于多種符號模式的正則表達式具有".*<X>,,形式,其中〈X〉為符號串。匹配這才羊的符號才莫式的符號流可以以后面^艮隨有由<乂〉標識的符號序列的任何符號的無限序列開始。例如,與計算才幾病毒相關(guān)的符號串X可^皮嵌入到符號流的中間。換句話說,標識的符號串未凈皮錨定在該符號流開始的某一位置處的符號流之中。類似于普通映射節(jié)點,非錨定映射節(jié)點可以為一組符號中的每個符號都提供在該符號和該映射節(jié)點中的下一狀態(tài)元素之間的映射。模式匹配模塊18可維持一組節(jié)點向量。這些節(jié)點向量的每一個都可以包括位于才莫式匹配才莫塊18中的一個或多個硬件寄存器。模式匹配模塊18可以臨時使一組連續(xù)符號位置中的不同符號位置與這些節(jié)點向量的不同節(jié)點向量相關(guān)。例如,如果才莫式匹配才莫塊18維持五個節(jié)點向量的組,則模式匹配模塊18可臨時使符號流中的第四、第五、第六、第七和第八符號位置與各個節(jié)點向量相關(guān)。除了與節(jié)點向量相關(guān)的最后符號位置外,每個與節(jié)點向量相關(guān)的符號位置都可構(gòu)成一個符號窗。繼續(xù)以前的實例,第四、第五、第六、和第七符號位置可構(gòu)成符號窗。例如,在符號流"abcdefghir中,符號'd,、'e,、'f和'g,處在符號窗中的符號位置處。此外,每一個節(jié)點向量都可指定已被評估的、當前正被評估的或者未凈皮評估的節(jié)點25中的多個。當與符號窗中的符號位置相關(guān)的節(jié)點向量指定未被評估的節(jié)點時,沖莫式匹配才莫塊18將這些節(jié)點分配鄉(xiāng)會不同的線程。這些線程可用石更件或軟件來實現(xiàn)。這些線程的每一個都可并行運行來評估所分配的節(jié)點。當模式匹配模塊18將由節(jié)點向量指定的節(jié)點分配給線程時,該線程可從存儲才莫塊20中#企索該節(jié)點。該線程然后可評估相對于與節(jié)點向量相關(guān)的符號位置處的符號流中的符號的節(jié)點,來確定該節(jié)點是否將該符號映射到該節(jié)點的下一狀態(tài)元素。如果節(jié)點將符號映射到包括節(jié)點索引的下一狀態(tài)元素,則線程可更新與下一符號位置相關(guān)的節(jié)點向量以包括該節(jié)點索引作為未被評估的節(jié)點。如果節(jié)點將符號映射到包括指示模式已被檢測的模式標識符的下一狀態(tài)元素,則線程可以將該才莫式標識符提供給應(yīng)用層才莫塊16。以此方式,當才莫式匹配;f莫塊18開始通過符號流時,該線程實時更新這些節(jié)點向量。當與符號窗中的第一符號位置相關(guān)的節(jié)點向量僅僅指定模式匹配才莫塊18已評估的節(jié)點并且不包括當前正^皮評估、或者未^皮評估的節(jié)點時,模式匹配模塊18可前移(advance)該符號窗。當模式匹配模塊18前移符號窗時,與符號窗中的第一符號位置相關(guān)的節(jié)點向量就可成為與跟在符號窗中的最后符號位置之后的符號位置相關(guān)的節(jié)點向量。以此方式,;溪式匹配才莫塊18就可再利用節(jié)點向量。本公開中描述的技術(shù)可提供一個或多個優(yōu)點。例如,模式匹配模塊18可同時評估符號流中的若干個符號位置。同時評估若干個符號位置可導(dǎo)致更快地全面處理符號流。進一步地,才莫式匹配模塊18可在單個周期里評估NFA中的若干個狀態(tài)。例如,狀態(tài)節(jié)點塊可按順序位置排列在存儲模塊20中。因而,模式匹配模塊18能夠檢索和評估全部狀態(tài)節(jié)點塊而同時僅產(chǎn)生與單個存儲器讀取相關(guān)的成本。在另一實例中,NFA的表示可明顯小于用于檢測相同安全威脅的、等同的確定性有限自動機(DFA)的表示。出于該原因,IDP裝置4可存儲NFA的表示,與等同大小的DFA相比,在相同數(shù)量存儲空間中,該NFA接受遵從更多數(shù)量的不同模式的符號串。換句話說,IDP裝置4能夠使用NFA來檢測比通過使用類似大小的確定性有限自動機明顯多的類型的安全威脅。在另一實例中,因為NFA可有效具有多個當前狀態(tài),所以,IDP裝置4可以并4亍評估該多個當前狀態(tài)。在進一步的實例中,在本公開所提出的NFA表示可展示所訪問節(jié)點的相當多的時間和空間存儲器位置。由于此原因,模式匹配模塊18可更有效地利用存儲器高速緩存技術(shù)來改善性能。圖2A-圖2C以及圖3示出了用于表示非確定性有限自動機(如圖1中的NFA23)的不同類型節(jié)點的示例性格式。具體來說,圖2A為示出列表狀態(tài)節(jié)點30的示例性格式的框圖。在此實例中,列表狀態(tài)節(jié)點30包4舌一組符號元素32A-32N和下一狀態(tài)元素34。符號元素32A-32N在本文中統(tǒng)稱為"符號元素32"。每一個符號元素32都可指定一組符號準則。通常,列表狀態(tài)節(jié)點30將遵^v符號元素32中的符號準則的多個符號映射到下一狀態(tài)元素34。在一個示例性表示中,符號元素32中的每一個都包括符號和一組標志。例如,符號元素32的位15:8可包含符號而位7:2可包含一組標志。位1:0可^皮保留。下面呈現(xiàn)的表1示出了符號元素的示例性格式表1<table>tableseeoriginaldocumentpage29</column></row><table>在表1所示的示例性才各式中,Unicode標志指示該符號是否是Unicode符號。例如,如果Unicode標志設(shè)為"1",則列表狀態(tài)節(jié)點30可將與字革殳C中的符號相匹配的當前符號映射到下一狀態(tài)元素34。此夕卜,如果Unicode標志設(shè)為"1",則列表狀態(tài)節(jié)點30還可將為零字節(jié)("\0")的當前符號和與字段C中的符號相匹配的下一符號映射到下一狀態(tài)元素34。非標志指示不匹配。例如,如果非標志:沒為'1,,則列表狀態(tài)節(jié)點30可以將與由符號元素32之一指定的4壬一符號不匹配的^f壬一符號映射到下一狀態(tài)元素34。在一些實施例中,對于符號元素32中的每一個都將非標志設(shè)為相同值。表1所示的示例性格式包括與s轉(zhuǎn)換相關(guān)的兩個標志。例如,s標志指示列表狀態(tài)節(jié)點30包括£轉(zhuǎn)換。如果e標志設(shè)為"l",在模式匹配模塊18中的線程就可在評估列表狀態(tài)節(jié)點30以后立即評估存儲器中列表狀態(tài)節(jié)點30之后的節(jié)點。在一些實施例中,對于符號元素32中的每一個都將s標志設(shè)為相同值。僅當列表狀態(tài)節(jié)點30不將當前符號映射到下一狀態(tài)元素34時,s條標志才指示模式匹配模塊18評估存儲模塊20中的下一節(jié)點。例如,如果s條標志設(shè)為"1",則在當前符號滿足在任一符號元素32中所指定的符號準則時,模式匹配模塊18中的線程不進行到下一節(jié)點的£轉(zhuǎn)換。在一些實施例中,符號元素32中的每個元素中都將s條標志設(shè)為相同值。"最后"標志指示符號元素是列表狀態(tài)節(jié)點30中的最后符號元素。如果符號元素的"最后"標志被設(shè)為"0",則模式匹配模塊18可以爿尋該符號元素之后的16位解釋為另一符號元素。例如,如果列表狀態(tài)節(jié)點30僅包括一個符號元素,則"最后"標志在所述第一符號元素之中被設(shè)為"1"。在表1所示的示例性格式中,模式匹配模塊18可以將符號字,殳和元符號標志一起解釋為9位元符號。通常,如果該符號標志,皮設(shè)為"1",則列表狀態(tài)節(jié)點30將由元符號描述的符號類中的符號映射到下一狀態(tài)節(jié)點34。下面所示的表2示出了元符號的實例組表2<table>tableseeoriginaldocumentpage30</column></row><table><table>tableseeoriginaldocumentpage31</column></row><table>表2將與元符號相關(guān)的數(shù)值表示為十六進制數(shù),其中,更高編號位出現(xiàn)在較^^編號位的右側(cè)。因此,符號元素的位7是在元符號列中所表示的最左位,而符號元素的位15是在元符號列中所表示的最右位。通常,列表狀態(tài)節(jié)點被填充到奇數(shù)個符號元素。因此,如果列表狀態(tài)節(jié)點僅包括偶數(shù)個有意義的符號元素,則具有非可匹配的符號(即,0xl0C)的符號元素4皮添加到該列表狀態(tài)節(jié)點的結(jié)尾。下一狀態(tài)元素34可指示NFA中的若干種狀態(tài)。例如,下一狀態(tài)元素34可通過指定表示NFA中狀態(tài)的節(jié)點的節(jié)點索引來指示NFA的非4妾受狀態(tài)。下一狀態(tài)元素34可通過指定一莫式標識符來指示NFA中的沖妾受狀態(tài)。下一狀態(tài)元素34可遵乂人在表3中所扭克:括的格式表3<table>tableseeoriginaldocumentpage32</column></row><table>圖2B是示出范圍狀態(tài)節(jié)點40的示例性格式的框圖。在圖2B所示出的示例性才各式中,范圍狀態(tài)節(jié)點40包^"符號元素,該符號元素包括范圍元符號42(即,0xl0A)以及一組標志44。范圍元符號42和一組標志44可遵從在表1和表2中所描述的格式。此夕卜,在圖2B所示出的示例性才各式中,范圍狀態(tài)節(jié)點40包括下一狀態(tài)元素46。下一狀態(tài)元素46可遵乂人在表3中所描述的格式。如圖2B的實例所示,范圍狀態(tài)節(jié)點40還包括在位31:24處的低值48、在位23:16處的高值50、以及在位15:0處的填充52。高值50表示范圍的上限而低值48表示該范圍的下限。范圍狀態(tài)節(jié)點40可以將大于或等于低值48且小于或等于高值50的任何符號映射到下一狀態(tài)元素48。在此例中,才莫式匹配才莫塊18不4吏用i真充52。圖2C是示出掩碼(masked)測試狀態(tài)節(jié)點60的示例性格式的框圖。在圖2C所示的示例性格式中,掩碼測試狀態(tài)節(jié)點60包括其中包4舌纟奄碼元符號62(即,0xl0B)和一組標志64的符號元素。:淹碼元符號62和該組標志64可遵從表1和2中所描述的才各式。此外,在此示例性格式中,掩碼測試狀態(tài)節(jié)點60包括下一狀態(tài)元素66。下一狀態(tài)元素66可遵乂人表3中所描述的才各式。在此示例性格式中,掩碼測試狀態(tài)節(jié)點60包括在位31:24處的掩碼68、在位23:16處的值字段70、以及在位15:0處的填充72。掩碼測試狀態(tài)節(jié)點60將當與掩碼68中的值進行邏輯與時等于值字段70的值的任一符號映射到下一狀態(tài)元素66。例如,當模式匹配才莫塊18中的線禾呈評估摘r碼測試狀態(tài)節(jié)點60時,該線禾呈可只于當前符號和纟奄碼68^l行逐位與運算。如果結(jié)果值與值70相匹配,則才莫式匹配;f莫塊18可評估下一狀態(tài)元素66。在此實例中,才莫式匹配才莫塊18不Y吏用填充72。圖3是示出映射節(jié)點80的示例性格式的框圖。許多映射節(jié)點不需要為一組符號中的每一個符號值都指定下一狀態(tài)元素。由于此原因,使用利用游長(mn-length)壓縮的位映射編碼機制來對映射節(jié)點進行才各式化。如在圖3的實例中所示,映射節(jié)點80包括一個或多個下一狀態(tài)元素84的變長列表。下一狀態(tài)元素84的列表包括下一狀態(tài)元素94A~94N(統(tǒng)稱為"下一狀態(tài)元素94")。此外,映射節(jié)點80還包括64字節(jié)的位映射部82。位映射部82提供該游長編石馬4言息。位映射部82可被分割為32個映射子部86A~86N(統(tǒng)稱為"位映射子部86")。每個4立映射子部86者卩可為由4立《且和先前1i十凄t(prior-ls-count)組成的16位值。在圖3所示的實例中,位組;故標記為88A-88N并在本文中可統(tǒng)稱為"位組88"。先前1計數(shù)^皮標記為90A~90N并在本文可統(tǒng)稱為"先前1計凄t90"。位組88中的每個都可包括八位并且每個先前1計數(shù)也都可包括八位。位組88中的每個^立都可與256個不同符號之一相關(guān)。在^f立組88中,當一位是在與下一狀態(tài)元素94的7>共下一狀態(tài)元素相關(guān)的位組88中的位的"游程"("run")的最后位時,該位就具有值"1"。例如,假設(shè)位組88A包括二進制值"00100001"。在此例中,映射節(jié)點80將與前三個位相關(guān)的符號映射到下一狀態(tài)元素84的列表中的下一狀態(tài)元素94中的第一個,并且將與下五個位相關(guān)的符號映射到下一狀態(tài)元素84的列表中的下一狀態(tài)元素94中的第二個。每個先前1計數(shù)90都指示在位組88的位中被設(shè)為'1,的位數(shù),位組88位于所述先前1計凄t是其一部分的位映射子部的左側(cè)。例如,先前1計數(shù)90A總是零,這是因為沒有位組在位映射子部86A的左側(cè),先前1計數(shù)90B指示在位組88A中設(shè)為'1,的位凄t,先前1計數(shù)卯C指示在位組88A和88B中i殳為'1,的位數(shù),如此等等。在另一實例中,如果位組88A的值是二進制值"00100001",則先前1計數(shù)卯A指示數(shù)目'O,而先前1計數(shù)90B指示^t目'2,,這是因為在位于位映射子部86B(即,位組88A)左側(cè)的位映射子部中的位組88的位中有兩位i殳為'1,。使用圖3中所示的示例性格式,模式匹配模塊18(圖1)可通過寺丸4于以下步艱"吏下一狀態(tài)元素94之一符號^f立于下一^R態(tài)元素84的列表中(1)通過訪問由下一狀態(tài)元素列表開始處的存儲地址加上將符號的位7:3左移一個位置的值所標識的存儲位置,從存儲器沖全索4立映射子部;(2)通過將來自位映射子部的先前1計數(shù)與對應(yīng)于符號的符號2:0的左側(cè)的符號的4立組中i殳為'1,的4立的計凄t相加,來用公式表示游程數(shù);以及(3)通過訪問由值映射指針加上64再加上游程凄史的兩倍所標識的存儲位置,從存儲才莫塊2(M企索下一狀態(tài)元素。圖4是示出侵入檢測和防范(IDP)裝置4(圖1)中的模式匹配模塊18的基于硬件實施的示例性細節(jié)的框圖。在圖4的實例中,模式匹配模塊18包括符號緩沖器100,其接收來自應(yīng)用層模塊16的符號流中的符號,并緩存這些符號。此外,模式匹配模塊18可包括處理引擎102、一組節(jié)點向量104A-104E(統(tǒng)稱為"節(jié)點向量104")、高速緩沖存儲器106、結(jié)果緩沖器108以及仲裁器112。高速緩沖存儲器106截取從處理引擎102到存儲模塊20的讀寫請求。當高速緩沖存儲器106截取對與特定存儲地址相關(guān)的數(shù)據(jù)的讀取請求時,高速緩沖存儲器106可確定高速緩沖存儲器106是否包括與該存儲地址相關(guān)的數(shù)據(jù)。如果高速緩沖存儲器106包括與該存儲地址相關(guān)的數(shù)據(jù),則高速緩沖存儲器106可將該數(shù)據(jù)提供到處理引擎102。否則,如果高速緩沖存儲器106不包括與該存儲地址相關(guān)的數(shù)據(jù),則高速緩沖存儲器106可將該讀:f又請求轉(zhuǎn)發(fā)到存儲模塊20。當存儲模塊20返回所請求的數(shù)據(jù)時,高速緩沖存儲器106可存儲該數(shù)據(jù),并將該數(shù)據(jù)轉(zhuǎn)發(fā)到處理引擎102。當高速緩沖存儲器106截取將數(shù)據(jù)寫入到特定存儲地址的請求時,高速緩沖存儲器106可存儲該數(shù)據(jù),并將該寫入請求轉(zhuǎn)發(fā)到存儲才莫塊20。每個節(jié)點向量104都可表示高速存儲器,例如隊列或者寄存器庫,其具有存儲元素,其中每一個元素都可指定NFA表示23(圖1)的一個或多個節(jié)點。例如,每個節(jié)點向量104的每一個元素都可為相應(yīng)節(jié)點存^f諸^:據(jù)。在一實例中,每個節(jié)點向量104的每一個元素都可存儲指示節(jié)點的節(jié)點索引。在另一實例中,每個節(jié)點向量104的每一個元素都可存j諸整個節(jié)點。每個節(jié)點向量104都可存儲有限數(shù)量的節(jié)點索引。例如,節(jié)點向量104可存儲多達八或者十六個節(jié)點索引。然而,可能存在這樣一些情況,其中節(jié)點向量104之一需要存儲比該節(jié)點向量能夠存儲的更多的節(jié)點索引。在這些情況中,模式匹配模塊18可以將多余節(jié)點索引存儲到存儲模塊20之中。節(jié)點向量104的元素可存儲用于將各個節(jié)點指定為"被評估"、"當前正在被評估"或者"未被評估"的狀態(tài)數(shù)據(jù)。將節(jié)點指定為"被評估"意味著處理引擎102已經(jīng)評估了該節(jié)點。將定節(jié)點指定為"當前正在凈皮評估,,意p木著處理引擎102當前正在i平估該節(jié)點。將節(jié)點指定為"未被評估"意味著處理引擎102尚未評估該節(jié)點。通常,仲裁器112管理節(jié)點向量104。仲裁器112可臨時使每個節(jié)點向量104都與單個符號索引相關(guān)。正如本公開所使用的,"符號索引"是表示在符號流中的位置(即,符號位置)的值。例如,符號索引'0,表示在該符號流中的第一符號位置,符號索引'l'表示在該符號流中的第二符號位置等等。因此,每個節(jié)點向量104都與符號流中的一個符號位置相關(guān)。仲裁器112可4吏每個節(jié)點向量104都與"向量索引"永久相關(guān)。"向量索引,,是與節(jié)點向量104之一相關(guān)的號碼。例如,仲裁器112可^f吏節(jié)點向量104A與'0,的節(jié)點向量相關(guān)、<吏節(jié)點向量104B與'1,的節(jié)點向量相關(guān)、使節(jié)點向量104C與'2,的節(jié)點向量相關(guān)、使節(jié)點向量104D與'3,的節(jié)點向量相關(guān)、節(jié)點向量104E與'4'的節(jié)點向量相關(guān)。符號索引以5為模(modulo5)的結(jié)果等于與該符號索引相關(guān)的節(jié)點向量的向量索引。例如,假設(shè)仲裁器1124吏節(jié)點向量104B與向量索引l相關(guān)。在此例中,節(jié)點向量104B可與符號索引6相關(guān),這是因為6mod(模)5=1。由于這一關(guān)系,可以確定節(jié)點向量104中的哪一個與任一符號索引相關(guān)。仲裁器112可將"符號窗索引"變量設(shè)為"0"。該"符號窗索引,,變量表示最低的符號索引,對該符號索引在節(jié)點向量104之一中有未被評估的狀態(tài)。當與該"符號窗索引"變量相關(guān)的節(jié)點向量104之一僅包含被評估的節(jié)點索引時,仲裁器112就可清除與該"符號窗索引"變量相關(guān)的節(jié)點向量104之一中的節(jié)點索引。仲裁器112然后就可增加該"符號窗索引,,變量的值。以此方式,之前與"符號窗索引"相關(guān)的節(jié)點向量104之一可成為在與符號窗中的最后符號相關(guān)的節(jié)點向量之后的節(jié)點向量。此外,仲裁器112可使得之前與"符號窗索引"相關(guān)的節(jié)點向量104之一指定表示NFA的未錨定狀態(tài)的節(jié)點。未錨定狀態(tài)可表示可在符號流中的任一符號處開始的威脅簽名的初始狀態(tài)。處理引擎102可包括被稱為線程114A-114N(統(tǒng)稱為"線程114")的多個并行處理硬件組件。每個線程114都可以硬件來實現(xiàn)并且;f皮此并行運行。當線程114之一為空閑時,該線程就可提供一事件給仲裁器112,該事件提醒仲裁器112該線程空閑。響應(yīng)于該事件,仲裁器112訪問節(jié)點向量104來選擇由與符號窗中的符號位置相關(guān)的節(jié)點向量104中的多個所指定的任一未被評估的節(jié)點。在選擇未被評估的節(jié)點過程中,仲裁器112可將由與較低符號索引相關(guān)的節(jié)點向量所指定的節(jié)點列入優(yōu)先地位。例如,假設(shè)節(jié)點向量104A與"符號窗索引,,變量相關(guān)。在此實例中,仲裁器112可確定節(jié)點向量104A是否指定4壬<可未4皮評估的節(jié)點。如果節(jié)點向量104A指定一個或多個未被評估的節(jié)點,則仲裁器112選擇這些未被評估的節(jié)點之一。否則,如果節(jié)點向量104A沒有指定任何未被評估的節(jié)點,則仲裁器112可確定與"符號窗索引"的符號索引相關(guān)的節(jié)點向量104之一再加上1(如,節(jié)點向量104B)是否指定任何未^皮評估的節(jié)點。如果節(jié)點向量104B指定一個或多個未祐:評估的節(jié)點索引,則仲裁器112可選擇這些未被評估的節(jié)點索引之一。否則,如果節(jié)點向量104B沒有指定任何未被評估的節(jié)點索引,則仲裁器112確定與"符號窗索引"的符號索引相關(guān)的節(jié)點向量104之一再加上2(如,節(jié)點向量104C)是否指定任何未被評估的節(jié)點。37如果節(jié)點向量104C指定一個或多個未被評估的節(jié)點索引,則仲裁器112可選擇這些未被評估的節(jié)點索引之一。否則,如果節(jié)點向量104C沒有指定任何未纟皮評估的節(jié)點索引,則仲裁器112可確定與"符號窗口索引"的符號索引相關(guān)的節(jié)點向量104之一再加上3(如,節(jié)點向量104D)是否指定任何未^皮評估的節(jié)點。如果節(jié)點向量104D指定一個或多個未被評估的節(jié)點索引,則仲裁器112就可選擇這些未被評估的節(jié)點索引之一。否則,如果節(jié)點向量104D沒有指定任^可未^皮評估的節(jié)點索引,則仲裁器112可再次確定節(jié)點向量104A是否指定任何未一皮評估的節(jié)點。盡管實際上節(jié)點向量104A并未初始指定任何未被評估的節(jié)點,但是節(jié)點向量104A現(xiàn)在卻可包含未被評估的節(jié)點,這是因為由節(jié)點向量104A指定的、正在被評估的節(jié)點可能已經(jīng)將新節(jié)點添加到了節(jié)點向量104A。仲裁器112可以此方式繼續(xù)進行一直到仲裁器112識別一個未^皮評估的節(jié)點為止。在選4奪未被評估的節(jié)點之后,仲裁器112可以將該未被評估的節(jié)點指定為"當前正被評估"。仲裁器112然后就可將所選擇的節(jié)點分配到線程114中的空閑線程。為了將由節(jié)點向量104之一所指定的節(jié)點分配纟合線程114之一,仲裁器112可以爿尋該節(jié)點的節(jié)點索引和與該節(jié)點向量相關(guān)的符號索引提供給該線程。由該符號索引所標識的符號位置在本文中可被稱為"當前符號位置"。在仲裁器112將節(jié)點索引和符號索引提供給線程114中之一后,該線程可相對于該符號索引所指示的符號來評估由該節(jié)點索引所指定的節(jié)點。例如,該線程可使用符號索引來從符號緩沖器100;險索符號。該符號在本文可稱為"當前符號"。此外,該線程還可從存儲模塊20(或高速緩沖存儲器106)檢索由該節(jié)點索引所標識的節(jié)點。該節(jié)點在本文中可^C稱為"當前節(jié)點"。在氺企索該當前符號和當前節(jié)點之后,該線程可確定當前節(jié)點是狀態(tài)節(jié)點還是映射節(jié)點。如果當前節(jié)點是映射節(jié)點,則該線程可計38算與當前符號相關(guān)的映射節(jié)點中的下一狀態(tài)元素的存^f諸地址。例如,該線程可使用上面根據(jù)圖3所概括的處理(process,進程)來計算在存儲模塊20中的下一狀態(tài)元素的存儲地址。在計算對應(yīng)于該當前符號的下一狀態(tài)元素的存儲器地址之后,線程可發(fā)送讀取^i青求給存儲模塊20以請求與計算出來的存儲地址相關(guān)的存儲位置的內(nèi)容。如果高速緩沖存儲器106包括與計算出來的存儲地址相關(guān)的存儲位置的內(nèi)容,則高速緩沖存儲器106可以存儲模塊20的名義響應(yīng)該讀取匸清求。在4企索下一狀態(tài)元素之后,該線程;就可如下戶斤述:t也處理下一狀態(tài)元素。如果當前節(jié)點是狀態(tài)節(jié)點,則該線程可確定當前節(jié)點是否將當前符號映射到當前節(jié)點的下一狀態(tài)元素。為了確定當前節(jié)點是否將當前符號映射到下一狀態(tài)元素,該線程可檢查該狀態(tài)節(jié)點的每個符號元素并確定該符號是否遵從由任一符號元素指定的符號準則。例如,如果符號元素的元符號標志祐:i殳為'0',則線程確定當前,奪號是否與在符號元素中指定的符號相匹配。如果當前符號與符號元素中指定的符號相匹配,則當前節(jié)點確實將當前符號映射到當前狀態(tài)的下一狀態(tài)元素。另一方面,如果符號元素的元符號標志^皮:沒為'r,則該線程可確定當前符號是否為由元符號描述的符號類的一項。例如,如果在符號元素中所指定的符號值為"0x02",則在當前符號是字母符號的情況下,該線程可確定當前節(jié)點將當前符號映射到下一狀態(tài)元素。當在符號元素中所指定的符號值為"0x00"(即,顯式s轉(zhuǎn)換)時,該線程就可使得與當前符號位置相關(guān)的節(jié)點向量104之一指定由下一狀態(tài)元素所指示的節(jié)點。該線程沒有確定當前節(jié)點將當前符號映射到下一狀態(tài)元素。在確定當前節(jié)點是否將當前符號映射到下一狀態(tài)元素之后,該線禾呈可確定符號元素的s標志是否已^皮設(shè)為'1,。如果符號元素的S標志已被i殳為'1,并且當前節(jié)點將當前符號映射到下一狀態(tài)元素,則該線考呈就可4安如下所述來處理該狀態(tài)節(jié)點的下一狀態(tài)元素。不管當前節(jié)點是否將當前符號映射到下一狀態(tài)元素,如果符號元素的S標志^^殳為'1,,則該線程可確定是否將符號元素的£條標志i殳為'r。如果符號元素的s條標志#皮_沒為'o,或者當前節(jié)點沒有將當前符號映射到下一狀態(tài)元素,則該線程就可發(fā)送對在存儲模塊20中的在當前節(jié)點之后的節(jié)點的讀取請求。當前節(jié)點之后的節(jié)點可為狀態(tài)節(jié)點或者映射節(jié)點,其包括一個或多個s轉(zhuǎn)換并可將一個或多個符號映射到一個或多個下一狀態(tài)元素。在4妄收當前節(jié)點之后的節(jié)點以后,該線程就可類似于任何其它節(jié)點一樣來評估這一節(jié)點。另一方面,如果將符號元素的e條標志設(shè)為'0,并且當前節(jié)點將當前符號映射到下一狀態(tài)元素,則該線程就'退出(retire)'并通知仲裁器112該線程空閑。如果符號元素的s標志未被設(shè)為'0,并且如果當前節(jié)點將當前符號映射到下一狀態(tài)元素,則該線程可確定當前節(jié)點之后的、存儲模塊20中的節(jié)點是否是由當前節(jié)點的下一狀態(tài)元素所指示的節(jié)點。如果當前節(jié)點之后的、存儲模塊20中的節(jié)點是由當前節(jié)點的下一狀態(tài)元素所指示的節(jié)點,則由下一狀態(tài)元素所指示的節(jié)點就成為新的"當前節(jié)點"。此外,該線程還可增加符號索引的值。該線牙呈然后可返回并用新的當前符號來評估該新的當前4犬態(tài)。另一方面,如果符號元素的s標志未被設(shè)為'1,,當前節(jié)點將當前符號映射到下一狀態(tài)元素,并且當前節(jié)點之后的、存儲模塊20中的節(jié)點不是由該狀態(tài)節(jié)點的下一狀態(tài)元素所指示的節(jié)點,則該線程就可處理當前節(jié)點的下一狀態(tài)元素并退出。如果符號元素的s標志未纟皮i殳為'1,并且如果當前節(jié)點未3尋當前符號映射到下一狀態(tài)元素,則該線程可'退出,并通知仲裁器112該線禾呈空閑。為了處理下一狀態(tài)元素,該線程可首先確定下一狀態(tài)元素的位15是否是0。如果下一狀態(tài)元素的位15是0,則該線程可確定位14:0的值是否等于0x7FFF(即,死狀態(tài))。下一狀態(tài)元素的位14:0可表示節(jié)點索引。如果節(jié)點索引的^直不等于0x7FFF,則該線禾呈可確定與當前符號位置之后的符號位置相關(guān)的節(jié)點向量104之一是否已經(jīng)指定了由該節(jié)點索引所指示的節(jié)點。在這個實例中,如果節(jié)點向量已經(jīng)指定了該節(jié)點,則該線程不將該節(jié)點索引添加到節(jié)點向量。另一方面,如果該節(jié)點向量未指定該節(jié)點,則該線程可使該節(jié)點向量指定該節(jié)點。在一實例中,該線程可將該節(jié)點索引存儲在節(jié)點向量104之一中,該節(jié)點向量104之一與等于當前符號的符號索引加上l再對5取模的向量索引相關(guān)。如果節(jié)點索引的值是0x7FFF,就不需要進一步的動作,這是因為下一狀態(tài)元素指示死狀態(tài)。如果下一狀態(tài)元素的位15的值是'1,,則該線程可確定位14的值是否是'1,以及位13的值是否是'0,。如果位14的值是'1,且位13的值是'0,,則下一狀態(tài)元素的位12:0可指示映射節(jié)點索引。在此情況下,該線程可使得由該映射節(jié)點索引指示的映射節(jié)點由與當前符號位置之后的符號位置相關(guān)的節(jié)點向量104之一所指定。如果下一狀態(tài)元素的位15的值是'r、位M的值是'r、位13的值是'1,以及位12的值是'0,,則位12:0的值可表示模式標識符。在此情況下,該線程可將該模式標識符添加到結(jié)果緩沖器108。此外,該線程還可將當前符號索引添加到結(jié)果緩沖器108,以指示符號流中威脅簽名的位置。如果下一狀態(tài)元素的位15的值是'l'、位14的值是T、位13的值是'1,以及位12的值是'1,,則位12:0的值可表示用于結(jié)尾錨定模式的模式標識符。在這種情況下,線程可確定當前符號是否是"文本末尾",并且確定當前符號是否是符號流中最后的符號。如果當前符號是"文本結(jié)尾"符號并且當前符號是在符號流中最后的符號,則該線程可將位12:0的纟莫式標識符和該符號索引添加到結(jié)果緩沖器108。圖5是示出示例性的非確定性有限自動機120的表示的框圖。在圖5的實例中,NFA120的節(jié)點表示為圓圏,符號轉(zhuǎn)換表示為實線箭頭,并且s轉(zhuǎn)換表示為虛線箭頭。此外,接受狀態(tài)表示為虛線圓圏。每個4妄受狀態(tài)都可與才莫式標識符相關(guān)。NFA12(M妄受遵乂人由正則表達式"abcIh[ao]t|[a-z]."描述的模式的符號流。最初,仲裁器112可以^使節(jié)點向量104A與符號流中的第一符號位置相關(guān)、使節(jié)點向量104B與符號流中的第二符號位置相關(guān)、使節(jié)點向量104C與符號流中的第三符號位置相關(guān)、使節(jié)點向量104D與符號流中的第四符號位置相關(guān),以及^f吏節(jié)點向量104E與符號流中的第五符號位置相關(guān)。仲裁器U2然后可將節(jié)點121的節(jié)點索引添加到節(jié)點向量104A。在將節(jié)點121的節(jié)點索引添加到節(jié)點向量104A之后,仲裁器112可將節(jié)點121分配到線程114的第一個線程。當線程114的第一個線程評估狀態(tài)121時,線程114的第一個線程可確定在緩沖器100中的在符號索引0處的符號是否是符號'a,。如果是這樣,則線程114的第一個線程可將節(jié)點124的節(jié)點索引添加到節(jié)點向量104B。線程114的第一個線程可將節(jié)點124的節(jié)點索引添加到節(jié)點向量104B,這是因為節(jié)點向量104B當前與符號流的第二符號位置相關(guān)。此外,線程114的第一個線程還可評估節(jié)點122,這是因為存在從節(jié)點121到節(jié)點122的e轉(zhuǎn)換。當線程114的第一個線程評估節(jié)點122時,線程114的第一個線程:就可確定在符號索引O處的符號是否是符號'h,。如果是這樣,則線程114的第一個線程可將節(jié)點125的節(jié)點索引添加到節(jié)點向量104B。此外,線程114的第一個線程還可評估節(jié)點123,這是因為存在從42節(jié)點122到節(jié)點123的s轉(zhuǎn)換。當線程114的第一個線程評估節(jié)點123時,線程114的第一個線程可確定在符號索引0處的符號是否是小寫字母符號。如果是這樣,則線程114的第一個線程可將節(jié)點127的節(jié)點索引添加到節(jié)點向量104B。因為沒有來自狀態(tài)123的£轉(zhuǎn)換,所以線^f呈114的第一個線程可在評估狀態(tài)123之后退出。線程114的第一個線程評估節(jié)點121、122和123,這是因為節(jié)點121、122和123通過e轉(zhuǎn)換而相連。由于節(jié)點121、122和123通過s轉(zhuǎn)才奐而相連,因此,在節(jié)點121一皮評估時,節(jié)點122和123也將總會4皮;平估。因此,由于不將節(jié)點122和123添力o到節(jié)點向量104A而可以節(jié)省時間。此外,因為節(jié)點121、122和123通過e轉(zhuǎn)換而相連,所以,節(jié)點121、122和123凈皮存4諸在存<諸才莫塊20中的連續(xù)存儲位置之中,因此就可在單個存儲請求中來4企索它們。此外,如果節(jié)點121被評估,則節(jié)點122和123將總會被評估。在線程114的第一個線程才丸4亍這些動作的同時,仲裁器112可將由節(jié)點向量104指定的其它未被評估的節(jié)點分配給線程114的其它線程。如果在符號索引O處的符號是符號V,則一將節(jié)點124添加到節(jié)點向量104B,仲裁器112就可將節(jié)點124分配給線程114之一。該線程可確定在符號索引1處的符號是否是符號'b,。如果是這樣,則該線程可確定符號索引l是否處在符號窗中。如果符號索引l處在符號窗中,則該線程可確定在符號索引2處的符號是否是符號V。如果符號索引2處的符號是符號'c',則該線程就可將與節(jié)點131相關(guān)的模式標識符和符號索引'2,添加到結(jié)果緩沖器108。如果符號索引l不在符號窗中,則該線程可將節(jié)點124添加到節(jié)點向量104B并且退出??蛇x地,如果在符號索引0處的符號是符號'h',則節(jié)點向量104B包括節(jié)點125的節(jié)點索引。在此情況下,一將節(jié)點125添加到節(jié)點向量104B,仲裁器112就可將節(jié)點125分配給處理引擎102中的線程。該線程可確定在符號位置1處的符號是否是符號'a,。如果在符號位置1處的符號是符號'a,并且節(jié)點129的節(jié)點索引還未在節(jié)點向量104C中,則該線程可將節(jié)點129的節(jié)點索引添加到節(jié)點向量104C。此外,該節(jié)點還可4丸行到狀態(tài)126的£轉(zhuǎn)換。當該線程評估節(jié)點126時,該線程可確定在符號位置1處的符號是否是符號'o'。如果在符號位置(索引)1處的符號是符號'o,并且節(jié)點129的節(jié)點索引還未在節(jié)點向量104C中,則該線程可將節(jié)點129的節(jié)點索引添加到節(jié)點向量104C。因為沒有來自節(jié)點126的進一步的s轉(zhuǎn)換,所以,該線程可在評估節(jié)點126之后退出。如果節(jié)點向量W4C包含節(jié)點129,則仲裁器112可將節(jié)點129分配給處理引擎102中的線程。該線程可確定在符號索引2處的符號是否是符號't,。如果在符號索引2處的符號是符號't,,該線程就可將與節(jié)點132相關(guān)的模式標識符和符號索引2添加到結(jié)果緩沖器108。因為沒有來自節(jié)點129的進一步s轉(zhuǎn)換,該線程可在將模式標識符和符號索引添加到結(jié)果緩沖器108之后退出。如果節(jié)點向量104B包含節(jié)點127的節(jié)點索引,則仲裁器112可將節(jié)點127分配給線程114之一。該線程然后可確定在符號索引1處的符號與<.〉符號相匹配,這是因為O符號與所有符號都相匹配。接下來,該線程可確定符號索引l是否在該符號窗中。如果符號索引l不在該符號窗中,則該線程就可將節(jié)點130的節(jié)點索引添加到節(jié)點向量104C并且退出。如果符號索引l在該符號窗中,則該線程可確定符號索引2處的符號是否是0和9之間的符號。如果符號索引2處的符號是0和9之間的符號,則該線程可將與節(jié)點133相關(guān)的模式標識符和符號索引'2,添加到結(jié)果緩沖器108。圖6是示出在模式匹配模塊18中的仲裁器112的示例性操作的流程圖。最初,仲裁器112可使節(jié)點向量104的每一個節(jié)點向量都與符號窗中的不同符號位置相關(guān)(140)。例如,仲裁器112可僅L節(jié)點向量104A與符號流的第一符號位置相關(guān)、^吏節(jié)點向量104B與符號流的第二符號位置相關(guān),等等。接下來,仲裁器112還可將指示代表NFA開始狀態(tài)的節(jié)點的節(jié)點索引添加到節(jié)點向量104A(142)。在圖6的實例中,節(jié)點向量104A被稱為第一節(jié)點向量,這是因為仲裁器112已使節(jié)點向量104A與符號窗中的第一符號位置相關(guān)。在將節(jié)點索引添加到第一節(jié)點向量之后,仲裁器112可確定節(jié)點向量104之中的任何一個是否都指定一個未被評估的節(jié)點(144)。如果仲裁器112確定節(jié)點向量104之一指定一個未^^皮評估的節(jié)點(144的"是"),則仲裁器112可確定是否所有線程114都忙(146)。如果所有線程114都忙(146的"是"),則仲裁器112可一直等4寺直到線程114之一提供事件給仲裁器112,通知仲裁器112該線程空閑(148)。當仲裁器112接收這種事件時,仲裁器112可將未被評估的節(jié)點分配鄉(xiāng)合空閑線禾呈(150)。另一方面,仲裁器112確定這些線程之一不忙(146的"否"),仲裁器112可立即將未被評估的節(jié)點分配給空閑線程(150)。在仲裁器112將未被評估的節(jié)點分配給空閑線程之后或者在仲裁器112確定節(jié)點向量104中任一個都不包括未被評估的節(jié)點(144的"否")之后,仲裁器112可確定所有由第一節(jié)點向量指定的節(jié)點是否都已被評估(152)。如果并非所有由第一節(jié)點向量指定的節(jié)點都已被評估(152的"否,,),則仲裁器112可返回并再次確定第一節(jié)點向量是否指定任何未^^皮評估的節(jié)點(144)。換句話il,當?shù)谝还?jié)點向量指定了未被評估或當前正被評估的一個或多個節(jié)點時,仲裁器112就可返回。如果所有由第一節(jié)點向量指定的節(jié)點都已^f皮評估(152的"是"),則仲裁器112就可清除存儲在第一節(jié)點向量中的節(jié)點索引(154)。在清除了存儲在第一節(jié)點向量中的節(jié)點索引之后,仲裁器112就可前移符號窗(156)。當仲裁器112前移符號窗時,第一節(jié)點向量就成為與該符號窗的最后符號位置之后的符號位置相關(guān)的節(jié)點向量。在前移該符號窗之后,仲裁器112可將表示NFA的未錨定狀態(tài)的節(jié)點的節(jié)點索引插入到第一節(jié)點向量中(158)。仲裁器112將這些節(jié)點索引插入到第一節(jié)點向量之中是因為一些威脅簽名可起始于在符號流中的任一點處。圖7是示出了用于評估狀態(tài)節(jié)點的處理引擎102中的線程114之一的示例性操作的流程圖。最初,該線程確定當前節(jié)點是映射節(jié)點還是狀態(tài)節(jié)點(160)。如果當前節(jié)點是映射節(jié)點(160的"是"),則該線程可4;M亍圖8中的實例所示出的凈喿作。另一方面,如果當前節(jié)點不是映射節(jié)點(160的"否"),則當前節(jié)點就是狀態(tài)節(jié)點。當該線程確定當前節(jié)點是狀態(tài)節(jié)點時,該線程可確定當前節(jié)點的s標志是否被i殳為'1,(162)。如果當前節(jié)點的s標志-故設(shè)為T(162的"是"),則該線程可確定當前節(jié)點是否將當前符號映射到當前節(jié)點的下一狀態(tài)元素(164)。如果當前節(jié)點將當前符號映射到所述下一狀態(tài)元素(164的"是"),則該線程可i平估當前節(jié)點的下一狀態(tài)元素(166)。例如,該線禾呈可才艮據(jù)圖9的實例中所描述的#:作來評估下一狀態(tài)元素。在處理下一狀態(tài)元素之后,該線程可確定當前節(jié)點的e條標志是否已^皮^:為'1,(168)。此外,如果當前節(jié)點未將當前符號映射到下一狀態(tài)元素(164的"否"),則該線程可確定當前節(jié)點的s條標志是否已被設(shè)為'1,(168)。如果當前節(jié)點的s條標志被設(shè)為'1,(168的"是"),則該線程可確定當前節(jié)點是否將當前符號映射到下一狀態(tài)元素(170)。如果當前節(jié)點將當前符號映射到下一狀態(tài)元素(170的"是"),則該線程退出(174)。另一方面,如果當前節(jié)點未將當前符號映射到下一狀態(tài)元素(170的"否"),則該線程就可請求來自存儲模塊20的下一節(jié)點(172)。下一節(jié)點是存儲模塊20中的當前節(jié)點之后的節(jié)點。該線程然后就可將該"下一節(jié)點"指定為新的當前節(jié)點。在請求來自存儲模塊20的下一節(jié)點之后,該線程可返回并確定當前節(jié)點是狀態(tài)節(jié)點還是映射節(jié)點(160)。如果當前節(jié)點的s條標志未被設(shè)為'1,(168的"否"),則該線程可/人存儲才莫塊20中才企索下一節(jié)點(172)。然后該線程就可將該下一節(jié)點指定為新的'當前節(jié)點,。然后該線程可返回并確定新的當前節(jié)點是狀態(tài)節(jié)點還是映射節(jié)點(160)。如果當前節(jié)點的£標志未#皮_沒為'1,(162的"否"),則該線程可確定當前節(jié)點是否將當前符號映射到下一狀態(tài)元素(174)。如果該線程確定當前節(jié)點未將當前符號映射到下一狀態(tài)元素(174的"否"),則沒有更多工作可由該線程來^f故。因此,該線程可完成其操作并退出(176)。如果該線程確定當前節(jié)點將當前符號映射到下一狀態(tài)元素(174的"是"),則該線程可確定由當前節(jié)點的下一狀態(tài)元素所指示的節(jié)點是否與在存儲模塊20之中的、當前節(jié)點之后的節(jié)點相同(178)。如果由當前節(jié)點的下一狀態(tài)元素所指示的節(jié)點與在存儲模塊20之中的、當前節(jié)點之后的節(jié)點相同(178的"是"),則該線程可確定在流緩沖器100中的下一符號是否在符號窗中(179)。如果流緩沖器100中的下一符號在該符號窗中(179的"是,,),那么,該線程可將存儲模塊20之中的、當前節(jié)點之后的節(jié)點指定為"當前節(jié)點"(180)。接下來,該線程就可將當前符號設(shè)為流緩沖器100中的下一符號(182)。換句話說,該線程可將當前符號之后的符號指定為"當前符號"。然后該線程可返回,檢索在符號索引處的符號緩沖器100中的符號,并且確定新的當前節(jié)點是映射節(jié)點還是狀態(tài)節(jié)點(160)。以此方式,該線程可快速評估一系列連續(xù)符號。否則,如果由當前節(jié)點的下一狀態(tài)元素所指示的節(jié)點與在存儲模塊20之中的、當前節(jié)點之后的節(jié)點不相同(178的"否"),或者如果流緩沖器100中的下一符號不在符號窗中(179的"否"),則該線程可處理當前節(jié)點的下一狀態(tài)元素(184)。例如,該線程可4吏用在圖9的實例中所概括的操作來處理當前節(jié)點的下一狀態(tài)元素。在處理當前節(jié)點的下一狀態(tài)元素之后,該線程可以退出(174)。圖8是示出了評估映射節(jié)點的實例操作的流程圖。在圖8中示出的實例中,線程114之一可通過計算映射起始地址來開始評估映射節(jié)點(190)。該線程可通過將MAP—BASE地址左移七個位置、將該映射節(jié)點的映射索引左移四個位置、以及將這兩個移位后的值加在一起,來計算該映射起始;也址。在計算映射起始地址之后,該線程可從存儲沖莫塊20或者高速緩沖存儲器106中獲得位組和先前1計數(shù)(192)。例如,該線程可通過提取當前符號的位7:3并將所提取的位左移一個位置來獲得位組和先前1計數(shù)。然后該線程可通過將該移位后的值加到該映射起始地址來計算存儲地址。在計算該存卡者地址之后,該線程就可乂人與該計算出來的存儲地址相關(guān)的存儲器中的位置4企索16位塊。該塊的第一個y乂位可表示位組而該塊的第二個^^f立可表示先前1計凄丈。當該線程已經(jīng)獲得了位組和先前1計凄Ot,該線^f呈就可計算游程凄t(194)。該游程數(shù)表示在與當前符號相關(guān)的位的左側(cè)的1(1,s)的個^t。為了計算該游程^t,該線程就可計算在與當前符號相關(guān)的位的左側(cè)的位組中的^皮i殳為'1,的位的個H在計算在與當前符號相關(guān)的位的左側(cè)的位組中的祐沒為'1,的位的個lt之后,該線程通過將在與當前符號相關(guān)的位的左側(cè)的位組中被設(shè)為'1,的位的個凄t與先前1計lt相加來計算該游程凄t。接下來,該線程可從存儲模塊20中獲得當前節(jié)點中的下一狀態(tài)元素(196)。為了獲得下一狀態(tài)元素,該線程可計算下一狀態(tài)元素的存儲地址。例如,該線程可通過將該映射起始地址、數(shù)字六十四以及與二相乘的游程數(shù)相加來計算下一狀態(tài)元素的存儲地址。該線程然后可使用該存儲地址來從存儲模塊20(或高速緩沖存儲器106)中獲得下一狀態(tài)元素。在該線程從存儲模塊20或高速緩沖存儲器106中獲得下一狀態(tài)元素之后,該線禾呈可處理下一狀態(tài)元素(198)。例如,該線考呈可通過沖丸4亍圖9的實例中所述的才喿作來處理下一狀態(tài)元素。圖9是示出了處理下一狀態(tài)元素的操作實例的流程圖。在該示例性操作中,線程114之一可確定下一狀態(tài)元素指定狀態(tài)節(jié)點索引(200)。如果下一狀態(tài)元素指定狀態(tài)節(jié)點索引(200的"是"),則該線程可確定下一狀態(tài)元素是否指定節(jié)點索引0x7FFF(即,死狀態(tài))(202)。在該示例性操作中,如果下一狀態(tài)元素指定節(jié)點索引0x7FFF(202的"是"),則該線程就不進行操作(204)。另一方面,如果下一狀態(tài)元素指定除了0x7FFF以外的節(jié)點索引(202的"否,,),則該線禾呈可確定與向量索引((N+1)mod5)相關(guān)的節(jié)點向量104之一是否包括該狀態(tài)節(jié)點索引,其中N是當前符號索引(206)。如果該節(jié)點向量已經(jīng)包括該狀態(tài)節(jié)點索引(206的"是"),則該線程不進行纟喿作(204)。否則,如果該節(jié)點向量還未包括該狀態(tài)節(jié)點索引(206的"否"),則該線程可將狀態(tài)節(jié)點索引加到該節(jié)點向量(208)。如果下一狀態(tài)元素未指定狀態(tài)節(jié)點索引(200的"否"),則該線程可確定下一狀態(tài)元素是否指定映射節(jié)點索引(210)。如果下一狀態(tài)元素指定映射節(jié)點索引(210的"是"),則該線程可確定與向量索引((N+1)mod5)相關(guān)的節(jié)點向量104之一是否包括該狀態(tài)節(jié)點索引(206)。如果該節(jié)點向量已經(jīng)包括該狀態(tài)節(jié)點索引(206的"是"),則該線程就不進行4喿作(204)。否則,如果該節(jié)點向量還未包括該狀態(tài)節(jié)點索引(206的"否"),則該線程可將該狀態(tài)節(jié)點索引添加到該節(jié)點向量(208)。另一方面,如果下一狀態(tài)元素不指定映射節(jié)點索引(210的"否"),則該線程可確定下一狀態(tài)元素是否為非結(jié)尾錨定的模式指定模式標識符(212)。如果下一狀態(tài)元素指定非結(jié)尾錨定的模式標識符(212的"否"),則該線程可將在下一狀態(tài)元素中指定的模式標識符和當前符號索引添加到結(jié)果緩沖器108(214)。如果下一狀態(tài)元素指定結(jié)尾錨定的模式標識符(212的"是"),則該線程可確定當前符號是否是文本結(jié)尾符號(216)。如果該線程確定當前符號是文本結(jié)尾符號(216的"是"),則該線程可確定當前符號是否是該符號流的最后符號(218)。如果當前符號是該符號流的最后符號(218的"是"),則該線程可將下一狀態(tài)元素中的模式標識符和當前符號索引添加到結(jié)果緩沖器108(220)。否則,如果當前符號不是文本結(jié)尾符號(216的"否")或者如果當前符號不是該符號流中的最后符號(218的"否"),則該線程就不進行操作(204)。圖10是示出了其中模式匹配模塊18評估Unicode符號的示例性節(jié)點230的框圖。如上所述,在狀態(tài)節(jié)點中符號元素的位15:8可指定符號4直。然而,Unicode標準》見定至少兩種表示單個標準ascii符號的方式。特別地,該Unicode標準^見定標準ascii符號可以單個84立塊表示。另外,Unicode標準夫見定相同ascii符號可以兩個8位塊表示,其中,這些8位塊的第一個全是零,且這些8位塊的第二個與單個8位塊表示相同。例如,在Unicode標準中,字母'a'可由位'oiooooor或者由位'oooooooooiooooor來表示。圖10的實例提供了有限自動機節(jié)點232的細節(jié),其中,Unicode標志已^^殳為'1'。當才莫式匹配才莫塊18開始處理狀態(tài)節(jié)點230時,模式匹配模塊18可轉(zhuǎn)換到第一子狀態(tài)。在當前符號全是零時,模式匹配模塊18可從第一子狀態(tài)轉(zhuǎn)換到第二子狀態(tài)。以此方式,才莫式匹配模塊18'消耗,當前符號并使當前符號之后的、符號流中的符號成為新的當前符號。此外,模式匹配模塊18還可通過s轉(zhuǎn)換而轉(zhuǎn)換到第二子狀態(tài)。然后模式匹配模塊18可確定"當前符號"是否與狀態(tài)節(jié)點230的符號元素中的符號之一相匹配。如果"當前符號"與狀態(tài)節(jié)點230的符號元素中的符號之一相匹配,則如由與指定該匹配符號的符號元素相關(guān)的下一狀態(tài)元素所指示的那樣,模式匹配模塊18可從第二子狀態(tài)轉(zhuǎn)換到節(jié)點234。以此方式,在當前符號與在狀態(tài)節(jié)點230的符號元素中的符號之一相匹配時,或在當前符號全為零且下一符號與狀態(tài)節(jié)點230中的符號之一相匹配時,模式匹配模塊18可從狀態(tài)節(jié)點230轉(zhuǎn)換到節(jié)點234。本公開中描述的功能可被應(yīng)用到通過使用數(shù)據(jù)存儲介質(zhì)存儲和/或檢索的,或者經(jīng)由有線或無線通信系統(tǒng)傳送(如,發(fā)射和/或接收)的各種數(shù)據(jù)中的任一種。有線和無線通信系統(tǒng)的實例包括任何通信技術(shù)(包括但不限于使用CDMA、GSM、802.11、藍牙、超寬帶(UWB)、OFDM、FDMA、TDMA、W-CDMA或任何其它無線電存取技術(shù))的無線傳輸,以及使用諸如TCP/IP、ATM等等各種網(wǎng)絡(luò)協(xié)議中的任一種的有線或無線傳輸。這些功能可被應(yīng)用于任何類型的數(shù)據(jù)(包括但不限于,音樂數(shù)據(jù)、視頻數(shù)據(jù)、多媒體數(shù)據(jù)或其它娛樂數(shù)據(jù)、金融數(shù)據(jù)、安全數(shù)據(jù)、商業(yè)數(shù)據(jù)、政府數(shù)據(jù)、軍事數(shù)據(jù)、營銷數(shù)據(jù)、銷售數(shù)據(jù)、醫(yī)療病人數(shù)據(jù)、醫(yī)療診斷數(shù)據(jù)、醫(yī)學(xué)影像數(shù)據(jù)、表示圖形或文本內(nèi)容的數(shù)據(jù)、圖像數(shù)據(jù)、化學(xué)數(shù)據(jù)、地理數(shù)據(jù)、映像數(shù)據(jù)、電一見播方文數(shù)據(jù)、無線電廣l番數(shù)據(jù)、email凄史據(jù)、互聯(lián)網(wǎng)數(shù)據(jù)、個人數(shù)據(jù)等等)。在一個或多個示例性實施例中,所描述的功能可以硬件、軟件、和/或固件或其任意組合來實現(xiàn)。如果以硬件形式實現(xiàn),則這些功能可以一個或多個微處理器、微控制器、數(shù)字信號處理器(DSP)、專用集成電i各(ASIC)、現(xiàn)場可編程門陣列(FPGA)等等形式實現(xiàn)。這些組件可位于通信系統(tǒng)、凄t據(jù)寫入和/或讀耳又系統(tǒng)、或者其它系統(tǒng)中。如果以軟件形式實現(xiàn),則這些功能就可作為一條或多條指令或代碼而^皮存儲到或傳輸?shù)接嬎?幾可讀介質(zhì)之上。計算才幾可讀介質(zhì)既包括計算一幾存儲介質(zhì)也包括通信介質(zhì)(包括便于計算才幾程序從一個地方傳送到另一地方的任何介質(zhì))。存儲介質(zhì)可以是能由計算4幾所存取的任意可用介質(zhì)。利用實例(但不限于此),這樣的計算才幾可讀介質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或者能用于承載或存儲以指令或數(shù)據(jù)結(jié)構(gòu)形式的且能由計算才幾存取的所想要的程序代碼的其它<壬何介質(zhì)。本文所用的Disk和Disc("盤")包括光盤(CD)、激光盤、光盤、數(shù)字多功能盤(DVD)、軟盤以及藍光盤,其中有的盤("disk")通常通過磁的方式再生數(shù)據(jù),而有的盤("disc")則使用激光光學(xué)再生凄t據(jù)。上述的組合也應(yīng)該包4舌在計算4幾可讀介質(zhì)的范圍內(nèi)。已經(jīng)描述了本發(fā)明的各種實施例。這些和其它實施例都在4又利要求書的范圍內(nèi)。權(quán)利要求1.一種方法,包括維持包括多個節(jié)點的非確定性有限自動機(NFA)表示,其中,所述NFA表示表示檢測符號流是否遵從由正則表達式定義的符號模式的NFA;接收符號流;通過在使用第二線程評估所述NFA表示的第二節(jié)點時,同時使用第一線程評估所述NFA表示的第一節(jié)點,來確定所述符號流是否遵從由所述正則表達式定義的所述符號模式;以及當所述符號流不遵從由所述正則表達式定義的所述符號模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送所述符號流中的數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其中,確定所述符號流是否遵從所述符號模式包括相對于所述符號流的第一符號位置處的符號,4吏用所述第一線程來評估所述NFA表示的所述第一節(jié)點,以及同時相對于所述符號流的第二符號位置處的符號,使用所述第二線程來評估所述NFA表示的所述第二節(jié)點。3.根據(jù)權(quán)利要求1所述的方法,其中,所述的模式與計算機安全威脅相關(guān)。4.根據(jù)權(quán)利要求1所述的方法,其中,所述方法進一步包括維持一組節(jié)點向量,其中,每個所述節(jié)點向量都包括用于指定所述NFA表示中的節(jié)點的多個元素,以及其中,每個所述節(jié)點向量都與所述符號流的不同符號位置相關(guān),以及其中,每個所述節(jié)點向量中的所述多個元素指定將相對于與各個所述節(jié)點向量相關(guān)的所述符號位置處的所述符號流中的符號而被評估的所述NFA表示中的節(jié)點。5.根據(jù)權(quán)利要求4所述的方法,其中,維持一組節(jié)點向量包括將指示所述NFA表示中的節(jié)點的節(jié)點索引存儲在所述節(jié)點向量的所述多個元素之一中。6.根據(jù)權(quán)利要求4所述的方法,其中,所述節(jié)點向量中的第一節(jié)點向量指定所述NFA表示的所述第一節(jié)點;其中,所述節(jié)點向量中的第一節(jié)點向量與所述符號流的第一符號位置相關(guān);其中,所述節(jié)點向量中的第二節(jié)點向量與緊跟在所述第一符號位置之后的第二符號位置相關(guān);以及其中,確定所述符號流是否遵從所述符號模式包括利用所述第一線程更新所述節(jié)點向量中的所述第二節(jié)點向量,以使當所述第一線程確定所述第一節(jié)點將所述符號流的所述第一位置處的符號映射到第三節(jié)點時,所述節(jié)點向量中的所述第二節(jié)點向量指定所述NFA表示中的所述第三節(jié)點。7.4艮據(jù)權(quán)利要求6所述的方法,其中,所述節(jié)點向量中的所述第二節(jié)點向量指定所述NFA表示的所述第二節(jié)點;其中,所述節(jié)點向量中的第三節(jié)點向量與所述符號流中緊跟在所述第二符號位置之后的第三符號位置相關(guān);以及其中,確定所述符號流是否遵從所述符號模式進一步包括利用所述第二線程更新所述節(jié)點向量中的第三節(jié)點向量,以使當所述第二線程確定所述第二節(jié)點將所述第二符號位置處的所述符號流中的符號映射到第四節(jié)點時,所述節(jié)點向量中的所述第三節(jié)點向量指定所述NFA表示中的所述第四節(jié)點。8.根據(jù)權(quán)利要求6所述的方法,確定所述符號流是否遵從所述符號模式包括當所述第一線程空閑時,將由所述節(jié)點向量之一指定的節(jié)點分配纟會所述第一線程;以及利用所述第一線程確定所分配的節(jié)點是否將在與所述節(jié)點向量之一相關(guān)的符號位置處的符號映射到所述NFA表示中的另一個節(jié)點。9.根據(jù)權(quán)利要求6所述的方法,其中,確定所述符號流是否遵/人所述符號模式包括維持定義所述符號流的連續(xù)的一組符號位置的符號窗;以及當所述節(jié)點向量中之一與所述符號窗中的符號位置相關(guān)時,將由所述節(jié)點向量中之一指定的節(jié)點分配給所述第一線程。10.根據(jù)權(quán)利要求9所述的方法,其中,確定所述符號流是否遵乂人所述符號模式包括當由所述節(jié)點向量的第一節(jié)點向量指定的所有節(jié)點都^f皮評估時,前移所述符號窗,其中,所述節(jié)點向量的所述第一節(jié)點向量與在與所述節(jié)點向量的其它節(jié)點向量相關(guān)的每一個符號位置之前的符號位置相關(guān)。11.根據(jù)權(quán)利要求10所述的方法,其中,在將所述符號窗前移之后,所述節(jié)點向量中的所述之一與所述符號窗之中最后的符號位置之后的符號位置相關(guān)。12.根據(jù)權(quán)利要求10所述的方法,其中,前移所述符號窗包括使所述節(jié)點向量的所述第一節(jié)點向量指定所述NFA表示中未錨定的節(jié)點。13.根據(jù)權(quán)利要求1所述的方法,其中,所述第一節(jié)點包括一個符號元素組和下一狀態(tài)元素;其中,所述符號元素組中的每一個符號元素都指示一個或多個符號;其中,所述下一狀態(tài)元素指示NFA中的狀態(tài);以及其中,所述第一節(jié)點將由所述符號元素指示的所述符號映射到由所述下一狀態(tài)元素指示的所述NFA中的所述狀態(tài)。14.根據(jù)權(quán)利要求13所述的方法,其中,所述第一線程相對于所述符號流中的第一符號來i平估所述第一節(jié)點,以及其中,確定所述符號流是否遵從所述符號模式包括利用所述第一線程確定所述第一符號是否為由所述符號元素指示的所述符號之一。15.根據(jù)權(quán)利要求13所述的方法,其中,所述下一狀態(tài)元素通過指定指示由所述正則表達式定義的所述符號模式的模式標識符來指示所述NFA中的接受;]犬態(tài);以及其中,所述下一狀態(tài)元素通過指定所述NFA表示中的節(jié)點的節(jié)點索引來指示所述NFA中非接受狀態(tài)。16.才艮據(jù)^又利要求15所述的方法,其中,所述方法進一步包4舌當所述下一狀態(tài)元素指定模式標識符并且所述符號流中的第一符號是由所述符號元素指示的所述符號之一時,利用所述第一線程輸出所述模式標識符。17.根據(jù)權(quán)利要求13所述的方法,其中,所述符號元素之一指示描述一類符號的元符號。18.根據(jù)權(quán)利要求13所述的方法,其中,所述第一線程相對于第一符號評估所述第一節(jié)點;其中,所述第一節(jié)點指定到所述NFA表示中的第三節(jié)點的e轉(zhuǎn)換;其中,由所述第一節(jié)點指定的所述s轉(zhuǎn)換表示從空串到所述第三節(jié)點的映射;其中,所述第一節(jié)點指定s條標志;以及其中,確定所述符號流是否遵從所述符號模式包括<又當所述第一符號不是由所述符號元素指示的所述符號之一時才評估所述第三節(jié)點。19.根據(jù)權(quán)利要求13所述的方法,其中,所述第一線程相對于第一符號評估所述第一節(jié)點,其中,所述NFA表示中的第一組的一個或多個節(jié)點通過e轉(zhuǎn)換鏈4妻到所述第一節(jié)點,以及其中,確定所述符號流是否遵從所述符號模式包括利用單個操作中的所述第一線程來確定所述第一節(jié)點和所述第一組節(jié)點中的所述多個節(jié)點是否將所述第一符號映射到所述NFA表示中的其它節(jié)點。20.根據(jù)權(quán)利要求19所述的方法,其中,通過s轉(zhuǎn)換鏈接到所述第一節(jié)點的所述第一組節(jié)點包括第三節(jié)點;以及其中,確定所述第一組節(jié)點中的任何節(jié)點是否都將所述第一符號映射到其它節(jié)點包括利用所述第一線程來確定所述第一節(jié)點是否將所述第一符號映射到第四節(jié)點;以及利用所述第一線程來確定所述第三節(jié)點是否將所述第一符號映射到所述NFA表示中的第五節(jié)點。21.根據(jù)權(quán)利要求19所述的方法,其中,維持所述NFA表示包^^:將所述第三節(jié)點存儲在存儲模塊之中的緊跟在存儲有所述第一節(jié)點的存儲位置之后的存儲位置處。22.根據(jù)權(quán)利要求13所述的方法,其中,所述第一線程相對于第一符號評估所述第一節(jié)點,其中,所述NFA中的所述第一節(jié)點和第六節(jié)點被存儲在連續(xù)的存^t位置中,以及其中,確定所述符號流是否遵從所述符號模式包括當所述第一節(jié)點將所述第一符號映射到所述第六節(jié)點時,在單個操作中評估所述第一節(jié)點和所述第六節(jié)點。23.根據(jù)權(quán)利要求1所述的方法,其中,維持所述NFA表示包括維持所述NFA表示中的映射節(jié)點,其中,所述映射節(jié)點為一組符號中的每一個符號都提供從所述符號到在所述映射節(jié)點中的一組下一狀態(tài)元素中的下一狀態(tài)元素的映射,以及其中,每個所述下一狀態(tài)元素都指示所述NFA中的4妻受狀態(tài)或非接受狀態(tài),其中,非接受狀態(tài)在所述NFA表示中被表示為節(jié)點,以及其中,^接受狀態(tài)在所述NFA表示中^皮表示為所述下一對犬態(tài)元素中的才莫式標識符。24.根據(jù)權(quán)利要求23所述的方法,其中,利用使用了游長壓縮的位映射編碼一幾制對所述映射節(jié)點進行格式化。25.才艮據(jù)權(quán)利要求23所述的方法,所述第一線程相對于所述符號流中的第一符號評估所述第一節(jié)點;以及其中,確定所述符號流是否遵從所述符號模式包括當所述第一節(jié)點是所述映射節(jié)點時,確定所述映射節(jié)點中的所述下一狀態(tài)元素中的哪一個一皮所述映射節(jié)點映射到當前符號。26.—種裝置,包括存儲單元,用于存儲包括多個節(jié)點的非確定性有限自動機(NFA)表示,其中,所述NFA表示表示檢測符號流是否遵從由正則表達式定義的符號模式的NFA;模式匹配模塊,用于通過同時利用第一線程評估所述NFA表示的第一節(jié)點以及利用第二線程評估所述NFA表示的第二節(jié)點,來確定所述符號流是否遵從由所述正則表達式定義的所述符號模式;以及網(wǎng)絡(luò)4妾口,用于在所述符號流不遵/人由所述正則表達式定義的所述符號模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送所述符號流中的數(shù)據(jù)。27.根據(jù)權(quán)利要求26所述的裝置,其中,所述符號模式與計算機安全威M4目關(guān)。28.根據(jù)權(quán)利要求26所述的裝置,其中,所述模式匹配模塊進一步包括一組節(jié)點向量,其中,每個所述節(jié)點向量都具有用于指定所述NFA表示中的節(jié)點的多個元素,其中,每個所述節(jié)點向量都與所述符號流的不同符號位置相關(guān),以及其中,每個所述節(jié)點向量中的所述多個元素都指定將相對于與各個所述節(jié)點向量相關(guān)的所述符號位置處的所述符號流中的符號而被評估的所述NFA表示中的節(jié)點。29.根據(jù)權(quán)利要求28所述的裝置,其中,所述節(jié)點向量中的第一節(jié)點向量指定所述NFA表示的所述第一節(jié)點;其中,所述節(jié)點向量中的第一節(jié)點向量與第一符號位置相關(guān);其中,所述節(jié)點向量的第二節(jié)點向量與緊跟在所述第一符號位置之后的第二符號位置相關(guān);以及其中,所述第一線程更新所述節(jié)點向量中的所述第二節(jié)點向量,以使當所述第一線程確定所述第一節(jié)點將所述符號流中所述第一符號位置處的符號映射到第三節(jié)點時,所述節(jié)點向量的所述第二節(jié)點向量指定所述NFA表示中的所述第三節(jié)點。30.4艮據(jù)權(quán)利要求28所述的裝置,其中,所述裝置進一步包括仲裁器,其在所述第一線程空閑時,將由所述節(jié)點向量之一指定的節(jié)點分配給所述第一線程;以及其中,響應(yīng)于所述分配,所述第一線程確定所分配的節(jié)點是否將在與所述節(jié)點向量之一相關(guān)的符號位置處的所述符號流中的符號映射到所述NFA表示中的另一個節(jié)點。31.根據(jù)權(quán)利要求30所述的裝置,其中,當所述節(jié)點向量之一符號窗中的符號位置相關(guān)時,所述仲裁器分配由所述節(jié)點向量之一指定的節(jié)點,其中,所述符號窗包括所述符號流的多個連續(xù)符號位置。32.根據(jù)權(quán)利要求31所述的裝置,其中,當由所述節(jié)點向量的第一節(jié)點向量指定的所有節(jié)點都^皮評估時,所述仲裁器前移所述符號窗口,以及其中,所述節(jié)點向量的所述第一節(jié)點向量與在與所述節(jié)點向量的其它節(jié)點向量相關(guān)的每一個符號位置之前的符號位置相關(guān)。33.根據(jù)權(quán)利要求32所述的裝置,其中,當所述仲裁器前移所述符號窗口時,所述仲裁器使所述節(jié)點向量的所述第一節(jié)點向量指定所述NFA表示中未錨定的節(jié)點。34.4艮據(jù)權(quán)利要求26所述的裝置,其中,所述第一節(jié)點包括一個符號元素組和下一狀態(tài)元素;其中,所述符號元素組中的每一個符號元素都指示一個或多個符號;其中,所述下一狀態(tài)元素指示NFA中的狀態(tài);以及其中,所述第一節(jié)點將由所述符號元素指示的所述符號映射到由所述下一狀態(tài)元素指示的所述NFA中的所述狀態(tài)。35.根據(jù)權(quán)利要求34所述的裝置,其中,當所述第一線程相對于所述符號流中的第一符號評估所述第一節(jié)點時,所述第一線程通過確定所述第一符號是否為由所述符號元素指示的所述符號之一來確定所述第一節(jié)點是否將所述第一符號映射到所述第二節(jié)點。36.根據(jù)權(quán)利要求34所述的裝置,其中,所述下一狀態(tài)元素通過指定指示由所述正則表達式定義的所述符號模式的模式標識符來指示所述NFA中的接受狀態(tài);以及其中,所述下一狀態(tài)元素通過指定所述NFA表示中的節(jié)點的節(jié)點索引來指示所述NFA中的非接受狀態(tài)。37.根據(jù)權(quán)利要求36所述的裝置,其中,所述裝置進一步包括結(jié)果緩沖器;以及其中,當所述下一狀態(tài)元素指定模式標識符時,在所述符號流中的第一符號是由所述符號元素指示的所述符號之一時,所述第一線程將所述模式標識符輸出到所述結(jié)果緩沖器。38.根據(jù)權(quán)利要求36所述的裝置,其中,所述第一線程相對于第一符號評估所述第一節(jié)點;其中,所述第一節(jié)點指定到所述NFA表示中的第三節(jié)點的s轉(zhuǎn)換;其中,所述第一節(jié)點指定s條標志;以及其中,僅當所述第一符號不是由所述符號元素指示的所述符號之一時,所述第一線程才評估所述第三節(jié)點。39.根據(jù)權(quán)利要求34所述的裝置,其中,所述第一節(jié)點通過s轉(zhuǎn)換鏈接到所述NFA表示中的第一組的一個或多個節(jié)點;以及其中,所述第一線程在單個操作中確定所述第一節(jié)點和所述第一組節(jié)點中的多個節(jié)點是否將所述第一符號映射到所述NFA表示中的其它節(jié)點。40.根據(jù)權(quán)利要求39所述的裝置,其中,通過5轉(zhuǎn)換鏈接到所述第一節(jié)點的所述第一組節(jié)點包括第三節(jié)點;以及其中,所述第一線程部分地通過確定所述第一節(jié)點是否將所述第一符號映射到第四節(jié)點,以及通過確定所述第三節(jié)點是否將所述第一符號映射到所述NFA表示中的第五節(jié)點,來確定所述第一節(jié)點和所述第一組節(jié)點中的多個節(jié)點是否將所述第一符號映射到所述NFA表示中的其它節(jié)點。41.根據(jù)權(quán)利要求34所述的裝置,其中,所述第一線程相對于所述第一符號評估所述第一節(jié)點J其中,所述NFA中的所述第一節(jié)點和第六節(jié)點被存儲在連續(xù)的存4諸位置中,以及其中,所述第一線程部分地通過在所述第一節(jié)點將所述第一符號映射到所述第六節(jié)點時,在單個操作中評估所述第一節(jié)點和所述第六節(jié)點,來確定所述符號流是否遵從所述符號模式。42.根據(jù)權(quán)利要求26所述的裝置,其中,所述NFA表示包括映射節(jié)點,所述映射節(jié)點為一組符號中的每一個符號都提供從所述符號到所述映射節(jié)點中的一組下一狀態(tài)元素中的下一狀態(tài)元素的映射,以及其中,每個所述下一狀態(tài)元素都指示所述NFA中的非接受狀態(tài)或非接受狀態(tài),其中,非接受狀態(tài)在所述NFA表示中被表示為節(jié)點,以及其中,接受狀態(tài)在所述NFA表示中被表示為所述下一狀態(tài)元素中的沖莫式標識符。43.4艮據(jù)^f又利要求42所述的裝置,其中,所述第一線程相對于在所述符號流中的第一符號評估所述第一節(jié)點;以及其中,當所述第一節(jié)點是所述映射節(jié)點時,通過確定所述映射節(jié)點中的哪個下一狀態(tài)元素^皮所述映射節(jié)點映射到所述第一符號,所述第一線程確定所述第一節(jié)點是否將所述第一符號映射到所述NFA表示中的第三節(jié)點。44.一種包含指令的計算機可讀介質(zhì),其中所述指令使得可編程處理器寺丸行以下步驟維持包括多個節(jié)點的非確定性有限自動機(NFA)表示,其中,所述NFA表示表示檢測符號流是否遵從由正則表達式定義的符號才莫式的NFA;接收符號流;通過在^f吏用第二線程評估所述NFA表示的第二節(jié)點時,同時^f吏用第一線程評估所述NFA表示的第一節(jié)點,來確定所述符號流是否遵從由所述正則表達式定義的所述符號模式;以及當所述符號流不遵從由所述正則表達式定義的所述符號模式時,經(jīng)由計算機網(wǎng)絡(luò)傳送所述符號流中的數(shù)據(jù)。45.根據(jù)權(quán)利要求44所述的計算機可讀介質(zhì),其中,所述指令進一步使得所述處理器才丸行以下步驟維持一組節(jié)點向量,其中,每個所述節(jié)點向量都包括用于指定所述NFA表示中的節(jié)點的多個元素,以及其中,每個所述節(jié)點向量都與所述符號流的不同符號位置相關(guān),以及其中,每個所述節(jié)點向量中的所述多個元素都指定將相對于與各個所述節(jié)點向量相關(guān)的所述符號位置處的所述符號流中的符號而被評估的所述NFA表示中的節(jié)點。全文摘要本申請描述了確定符號流是否包括由正則表達式定義的模式的技術(shù)。如本文所述,可使用非確定性有限自動機(NFA)表示該正則表達式??刹⑿性u估NFA中的多個狀態(tài)。這些狀態(tài)可與符號流中的多個符號位置相關(guān)。并行評估多個狀態(tài)和符號使得能夠更快速地確定該符號流是否包括由正則表達式定義的模式。文檔編號H04L12/24GK101296116SQ20071013574公開日2008年10月29日申請日期2007年8月10日優(yōu)先權(quán)日2007年4月24日發(fā)明者加里·戈爾德曼,拉梅什·潘瓦爾,菲利普·A·托馬斯申請人:叢林網(wǎng)絡(luò)公司