專利名稱:使用部分確定性有限自動(dòng)模式匹配來進(jìn)行網(wǎng)絡(luò)攻擊檢測的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算才幾網(wǎng)絡(luò),更具體而言,涉及網(wǎng)絡(luò)安全。
背景技術(shù):
企業(yè)計(jì)算機(jī)網(wǎng)絡(luò)典型地包括交換數(shù)據(jù)并共享資源的 一組相互
連接的計(jì)算設(shè)備集。這些設(shè)備例如可包括網(wǎng)絡(luò)服務(wù)器、數(shù)據(jù)庫服 務(wù)器、文件服務(wù)器、路由器、打印機(jī)用戶端計(jì)算機(jī)以及其它設(shè)備。 各種設(shè)備可執(zhí)行各式不同服務(wù)和通信協(xié)議。這些不同月良務(wù)和通信協(xié) 議中的每一個(gè)都使得上述企業(yè)計(jì)算機(jī)網(wǎng)絡(luò)暴露了不同的安全性漏洞。
用于檢測網(wǎng)絡(luò)攻擊的常規(guī)技術(shù)使用模式匹配。例如,企業(yè)可部署 一個(gè)或一個(gè)以上的安全性設(shè)備來4企測網(wǎng)絡(luò)流量是否有病毒或其它 安全性威脅。這種安全性設(shè)備一^殳4巴常規(guī)表達(dá)式或子串匹配應(yīng)用到 該網(wǎng)絡(luò)流量中,以在協(xié)-漢流中才企測所定義的才莫式。多種才莫式可用于 嘗試檢測不同類型的攻擊并通常改善了這種攻擊檢測的準(zhǔn)確性和 有力程度。
發(fā)明內(nèi)容
本文4皮露描述了用于檢測網(wǎng)絡(luò)流量是否包含一種或多種計(jì)算 機(jī)安全威脅的技術(shù)。如本文所述,安全裝置(例如,侵入檢測和防范裝置、防火墻、或其他網(wǎng)絡(luò)裝置)可使用這些技術(shù)^r測符號(hào)流是 否符合計(jì)算機(jī)安全威脅相關(guān)的符號(hào)模式。為了檢測符號(hào)流是否符合 符號(hào)模式,安全裝置存儲(chǔ)了完全確定性有限自動(dòng)機(jī)(full deterministic finite automaton,縮寫為fDFA ),其用于4妄受(accept)符合符號(hào)模 式的符號(hào)流。該安全裝置還生成部分確定性有限自動(dòng)機(jī)(Partial deterministic finite automaton,縮寫為pDFA ),其包4#義于應(yīng)于fDFA 中的具有最高訪問級(jí)的那些節(jié)點(diǎn)的節(jié)點(diǎn)。該安全裝置4吏用pDFA來 處理符號(hào)流中的每個(gè)符號(hào),直到一個(gè)符號(hào)導(dǎo)致pDFA轉(zhuǎn)換至失敗節(jié) 點(diǎn)或轉(zhuǎn)換至正在4妾受(accepting)的節(jié)點(diǎn)。如果該符號(hào)導(dǎo)致pDFA 轉(zhuǎn)換至失敗節(jié)點(diǎn),則安全裝置使用fDFA來處理該符號(hào)以及在符號(hào) 流中的后續(xù)符號(hào)。
在一個(gè)實(shí)施例中, 一種方法包括存4諸一組完全確定性有限自 動(dòng)機(jī)(fDFA )節(jié)點(diǎn)。fDFA節(jié)點(diǎn)表示完全確定性有限自動(dòng)機(jī)fDFA。 第一 fDFA接受符合第一符號(hào)模式的符號(hào)流。該方法還包括生成一 組pDFA節(jié)點(diǎn)。每個(gè)pDFA在fDFA中都具有對應(yīng)的、超越訪問閾 的訪問》及的節(jié)點(diǎn)。當(dāng)fDFA節(jié)點(diǎn)中的》于應(yīng)節(jié)點(diǎn)失見定(specify) 了符 號(hào)向fDFA節(jié)點(diǎn)中的具有超越訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA 中的每個(gè)節(jié)點(diǎn)都-見定該符號(hào)向pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換。當(dāng)fDFA 節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)^見定了符號(hào)向fDFA節(jié)點(diǎn)中具有不超越訪問閾的 訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定該符號(hào)向pDFA 節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換。另外,該方法還包括接收(receive)符 號(hào)流中的符號(hào)。該方法還包括確定pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否為 失敗節(jié)點(diǎn)。進(jìn)一步講,該方法包括當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)不 是失敗節(jié)點(diǎn)時(shí),確定pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否井見定該符號(hào)向失 敗節(jié)點(diǎn)的轉(zhuǎn)4灸。另外,該方法也包4舌當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn) 規(guī)定了該符號(hào)向失敗節(jié)點(diǎn)的轉(zhuǎn)換時(shí),將fDFA節(jié)點(diǎn)中的對應(yīng)于pDFA 節(jié)點(diǎn)的當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)。該方法還 包括當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是失敗節(jié)點(diǎn)時(shí)以及當(dāng)fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)規(guī)定了該符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),檢測計(jì)算機(jī) 安全威脅。
在另一實(shí)施例中, 一種中間網(wǎng)絡(luò)裝置包括存儲(chǔ)模塊,用于存 儲(chǔ)一組完全確定性有限自動(dòng)機(jī)(fDFA )節(jié)點(diǎn)。這些fDFA節(jié)點(diǎn)表示 fDFA節(jié)點(diǎn)表示接受符合符號(hào)模式的符號(hào)串的完全確定性有限自動(dòng) 才幾(fDFA)。該中間網(wǎng)絡(luò)裝置還包括pDFA更新才莫塊,用于生成 一組pDFA節(jié)點(diǎn)。這些pDFA表示部分確定性有限自動(dòng)機(jī)(pDFA )。 每個(gè)pDFA節(jié)點(diǎn)在fDFA中都具有對應(yīng)的、超越訪問閾的訪問級(jí)的 節(jié)點(diǎn)。當(dāng)fDFA節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA節(jié)點(diǎn)中的具 有超越訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定 該符號(hào)向pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換。當(dāng)fDFA節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn) 規(guī)定了符號(hào)向fDFA節(jié)點(diǎn)中具有不超越訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換 時(shí),pDFA中的每個(gè)節(jié)點(diǎn)都力見定該符號(hào)到pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn) 的轉(zhuǎn)換。另外,該中間網(wǎng)絡(luò)裝置還包括DFA引擎,其用于接收 (receive)符號(hào)流中的符號(hào);確定pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否為 失敗節(jié)點(diǎn);當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)不是失敗節(jié)點(diǎn)時(shí),確定pDFA 節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否規(guī)定該符號(hào)向失敗節(jié)點(diǎn)的轉(zhuǎn)換;當(dāng)pDFA節(jié) 點(diǎn)中的當(dāng)前節(jié)點(diǎn)^見定了該符號(hào)向失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),將fDFA節(jié)點(diǎn)中 的對應(yīng)于pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為fDFA節(jié)點(diǎn)中的當(dāng) 前節(jié)點(diǎn);以及當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是失敗節(jié)點(diǎn)時(shí)以及當(dāng)fDFA 節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)規(guī)定了該符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),就檢測 計(jì)算機(jī)安全威脅。
在另一實(shí)施例中, 一種計(jì)算機(jī)可讀介質(zhì)包括指令。當(dāng)被執(zhí)行時(shí), 這些指令導(dǎo)致處理器存儲(chǔ)一組完全確定性有限自動(dòng)機(jī)(fDFA)節(jié)點(diǎn)。 這些fDFA節(jié)點(diǎn)表示完全確定性有限自動(dòng)機(jī)(fDFA )。 fDFA接受符 合符號(hào)模式的符號(hào)流。這些指令還導(dǎo)致處理器生成一組pDFA節(jié)點(diǎn)。 這些pDFA表示部分確定性有限自動(dòng)機(jī)(pDFA )。每個(gè)pDFA節(jié)點(diǎn)在fDFA中都具有對應(yīng)的、超越訪問閾的訪問級(jí)的節(jié)點(diǎn)。當(dāng)fDFA 節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)A見定了符號(hào)向fDFA節(jié)點(diǎn)中具有超越訪問閾的訪 問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA中的每個(gè)節(jié)點(diǎn)都身見定該符號(hào)向pDFA節(jié) 點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換。當(dāng)fDFA節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA 節(jié)點(diǎn)中具有不超越訪問閾的訪問級(jí)的節(jié)點(diǎn)的轉(zhuǎn):換時(shí),pDFA中的每 個(gè)節(jié)點(diǎn)都A見定了該符號(hào)向pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換。這些指 令還導(dǎo)致處理器接收符號(hào)流中的符號(hào)。另外,這些指令也導(dǎo)致處理 器確定pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn)。這些指令還導(dǎo)致 處理器當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)不是失敗節(jié)點(diǎn)時(shí)就確定pDFA節(jié) 點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否規(guī)定該符號(hào)向失敗節(jié)點(diǎn)的轉(zhuǎn)換。此外,這些指 令還導(dǎo)致所述可編程處理器當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)^L定了該符 號(hào)向失敗節(jié)點(diǎn)轉(zhuǎn)4奐時(shí),將fDFA節(jié)點(diǎn)中的對應(yīng)于pDFA節(jié)點(diǎn)中的當(dāng) 前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)。這些指令還導(dǎo)致處 理器當(dāng)pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是失敗節(jié)點(diǎn)時(shí)以及當(dāng)fDFA節(jié)點(diǎn)中 的當(dāng)前節(jié)點(diǎn)規(guī)定了該符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí)就檢測計(jì)算機(jī) 安全威脅。
在另 一實(shí)施例中, 一種方法包括存儲(chǔ)一組完全確定性有限自動(dòng) 機(jī)(fDFA)節(jié)點(diǎn),其中,fDFA節(jié)點(diǎn)表示用于接受符合符號(hào)模式的 符號(hào)流的完全確定性有限自動(dòng)機(jī)fDFA。該方法還包括生成一組 pDFA節(jié)點(diǎn),其中,這些pDFA表示部分確定性有限自動(dòng)機(jī)(pDFA )。 每個(gè)pDFAfDFA中都具有對應(yīng)的、超越訪問閾的訪問級(jí)的節(jié)點(diǎn)。當(dāng) fDFA節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA節(jié)點(diǎn)中具有不超越訪問 閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA中的每個(gè)節(jié)點(diǎn)都夫見定該符號(hào)向 pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換。該方法還包括接收符號(hào)流中的符 號(hào)。另外,該方法還包括使用pDFA節(jié)點(diǎn)和fDFA節(jié)點(diǎn)來檢測計(jì) 算機(jī)安全威脅。在下面的附圖和i兌明書中將描述本發(fā)明的 一個(gè)或多個(gè)實(shí)施例 的細(xì)節(jié)。由說明書和附圖,以及權(quán)利要求書,本發(fā)明的其他特點(diǎn)、 目的、優(yōu)點(diǎn)將變得清楚。
附圖i兌明
圖l是示出了一種運(yùn)行以保護(hù)專用網(wǎng)絡(luò)的侵入才全測和防范裝置
的示例性系統(tǒng)方才匡圖2是示出了一種示例性完全確定性有限自動(dòng)4幾和一種部分確 定性有限自動(dòng)才幾的方框圖3是示出了 一種示例性模式匹配模塊細(xì)節(jié)的方框圖4是示出了該模式匹配模塊的示例性操作的流程圖5是示出了使用一個(gè)或多個(gè)完全確定性有限自動(dòng)機(jī)來處理符 號(hào)的示例性才喿作的流禾呈圖6是示出了一種匹配引擎的示例性才喿作的流程圖,該匹配引 擎可用于更新部分確定性有限自動(dòng)才幾;
圖7是示出了 一種部分確定性有限自動(dòng)機(jī)更新模塊的示例性操 作的流程圖,該更新模塊用于執(zhí)行對部分確定性有限自動(dòng)機(jī)的定期 更新;
圖8是示出了 一種確定性有限自動(dòng)機(jī)的示例性模式的方框圖。
具體實(shí)施例方式
圖1是示出了包括侵入檢測和防范裝置(IDP) 4、經(jīng)過保護(hù)的 網(wǎng)絡(luò)6和公共網(wǎng)絡(luò)8的示例性系統(tǒng)2的框圖。公共網(wǎng)絡(luò)8可為未經(jīng) 保護(hù)的諸如互聯(lián)網(wǎng)的廣域網(wǎng)、無線網(wǎng)絡(luò)、局域網(wǎng)或者另一種計(jì)算機(jī) 網(wǎng)絡(luò)。經(jīng)過保護(hù)的網(wǎng)絡(luò)6可為諸如在辦公室或網(wǎng)絡(luò)數(shù)據(jù)中心里的局 域網(wǎng)等所保護(hù)的計(jì)算機(jī)網(wǎng)絡(luò)。
在系統(tǒng)2中,IDP裝置4被連接到公共網(wǎng)絡(luò)8及經(jīng)過保護(hù)的網(wǎng) 絡(luò)6,以便從公共網(wǎng)絡(luò)8流向經(jīng)過保護(hù)的網(wǎng)絡(luò)6的網(wǎng)絡(luò)流量先流到 IDP裝置4。 IDP裝置4可為單機(jī)網(wǎng)絡(luò)設(shè)備、另一網(wǎng)絡(luò)設(shè)備的組件 (如,防火墻設(shè)備)、在網(wǎng)絡(luò)設(shè)備上執(zhí)行的軟件模塊、或者其它構(gòu) 造。通常,IDP裝置44企測來自公共網(wǎng)絡(luò)8的網(wǎng)絡(luò)流量并確定該網(wǎng) 絡(luò)流量是否包括有任何對計(jì)算機(jī)安全性的威脅。計(jì)算才幾安全性方面 的威脅企圖訪問敏感性信息并試圖擾亂組織運(yùn)營,也可能是另 一類 型的攻擊。計(jì)算才/L安全性方面威脅的實(shí)例包括spy ware 、 rootkits 以及phishing郵件等計(jì)算機(jī)病毒、猜測密碼的企圖、與拒絕服務(wù)攻 擊相關(guān)的請求、及其它類型的攻擊。
計(jì)算機(jī)安全威脅可以與一種或多種符號(hào)模式有關(guān),符號(hào)模式用 于識(shí)別計(jì)算機(jī)安全威脅,但不識(shí)別無害數(shù)據(jù)。這里將與計(jì)算機(jī)安全 威脅有關(guān)的符號(hào)才莫式稱作"威脅標(biāo)記(threat signature )"。例如,一 特定病毒可能總是包括一 系列當(dāng)運(yùn)行時(shí)執(zhí)行惡意操作的指令。
如果IDP裝置4確定了網(wǎng)絡(luò)流量的給定流不包括任何計(jì)算機(jī)安 全性方面威脅,則IDP裝置4就可4巴該網(wǎng)絡(luò)流量流與經(jīng)過保護(hù)的網(wǎng) 絡(luò)6進(jìn)行通信。否則,如果IDP裝置4確定了該流包括一個(gè)或一個(gè) 以上計(jì)算機(jī)安全性方面威脅,則IDP裝置4就可撤消(drop)網(wǎng)絡(luò) 流量、日志記錄該網(wǎng)絡(luò)流量和/或轉(zhuǎn)發(fā)(forward )該流量到流量分析器以用于進(jìn)一步分析。以此方式,IDP裝置4可避免包括有計(jì)算 才幾安全性方面威脅的網(wǎng)絡(luò)流量到達(dá)受保護(hù)的網(wǎng)絡(luò)6。
如圖l所示的實(shí)例,IDP裝置4可包含多個(gè)組件。本發(fā)明公開 圖示出這些組件僅僅是為了說明的目的。在一些情況中,IDP裝置 4可包^fe比圖1所示少的組件,而在另一些情況中,IDP裝置4可 包括比圖l所示多的組件。此外,如本文所述的這些組件的功能可 分布于單個(gè)的組件或裝置之中。
當(dāng)來自公共網(wǎng)絡(luò)8的網(wǎng)絡(luò)流量到達(dá)IDP裝置4時(shí),第一網(wǎng)絡(luò)接 口 10就可處理來自/>共網(wǎng)絡(luò)8的物理信號(hào)并且4巴鏈路層的幀輸出 到網(wǎng)絡(luò)層模塊12。在基于分組的網(wǎng)絡(luò)中,網(wǎng)絡(luò)層才莫塊12典型地處 理鏈路層的幀,以便生成具有公共源和目標(biāo)地址的網(wǎng)絡(luò)分組流。例 如,網(wǎng)絡(luò)層才莫塊12可基于鏈i 各層幀來組裝和輸出互聯(lián)網(wǎng)協(xié)議 (Internet Protocol,縮寫為IP)分組流。當(dāng)IP分組共享7>共源地址、 目的;也址、源端口、目的端口和忉、i義時(shí),盡管可看作4交大或4交小的 粒狀流,但I(xiàn)P分組通常一皮認(rèn)為是相同分組流的一部分。
傳輸層才莫塊14可使用這些網(wǎng)絡(luò)分組流中的每一個(gè)來生成傳輸 層片段流。例如,傳輸層模塊16可對每個(gè)網(wǎng)絡(luò)分組流都生成傳輸 控制協(xié)"漢(Transmission Control Protocol,縮寫為TCP )片#殳流。這 些傳輸層片段進(jìn)而可神皮應(yīng)用層沖莫塊16 4吏用。
應(yīng)用層才莫塊16可組合TCP l史來組成應(yīng)用層數(shù)據(jù)并且從該^t據(jù) 中抽取應(yīng)用層通信信息。應(yīng)用層沖莫塊16可包括一個(gè)或多個(gè)針對協(xié) 議的插入式模塊,其為了各種應(yīng)用層協(xié)議來抽取應(yīng)用層通信信息。 例如,應(yīng)用層模塊16可包括從TCP段中抽取超文本傳輸協(xié)議 (HTTP )通信信息的插入式模塊、從TCP段中抽取會(huì)話啟動(dòng)協(xié)議 (SIP)通信信息的插入式才莫塊、以及抽取在其它應(yīng)用層協(xié)議中的 通信信息的插入式才莫塊。應(yīng)用層才莫塊16可支持的應(yīng)用層通信協(xié)議的其它實(shí)例包括文件傳送協(xié)議(FTP )、網(wǎng)絡(luò)新聞傳送協(xié)議(NNTP )、 簡單郵件傳送協(xié)議(SMTP)、 Telnet、域名系統(tǒng)(DNS )、 Gopher、 Finger、郵局協(xié)議(POP)、安全套接層(SSL )協(xié)議、輕量目錄訪 問協(xié)議(LDAP )、安全層(SSH )、因特網(wǎng)消息存取協(xié)議(IMAP )、 服務(wù)器消息塊(SMB)、動(dòng)態(tài)主才幾配置協(xié)-漢(DHCP)和其它協(xié)議。
應(yīng)用層模塊16可分析應(yīng)用層通信信息并抽取以符號(hào)串形式的、 針對協(xié)i義的元素。正如本文所4吏用的,術(shù)語"應(yīng)用層元素,,指的是 在該應(yīng)用層所獲得的針對協(xié)議的符號(hào)串。例如,應(yīng)用層模塊16可 從-故重新組合的應(yīng)用層通信信息中抽取4十對協(xié)i義的"上下文"和 "值"。通常,"上下文"在唯一標(biāo)識(shí)各種類型應(yīng)用層元素的應(yīng)用層 消息流中被命名為元素。所命名的元素提供描述通信會(huì)話的一個(gè)應(yīng) 用層基礎(chǔ)。上下文實(shí)例包括文件名、用戶名、應(yīng)用名、附帶文檔 名、針對協(xié)議的頭部信息、針對協(xié)議的認(rèn)證數(shù)據(jù)、表lt據(jù)以及其它 描述該通信會(huì)話的信息。作為特定實(shí)例,用于HTTP協(xié)議流的上下 文可包括提供HTTP服務(wù)的服務(wù)器名和訪問該服務(wù)器的網(wǎng)絡(luò)瀏覽 器(如,"Internet Explorer")的類型名。通過重新組合應(yīng)用層通信 信息,應(yīng)用層模塊16可抽取具體的上下文(如,瀏覽器類型)及 乂十應(yīng)的Y直(3口, "Internet Explorer")。應(yīng)用層才莫塊16可專lr出這些應(yīng) 用層元素以作為該符號(hào)流其中的一部分。例如,應(yīng)用層才莫塊16可 輸出包括表示應(yīng)用層元素的一組符號(hào)的符號(hào)流,該組符號(hào)其后跟著 一組表示應(yīng)用層通信信息的符號(hào)。在應(yīng)用層模塊16組成符號(hào)流之 后,應(yīng)用層模塊16就可轉(zhuǎn)發(fā)這些符號(hào)流到模式匹配模塊18。
存4諸才莫塊20(例如,計(jì)算才幾可讀存儲(chǔ)介質(zhì)i者如RAM、 FLASH、 磁盤驅(qū)動(dòng)器等)可存儲(chǔ)完全確定性有限自動(dòng)機(jī)(fDFA) 26A直到 26N(總稱為"fDFA26")。 fDFA 26中的每一個(gè)都可檢測符號(hào)流中 的一個(gè)或多個(gè)威脅標(biāo)記。例如,fDFA 26中的第一個(gè)可4企測與特定計(jì)算機(jī)病毒有關(guān)的威脅標(biāo)記,fDFA 26中的第二個(gè)可才全測與內(nèi)核木 馬集(rootkit)有關(guān)的威月辦才示i己。
fDFA 26中的每一個(gè)都可被表示為一組節(jié)點(diǎn)。fDFA 26中的節(jié) 點(diǎn)可以是未在接受的節(jié)點(diǎn)或(正)在接受的節(jié)點(diǎn)。 一個(gè)fDFA26中 的每個(gè)未在接受的節(jié)點(diǎn)可以是如下的數(shù)據(jù)結(jié)構(gòu),其規(guī)定了某些符號(hào) 向同一個(gè)fDFA26中的其他節(jié)點(diǎn)的零或多次轉(zhuǎn)變。只有當(dāng)符號(hào)流符 合符號(hào)模式時(shí),fDFA 26才可輸入正在接受的節(jié)點(diǎn)。換句話說,只 有當(dāng)符號(hào)流符合威脅標(biāo)記時(shí),fDFA26中的一個(gè)才"接受"符號(hào)流。
為了規(guī)定某些符號(hào)向其他節(jié)點(diǎn)的轉(zhuǎn)變, 一節(jié)點(diǎn)可包括從這些符 號(hào)到含于該節(jié)點(diǎn)中的節(jié)點(diǎn)索引的映射過程。節(jié)點(diǎn)索引可以是指示該 節(jié)點(diǎn)存儲(chǔ)于存儲(chǔ)才莫塊20中的存儲(chǔ)位置的值。例如,fDFA26A中的 節(jié)點(diǎn)可存儲(chǔ)于存儲(chǔ)模塊20中從基址開始的一陣列的存儲(chǔ)器位置。 在此例中,節(jié)點(diǎn)索引可規(guī)定距離該基址的偏移。例如,節(jié)點(diǎn)索引"3" 可指示在存儲(chǔ)器位置陣列中的第三節(jié)點(diǎn)。為了說明節(jié)點(diǎn)如何映射符 號(hào)到節(jié)點(diǎn)索引,i青看下面的例子fDFA 26A中的第一節(jié)點(diǎn)可映射 符號(hào)"a"到指示在存儲(chǔ)模塊20里存儲(chǔ)的fDFA 26A中第二節(jié)點(diǎn)的 存儲(chǔ)位置的節(jié)點(diǎn)索引。
fDFA26中的節(jié)點(diǎn)可映射各種符號(hào)到節(jié)點(diǎn)索引。例如,fDFA26 中的節(jié)點(diǎn)可映射標(biāo)準(zhǔn)ASCII或Unicode符號(hào)到節(jié)點(diǎn)索引。fDFA 26 中的節(jié)點(diǎn)還可映射元符號(hào)到節(jié)點(diǎn)索引。元符號(hào)表示一種特定類的符 號(hào)。例如,元符號(hào)可表示所有大寫字母。又例如,元符號(hào)可包括表 示以下符號(hào)的元符號(hào)所有小寫字母、所有字母^:字符號(hào)、所有字 母符號(hào)、所有數(shù)字符號(hào)、所有符號(hào)、所有空白符號(hào), 一特定范圍符 號(hào)內(nèi)的所有符號(hào)、大小寫相關(guān)匹配、給定符號(hào)以外的任何符號(hào)、以 及其他類的符號(hào)。因?yàn)榘◤谋硎疽活惙?hào)的元符號(hào)到單個(gè)節(jié)點(diǎn)索 引的映射過程的節(jié)點(diǎn)對應(yīng)于包括從該類符號(hào)中包含的每個(gè)符號(hào)到同 一 節(jié)點(diǎn)索引的不同副本的映射過程的節(jié)點(diǎn),所以使用元符號(hào)可減 少每個(gè)節(jié)點(diǎn)內(nèi)的映射數(shù)量。
fDFA 26中的每個(gè)節(jié)點(diǎn)都可根據(jù)位圖編碼方案進(jìn)行格式化。在 該位圖編碼方案中,符號(hào)集中的符號(hào)和元符號(hào)被關(guān)聯(lián)到位圖中的各 個(gè)位(bit),該位圖包含于fDFA 26中的節(jié)點(diǎn)中。在一個(gè)實(shí)例編碼 方案中,如果位圖中的位被設(shè)置成"1",則節(jié)點(diǎn)將與該位有關(guān)的符 號(hào)映射到包含于該節(jié)點(diǎn)中的節(jié)點(diǎn)索引中。在該實(shí)例編碼方案中,如 果位圖中的位被設(shè)置成"0",則節(jié)點(diǎn)不將與該位有關(guān)的符號(hào)映射到 包含于該節(jié)點(diǎn)中的節(jié)點(diǎn)索引中。然而,如果一個(gè)fDFA26中的節(jié)點(diǎn) 中的位圖與符號(hào)有關(guān),并且該位^皮設(shè)置成"0",則可存在符號(hào)/人該 節(jié)點(diǎn)向這一個(gè)fDFA 26中的開始節(jié)點(diǎn)的隱含轉(zhuǎn)4灸。因?yàn)閒DFA 26中 的節(jié)點(diǎn)通常規(guī)定大量的向fDFA26的開始節(jié)點(diǎn)的轉(zhuǎn)換,所以指示開 始節(jié)點(diǎn)的未包含的節(jié)點(diǎn)索引可以導(dǎo)致fDFA 26中的節(jié)點(diǎn)的總規(guī)才莫較 小。本說明書下面借助于圖8給出了 一個(gè)實(shí)例位圖編碼方案的細(xì)節(jié)。
fDFA26中的每一個(gè)都可包括大量節(jié)點(diǎn)。因?yàn)閒DFA26中的每 個(gè)可包括大量的節(jié)點(diǎn),所以也許不可能將一個(gè)fDFA26中的所有節(jié) 點(diǎn)都存儲(chǔ)于存儲(chǔ)模塊20中的單個(gè)存儲(chǔ)頁中。因此,也許有必要執(zhí) 行多頁交換,以使用pDFA26中的一個(gè)來才企測符號(hào)流中的威脅標(biāo)記。 每個(gè)頁面交換都可要求對永久性存儲(chǔ)介質(zhì)28進(jìn)行一個(gè)或多個(gè)寫操 作以及一個(gè)或多個(gè)讀才喿作。永久性存^f渚介質(zhì)28可包括石更盤驅(qū)動(dòng) 器、閃存、CD、或其它類型的永久性存儲(chǔ)介質(zhì)。因?yàn)閷τ谰眯源鎯?chǔ) 介質(zhì)28的讀取也許較慢,所以對于每頁面交換,模式匹配模塊18 都可導(dǎo)致顯著的性能下降。
為了減少當(dāng)4企測符號(hào)流是否包括一個(gè)或多個(gè)威脅標(biāo)記時(shí)寺丸行 多個(gè)頁面交4奐,才莫式匹配才莫塊18可生成一組新的"部分確定性有 限自動(dòng)機(jī)"(pDFA )節(jié)點(diǎn)。本說明書將成組的pDFA節(jié)點(diǎn)稱作pDFA 24。模式匹配模塊18可將pDFA24的節(jié)點(diǎn)存儲(chǔ)于存儲(chǔ)模塊20中的連續(xù)塊的存儲(chǔ)位置中。該存儲(chǔ)位置連續(xù)塊的大小可等于存儲(chǔ)頁的大
小。因?yàn)閜DFA24的節(jié)點(diǎn)規(guī)定僅轉(zhuǎn)換至pDFA24中的其他節(jié)點(diǎn),并 且因?yàn)閜DFA 24中的所有節(jié)點(diǎn)可并4亍存<諸于存4諸沖莫塊20中,所以 當(dāng)在pDFA 24中的多個(gè)狀態(tài)之間轉(zhuǎn)換時(shí),模式匹配模塊18可以不
導(dǎo)致頁面交換性能下降。
pDFA 24中的每個(gè)節(jié)點(diǎn)都"對應(yīng)于"fDFA 26中的一個(gè)具有超 越訪問閾的訪問級(jí)的節(jié)點(diǎn)。節(jié)點(diǎn)的訪問級(jí)是該節(jié)點(diǎn)成為當(dāng)前節(jié)點(diǎn)有 多頻繁的量度。當(dāng)fDFA節(jié)點(diǎn)組中的對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA 節(jié)點(diǎn)中的具有超越訪問閾的訪問級(jí)的節(jié)點(diǎn)的轉(zhuǎn)換時(shí),pDFA節(jié)點(diǎn)組 中的每個(gè)節(jié)點(diǎn)都失見定該符號(hào)向pDFA 24節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換。另夕卜, 當(dāng)fDFA節(jié)點(diǎn)組中的對應(yīng)節(jié)點(diǎn)失見定了符號(hào)向fDFA節(jié)點(diǎn)組中具有不 超越訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),pDFA 24中的每個(gè)節(jié)點(diǎn)也都規(guī) 定該符號(hào)向pDFA 24節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換。例如,pDFA 24中 的節(jié)點(diǎn)A可"對應(yīng)于"fDFA 26A中的節(jié)點(diǎn)A*。 fDFA 26A中的節(jié) 點(diǎn)八*可規(guī)定符號(hào)"x"向fDFA26A中的節(jié)點(diǎn)B承轉(zhuǎn)換,并可規(guī)定符 號(hào)"y"向fDFA26A中的節(jié)點(diǎn)C承的轉(zhuǎn)換。如果fDFA 26A中的節(jié)點(diǎn) B承的訪問級(jí)超過訪問閾,那么pDFA 24包括"對應(yīng)于,,節(jié)點(diǎn)B承的 節(jié)點(diǎn)B。因此,pDFA 24中的節(jié)點(diǎn)A可》見定符號(hào)"x"向節(jié)點(diǎn)B的 轉(zhuǎn)換。另 一方面,如果fDFA26中的節(jié)點(diǎn)C承的訪問級(jí)不超過訪問閾, 則pDFA 24不包括對應(yīng)于節(jié)點(diǎn)C*的節(jié)點(diǎn)。因?yàn)閜DFA 24不包括對
應(yīng)于節(jié)點(diǎn)(3*的節(jié)點(diǎn),所以pDFA24中的節(jié)點(diǎn)A規(guī)定符號(hào)"y"向失 敗節(jié)點(diǎn)的轉(zhuǎn)換。
pDFA 24中的每個(gè)節(jié)點(diǎn)都可以在多個(gè)fDFA 26中具有對應(yīng)節(jié) 點(diǎn)。當(dāng)pDFA 24中的節(jié)點(diǎn)在多個(gè)fDFA 26中具有對應(yīng)節(jié)點(diǎn)時(shí),當(dāng)fDFA 26節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA 26節(jié)點(diǎn)中的具有超越訪問 閾的i方問級(jí)的節(jié)點(diǎn)的轉(zhuǎn)才奐時(shí),pDFA24中的節(jié)點(diǎn)就可關(guān)見定該符號(hào)向 pDFA24中的節(jié)點(diǎn)的轉(zhuǎn)換。另外,當(dāng)fDFA26節(jié)點(diǎn)中任一對應(yīng)節(jié)點(diǎn)規(guī)定了符號(hào)向fDFA 26節(jié)點(diǎn)中的具有不超越訪問闊的訪問級(jí)的節(jié)點(diǎn) 轉(zhuǎn)換時(shí),pDFA24中的節(jié)點(diǎn)可^見定該符號(hào)向pDFA24中的失敗節(jié)點(diǎn) 的轉(zhuǎn)換。例如,pDFA 24中的節(jié)點(diǎn)A可對應(yīng)于fDFA 26A中的節(jié)點(diǎn) A*,和fDFA26B中的節(jié)點(diǎn)A#。 fDFA26A中的節(jié)點(diǎn)A承可規(guī)定符號(hào) "x,,向fDFA26A中的節(jié)點(diǎn)B承的轉(zhuǎn)才奐,以及失見定符號(hào)"y"向fDFA 26A中的節(jié)點(diǎn)(^*的轉(zhuǎn)換。fDFA 26B中的節(jié)點(diǎn)A弁可規(guī)定符號(hào)"x" 向fDFA26B中的節(jié)點(diǎn)B弁的轉(zhuǎn)換,并可規(guī)定符號(hào)"z" 向fDFA26B 中的節(jié)點(diǎn)D弁的轉(zhuǎn)換。在此例中,B承和B弁的訪問級(jí)可超過訪問閾, 節(jié)點(diǎn)(^*的訪問級(jí)可超過訪問閾,以及節(jié)點(diǎn)D弁的訪問級(jí)不超過訪問 閾。因?yàn)楣?jié)點(diǎn)B*和B弁具有超過訪問閾的訪問級(jí),所以pDFA 24可 包括j于應(yīng)于節(jié)點(diǎn)8*和B弁的節(jié)點(diǎn)B,并可包括3于應(yīng)于節(jié)點(diǎn)C^的節(jié)點(diǎn) C。因?yàn)楣?jié)點(diǎn)D弁不具有超過訪問閾的訪問級(jí),所以pDFA24不包括 對應(yīng)于節(jié)點(diǎn)D弁的節(jié)點(diǎn)。因此,pDFA24中的節(jié)點(diǎn)A可失見定符號(hào)"x" 向節(jié)點(diǎn)B的轉(zhuǎn)換,并可規(guī)定符號(hào)"y" 向節(jié)點(diǎn)C的轉(zhuǎn)換。但是,因 為節(jié)點(diǎn)D弁在pDFA 24中不具有對應(yīng)節(jié)點(diǎn),所以pDFA 24中的節(jié)點(diǎn) A頭見定符號(hào)"z" 向失敗節(jié)點(diǎn)的轉(zhuǎn)換。
模式匹配模塊18可接收符號(hào)流中的符號(hào),以確定該符號(hào)流是 否包括威脅標(biāo)記。然后,才莫式匹配^^塊18可以確定pDFA 24中的 當(dāng)前節(jié)點(diǎn)是否為pDFA24中的失敗節(jié)點(diǎn)。3口果pDFA24中的當(dāng)前節(jié) 點(diǎn)不是pDFA 24中的失敗節(jié)點(diǎn),則模式匹配模塊18可確定該當(dāng)前 節(jié)點(diǎn)是否映射所接收到的符號(hào)到pDFA 24中的失敗節(jié)點(diǎn)。如果pDFA 24中的失敗節(jié)點(diǎn)映射所接收到的符號(hào)到pDFA24中的失敗節(jié)點(diǎn),則 模式匹配模塊18可標(biāo)識(shí)fDFA 26中的對應(yīng)于pDFA 24中的該當(dāng)前 節(jié)點(diǎn)的節(jié)點(diǎn)。然后,才莫式匹配才莫塊18可將fDFA 26中這些凈皮識(shí)別 出的節(jié)點(diǎn)設(shè)置成它們所對應(yīng)的fDFA26中的當(dāng)前節(jié)點(diǎn)。然后,模式 匹配才莫塊18可將pDFA 26中的失敗節(jié)點(diǎn)i殳置成fDFA 26中的當(dāng)前 節(jié)點(diǎn)。接下來,才莫式匹配模塊18可用fDFA 26中的當(dāng)前節(jié)點(diǎn)來處 理所接收的符號(hào)。另一方面,如果pDFA24中的當(dāng)前節(jié)點(diǎn)把收到的
2符號(hào)映射到pDFA 24中的、不是失敗節(jié)點(diǎn)的節(jié)點(diǎn),則該節(jié)點(diǎn)成為 pDFA24中新的當(dāng)前節(jié)點(diǎn)。然后,pDFA24可4妾收和處理符號(hào)流中
的其他符號(hào)。
如果pDFA 24中的當(dāng)前節(jié)點(diǎn)是失敗節(jié)點(diǎn),則才莫式匹配才莫塊18 可使用fDFA26中的每一個(gè)來處理收到的符號(hào)。例如,才莫式匹配才莫 塊18首先可確定fDFA26中的哪個(gè)節(jié)點(diǎn)通過fDFA26A中的當(dāng)前節(jié) 點(diǎn)-故映射到收到的符號(hào)。該節(jié)點(diǎn)成為fDFA 26A中新的當(dāng)前節(jié)點(diǎn)。 接下來,模式匹配模塊18可確定fDFA 26B中的哪個(gè)節(jié)點(diǎn)可通過 fDFA 26B中的當(dāng)前節(jié)點(diǎn)被映射到收到的符號(hào)。該節(jié)點(diǎn)成為fDFA 26B中新的當(dāng)前節(jié)點(diǎn)。借助于此,模式匹配模塊18可使用每個(gè)fDFA 26執(zhí)行和處理所接收到的符號(hào)。使用每個(gè)fDFA 26處理了收到的符 號(hào)之后,模式匹配模塊18可接收和處理符號(hào)流中的下一符號(hào)。
模式匹配模塊18可繼續(xù)以此方式處理符號(hào)直到符號(hào)流的末尾, 或直到pDFA24中的當(dāng)前節(jié)點(diǎn)或一個(gè)fDFA26的當(dāng)前節(jié)點(diǎn)是正在接 受的節(jié)點(diǎn)。如果pDFA24中的當(dāng)前節(jié)點(diǎn)或一個(gè)fDFA26中的當(dāng)前節(jié) 點(diǎn)是正在接受的節(jié)點(diǎn),則符號(hào)流包括威脅標(biāo)記。當(dāng)符號(hào)流包括威脅 標(biāo)記時(shí),模式匹配模塊18可輸出搜索結(jié)果到應(yīng)用層模塊16。這些 搜索結(jié)果可包括指示4企測到哪個(gè)威脅標(biāo)記的才莫式標(biāo)識(shí)符。另外,這 些搜索結(jié)果還可包括指示符號(hào)流中的威脅標(biāo)記開始的位置的索引。 當(dāng)應(yīng)用層模塊16接收搜索結(jié)果時(shí),應(yīng)用層模塊16可使傳輸層模塊 14丟棄與該符號(hào)流有關(guān)的分組,將與該符號(hào)流有關(guān)的分組轉(zhuǎn)至另一 目的地,或執(zhí)行某些其他動(dòng)作。另外,如果模式匹配模塊18在符 號(hào)流中未檢測到威脅標(biāo)記,則應(yīng)用層模塊16可使傳輸層模塊14使 用網(wǎng)絡(luò)層才莫塊12和第二網(wǎng)絡(luò)接口 22將與該符號(hào)流有關(guān)的分組傳送 至經(jīng)過保護(hù)的網(wǎng)絡(luò)6。
這里所描述的技術(shù)可以^是供一個(gè)或多個(gè)有益之處。例如,4叚若 模式匹配才莫塊18不使用pDFA24(如這里所描述)而僅僅使用fDFA26確定符號(hào)流是否包括威脅標(biāo)記,則每個(gè)fDFA 26可能都將基本在 相對小的一組節(jié)點(diǎn)之間轉(zhuǎn)換。因?yàn)槊總€(gè)fDFA26可能都將基本在相 對小的一組節(jié)點(diǎn)之間轉(zhuǎn)換,所以這些節(jié)點(diǎn)將具有比fDFA26中的其 他節(jié)點(diǎn)高些的訪問級(jí)。然而,因?yàn)樵谑褂胒DFA之前,不清楚fDFA 26中哪些節(jié)點(diǎn)將具有最高訪問級(jí),所以fDFA26中具有最高訪問級(jí) 的節(jié)點(diǎn)將可能分散于很多存儲(chǔ)頁面上。因?yàn)檫@些節(jié)點(diǎn)可能將分散于 很多存儲(chǔ)頁面上,所以需要執(zhí)行多頁面交換,以使用這些具有最高 訪問級(jí)的節(jié)點(diǎn)。然而,因?yàn)閜DFA 24包括對應(yīng)于fDFA 26中具有最 高訪問級(jí)的節(jié)點(diǎn)的節(jié)點(diǎn),并因?yàn)樗羞@些節(jié)點(diǎn)都可以同時(shí)存儲(chǔ)于存 儲(chǔ)模塊20中,所以不必為了使用pDFA 24中的任何節(jié)點(diǎn)而執(zhí)行任 何或4艮多頁面交換。另外,因?yàn)閜DFA24中的節(jié)點(diǎn)對應(yīng)于fDFA26 中具有最高訪問級(jí)的節(jié)點(diǎn),所以,可能只偶爾需要使用fDFA26中 的任4可節(jié)點(diǎn)。
圖2是示出了一種典型的完全確定性有限自動(dòng)才幾(fDFA) 26A 和一種部分確定性有限自動(dòng)才幾(pDFA) 24的方^i圖。在圖2的實(shí) 例中,圓圏表示節(jié)點(diǎn),箭頭表示這些節(jié)點(diǎn)之間的轉(zhuǎn)換。垂直虛線連 4妄fDFA 26A與pDFA 24中相對應(yīng)的節(jié)點(diǎn)。當(dāng)pDFA 24中的節(jié)點(diǎn)是 fDFA 26A中的節(jié)點(diǎn)的副本時(shí),pDFA 24中的節(jié)點(diǎn)可對應(yīng)于fDFA 26A 中的節(jié)點(diǎn)。具有雙圓圏的節(jié)點(diǎn)表示正在^妄受的節(jié)點(diǎn)。
節(jié)點(diǎn)34p可以是pDFA24的開始狀態(tài)。節(jié)點(diǎn)34p映射符號(hào)"a" 到節(jié)點(diǎn)36p,并映射符號(hào)"b"到節(jié)點(diǎn)38p。節(jié)點(diǎn)36p映射符號(hào)"c" 的節(jié)點(diǎn)38p,并映射符號(hào)"d"到節(jié)點(diǎn)40p。如圖2的實(shí)例所示,節(jié) 點(diǎn)36p對應(yīng)于fDFA 26中的節(jié)點(diǎn)36f。
節(jié)點(diǎn)36f映射符號(hào)"h"到節(jié)點(diǎn)44f,節(jié)點(diǎn)44f映射符號(hào)"&" 到節(jié)點(diǎn)46f 。因?yàn)閜DFA 24不包括^于應(yīng)于節(jié)點(diǎn)44f的節(jié)點(diǎn),所以節(jié) 點(diǎn)36p映射符號(hào)"h"到失敗節(jié)點(diǎn)42。類似地,節(jié)點(diǎn)40p對應(yīng)于fDFA 26A中的節(jié)點(diǎn)40f。節(jié)點(diǎn)40f映射符號(hào)"@"到節(jié)點(diǎn)50f,并映射符號(hào)"p"到節(jié)點(diǎn)48f 。因?yàn)閜DFA 24不包括對應(yīng)于節(jié)點(diǎn)50f和48f的 節(jié)點(diǎn),所以節(jié)點(diǎn)40p映射符號(hào)"@"和"p"到失敗節(jié)點(diǎn)42。盡管 圖2的實(shí)例中沒有示出,但fDFA 26A中的每個(gè)節(jié)點(diǎn)都可映射其他 所有符號(hào)到節(jié)點(diǎn)34f, pDFA 24中的每個(gè)節(jié)點(diǎn)都可映射其他所有符 號(hào)到節(jié)點(diǎn)34p。
模式匹配模塊18可使用fDFA 26A和pDFA 24確定符號(hào)流是否 符合常^見表達(dá)式"b|ah&|ac|ad(@|p),,所定義的才莫式。例如,如果節(jié) 點(diǎn)34p是pDFA24的當(dāng)前節(jié)點(diǎn),則如果當(dāng)前符號(hào)是符號(hào)"b",那么 模式匹配才莫塊18可確定符號(hào)流符合該才莫式。在另一實(shí)例中,如果 節(jié)點(diǎn)40p是pDFA24的當(dāng)前節(jié)點(diǎn),并且當(dāng)前符號(hào)是符號(hào)"@ ",則 模式匹配模塊18可將fDFA 26A的當(dāng)前節(jié)點(diǎn)設(shè)置成節(jié)點(diǎn)40f,然后 從存儲(chǔ)模塊20獲取節(jié)點(diǎn)40f。接著,模式匹配模塊18可將pDFA 24 的當(dāng)前節(jié)點(diǎn)設(shè)置成失敗節(jié)點(diǎn)42。在將pDFA24的當(dāng)前節(jié)點(diǎn)"i殳置成失 敗節(jié)點(diǎn)42之后,模式匹配模塊可確定節(jié)點(diǎn)40f將符號(hào)"@ "映射到 了節(jié)點(diǎn)50f。因?yàn)楣?jié)點(diǎn)50f是正在接受的狀態(tài),所以模式匹配模塊 18可4妄受該才尋號(hào)串。
圖3是示出了一種示例性模式匹配模塊18的細(xì)節(jié)方框圖。在 圖3的實(shí)例中,模式匹配模塊18包括流緩存區(qū)60。流緩存區(qū)60接 收來自應(yīng)用層模塊16的符號(hào)流。當(dāng)流緩存區(qū)60接收這些符號(hào)時(shí), 流緩存區(qū)60可緩存該符號(hào)流直到DFA引擎62使用該符號(hào)流為止。
DFA引擎62處理來自流緩存區(qū)60的符號(hào)流,以確定該符號(hào)流 是否使pDFA24,或一個(gè)或多個(gè)fDFA26進(jìn)入正在接受狀態(tài)。當(dāng)DFA 引擎62確定符號(hào)流4吏pDFA 24,或一個(gè)或多個(gè)fDFA 26進(jìn)入4妄受狀 態(tài)時(shí),DFA引擎62可輸出指示符到結(jié)果緩存區(qū)72。該指示符可指 示該符號(hào)流包括威月辦標(biāo)記。應(yīng)用層才莫塊16可4妄收結(jié)果緩存區(qū)72中 的指示符,并基于這些指示符執(zhí)行各種動(dòng)作。DFA引擎62可從存儲(chǔ)才莫塊20中提取pDFA 24或fDFA 26的節(jié) 點(diǎn),以確定符號(hào)流是否使pDFA 24,或一個(gè)或多個(gè)DFA 26進(jìn)入接 受狀態(tài)。當(dāng)DFA引擎62從存儲(chǔ)模塊20提取節(jié)點(diǎn)時(shí),匹配才莫塊62 可發(fā)送請求,以讀取存儲(chǔ)位置到高速緩存器66。如果高速緩存器 66包含被請求的存儲(chǔ)位置,則高速緩存器66可響應(yīng)該項(xiàng)請求并提 供所請求的存儲(chǔ)位置到DFA引擎62。另夕卜,如果高速緩存器66不 包含所請求的存儲(chǔ)位置,則高速緩存器66可轉(zhuǎn)發(fā)該項(xiàng)請求到存儲(chǔ) 模塊20。當(dāng)存儲(chǔ)模塊20響應(yīng)該項(xiàng)請求時(shí),高速緩存器66可保存在 該存儲(chǔ)位置的數(shù)據(jù)的副本。這樣,高速緩存器66可保存DFA引擎 62最近使用過的數(shù)據(jù)。通常,DFA引擎62往往訪問pDFA 24和fDFA 26中4交少的節(jié)點(diǎn)。因此,高速鄉(xiāng)爰存器66可以響應(yīng)來自DFA引擎 62的大量的存儲(chǔ)器讀取請求。
在圖3的實(shí)例中,才莫式匹配才莫塊18包括pDFA當(dāng)前節(jié)點(diǎn)寄存 器64。 pDFA當(dāng)前節(jié)點(diǎn)寄存器64保存pDFA 24中當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn) 索引。另夕卜,模式匹配模塊18包括fDFA當(dāng)前節(jié)點(diǎn)寄存器70A直 到70N (總稱為"fDAF當(dāng)前節(jié)點(diǎn)寄存器70")。每個(gè)fDFA當(dāng)前節(jié) 點(diǎn)寄存器70都可保存各個(gè)fDFA 26中的當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)索引。
模式匹配模塊18還可包括節(jié)點(diǎn)表68。節(jié)點(diǎn)表68可包括關(guān)于 pDFA 24中每個(gè)節(jié)點(diǎn)的條目。節(jié)點(diǎn)表68中關(guān)于pDFA 24中的節(jié)點(diǎn) 的條目可規(guī)定每個(gè)fDFA 26中的對應(yīng)于pDFA 24中節(jié)點(diǎn)的節(jié)點(diǎn)。例 如,節(jié)點(diǎn)表68中的每一條目都可規(guī)定fDFA基址索引和關(guān)于每個(gè) fDFA 26的fDFA節(jié)點(diǎn)索引。fDFA基址索引可以是保存每個(gè)fDFA 26 的節(jié)點(diǎn)的存儲(chǔ)塊的第一存儲(chǔ)位置的存儲(chǔ)地址,而fDFA節(jié)點(diǎn)索引可 以指示關(guān)于fDFA基址索引的存儲(chǔ)位置。在此例中,DFA引擎62 可通過將fDFA基址索引相加fDFA節(jié)點(diǎn)索引,導(dǎo)出一個(gè)fDFA 26 中的節(jié)點(diǎn)的存4諸i也址。當(dāng)DFA引擎62接收來自流緩存區(qū)60的符號(hào)(即"當(dāng)前符號(hào)") 時(shí),DFA引擎62首先可確定pDFA當(dāng)前節(jié)點(diǎn)寄存器64的值是否等 于pDFA24的失敗節(jié)點(diǎn)的節(jié)點(diǎn)索引。如果pDFA當(dāng)前節(jié)點(diǎn)寄存器64 中的節(jié)點(diǎn)索引不等于pDFA 24的失敗節(jié)點(diǎn)的節(jié)點(diǎn)索引,則DFA引 擎62可使用pDFA當(dāng)前節(jié)點(diǎn)寄存器64中的節(jié)點(diǎn)索引,以請求pDFA 24在存儲(chǔ)模塊20中的該節(jié)點(diǎn)索引所指示的存儲(chǔ)位置處的節(jié)點(diǎn)。該 節(jié)點(diǎn)本文稱為pDFA24的當(dāng)前節(jié)點(diǎn)。當(dāng)DFA引擎62接收pDFA24 的當(dāng)前節(jié)點(diǎn)時(shí),DFA引擎62可將pDFA當(dāng)前節(jié)點(diǎn)寄存器62的值設(shè) 置成pDFA24的當(dāng)前節(jié)點(diǎn)可映射到當(dāng)前符號(hào)的節(jié)點(diǎn)索引。這樣,當(dāng) 前節(jié)點(diǎn)可映射到當(dāng)前符號(hào)的節(jié)點(diǎn)索引所指示的pDFA 24中的該節(jié)點(diǎn) 成為pDFA24新的當(dāng)前節(jié)點(diǎn)。DFA引擎62可更新pDFA 24新的當(dāng) 前節(jié)點(diǎn)的訪問級(jí)。例如,DFA引擎62可使表示pDFA24新的當(dāng)前 節(jié)點(diǎn)的訪問級(jí)的計(jì)凄t器遞增。
如果pDFA 24的前當(dāng)前節(jié)點(diǎn)映射當(dāng)前符號(hào)到pDFA 24的失敗節(jié) 點(diǎn),貝'J DFA引擎62可設(shè)置fDFA當(dāng)前節(jié)點(diǎn)寄存器70的值為節(jié)點(diǎn)表 68所規(guī)定的節(jié)點(diǎn)索引,以對應(yīng)于pDFA 24的前當(dāng)前節(jié)點(diǎn)。這樣,fDFA 26中的對應(yīng)于pDFA24的前當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)成為fDFA26中的新當(dāng) 前節(jié)點(diǎn)。在設(shè)置fDFA當(dāng)前節(jié)點(diǎn)寄存器70的值后,DFA引擎62可 更新每個(gè)fDFA26的每個(gè)新當(dāng)前節(jié)點(diǎn)的i方問級(jí)。
當(dāng)pDFA 24的新當(dāng)前節(jié)點(diǎn)是pDFA 24的失敗節(jié)點(diǎn)時(shí),DFA引 擎62可以4吏用fDFA 26來處理符號(hào)流的當(dāng)前符號(hào)和所有后繼符號(hào)。 為了使用fDFA 26來處理符號(hào),DFA引擎62可遍歷(loop through ) 每個(gè)fDFA 26,并執(zhí)行fDFA 26的各個(gè)當(dāng)前節(jié)點(diǎn)所規(guī)定的符號(hào)的任 何轉(zhuǎn)換。
才莫式匹配才莫塊18可以各種方式生成和更新pDFA 24。在一個(gè) 實(shí)例中,模式匹配模塊18僅包括單個(gè)fDFA。在此例中,DFA引擎 62可確定pDFA24的大小是否超過給定的規(guī)模閾。例如,當(dāng)將附加的節(jié)點(diǎn)添加至pDFA 24會(huì)導(dǎo)致pDFA 24占據(jù)多于一個(gè)存4諸頁時(shí), pDFA 24就會(huì)超過規(guī)模閾。當(dāng)IDP裝置4重啟時(shí),pDFA 24可以僅 包含開始節(jié)點(diǎn)和失敗節(jié)點(diǎn)。如果pDFA 24的大小沒有超過規(guī)j莫閾時(shí), DFA引擎62可指令模式匹配模塊18中的pDFA更新模塊74更新 pDFA 24。 pDFA更新模塊74可從存儲(chǔ)模塊20中^是取對應(yīng)于pDFA 24的當(dāng)前節(jié)點(diǎn)的當(dāng)前fDFA節(jié)點(diǎn),以更新pDFA24。然后,pDFA 更新才莫塊74可以生成pDFA24中的新節(jié)點(diǎn)。對于當(dāng)前fDFA節(jié)點(diǎn)中 頭見定的到fDFA中的具有pDFA24中對應(yīng)節(jié)點(diǎn)的另 一節(jié)點(diǎn)的每次轉(zhuǎn) 換,所生成的pDFA節(jié)點(diǎn)都規(guī)定到pDFA24中對應(yīng)節(jié)點(diǎn)的轉(zhuǎn)換。另 外,對于一個(gè)fDFA節(jié)點(diǎn)中失見定的到fDFA中不具有pDFA 24中對 應(yīng)節(jié)點(diǎn)的其他節(jié)點(diǎn)的每次轉(zhuǎn)換,pDFA節(jié)點(diǎn)也都規(guī)定到部分DFA中 失敗節(jié)點(diǎn)的轉(zhuǎn)換。pDFA更新模塊74還可標(biāo)識(shí)pDFA24中^見定符號(hào) 向失敗節(jié)點(diǎn)的轉(zhuǎn)換的節(jié)點(diǎn)。pDFA24中的每個(gè)識(shí)別出的節(jié)點(diǎn)在fDFA 中具有對應(yīng)節(jié)點(diǎn),該對應(yīng)節(jié)點(diǎn)失見定了該符號(hào)向fDFA中的對應(yīng)于所 生成的pDFA節(jié)點(diǎn)的節(jié)點(diǎn)的轉(zhuǎn)換。在標(biāo)識(shí)這些節(jié)點(diǎn)pDFA 24之后, pDFA更新模塊74于是可更新pDFA24中每個(gè)識(shí)別出的節(jié)點(diǎn),使得 每個(gè)識(shí)別出的節(jié)點(diǎn)都A見定該符號(hào)向已生成pDFA節(jié)點(diǎn)的轉(zhuǎn):換,而不 是該符號(hào)向失敗節(jié)點(diǎn)的轉(zhuǎn)換。
繼續(xù)該實(shí)例,模式匹配模塊18包括單個(gè)fDFA,如果將另一節(jié) 點(diǎn)添加至pDFA 24將導(dǎo)致pDFA 24超過^L才莫閾,則pDFA更新模塊 74可確定fDFA的當(dāng)前節(jié)點(diǎn)的訪問級(jí)是否大于pDFA 24中的節(jié)點(diǎn)的 訪問級(jí)。如果fDFA的當(dāng)前節(jié)點(diǎn)的訪問級(jí)不大于pDFA 24中的節(jié)點(diǎn) 的訪問級(jí),貝"pDFA更新才莫塊74不更新pDFA 24。如果fDFA的當(dāng) 前節(jié)點(diǎn)的訪問級(jí)大于pDFA24中的節(jié)點(diǎn)的訪問級(jí),貝'J pDFA更新才莫 塊74可以乂人pDFA 24中刪除該節(jié)點(diǎn),并更新pDFA 24中的這些節(jié) 點(diǎn),其包括從符號(hào)到被刪除節(jié)點(diǎn)的映射過程。然后,pDFA更新模 塊74可將當(dāng)前節(jié)點(diǎn)的副本添加至pDFA 24,并更新pDFA 24中的 該節(jié)點(diǎn)和其他節(jié)點(diǎn)。在另一實(shí)例中,當(dāng)模式匹配模塊18包括多個(gè)fDFA26時(shí),pDFA 更新模塊74可對更新pDFA24執(zhí)行不同的操作。在此例中,pDFA 更新模塊74可定期地更新pDFA 24。當(dāng)pDFA更新模塊74執(zhí)行這 種定期更新時(shí),pDFA更新模塊74可生成關(guān)于每個(gè)fDFA26的臨時(shí) pDFA。這些臨時(shí)pDFA中的每一個(gè)都可包4舌對應(yīng)于各個(gè)fDFA的具 有超過訪問閾的訪問級(jí)的那些節(jié)點(diǎn)的節(jié)點(diǎn)。在生成臨時(shí)pDFA的過 程中,pDFA更新模塊74可更新節(jié)點(diǎn)表68 '中的多個(gè)條目中的pDFA 索引,以指示fDFA26中只于應(yīng)于臨時(shí)pDFA中的節(jié)點(diǎn)的節(jié)點(diǎn)。在生 成每個(gè)fDFA 26的臨時(shí)pDFA之后,pDFA更新才莫塊74可將多個(gè)臨 時(shí)pDFA合并成單個(gè)pDFA。 一旦pDFA更新模塊74完成將多個(gè) pDFA合并成單個(gè)pDFA之后,DFA引擎62可如上面關(guān)于pDFA24 的敘述那樣使用該單個(gè)pDFA。
為了將多個(gè)臨時(shí)pDFA合并成單個(gè)pDFA, pDFA更新模塊74 可標(biāo)識(shí)每個(gè)臨時(shí)pDFA的開始節(jié)點(diǎn)。接下來,pDFA更新模塊74可 "合并"這些節(jié)點(diǎn)。為了合并,pDFA更新模塊74可生成新"合并 的"節(jié)點(diǎn)。節(jié)點(diǎn)表68中關(guān)于該合并節(jié)點(diǎn)的條目可失見定fDFA26中 對應(yīng)于凈皮合并成"合并,,節(jié)點(diǎn)的任何節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)。另夕卜,該新 合并的節(jié)點(diǎn)可規(guī)定訪問級(jí)等于已被合并成該新節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)的 纟且合的^方問級(jí)。
該合并節(jié)點(diǎn)規(guī)定已被合并成該合并節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)中所規(guī)定 的每個(gè)轉(zhuǎn)換。例如,第一臨時(shí)pDFA中的第一節(jié)點(diǎn)可規(guī)定符號(hào)"a" 向第一臨時(shí)pDFA中的第二節(jié)點(diǎn)的轉(zhuǎn)換,并可規(guī)定關(guān)于符號(hào)"b"向 第一臨時(shí)pDFA中的第三節(jié)點(diǎn)的轉(zhuǎn)換。另外,第二臨時(shí)pDFA中的 第一節(jié)點(diǎn)可規(guī)定符號(hào)"b"向第二臨時(shí)pDFA中的第二節(jié)點(diǎn)的轉(zhuǎn)換, 并頭見定符號(hào)"c" 向第二臨時(shí)pDFA中的第三節(jié)點(diǎn)的轉(zhuǎn)」換。在此例 中,當(dāng)?shù)谝慌R時(shí)pDFA中的第一節(jié)點(diǎn)和第二臨時(shí)pDFA中的第二節(jié) 點(diǎn)被合并時(shí),該合并節(jié)點(diǎn)規(guī)定符號(hào)"a" 向第一臨時(shí)pDFA中的第二節(jié)點(diǎn)的轉(zhuǎn)換,符號(hào)"b" 向第一臨時(shí)pDFA中的第三節(jié)點(diǎn)的轉(zhuǎn) 換,符號(hào)"b,, 向第二臨時(shí)pDFA中的第二節(jié)點(diǎn)的轉(zhuǎn)換,以及符號(hào) "c" 向第二臨時(shí)pDFA中的第三節(jié)點(diǎn)的轉(zhuǎn)換。
在pDFA更新模塊74生成合并節(jié)點(diǎn)之后,pDFA更新模塊74 可從存儲(chǔ)模塊20中刪除已合并成該合并節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)。pDFA更 新模塊74還可刪除節(jié)點(diǎn)表68中關(guān)于已被合并成合并節(jié)點(diǎn)的每個(gè)節(jié) 點(diǎn)的條目。
pDFA更新模塊74可標(biāo)識(shí)單個(gè)符號(hào)在合并節(jié)點(diǎn)中向在不同臨時(shí) pDFA中的不同節(jié)點(diǎn)成組轉(zhuǎn)換。在前面的實(shí)例中,pDFA更新才莫i夾 74可標(biāo)識(shí)以下轉(zhuǎn)換作為單個(gè)符號(hào)向不同節(jié)點(diǎn)的轉(zhuǎn)換符號(hào)"b" 向 第一臨時(shí)pDFA的第三節(jié)點(diǎn)的轉(zhuǎn)換,和符號(hào)"b"向第二臨時(shí)pDFA 的第二節(jié)點(diǎn)的轉(zhuǎn)換。關(guān)于合并節(jié)點(diǎn)中的單個(gè)符號(hào)向在不同節(jié)點(diǎn)的已
識(shí)別轉(zhuǎn)換組中的每次轉(zhuǎn)換,pDFA更新模塊74都合并這些不同的節(jié) 點(diǎn)。pDFA更新模塊74可以下面要描述的方式合并這些不同的節(jié)點(diǎn)。 當(dāng)pDFA更新模塊74完成合并這些不同節(jié)點(diǎn)時(shí),pDFA更新模塊74 在合并節(jié)點(diǎn)中刪除關(guān)于單個(gè)符號(hào)向不同節(jié)點(diǎn)的轉(zhuǎn)換。pDFA更新才莫 塊74可以用該符號(hào)向來自于這些不同節(jié)點(diǎn)的合并的節(jié)點(diǎn)的轉(zhuǎn):換來 替換合并節(jié)點(diǎn)中的這些轉(zhuǎn)換。繼續(xù)前一實(shí)例,當(dāng)pDFA更新模塊74 完成了生成合并節(jié)點(diǎn)時(shí),該合并節(jié)點(diǎn)可規(guī)定符號(hào)"a" 向第一臨 時(shí)pDFA中的第二節(jié)點(diǎn)的轉(zhuǎn)換,符號(hào)"b" 向新節(jié)點(diǎn)的轉(zhuǎn)換;以及 符號(hào)"c" 向第二臨時(shí)pDFA中的第三節(jié)點(diǎn)的轉(zhuǎn)換。該操作結(jié)束之 前,該合并節(jié)點(diǎn)不包括單個(gè)符號(hào)向不同節(jié)點(diǎn)的任何轉(zhuǎn)換。
圖4是示出了模式匹配模塊18的典型操作的流程圖。初始, DFA引擎62接收來自符號(hào)緩存區(qū)60的符號(hào)(80 )。在接收符號(hào)之 后,DFA引擎62確定pDFA24的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn)(82)。 DFA引擎62可通過獲取存儲(chǔ)于pDFA當(dāng)前節(jié)點(diǎn)寄存器64中的值并 確定該值是否等于已知的索引,來確定pDFA24的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn),以表示失敗節(jié)點(diǎn)。如果DFA引擎62確定pDFA24的當(dāng) 前節(jié)點(diǎn)是失敗節(jié)點(diǎn)(82的"是"),貝'J DFA引擎62可使用fDFA 26 處理收到的符號(hào)(83)。例如,DFA引擎62可執(zhí)行圖5中所示的典 型操作,以使用fDFA26處理收到的符號(hào)。
如果DFA引擎62確定pDFA24的當(dāng)前節(jié)點(diǎn)不是失敗節(jié)點(diǎn)(82 的"否"),則DFA引擎62可使用存儲(chǔ)于pDFA當(dāng)前節(jié)點(diǎn)寄存器64 中的節(jié)點(diǎn)索引來獲取pDFA 24的當(dāng)前節(jié)點(diǎn)(84 )。為了獲取pDFA 24 的當(dāng)前節(jié)點(diǎn),DFA引擎62可生成讀取請求,該讀取請求可由高速 緩存器66或存4諸才莫塊20應(yīng)答。在獲取pDFA24的當(dāng)前節(jié)點(diǎn)之后, DFA引擎62可確定pDFA 24的當(dāng)前節(jié)點(diǎn)是否為正在4妄受的節(jié)點(diǎn) (86)。如果pDFA24的當(dāng)前節(jié)點(diǎn)是正在接受的節(jié)點(diǎn)(86的"是"), 則DFA引擎62可輸出搜索結(jié)果到結(jié)果緩存區(qū)72 ( 88 )。例如,DFA 引擎62可輸出一個(gè)數(shù)字到結(jié)果緩存區(qū)72,其指示認(rèn)出了哪個(gè)威脅 標(biāo)記。另一方面,如果pDFA24的當(dāng)前節(jié)點(diǎn)不是正在接受的節(jié)點(diǎn)(86 的"否"),則DFA引擎62可確定當(dāng)前符號(hào)是否導(dǎo)致到失敗節(jié)點(diǎn)的 轉(zhuǎn)換(90 )。
如果當(dāng)前符號(hào)沒有導(dǎo)致到失敗節(jié)點(diǎn)的轉(zhuǎn)換(90的"否"),則 DFA引擎62可執(zhí)行當(dāng)前節(jié)點(diǎn)所指示的符號(hào)轉(zhuǎn)換(92)。換句話說, DFA引擎62可將pDFA當(dāng)前節(jié)點(diǎn)寄存器64中的值設(shè)置成pDFA 24 的當(dāng)前節(jié)點(diǎn)映射到當(dāng)前符號(hào)的節(jié)點(diǎn)索引。這樣,pDFA24的當(dāng)前節(jié) 點(diǎn)映射到當(dāng)前符號(hào)的節(jié)點(diǎn)索引所指示的節(jié)點(diǎn)變成pDFA 24的新"當(dāng) 前節(jié)點(diǎn)"。在執(zhí)行符號(hào)轉(zhuǎn)換之后,DFA引擎62可遞增pDFA24的新 當(dāng)前節(jié)點(diǎn)的訪問級(jí)(94)。通過遞增訪問級(jí),使DFA引擎保持跟蹤 pDFA 24轉(zhuǎn)換到節(jié)點(diǎn)有多少次。 一旦DFA引擎62完成遞增pDFA 24 的當(dāng)前節(jié)點(diǎn)的訪問級(jí),DFA引擎62就可回送和4妄收新符號(hào)(80 )。
如果當(dāng)前符號(hào)導(dǎo)致到失敗節(jié)點(diǎn)的轉(zhuǎn)換(90的"是"),則DFA 引擎62可更新fDFA當(dāng)前節(jié)點(diǎn)寄存器70 (96)。例如,DFA引擎62可將fDFA當(dāng)前節(jié)點(diǎn)寄存器70的值設(shè)置成節(jié)點(diǎn)表68中關(guān)于pDFA 24的當(dāng)前節(jié)點(diǎn)的條目中所》見定的對應(yīng)節(jié)點(diǎn)索引。如果節(jié)點(diǎn)表68不 頭見定關(guān)于一個(gè)fDFA 26的節(jié)點(diǎn)索引,貝'J DFA引擎62可將關(guān)于這個(gè) fDFA26的一個(gè)fDFA當(dāng)前節(jié)點(diǎn)寄存器70i殳置成這一個(gè)fDFA26的 基址值。在更新fDFA當(dāng)前節(jié)點(diǎn)寄存器70之后,DFA引擎62可將 pDFA當(dāng)前節(jié)點(diǎn)寄存器64的值i殳置成pDFA 24的失敗節(jié)點(diǎn)的索引 (98 )。在將pDFA當(dāng)前節(jié)點(diǎn)寄存器64的值設(shè)置成pDFA 24的失敗 節(jié)點(diǎn)的索引之后,DFA引擎62可使用fDFA 26來處理當(dāng)前符號(hào)。 為了使用fDFA 26來處理當(dāng)前符號(hào),DFA引擎62可使用圖5中所 示的實(shí)例操作。在使用fDFA26處理了當(dāng)前符號(hào)之后,DFA引擎62 可回送和^t妄收另一符號(hào)(80)。
圖5是示出了^f吏用一組一個(gè)或多個(gè)fDFA來處理收到的符號(hào)的 典型梯:作的流程圖。初始,DFA引擎62從存儲(chǔ)才莫塊20或高速緩存 器66獲取fDFA當(dāng)前節(jié)點(diǎn)寄存器70所指示的每個(gè)節(jié)點(diǎn)(100)。在 獲取這些節(jié)點(diǎn)之后,DFA引擎62可將這些節(jié)點(diǎn)中的每一個(gè)都加入 隊(duì)列(未示出)(102)。
DFA引擎62然后可確定該隊(duì)列是否為空(104)。如果隊(duì)列為 空(104的"是"),則DFA引擎62可接收新符號(hào),并可執(zhí)行圖4 中示出的實(shí)例操作(80)。另一方面,如果隊(duì)列非空(104的"否"), 則DFA引擎62可從隊(duì)列中刪除一個(gè)fDFA26的節(jié)點(diǎn)(106)。這里 可將這個(gè)fDFA26稱之為"當(dāng)前fDFA",并可將該節(jié)點(diǎn)稱之為"當(dāng) 前fDFA的當(dāng)前節(jié)點(diǎn)"。在/人隊(duì)列中刪除當(dāng)前fDFA的當(dāng)前節(jié)點(diǎn)之后, DFA引擎62可執(zhí)行所接收到的符號(hào)向由當(dāng)前節(jié)點(diǎn)規(guī)定的當(dāng)前fDFA 中的第二節(jié)點(diǎn)的轉(zhuǎn)換(108)。當(dāng)DFA引擎執(zhí)行該轉(zhuǎn)換時(shí),DFA引 擎62可更新與當(dāng)前fDFA相關(guān)的一個(gè)fDFA當(dāng)前節(jié)點(diǎn)寄存器70,以 指示當(dāng)前fDFA新的當(dāng)前節(jié)點(diǎn)是當(dāng)前fDFA中的第二節(jié)點(diǎn)。在DFA引擎62執(zhí)行符號(hào)轉(zhuǎn)換之后,DFA引擎62可遞增關(guān)于 當(dāng)前fDFA的新當(dāng)前節(jié)點(diǎn)的訪問級(jí)(llO)。然后,DFA引擎62可更 新pDFA 24 ( 112 )。例如,DFA引擎62可使用圖6中所示的典型 操作更新pDFA24。當(dāng)DFA引擎62完成更新pDFA24時(shí),DFA引 擎62可確定當(dāng)前fDFA的當(dāng)前節(jié)點(diǎn)是否為正在4妄受的節(jié)點(diǎn)(114)。 如果當(dāng)前fDFA的當(dāng)前節(jié)點(diǎn)是正在接受的節(jié)點(diǎn)(114的"是"),則 DFA引擎62可輸出搜索結(jié)果到結(jié)果緩存區(qū)72 (116)。另一方面, 如果當(dāng)前fDFA的當(dāng)前節(jié)點(diǎn)不是正在接受的節(jié)點(diǎn)(114的"否"), 則DFA引擎62可回送,并再次確定該隊(duì)列是否為空(80)。
圖6是示出了一種典型操作的流程圖,其中,DFA引擎62可 執(zhí)行以便當(dāng)存儲(chǔ)模塊20包括單個(gè)fDFA時(shí)就更新pDFA24。初始, pDFA更新模塊74可確定pDFA 24是否超過規(guī)才莫閾(120 )。例如, 當(dāng)pDFA24包4舌一百個(gè)節(jié)點(diǎn)時(shí),pDFA更新模塊74可確定pDFA24 超過了規(guī)模閾。如果pDFA24超過了規(guī)模閾(120的"是"),則pDFA 更新才莫塊74可確定該fDFA的當(dāng)前節(jié)點(diǎn)的訪問級(jí)是否大于pDFA 24 中的節(jié)點(diǎn)的最低訪問級(jí)(122)。如果fDFA的當(dāng)前節(jié)點(diǎn)的訪問級(jí)不 大于pDFA 24中節(jié)點(diǎn)的最低訪問級(jí)(122的"否,,),貝'J DFA引擎 62不更新pDFA 24( 124 )。如果fDFA的當(dāng)前節(jié)點(diǎn)的訪問級(jí)大于pDFA 24中的節(jié)點(diǎn)的最低訪問級(jí)(122的"是"),則DFA引擎62可從pDFA 24中刪除該節(jié)點(diǎn)。在從pDFA 24中刪除該節(jié)點(diǎn)之后,DFA引擎62 可掃描pDFA24中的節(jié)點(diǎn),并用到pDFA24的失敗節(jié)點(diǎn)的轉(zhuǎn)換來^齊 換任何到已刪除節(jié)點(diǎn)的轉(zhuǎn)換(128 )。
如果pDFA 24不超過節(jié)點(diǎn)閾(120的"否,,),貝'J pDFA更新模 塊74可在pDFA 24的存4諸空間中制作fDFA的當(dāng)前節(jié)點(diǎn)的副本 (130 )。 pDFA更新才莫塊74還可在刪除pDFA24中的具有最^[氐訪問 級(jí)的節(jié)點(diǎn)之后,在pDFA 24的存儲(chǔ)空間中制作fDFA的當(dāng)前節(jié)點(diǎn)的 副本。pDFA更新模塊74可在緊隨pDFA 24中的DFA引擎62在轉(zhuǎn)換到當(dāng)前節(jié)點(diǎn)之前所已訪問的節(jié)點(diǎn)的存l諸位置制作該副本。這樣,
pDFA更新模塊74可增強(qiáng)將存儲(chǔ)于高速緩存器66中的pDFA 24的 當(dāng)前節(jié)點(diǎn)的副本的相似性。當(dāng)在pDFA 24的存儲(chǔ)空間中制作fDFA 的當(dāng)前節(jié)點(diǎn)的副本后,pDFA更新模塊74可更新fDFA中的節(jié)點(diǎn), 以引用pDFA24中的該節(jié)點(diǎn)(132)。為了更新pDFA24中的節(jié)點(diǎn), pDFA更新模塊74可掃描pDFA24中的節(jié)點(diǎn),并標(biāo)識(shí)那些規(guī)定了向 當(dāng)前節(jié)點(diǎn)的轉(zhuǎn)換的節(jié)點(diǎn)。pDFA更新模塊74然后可改變已識(shí)別的節(jié) 點(diǎn)中所^見定的轉(zhuǎn)4奐,,人到失敗狀態(tài)的轉(zhuǎn)4奐改變成到pDFA24中的當(dāng) 前狀態(tài)的副本的轉(zhuǎn)換。
更新pDFA24會(huì)要求多個(gè)并非無關(guān)緊要的時(shí)鐘周期。因此,當(dāng) pDFA 24超過規(guī)模閾時(shí),匹配模塊62僅可指令pDFA更新模塊74 定期地更新pDFA24。例如,在pDFA24超過規(guī)^莫閾之后,匹配才莫 塊62可指令pDFA更新模塊74每5分鐘^f叉4又更新一次pDFA 24。
圖7A和圖7B是示出pDFA更新模塊74使用多個(gè)fDFA生成 pDFA的一種典型操作的流程圖。在圖7A的實(shí)例中,當(dāng)pDFA更新 模塊74接收DFA引擎62的請求而通過使用fDFA 26來執(zhí)行pDFA 24的更新時(shí),pDFA更新才莫塊74可更新fDFA 26中的對應(yīng)于當(dāng)前 pDFA中的節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)的訪問級(jí)(140)。例如,pDFA更新才莫塊 74可將表示當(dāng)前pDFA中的節(jié)點(diǎn)的訪問級(jí)的計(jì)凄史器拷貝成表示 fDFA 26中的對應(yīng)于當(dāng)前pDFA中的節(jié)點(diǎn)的各個(gè)節(jié)點(diǎn)的訪問級(jí)的計(jì) 數(shù)器。在第二實(shí)例中,pDFA更新模塊74對于當(dāng)前pDFA的每個(gè)節(jié) 點(diǎn),都可4吏用一個(gè)fDFA26中的對應(yīng)節(jié)點(diǎn)的計(jì)凄t器來計(jì)算表示當(dāng)前 pDFA中的節(jié)點(diǎn)的訪問級(jí)的計(jì)凄t器的平均4直。在該第二實(shí)例中, pDFA更新模塊74然后可將所算出的平均值保存為一個(gè)fDFA26中 的對應(yīng)節(jié)點(diǎn)的訪問級(jí)。這樣,fDFA 26的節(jié)點(diǎn)訪問級(jí)表示這些節(jié)點(diǎn) 或pDFA中的^j"應(yīng)節(jié)點(diǎn)已成為fDFA的或pDFA的當(dāng)前節(jié)點(diǎn)的次凄史 的移動(dòng)平均。在更新訪問級(jí)之后,pDFA更新才莫塊74可對每個(gè)fDFA 26生成 新的臨時(shí)pDFA ( 142 )。每個(gè)臨時(shí)pDFA都可包括對應(yīng)于各個(gè)fDFA 中的具有超過鄉(xiāng)合定i方問閾的訪問級(jí)的節(jié)點(diǎn)的節(jié)點(diǎn)。在生成臨時(shí) pDFA的過程中,pDFA更新模塊74可更新節(jié)點(diǎn)表68中的條目,以 反映臨時(shí)pDFA中的節(jié)點(diǎn)的存在性;
在對每個(gè)fDFA 26生成臨時(shí)pDFA之后,pDFA更新模塊74可 在臨時(shí)pDFA中標(biāo)識(shí)是開始節(jié)點(diǎn)的一組節(jié)點(diǎn)(144)。接下來,pDFA 更新才莫塊74可在這組所標(biāo)識(shí)的節(jié)點(diǎn)上調(diào)用合并才喿作,以生成新 pDFA ( 146 )??蓪⒈硎拘聀DFA中的每個(gè)節(jié)點(diǎn)的訪問級(jí)的計(jì)數(shù)器都 設(shè)置成零。這樣,pDFA中的節(jié)點(diǎn)的計(jì)數(shù)器可以只指示pDFA中的 節(jié)點(diǎn)自從上次pDFA更新模塊74生成了 pDFA以來成為pDFA的當(dāng) 前節(jié)點(diǎn)的次凄丈。
圖7B示出了 pDFA更新才莫塊74在一《且識(shí)別的臨時(shí)pDFA節(jié)點(diǎn) 上沖丸行合并,喿作的典型纟乘作。初始,pDFA更新一莫塊74可生成新節(jié) 點(diǎn)(150)。在生成該新節(jié)點(diǎn)之后,pDFA更新模塊74可將已識(shí)別節(jié) 點(diǎn)中規(guī)定的每次轉(zhuǎn)換添加至新節(jié)點(diǎn)(152)。另外,pDFA更新模塊 74還可在節(jié)點(diǎn)表中生成關(guān)于該新節(jié)點(diǎn)的條目(154)。節(jié)點(diǎn)表68中 關(guān)于新節(jié)點(diǎn)的條目可包括fDFA26中的對應(yīng)于一個(gè)或多個(gè)已識(shí)別節(jié) 點(diǎn)的節(jié)點(diǎn)的每一個(gè)的節(jié)點(diǎn)索引(154)。接下來,pDFA更新模塊74 可從節(jié)點(diǎn)表68中刪除已識(shí)別節(jié)點(diǎn)的節(jié)點(diǎn)表?xiàng)l目(155)。在pDFA 更新模塊74從節(jié)點(diǎn)表68中刪除這些條目之后,pDFA更新模塊74 可將新節(jié)點(diǎn)的訪問級(jí)設(shè)置成每個(gè)已識(shí)別節(jié)點(diǎn)的合計(jì)訪問級(jí)(156)。
例如,如果已識(shí)別節(jié)點(diǎn)的訪問級(jí)是訪問計(jì)數(shù),則pDFA更新模塊74 可將新節(jié)點(diǎn)的訪問級(jí)設(shè)置成已識(shí)別節(jié)點(diǎn)的訪問計(jì)數(shù)的總和。接下 來,pDFA更新模塊74可取消分配存儲(chǔ)模塊20中保存每個(gè)已識(shí)別 節(jié)點(diǎn)的存儲(chǔ)位置(158)。取消分配已識(shí)別節(jié)點(diǎn)的存儲(chǔ)位置會(huì)使得這 些存儲(chǔ)位置可以被重新使用。在取消分配那些保存已識(shí)別節(jié)點(diǎn)的存儲(chǔ)位置之后,pDFA更新 才莫塊74可確定新節(jié)點(diǎn)是否包括到單個(gè)符號(hào)向兩個(gè)或更多pDFA節(jié) 點(diǎn)構(gòu)成的一組的轉(zhuǎn)4灸(160)。如果新節(jié)點(diǎn)包4舌單個(gè)符號(hào)向兩個(gè)或更 多pDFA節(jié)點(diǎn)構(gòu)成的組的轉(zhuǎn)換(160的"是"),貝'J pDFA更新模塊 74可合并這組節(jié)點(diǎn)(162)。 pDFA更新模塊74可通過遞歸地使用 圖7B中所示的典型操作來合并這組pDFA節(jié)點(diǎn)。在pDFA更新模 塊74合并這組pDFA節(jié)點(diǎn)之后,p'DFA更新模塊74可刪除單個(gè)符 號(hào)從新節(jié)點(diǎn)該組pDFA節(jié)點(diǎn)中的pDFA節(jié)點(diǎn)的轉(zhuǎn)換。接下來,pDFA 更新才莫塊74可更新該新節(jié)點(diǎn),以夂見定該符號(hào)的乂人新節(jié)點(diǎn)向合并這 組pDFA節(jié)點(diǎn)所得到的節(jié)點(diǎn)的轉(zhuǎn)換(166)。當(dāng)pDFA更新模塊74 將該轉(zhuǎn)換添加至新節(jié)點(diǎn)時(shí),pDFA更新一莫塊74可回送,并再次;險(xiǎn)測 新節(jié)點(diǎn)是否包括到由兩個(gè)或更多pDFA節(jié)點(diǎn)構(gòu)成的組的轉(zhuǎn)換(160)。
如果新節(jié)點(diǎn)不包括單個(gè)符號(hào)向由兩個(gè)或更多個(gè)pDFA節(jié)點(diǎn)構(gòu)成 的組的轉(zhuǎn)換(160的"否,,),則pDFA更新模塊74可返回新節(jié)點(diǎn)的 pDFA索引(168)。
圖8是示出了 一種有限自動(dòng)機(jī)中的節(jié)點(diǎn)170的典型模式的方框 圖。節(jié)點(diǎn)170可用于pDFA24和fDFA26中。
在圖8所示的典型才莫式中,節(jié)點(diǎn)170包括訪問級(jí)域171,固 定長度位圖部分172、和節(jié)點(diǎn)索引的可變長度列表174。訪問級(jí)域 171可保存表示節(jié)點(diǎn)170的訪問級(jí)的數(shù)值。位圖部分172是40字節(jié) (320位)長。節(jié)點(diǎn)索引列表174的長度是可變的,但不可以超過 512字節(jié)(4096位)長。
節(jié)點(diǎn)索引列表174可包括多達(dá)256個(gè)節(jié)點(diǎn)索引。在圖8的實(shí)例 中,這些節(jié)點(diǎn)索引標(biāo)號(hào)為180A到180N,統(tǒng)稱為"節(jié)點(diǎn)索引180"。 節(jié)點(diǎn)索引180中的每一個(gè)都可以是16位值,DFA引擎62可乂人其4偉 導(dǎo)pDFA 24或fDFA 26中的節(jié)點(diǎn)的存儲(chǔ)地址。例如,DFA引擎62可將存儲(chǔ)于一個(gè)節(jié)點(diǎn)索引180中的值相加到第一節(jié)點(diǎn)的存儲(chǔ)地址, 以獲取節(jié)點(diǎn)的存儲(chǔ)地址。
位圖部分172可包括一組8個(gè)位圖部176A到176H(統(tǒng)稱為"位
圖部176")。位圖部176總共包括256位。'這256位中的每一位都 可與不同的符號(hào)或不同的元符號(hào)類相關(guān)。例如,位圖部176中的第 65位可關(guān)聯(lián)到符號(hào)"A",位圖部176中的第66位可關(guān)聯(lián)到符號(hào)"B",
等等。在另一實(shí)例中,位圖部176中的第126位可以與被限定為拉 丁字母表中的大寫符號(hào)的元符號(hào)類相關(guān)。
除了位圖部176之外,位圖部分172還可包括一組8個(gè)計(jì)數(shù)器 字節(jié)178A到178H (統(tǒng)稱為"計(jì)數(shù)器字節(jié)178")。每個(gè)計(jì)數(shù)器字節(jié) 178都可緊跟著位圖部分172中另一個(gè)位圖部176。例如,計(jì)數(shù)器 字節(jié)178A可緊5艮位圖部176A,計(jì)凄t器字節(jié)178B可緊S艮位圖部 176B,等等。每個(gè)計(jì)^:器字節(jié)178都可包含指示位圖部176中到計(jì) 數(shù)器字節(jié)的左邊的位數(shù)被設(shè)置成"1"的值。例如,假定位圖部176A 中的三位被設(shè)置成"l"。在此例中,計(jì)數(shù)器字節(jié)178A可包含值"3"。 繼續(xù)該實(shí)例,假定位圖部176B中的五位被設(shè)置成"1"。這里,計(jì) 數(shù)器字節(jié)178B可包含值"8",因?yàn)槲粓D部176A中的三位祐 沒置成 T,位圖部176B中的五位被設(shè)置成T。
當(dāng)DFA接收關(guān)于該位的符號(hào)時(shí),位圖部176中的一位被設(shè)置 成"0"指示當(dāng)DFA接收關(guān)于該位的符號(hào)時(shí)從節(jié)點(diǎn)170到開始節(jié)點(diǎn) 的轉(zhuǎn)換。例如,第65位可與符號(hào)"A"相關(guān),并可i殳置成"0"。在 此例中,當(dāng)節(jié)點(diǎn)170是DFA的當(dāng)前節(jié)點(diǎn),并且DFA接收符號(hào)"A" 時(shí),開始節(jié)點(diǎn)變成DFA的當(dāng)前節(jié)點(diǎn)。
另一方面,位圖部176中設(shè)置成"1"的位表示了當(dāng)DFA接收 與該位相關(guān)的符號(hào)時(shí),包括節(jié)點(diǎn)170的DFA可轉(zhuǎn)換到DFA中的非 開始節(jié)點(diǎn)的節(jié)點(diǎn)。例如,第65位可關(guān)聯(lián)到符號(hào)"A"并可"i殳置成"l"。在此例中,當(dāng)節(jié)點(diǎn)170是DFA的當(dāng)前節(jié)點(diǎn),并且DFA接收符號(hào)"A" 時(shí),非開始節(jié)點(diǎn)的節(jié)點(diǎn)成為DFA的當(dāng)前節(jié)點(diǎn)。
DFA引擎62可使用計(jì)數(shù)器字節(jié)178中的值,以確定哪個(gè)節(jié)點(diǎn) 變成當(dāng)前節(jié)點(diǎn)。為了4吏用計(jì)4故器字節(jié)178中的值,DFA引擎62可 獲得緊跟一個(gè)位圖部176的左邊的一個(gè)計(jì)數(shù)器字節(jié)178的節(jié)點(diǎn)值, 其包含與當(dāng)前符號(hào)有關(guān)的位。例如,如果第76位與符號(hào)"K"相關(guān), 則該位是在位圖部176C中。在此例中,計(jì)凄t器字節(jié)178B是緊3艮位 圖部176C的左邊的計(jì)數(shù)器字節(jié)。在從一個(gè)計(jì)數(shù)器字節(jié)178獲取值 之后,DFA引擎62可確定在包括與當(dāng)前符號(hào)相關(guān)的位的位圖部中, 與當(dāng)前符號(hào)相關(guān)的該位左邊有多少位i殳置成"1"。例如,布支定位圖 部176C的多個(gè)4立尋皮如下i殳置0100 100001100001 00000001。如 果與當(dāng)前符號(hào)相關(guān)的位是位圖部176C中的第11位(即,位圖部 176中的第76位),貝'J DFA引擎62確定在第76位左邊的三位要設(shè) 置成"1"。
確定在包括與當(dāng)前符號(hào)相關(guān)的位的位圖部中與當(dāng)前符號(hào)相關(guān) 的該位左邊有多少位i殳置成"1"之后,DFA引擎62可將該凄t加至 位圖部中在該位圖部左邊的要設(shè)置成"1"的位數(shù)。例如,如果計(jì) 數(shù)器字節(jié)178B指示位圖部176A和146B中有8位要設(shè)置成"1", 該位左邊有3位與位圖部176C中的當(dāng)前符號(hào)相關(guān),則DFA引擎62 確定位圖部176中與當(dāng)前符號(hào)相關(guān)的該位的左邊有11位要設(shè)置成
DFA引擎62可4吏用與位圖部176中的當(dāng)前符號(hào)相關(guān)的該位的 左邊要設(shè)置成"1"的位數(shù),以查找節(jié)點(diǎn)索引列表174中的節(jié)點(diǎn)索 引。例如,如果與位圖部176中的當(dāng)前符號(hào)相關(guān)的該位的左邊有11 位要i殳置成"1",則DFA引擎62訪問節(jié)點(diǎn)索引180中的第11個(gè)。使用該格式可節(jié)省存儲(chǔ)器中的空間,并可加速節(jié)點(diǎn)的處理。例 如,節(jié)點(diǎn)的常規(guī)格式可包括每個(gè)可能符號(hào)的節(jié)點(diǎn)索引。在該常規(guī)格
式中,如果有256個(gè)可能的符號(hào),且每個(gè)索引都是2字節(jié),則一個(gè) 節(jié)點(diǎn)至少要求總共512個(gè)字節(jié)的存儲(chǔ)器。通常,每個(gè)節(jié)點(diǎn)平均都可 具有16次到非開始狀態(tài)的轉(zhuǎn)換。因此,以所提出的格式的平均節(jié) 點(diǎn)僅要求72個(gè)字節(jié)(40個(gè)字節(jié)用于位圖部分172, 32個(gè)字節(jié)用于 16個(gè)雙字節(jié)節(jié)點(diǎn)索引)。另外,因?yàn)镈FA引擎62不需要計(jì)數(shù)位圖 部176中直到包括與當(dāng)前符號(hào)相關(guān)的該位的位圖部的左邊的所有 位,所以,通過計(jì)凄t器字節(jié)178可加速節(jié)點(diǎn)的處理。這可節(jié)省處理 時(shí)間和能量。
本發(fā)明公開描述的功能可被應(yīng)用到通過使用數(shù)據(jù)存儲(chǔ)介質(zhì)來進(jìn) 行存儲(chǔ)和/或檢索的,或者經(jīng)由有線或無線通信系統(tǒng)進(jìn)行通信(如, 傳輸和/或接收)的各種數(shù)據(jù)之任一種。有線或無線通信系統(tǒng)的實(shí)例 包括任何通信技術(shù)(包括但不限于,通過使用CDMA、GSM、 802.11、 藍(lán)牙、超寬帶(UWB)、 OFDM、 FDMA、 TDMA、 W-CDMA或其 它任何無線存取技術(shù)來進(jìn)行無線傳輸以及通過使用諸如TCP/IP、 ATM等等各種網(wǎng)絡(luò)協(xié)議之任一種來進(jìn)行有線或無線傳輸)。這些功 能可被應(yīng)用于任一類型的數(shù)據(jù)(包括但不限于,音樂數(shù)據(jù)、視頻數(shù) 據(jù)、多媒體數(shù)據(jù)或其它娛樂數(shù)據(jù)、金融數(shù)據(jù)、安全性數(shù)據(jù)、商業(yè)數(shù) 據(jù)、政府?dāng)?shù)據(jù)、軍事數(shù)據(jù)、營銷數(shù)據(jù)、銷售數(shù)據(jù)、病人數(shù)據(jù)、醫(yī)學(xué) 診斷數(shù)據(jù)、醫(yī)療成像數(shù)據(jù)、表示圖形或文本內(nèi)容的數(shù)據(jù)、圖像數(shù)據(jù)、 化學(xué)數(shù)據(jù)、地理數(shù)據(jù)、映像數(shù)據(jù)、電視播方文凄t據(jù)、收音才幾播放數(shù)據(jù)、 email數(shù)據(jù)、互聯(lián)網(wǎng)數(shù)據(jù)、個(gè)人數(shù)據(jù)等等)。
在一個(gè)或多個(gè)示例性實(shí)施例中,所描述的功能可實(shí)現(xiàn)于硬件、軟 件、和/或固件,或其任一組合等形式。如果其以石更件形式實(shí)現(xiàn),則 這些功能就可以一個(gè)或多個(gè)微處理器、微控制器、數(shù)字信號(hào)處理器 (DSP)、專用集成電3各(ASIC)、現(xiàn)場可編程門電^各(FPGA)等等形式。這才羊一些組件可駐留在通信系統(tǒng)、凄史據(jù)寫入和/或讀取系統(tǒng)、 或者其它系統(tǒng)。如果其以軟件形式實(shí)現(xiàn),則這些功能就可作為一條 或多條指令或代碼而被存儲(chǔ)于或傳輸于計(jì)算機(jī)可讀介質(zhì)之上。計(jì)算 機(jī)可讀介質(zhì)既包括計(jì)算才幾存儲(chǔ)介質(zhì)也包括通信介質(zhì)(包括便于計(jì)算 機(jī)程序從一個(gè)地方傳送到另一地方的任一介質(zhì))。存儲(chǔ)介質(zhì)可為能 由計(jì)算才幾所存耳又的^f壬一可用介質(zhì)。通過實(shí)例方式(M旦不限于此),
這樣一種計(jì)算機(jī)可讀介質(zhì)可包括RAM、 ROM、 EEPROM、 CD-ROM 或其它光盤存儲(chǔ)器、不茲盤存儲(chǔ)器或其它》茲介質(zhì)存4諸設(shè)備、或者能被 用于攜帶或存儲(chǔ)以指令或數(shù)據(jù)結(jié)構(gòu)以及能由計(jì)算機(jī)存取的形式的、 所想要的程序代碼的其它任何介質(zhì)。本文所用的Disk和Disc("盤") 包括CD盤、激光盤、光盤、DVD盤、軟盤以及藍(lán)光盤,其中有 的盤("disk")通常通過石茲的方式進(jìn)4亍凄t據(jù)再生,而有的盤("disc") 則通過光的方式進(jìn)4于數(shù)據(jù)再生。上述組合也應(yīng)該#皮包4舌在計(jì)算機(jī)可 讀介質(zhì)的范圍。
已經(jīng)描述了本發(fā)明的各種實(shí)施例。這些或者其它實(shí)施例都在附帶 權(quán)利要求書的范圍之中。
權(quán)利要求
1.一種方法,包括存儲(chǔ)一組完全確定性有限自動(dòng)機(jī)(fDFA)節(jié)點(diǎn),其中,fDFA節(jié)點(diǎn)表示完全確定性有限自動(dòng)機(jī)fDFA,其接受符合符號(hào)模式的符號(hào)流;生成一組pDFA節(jié)點(diǎn),其中,所述pDFA節(jié)點(diǎn)表示部分確定性有限自動(dòng)機(jī)(pDFA),其中,每個(gè)所述pDFA節(jié)點(diǎn)在fDFA節(jié)點(diǎn)中都具有對應(yīng)的、超越訪問閾的訪問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符號(hào)向所述fDFA節(jié)點(diǎn)中的具有不超越所述訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換;接收符號(hào)流中的符號(hào);以及使用所述pDFA節(jié)點(diǎn)和所述fDFA節(jié)點(diǎn)來檢測計(jì)算機(jī)安全威脅。
2. 才艮據(jù)^f又利要求1所述的方法,其中,當(dāng)所述pDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)^L定了符號(hào)向 fDFA節(jié)點(diǎn)中的具有超越所述訪問闊的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)才灸時(shí), 所述pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向所述pDFA節(jié)點(diǎn)中 的節(jié)點(diǎn)的轉(zhuǎn)換,和其中,所述方法還包4舌確定所述pDFA節(jié)點(diǎn)的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn);當(dāng)所述pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)不是所述失敗節(jié)點(diǎn) 時(shí),確定所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是否身見定所述 符號(hào)向所述失敗節(jié)點(diǎn)的轉(zhuǎn)換;當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符 號(hào)向所述失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),將所述fDFA節(jié)點(diǎn)中的對應(yīng)于 所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為所述 fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn);以及其中,檢測計(jì)算機(jī)安全威脅的步驟包括在所述pDFA節(jié) 點(diǎn)的當(dāng)前節(jié)點(diǎn)是所述失敗節(jié)點(diǎn)時(shí)以及在所述fDFA節(jié)點(diǎn)的當(dāng)前 節(jié)點(diǎn)規(guī)定所述符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),就纟企測計(jì)算機(jī)安 全威脅。
3. 根據(jù)權(quán)利要求2所述的方法,其中,生成一組pDFA節(jié)點(diǎn)的步 驟包括在單個(gè)存儲(chǔ)頁面中保存所述pDFA節(jié)點(diǎn)。
4. 根據(jù)權(quán)利要求2所述的方法,其中,所述符號(hào)模式與計(jì)算機(jī)安 全威力辦有關(guān)。
5. 根據(jù)權(quán)利要求2所述的方法,其中,所述方法還包括4妄收來自第 一計(jì)算才幾網(wǎng)絡(luò)的網(wǎng)絡(luò)流量;從所述網(wǎng)絡(luò)流量中^是取所述符號(hào)流中至少一部分;以及當(dāng)所述符號(hào)流不使所述pDFA或所述fDFA轉(zhuǎn):換至正在4妄 受的節(jié)點(diǎn)時(shí),在第二計(jì)算機(jī)網(wǎng)絡(luò)上重新發(fā)送所述網(wǎng)絡(luò)流量。
6. 根據(jù)權(quán)利要求2所述的方法,其中,所述方法還包括對表進(jìn)4亍維護(hù),所述表具有標(biāo)識(shí) 所述fDFA節(jié)點(diǎn)中的乂于應(yīng)于所述pDFA節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn) 的條目;以及其中,標(biāo)識(shí)所述fDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的步驟包括使用所 述表來標(biāo)識(shí)所述fDFA節(jié)點(diǎn)中的一個(gè)對應(yīng)于所述pDFA中的所 述當(dāng)前節(jié)點(diǎn)的節(jié),泉。
7. 根據(jù)權(quán)利要求2所述的方法,其中,生成一組表示pDFA的節(jié) 點(diǎn)的步艱《包4舌當(dāng)所述pDFA節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)^見定了所述符號(hào)向所 述失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),確定所述pDFA節(jié)點(diǎn)的計(jì)數(shù)是否超過規(guī)才莫 閾;標(biāo)識(shí)在所述fDFA節(jié)點(diǎn)中的一個(gè)fDFA節(jié)點(diǎn),其中,所述 fDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向這一個(gè)fDFA 節(jié)點(diǎn)的轉(zhuǎn)換;以及當(dāng)所述pDFA節(jié)點(diǎn)的計(jì)數(shù)不超過所述規(guī)^莫閾時(shí),生成所述 pDFA節(jié)點(diǎn)中的一個(gè)新pDFA節(jié)點(diǎn),其對應(yīng)于所述fDFA節(jié)點(diǎn) 中的該fDFA節(jié)點(diǎn)。
8. 根據(jù)權(quán)利要求7所述的方法,其中,生成一組pDFA節(jié)點(diǎn)的步 驟還包括當(dāng)所述pDFA節(jié)點(diǎn)的計(jì)數(shù)超過所述規(guī)模閾時(shí)以及當(dāng)所述 pDFA節(jié)點(diǎn)中的這一個(gè)節(jié)點(diǎn)的訪問級(jí)超過所述第二節(jié)點(diǎn)的訪 問級(jí)時(shí),從所述一組pDFA節(jié)點(diǎn)中刪除所述第二節(jié)點(diǎn);以及更新所述pDFA節(jié)點(diǎn),使所述pDFA節(jié)點(diǎn)中的失見定了向所 述第二節(jié)點(diǎn)的轉(zhuǎn)換的每一個(gè)pDFA節(jié)點(diǎn)都規(guī)定向所述pDFA的 失敗節(jié)點(diǎn)的轉(zhuǎn)換,而不是向所述第二節(jié)點(diǎn)的失敗節(jié)點(diǎn)的轉(zhuǎn)換。
9. 根據(jù)權(quán)利要求2所述的方法,其中,生成一組pDFA節(jié)點(diǎn)的步 驟包括生成一組使用位圖編碼方案進(jìn)行4各式化的pDFA節(jié)點(diǎn),以使每個(gè)所述pDFA節(jié)點(diǎn)都包括固定長度位圖部分和節(jié)點(diǎn) 索引的可變長度列表,其中,每個(gè)所述節(jié)點(diǎn)索引都指示所述pDFA節(jié)點(diǎn)中的另一 個(gè)節(jié)點(diǎn)被保存的存儲(chǔ)位置,以及其中,所述位圖部分包括與不同符號(hào)有關(guān)的位。
10. 根據(jù)權(quán)利要求9所述的方法,其中,生成一組pDFA節(jié)點(diǎn)的步 驟還包括生成一組使用位圖編碼方案進(jìn)行格式化的pDFA節(jié) 點(diǎn),使得當(dāng) 一個(gè)所述pDFA節(jié)點(diǎn)中的位圖部分中的多個(gè)位之一 與符號(hào)相關(guān),并被設(shè)置成第一值時(shí),所述節(jié)點(diǎn)索引列表包括與 所述符號(hào)有關(guān)的節(jié)點(diǎn)索引,以及當(dāng)所述多個(gè)位之一被設(shè)置成第 二值時(shí),所述節(jié)點(diǎn)索引列表不包括與所述符號(hào)有關(guān)的節(jié)點(diǎn)索 引。
11. 才艮據(jù)一又利要求2所述的方法,其中,保存所述fDFA節(jié)點(diǎn)的步 驟包括將所述fDFA節(jié)點(diǎn)保存于多個(gè)存儲(chǔ)頁面中。
12. 才艮據(jù)4又利要求2所述的方法,其中,所述方法還包4舌當(dāng)所述 pDFA節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向所述pDFA節(jié)點(diǎn) 中的節(jié)點(diǎn)轉(zhuǎn)換時(shí),將所述pDFA節(jié)點(diǎn)中的所述節(jié)點(diǎn)標(biāo)識(shí)為所述 pDFA節(jié)點(diǎn)中新的當(dāng)前節(jié)點(diǎn)。
13. 根據(jù)權(quán)利要求12所述的方法,其中,將所述pDFA節(jié)點(diǎn)中的 所述節(jié)點(diǎn)標(biāo)識(shí)為所述pDFA節(jié)點(diǎn)中新的當(dāng)前節(jié)點(diǎn)的步驟包括 增大所述pDFA節(jié)點(diǎn)中所述新的當(dāng)前節(jié)點(diǎn)的訪問級(jí)以及增大 所述fDFA節(jié)點(diǎn)中的、對應(yīng)于所述pDFA節(jié)點(diǎn)中所述新的當(dāng)前 節(jié)點(diǎn)的 一個(gè)節(jié)點(diǎn)的訪問級(jí)。
14. 才艮據(jù);f又利要求2所述的方法,其中,所述方法還包4舌當(dāng)所述 pDFA節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向正在4妄受的節(jié) 點(diǎn)轉(zhuǎn)換時(shí),就接受符合所述符號(hào)模式的符號(hào)流。
15. 根據(jù)權(quán)利要求12所述的方法,其中,確定所述pDFA節(jié)點(diǎn)中 所述當(dāng)前節(jié)點(diǎn)是否規(guī)定了所述符號(hào)向所述失敗節(jié)點(diǎn)轉(zhuǎn)換的步 驟包括確定所述符號(hào)是否為元符號(hào)所定義的符號(hào)類的成員。
16. 才艮據(jù)斗又利要求2所述的方法,其中,所述一組fDFA節(jié)點(diǎn)是第一組fDFA節(jié)點(diǎn);其中,所述符號(hào)模式是第一符號(hào)模式;其中,所述方法還包括保存表示第二 fDFA的第二組fDFA 節(jié)點(diǎn),其中,所述第二fDFA接受符合第二符號(hào)模式的符號(hào)流;其中,生成一組pDFA節(jié)點(diǎn)的步驟包括生成一組pDFA節(jié) 點(diǎn),其每個(gè)所述pDFA節(jié)點(diǎn)都對應(yīng)于所述第一組fDFA節(jié)點(diǎn)中 的具有超過所述規(guī)模閾的訪問級(jí)的節(jié)點(diǎn)和/或都對應(yīng)于所述第 二組fDFA節(jié)點(diǎn)中的具有超過所述訪問級(jí)的訪問級(jí)的節(jié)點(diǎn);以 及其中,所述方法還包括當(dāng)所述pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向所 述失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),將所述第二組fDFA節(jié)點(diǎn)中的對應(yīng)于 所述pDFA節(jié)點(diǎn)中所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為所述第二組 fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn);以及當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是所述失敗節(jié)點(diǎn) 時(shí)以及當(dāng)所述第二 fDFA節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述 符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),接受符合所述第二符號(hào)模 式的符號(hào)流。
17. 根據(jù)權(quán)利要求2所述的方法,其中,生成所述一組pDFA節(jié)點(diǎn) 的步-驟包4舌生成第 一組臨時(shí)pDFA節(jié)點(diǎn),其中,所述第 一組臨時(shí)pDFA 節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)在所述第一組fDFA節(jié)點(diǎn)中都具有對應(yīng)的、 超過訪問閾的訪問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述第一組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)^見定 了符號(hào)向所述第 一組fDFA節(jié)點(diǎn)中的具有超越所述訪問閾 的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第 一組臨時(shí)pDFA節(jié)點(diǎn)中的 每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向所述第 一組臨時(shí)pDFA節(jié)點(diǎn)中 的節(jié)點(diǎn)的轉(zhuǎn)換,其中,當(dāng)所述第一組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定 了符號(hào)向所述第 一組fDFA節(jié)點(diǎn)中的具有不超越所述訪問 閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第一組臨時(shí)pDFA節(jié)點(diǎn)中 的每個(gè)節(jié)點(diǎn)都夂見定所述符號(hào)向所述第 一組臨時(shí)pDFA節(jié)點(diǎn) 中的失敗節(jié)點(diǎn)的轉(zhuǎn)換;生成第二組臨時(shí)pDFA節(jié)點(diǎn),其中,所述第二組臨時(shí)pDFA 節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)在所述第二組fDFA節(jié)點(diǎn)中都具有7寸應(yīng)的、 超過"i方問閾的i方問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述第二組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定 了符號(hào)向所述第二組fDFA節(jié)點(diǎn)中的具有超越所述訪問閾 的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的 每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向所述第二組臨時(shí)pDFA節(jié)點(diǎn)中 的節(jié)點(diǎn)的轉(zhuǎn)換,其中,當(dāng)所述第二組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定 了符號(hào)向所述第二組fDFA節(jié)點(diǎn)中的具有不超越所述訪問 閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向所述第二組臨時(shí)pDFA節(jié)點(diǎn) 中的失敗節(jié)點(diǎn)的轉(zhuǎn)換;合并所述第 一組臨時(shí)pDFA節(jié)點(diǎn)和所述第二《且臨時(shí)pDFA 節(jié)點(diǎn),以生成所述一纟且pDFA節(jié)點(diǎn)。
18. 根據(jù)權(quán)利要求17所述的方法,其中,合并所述第一組臨時(shí) pDFA節(jié)點(diǎn)和所述第二組臨時(shí)pDFA節(jié)點(diǎn)的步驟包4舌生成第一新節(jié)點(diǎn),其規(guī)定了所述第一組臨時(shí)pDFA節(jié)點(diǎn)中 的節(jié)點(diǎn)中所規(guī)定的每次所述轉(zhuǎn)換,以及規(guī)定了所述第二組臨時(shí) pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)中所^L定的每次所述4爭4灸;標(biāo)識(shí)由所述第 一新節(jié)點(diǎn)所規(guī)定的、符號(hào)向第 一組臨時(shí) pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的4爭4灸;標(biāo)識(shí)由所述第 一新節(jié)點(diǎn)所規(guī)定的、相同符號(hào)向第二組臨 時(shí)pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換;遞歸地生成第二新節(jié)點(diǎn),其表示所述第 一組臨時(shí)pDFA節(jié) 點(diǎn)和所述第二組臨時(shí)pDFA節(jié)點(diǎn)的合并;以及夫見定所述符號(hào)在所述第 一 新節(jié)點(diǎn)中向所述第二新節(jié)點(diǎn)的 轉(zhuǎn)換。
19. 一種中間網(wǎng)全各裝置,包^":存儲(chǔ)模塊,用于存儲(chǔ)一組完全確定性有限自動(dòng)機(jī)(fDFA ) 節(jié)點(diǎn),其中,fDFA節(jié)點(diǎn)表示完全確定性有限自動(dòng)機(jī)fDFA, 其接受符合符號(hào)模式的符號(hào)串;pDFA更新才莫塊,用于生成一組pDFA節(jié)點(diǎn),其中,所述 pDFA節(jié)點(diǎn)表示部分確定性有限自動(dòng)機(jī)(pDFA ),其中,每個(gè)所述pDFA節(jié)點(diǎn)在fDFA節(jié)點(diǎn)中都具有對 應(yīng)的、超越i方問閾的"i方問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符號(hào) 向所述fDFA節(jié)點(diǎn)中的具有超越所述訪問閾的訪問級(jí)的節(jié) 點(diǎn)轉(zhuǎn)換時(shí),所述pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向所 述pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換,和其中,當(dāng)所述fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)^見定了符號(hào) 向所述fDFA節(jié)點(diǎn)中的具有不超越所述訪問閾的訪問級(jí)的 節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向 所述pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換;以及DFA引擎,用于接收符號(hào)流中的符號(hào);確定所述pDFA 節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn);當(dāng)所述pDFA節(jié)點(diǎn)中的所 述當(dāng)前節(jié)點(diǎn)不是所述失敗節(jié)點(diǎn)時(shí),確定所述pDFA節(jié)點(diǎn)中的所 述當(dāng)前節(jié)點(diǎn)是否規(guī)定所述符號(hào)向所述失敗節(jié)點(diǎn)的轉(zhuǎn)換;當(dāng)所述 pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向所述失敗節(jié) 點(diǎn)的轉(zhuǎn)換時(shí),將所述fDFA節(jié)點(diǎn)中的對應(yīng)于所述pDFA節(jié)點(diǎn)中 所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為所述fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn);以 及,當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是所述失敗節(jié)點(diǎn)時(shí)并 且當(dāng)所述fDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向正在 接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí)就檢測計(jì)算機(jī)安全威脅。
20. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述存儲(chǔ)模塊 在單個(gè)存儲(chǔ)頁面中保存所述一組pDFA節(jié)點(diǎn)。
21. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述符號(hào)模式 與計(jì)算機(jī)安全威脅有關(guān)。
22. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述中間網(wǎng)絡(luò) 裝置還包括第一網(wǎng)絡(luò)接口,用于接收來自第一計(jì)算4幾網(wǎng)絡(luò)的網(wǎng)絡(luò)流量;應(yīng)用層模塊,用于從所述網(wǎng)絡(luò)流量中提取所述符號(hào)流中 至少一4卩分;以及第二網(wǎng)絡(luò)接口 ,用于當(dāng)所述符號(hào)流不使所述pDFA或所述 fDFA轉(zhuǎn)換至正在接受的節(jié)點(diǎn)時(shí)就在第二計(jì)算機(jī)網(wǎng)絡(luò)上重新發(fā) 送所述網(wǎng)全各:流量。
23. 才艮據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述DFA引擎確定所述pDFA節(jié)點(diǎn)的計(jì)數(shù)是否超 過規(guī)模閾;以及其中,當(dāng)所述pDFA節(jié)點(diǎn)的計(jì)數(shù)不超過所述規(guī)模閾時(shí)以及 當(dāng)所述一組fDFA節(jié)點(diǎn)中的節(jié)點(diǎn)成為所述fDFA的所述當(dāng)前節(jié) 點(diǎn)時(shí),所述pDFA更新才莫塊在所述一組pDFA節(jié)點(diǎn)中生成新 pDFA節(jié)點(diǎn),其對應(yīng)于所述一組fDFA節(jié)點(diǎn)中的節(jié)點(diǎn)。
24. 根據(jù)權(quán)利要求23所述的中間網(wǎng)絡(luò)裝置,其中,當(dāng)所述pDFA節(jié)點(diǎn)的計(jì)數(shù)超過所述規(guī)模閾時(shí)以及當(dāng) 一個(gè)所述pDFA節(jié)點(diǎn)的所述訪問級(jí)超過第二節(jié)點(diǎn)的訪問級(jí)時(shí), 所述pDFA更新才莫塊乂人所述一組pDFA節(jié)點(diǎn)中刪除所述第二節(jié) 點(diǎn);以及其中,所述pDFA更新才莫塊更l斤所述一iEL pDFA節(jié)點(diǎn)中的 多個(gè)節(jié)點(diǎn),使所述pDFA節(jié)點(diǎn)中的已規(guī)定了向所述第二節(jié)點(diǎn)轉(zhuǎn) 換的每一個(gè)節(jié)點(diǎn)都夫見定向所述pDFA的所述失敗節(jié)點(diǎn)轉(zhuǎn)換,而 不是向所述第二節(jié)點(diǎn)轉(zhuǎn)換。'
25. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述存儲(chǔ)模塊 將所述pDFA節(jié)點(diǎn)保存于多個(gè)存儲(chǔ)頁面中。
26. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,當(dāng)所述pDFA 節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向所述pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述DFA I擎將所述pDFA節(jié)點(diǎn)中的所述節(jié)點(diǎn) 標(biāo)識(shí)為所述pDFA節(jié)點(diǎn)中新的當(dāng)前節(jié)點(diǎn)。
27. 4艮據(jù)^l利要求26所述的中間網(wǎng)絡(luò)裝置,其中,所述DFA引擎 增大所述pDFA節(jié)點(diǎn)中所述新的當(dāng)前節(jié)點(diǎn)的訪問級(jí)以及增大 所述fDFA節(jié)點(diǎn)中的對應(yīng)于所述pDFA節(jié)點(diǎn)中所述新的當(dāng)前節(jié) 點(diǎn)的 一個(gè)節(jié)點(diǎn)的訪問級(jí)。
28. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,當(dāng)所述pDFA 節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換 時(shí),所述DFA引擎接受符合所述符號(hào)模式的符號(hào)流。
29. 根據(jù)權(quán)利要求19所述的中間網(wǎng)絡(luò)裝置,其中,所述一組fDFA節(jié)點(diǎn)是第一組fDFA節(jié)點(diǎn),其中,所述符號(hào)模式是第一符號(hào)模式,和其中,所述存儲(chǔ)才莫塊保存表示第二 fDFA的第二組fDFA 節(jié)點(diǎn),其中,所述第二fDFA接受符合第二符號(hào)模式的符號(hào)流;其中,每個(gè)所述pDFA節(jié)點(diǎn)都對應(yīng)于所述第一組fDFA節(jié) 點(diǎn)中的具有超過所述>見才莫閾的訪問級(jí)的節(jié)點(diǎn)和/或都對應(yīng)于所 述第二組fDFA節(jié)點(diǎn)中的具有超過所述訪問級(jí)的訪問級(jí)的節(jié) 點(diǎn);其中,當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)A見定了所述符 號(hào)向所述失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述DFA引擎將所述第二組fDFA 節(jié)點(diǎn)中的對應(yīng)于在所述pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí) 為所述第二組fDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn);以及其中,當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是所述失敗節(jié) 點(diǎn)時(shí)并且當(dāng)所述第二fDFA節(jié)點(diǎn)的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向正在接受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述DFA引擎接受符合所述第 二符號(hào)模式的符號(hào)流。
30. 根據(jù)權(quán)利要求29所述的中間網(wǎng)絡(luò)裝置,其中,所述pDFA更新才莫塊通過生成第一組臨時(shí)pDFA節(jié) 點(diǎn)、生成第二組臨時(shí)pDFA節(jié)點(diǎn),以及通過合并所述第一組臨 時(shí)pDFA節(jié)點(diǎn)和所述第二組臨時(shí)pDFA節(jié)點(diǎn)以生成所述一組 pDFA節(jié)點(diǎn)的步驟,來生成所述一組pDFA節(jié)點(diǎn)其中,所述第一組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)在所述第 一組fDFA節(jié)點(diǎn)中都具有對應(yīng)的、超過訪問閾的訪問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述第一組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符 號(hào)向所述第 一組fDFA節(jié)點(diǎn)中的具有超越所述訪問閾的訪問級(jí) 的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第一組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都規(guī) 定所述符號(hào)向所述第一組臨時(shí)pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換,其中,當(dāng)所述第 一組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符 號(hào)向所述第 一組fDFA節(jié)點(diǎn)中的具有不超越所述訪問閾的訪問 級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第一組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都 ^L定所述符號(hào)向所述第一組臨時(shí)pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的 轉(zhuǎn)換;其中,所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)在所述第 二組fDFA節(jié)點(diǎn)中都具有對應(yīng)的、超過訪問閾的訪問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述第二組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符 號(hào)向所述第二組fDFA節(jié)點(diǎn)中的具有超越所述訪問閾的訪問級(jí) 的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都規(guī) 定所述符號(hào)向所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的轉(zhuǎn)換,和其中,當(dāng)所述第二組fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符 號(hào)向所述第二組fDFA節(jié)點(diǎn)中的具有不超越所述訪問閾的訪問級(jí)的節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都 頭見定所述符號(hào)向所述第二組臨時(shí)pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換。
31.—種計(jì)算機(jī)可讀介質(zhì),其包括指令,當(dāng)運(yùn)行這些指令時(shí),導(dǎo)致 處理器4丸行存儲(chǔ)一組完全確定性有限自動(dòng)沖幾(fDFA)節(jié)點(diǎn),其中, 所述fDFA節(jié)點(diǎn)表示完全確定性有限自動(dòng)機(jī)fDFA,其接受符合符號(hào)模式的符號(hào)流;生成一組pDFA節(jié)點(diǎn),其中,所述pDFA節(jié)點(diǎn)表示部分確 定性有限自動(dòng)機(jī)(pDFA ),其中,每個(gè)所述pDFA節(jié)點(diǎn)在fDFA節(jié)點(diǎn)中都具有對 應(yīng)的、超越i方問閾的i方問級(jí)的節(jié)點(diǎn),其中,當(dāng)所述fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符號(hào) 向所述fDFA節(jié)點(diǎn)中的具有超越所述訪問閾的訪問級(jí)的節(jié) 點(diǎn)轉(zhuǎn)換時(shí),所述pDFA中的每個(gè)節(jié)點(diǎn)都失見定所述符號(hào)向 pDFA節(jié)點(diǎn)中的節(jié)點(diǎn)的4爭4灸,和其中,當(dāng)所述fDFA節(jié)點(diǎn)中所對應(yīng)的節(jié)點(diǎn)規(guī)定了符號(hào) 向所述fDFA節(jié)點(diǎn)中的具有不超越所述訪問閾的訪問級(jí)的 節(jié)點(diǎn)轉(zhuǎn)換時(shí),所述pDFA中的每個(gè)節(jié)點(diǎn)都規(guī)定所述符號(hào)向 pDFA節(jié)點(diǎn)中的失敗節(jié)點(diǎn)的轉(zhuǎn)換;接收符號(hào)流中的符號(hào);確定所述pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)是否為失敗節(jié)點(diǎn);當(dāng)所述pDFA節(jié)點(diǎn)中的當(dāng)前節(jié)點(diǎn)不是所述失敗節(jié)點(diǎn)時(shí),確 定所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是否規(guī)定所述符號(hào)向所 述失敗節(jié)點(diǎn)的轉(zhuǎn)換;當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向 所述失敗節(jié)點(diǎn)轉(zhuǎn)換時(shí),將所述fDFA節(jié)點(diǎn)中的對應(yīng)于所述 pDFA節(jié)點(diǎn)中所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)為所述fDFA節(jié)點(diǎn)中的 當(dāng)前節(jié)點(diǎn);以及當(dāng)所述pDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)是所述失敗節(jié)點(diǎn)時(shí) 以及當(dāng)所述fDFA節(jié)點(diǎn)中的所述當(dāng)前節(jié)點(diǎn)規(guī)定了所述符號(hào)向正 在4妄受的節(jié)點(diǎn)轉(zhuǎn)換時(shí),就;險(xiǎn)測計(jì)算一幾安全威脅。
32. 根據(jù)權(quán)利要求31所述的計(jì)算斗幾可讀介質(zhì),其中,導(dǎo)致所述處理器〗呆存一組fDFA節(jié)點(diǎn)的指令包括 導(dǎo)致所述處理器在多個(gè)存儲(chǔ)頁面中保存所述一組fDFA節(jié)點(diǎn)的 指令;以及其中,導(dǎo)致所述處理器生成所述一組pDFA節(jié)點(diǎn)的指令包 括導(dǎo)致所述處理器在單個(gè)存儲(chǔ)頁面中保存所述一組pDFA節(jié) 點(diǎn)的指令。
全文摘要
本發(fā)明提供了一種用于確定網(wǎng)絡(luò)流量是否包含一個(gè)或多個(gè)計(jì)算機(jī)安全威脅的技術(shù)。為了確定符號(hào)流是否符合符號(hào)模式,安全裝置保存完全確定性有限自動(dòng)機(jī)(fDFA),其接受符合符號(hào)模式的符號(hào)流。該安全裝置還生成部分確定性有限自動(dòng)機(jī)(pDFA),其包括對應(yīng)于fDFA中具有最高訪問級(jí)的節(jié)點(diǎn)的節(jié)點(diǎn)。該安全裝置使用pDFA處理符號(hào)流中的每個(gè)符號(hào),直到一個(gè)符號(hào)導(dǎo)致pDFA轉(zhuǎn)換至失敗節(jié)點(diǎn)或正在接受的節(jié)點(diǎn)。如果該符號(hào)導(dǎo)致pDFA轉(zhuǎn)換至失敗節(jié)點(diǎn),則安全裝置使用fDFA處理該符號(hào)以及在符號(hào)流中的后續(xù)符號(hào)。
文檔編號(hào)H04L29/06GK101291323SQ200710130040
公開日2008年10月22日 申請日期2007年7月25日 優(yōu)先權(quán)日2007年4月20日
發(fā)明者克里希納·納拉亞納斯瓦米, 布賴恩·伯恩斯, 維平·拉瓦特, 邁克爾·君·?;? 馬慶鳴 申請人:叢林網(wǎng)絡(luò)公司