亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

分布式事件檢測方法及裝置的制作方法

文檔序號:7775853閱讀:322來源:國知局
專利名稱:分布式事件檢測方法及裝置的制作方法
技術領域
本發(fā)明涉及網絡安 全事件檢測領域,更加具體地,涉及一種網絡攻擊事件的分布式檢測方法及裝置。
背景技術
在人們進行網絡行為時,非法入侵者通常會通過網絡攻擊來入侵網絡用戶的私人空間,從而獲取網絡用戶的私人信息,由此導致網絡用戶的隱私泄露。因此,在用戶進行網絡沖浪時,需要進行網絡攻擊行為檢測,從而在檢測到網絡攻擊時提醒用戶防止個人隱私
信息泄露。^t Martin Roesch T 1999 ^^WSnort lightweight Intrusion Detection for Networks”中,提出了一種基于字符串匹配的網絡入侵檢測系統(tǒng)。在該網絡入侵檢測系統(tǒng)中,只能根據截取到的單個網絡數(shù)據包中是否具有一定的字符特征,或者是依靠某些特定的端口是否打開來判斷攻擊。然而,在該網絡入侵檢測系統(tǒng)中,不能將攻擊作為一個真實過程來考慮,從而導致漏報率和誤報率比較高。為了將攻擊作為一個過程來加以識別,學術界提出了一些基于事件的檢測方法及系統(tǒng),在這些系統(tǒng)中,攻擊行為被分為“存在”、“順序”和“偏序”類型(參見S. Kumar和 E. H. Spafford 1994 年在 Proc. Of the 17th National Computer Security Conference 上發(fā)表的"Pattern Matching Model for Misuse Intrusion Detection”),攻擊規(guī)則使用過程性語言或描述性語言書寫,并且使用變量來保持狀態(tài),從而可以高效地識別出網絡攻擊行為。然而,在使用過程性語言書寫(參見W.Lee,C. Park和S. Stolfo于1999年的 USENIX Intrusion Detection Workshop 上發(fā)表的"Automated Intrusion Detection using NFR =Methods and Experiences" \iLRY. Paxson ^t 1998 ^ ^ USENIX Security Symposium上發(fā)表的“Bro :A System for Detection Network Intruders in Real-time”) 的情況下,由于攻擊規(guī)則使用過程性語言描述,從而導致規(guī)則開發(fā)者在開發(fā)攻擊檢測規(guī)則時,必須深入了解語言本身的執(zhí)行機制,這使得在需要幾十個甚至上百人協(xié)作開發(fā)協(xié)議級檢測模塊以及攻擊規(guī)則時變得非常困難,甚至不可行。而在使用描述性語言書寫(參見R Sekar, Y Guang, S Verma, T Shanbhag在 1999 年白勺 ACM Conference On Computer and Communications Security 上發(fā)表白勺 "High-Performance Network Intrusion Detection System”)白勺情況下,由于描述語目 .是基于正則文法的,從而表現(xiàn)能力有限。此外,由于正則文法的檢測機制是有限自動機,對于協(xié)議分析所要求的分層處理能力支持非常弱,從而不適用于協(xié)議分析層面的事件檢測。在授權公告號為CN101060396B、發(fā)明名稱為“一種事件的檢測方法及裝置”的專利中,提出了一種具備協(xié)議分層描述能力的事件檢測方法。在該方法中,使用帶謂詞的上下文無關文法預置針對事件的檢測規(guī)則,對所述預置的檢測規(guī)則進行解析,以生成下推自動機的分析表,該分析表支持并行分析;然后利用所生成的分析表,對所接收的檢測事件進行分析,從而得到檢測結果。其中,在生成下推自動機的分析表時,首先解析所述協(xié)議規(guī)則和攻擊規(guī)則得到語法樹;接著采用帶謂詞的LR(O)生成算法生成所述帶謂詞的上下文無關文法的項目集簇;然后將該項目集簇轉換為相應的下推自動機分析表,所述分析表包括動作表 ACTIION和跳轉表GOTO。該申請的全部內容通過引用并入本申請中。在該方法中,利用事件的概念來代替具體的協(xié)議命令,從事件角度來對攻擊進行檢測,從而使得入侵檢測系統(tǒng)的開發(fā)可以分為三個獨立部分(事件分析引擎開發(fā)、協(xié)議分析開發(fā)和攻擊分析)分別進行, 每個部分可以獨立進行擴充而不會影響其他部分,從而提高了系統(tǒng)的可擴展性。此外,利用該方法,可以對復雜應用的協(xié)議層次關系進行描述,從而增強了對于網絡攻擊的描述能力, 并且提高了攻擊的檢測效率。然而, 在網絡攻擊檢測實踐中,經常會需要讓分布在不同進程(或者線程)中的軟件模塊(即,文法分析模塊)進行協(xié)同工作,如圖1中所示,軟件模塊A1, A2和A3分布在不同的進程P1, P2和P3內,軟件模塊A1在接收到外部待檢測事件后,需要將該事件交給A2,并且在必要的情況下進一步交給A3來進行處理,以便進行復雜攻擊的檢測。在這種情況下, 可以將文法G拆分成幾個子文法,比如G1, G2, G3,然后讓每個軟件模塊只負責一個子文法, 并通過分布式文法系統(tǒng)來保證各個軟件模塊的協(xié)作。在這樣的系統(tǒng)中,不僅需要在各個文法分析模塊內部定義該模塊所處理的協(xié)議規(guī)則和攻擊規(guī)則,還需要定義各個文法分析模塊之間的協(xié)同關系,也就是,定義何時調度哪個文法分析模塊來進行文法分析處理。而在上述授權專利公告CN101060396B中提出的帶謂詞上下文無關文法的事件檢測方法中,只能在一個軟件模塊內部定義事件以及事件之間的關系,無法描述獨立執(zhí)行實體間的事件關系,從而使得該方法在上述分布式環(huán)境下下無法適用。

發(fā)明內容
鑒于上述問題,提出了一種分布式環(huán)境下的事件檢測方法及裝置,在該分布式事件檢測方法中,提供了文法控制模塊和多個文法分析模塊,文法控制模塊根據預先生成的調度策略表,調度多個文法分析模塊中的一個、或者多個文法分析模塊來根據該文法分析模塊中的本地分析表來進行分析,從而得到檢測結果。利用該檢測方法,可以通過使用文法控制模塊中的調度策略表,精確地定義各個文法分析模塊之間的協(xié)同策略,從而可以保證各個文法分析模塊在檢測復雜攻擊時能夠協(xié)同操作。此外,由于在文法控制模塊以及各個文法分析模塊中采用了異步并行處理模式,從而提高了檢測效率。此外,由于文法分析模塊之間的協(xié)同策略在文法控制模塊中定義,而文法分析模塊僅僅需要生成自己的項目集簇,而無需考慮其它模塊的影響,從而使得該檢測裝置的各個文法分析模塊具有充分的獨立性,從而具有非常好的擴展性。根據本發(fā)明的一個方面,提供了一種分布式環(huán)境下的事件檢測方法,由包括文法控制模塊和至少包括第一文法分析模塊的多個文法分析模塊的裝置執(zhí)行,所述方法包括 在第一文法分析模塊對所接收到的待檢測事件進行分析的過程中產生無法分析的事件后, 在所述文法控制模塊的控制下,執(zhí)行下述過程,直到所述第一文法分析模塊得到該待檢測事件的檢測結果將當前文法分析模塊無法分析的事件作為下一待檢測事件包含在調度請求中發(fā)送給所述文法控制模塊;所述文法控制模塊基于所生成的調度策略表,根據所述調度請求中包含的下一待檢測事件,調度所述多個文法分析模塊中的其它文法分析模塊作為目標文法分析模塊來進行文法分析,所述調度策略表反映待檢測事件與用于處理該待檢測事件的文法分析模塊的關聯(lián)關系;在被調度的目標文法分析模塊中,基于該目標文法分析模塊的本地分析表,對所述下一待檢測事件進行文法分析;在該下一待檢測事件的分析過程中沒有發(fā)現(xiàn)該目標文法分析模塊無法分析的事件時,該目標文法分析模塊向所述文法控制模塊返回分析結果,以供該當前文法分析模塊繼續(xù)進行文法分析;或者在該下一待檢測事件的分析過程中發(fā)現(xiàn)該目標文法分析模塊無法分析的事件時,將該目標文法分析模塊作為新的當前文法分析模塊,重復上述過程,其中,各個文法分析模塊的本地分析表是在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成的。 在上述方面的一個或多個示例中,使用分布式項目集簇生成算法生成各個文法分析模塊的本地分析表和文法控制模塊的調度策略表可以包括對于每個文法分析模塊,在該文法分析模塊進行文法解析時判斷出存在無法解析的事件時,向所述文法控制模塊發(fā)送包含該事件的項目集簇生成請求;在接收到所述項目集簇生成請求后,所述文法控制模塊根據每個文法分析模塊預先注冊的公開事件列表,基于所述項目集簇生成請求中包含的事件,確定目標文法分析模塊,并且向該目標文法分析模塊發(fā)送包含所述事件的項目集簇生成請求;在接收到所述項目集簇生成請求后,所述目標文法分析模塊基于帶謂詞上下文無關文法,生成以所述事件為目標的項目集簇,并將所生成的項目集簇轉換為下推自動機分析表,所述下推自動機分析表支持并行分析;在生成所述目標文法分析模塊的項目集簇后, 所述目標文法分析模塊將所述項目集簇編號和可接收事件列表返回給所述文法控制模塊; 所述文法控制模塊基于各個文法分析模塊返回的項目集簇編號和可接收事件列表生成所述調度策略表。在上述方面的一個或多個示例中,所述文法控制模塊的公開事件列表是由各個文法分析模塊將可供其它文法分析模塊調用的事件注冊到所述文法控制模塊而生成的。在上述方面的一個或多個示例中,所述文法控制模塊基于所生成的調度策略表, 根據當前文法分析模塊發(fā)送的調度請求,調度所述多個文法分析模塊中的其它文法分析模塊作為目標文法分析模塊來進行文法分析可以包括在接收到當前文法分析模塊發(fā)送的包含下一待檢測事件的調度請求后,所述文法控制模塊在調度策略表中搜索與該下一待檢測事件匹配的目標文法分析模塊;以及在搜索出目標文法分析模塊后,所述文法控制模塊向所述目標文法分析模塊發(fā)送包含有該下一待檢測事件的調度請求,以請求所述目標文法分析模塊針對該下一待檢測事件進行文法分析。在上述方面的一個或多個示例中,所述調度請求還可以包括共享分析狀態(tài)棧。在上述方面的一個或多個示例中,在每個文法分析模塊和文法控制模塊中,采用多個協(xié)程來實現(xiàn)異步并行處理,所述協(xié)程是文法分析模塊對于每個會話維護的輕量級用戶線程。根據本發(fā)明的另一方面,提供了一種分布式環(huán)境下的事件檢測裝置,包括至少包括第一文法分析模塊的多個文法分析模塊以及文法控制模塊,其中,所述文法分析模塊包括第一接收單元,用于接收待檢測事件或者從所述文法控制模塊接收包含下一待檢測事件的調度請求,以及接收從所述文法控制模塊返回的分析結果;文法分析單元,用于基于所生成的該文法分析模塊的本地分析表,對所接收的待檢測事件或所述調度請求中的下一待檢測事件進行文法分析;調度請求生成單元,用于在所分析的待檢測事件的分析過程中發(fā)現(xiàn)無法分析的事件時,生成將該無法分析的事件作為下一待檢測事件包含在內的調度請求;第一發(fā)送單元,用于將所述調度請求發(fā)送給所述文法控制模塊,或者在所述文法分析模塊獲得分析結果時,向外部輸出該檢測事件的檢測結果或者向所述文法控制模塊返回分析結果,其中,各個文法分析模塊的本地分析表是在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成的,其中,所述文法控制模塊包括第二接收單元,用于從文法分析模塊接收包含下一待檢測事件的調度請求或者包含該下一待檢測事件的分析結果;搜索單元,用于在接收到所述包含下一待檢測事件的調度請求后,在所生成的調度策略表中,搜索與該下一檢測事件匹配的目標文法分析模塊,所述調度策略表反映待檢測事件與用于處理該待檢測事件的文法分析模塊的關聯(lián)關系;第二發(fā)送單元,用于在搜索出所述目標文法分析模塊后,向該目標文法分析模塊發(fā)送包含該下一待檢測事件的調度請求,以及將所接收的該下一待檢測事件的分析結果發(fā)送給發(fā)出所述調度請求的文法分析模塊來繼續(xù)進行文法分析。在上述方面的一個或多個示例中,所述文法分析模塊還可以包括本地分析表生成單元,用于在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成該文法分析模塊的項目集簇并轉換為本地分析表;其中,所述文法分析模塊中的第一發(fā)送單元向所述文法控制模塊發(fā)送項目集簇編號以及可接收事件列表,以及所述文法控制模塊還包括調度策略表生成單元,用于基于所接收的項目集簇編號以及可接收事件列表生成調度策略表在上述方面的一個或多個示例中,所述文法分析模塊還可以包括項目集簇生成請求生成單元,用于當在生成本地分析表時判斷出存在無法解析的事件時,生成項目集簇生成請求,該項目集簇生成請求將該無法解析事件作為下一待檢測事件包含在內,其中,所述文法分析模塊中的第一發(fā)送單元還用于將所生成的項目集簇生成請求發(fā)送給所述文法控制模塊并在所述文法控制模塊的控制下轉發(fā)給目標文法分析模塊,所述目標文法分析模塊是由所述文法控制模塊中的搜索單元基于項目集簇生成請求中包含的下一待檢測事件, 根據每個文法分析模塊預先注冊的公開事件列表確定的。在上述方面的一個或多個示例中,所述文法控制模塊還可以包括公開事件列表生成單元,用于根據各個文法分析模塊注冊的可供其它文法分析模塊調用的事件生成公開事件列表。在上述方面的一個或多個示例中,所述文法分析模塊和所述文法控制模塊中的每個還可以包括異步調度單元,用于在每個文法分析模塊和文法控制模塊中,采用多個協(xié)程來實現(xiàn)異步并行處理,所述協(xié)程是文法分析模塊對于每個會話維護的輕量級用戶線程。為了實現(xiàn)上述以及相關目的,本發(fā)明的一個或多個方面包括后面將詳細說明并在權利要求中特別指出的特征。下面的說明以及附圖詳細說明了本發(fā)明的某些示例性方面。 然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。


根據下述參照附圖進行的詳細描述,本發(fā)明的上述和其他目的、特征和優(yōu)點將變得更加顯而易見。在附圖中圖1示出了 多個文法模塊在不同進程中執(zhí)行的示例的示意圖;圖2示出了根據本發(fā)明的分布式事件檢測方法的流程示意圖;圖3示出了文法分析模塊中的本地分析表的生成過程的流程示意圖;圖4示出了使用分布式項目集簇生成算法生成文法分析模塊本地分析表以及文法控制模塊的調度策略表的一個示例的示意圖;圖5A到5E示出了以G1和G2為例說明分布式分析表構造的示意圖;圖6示出了根據本發(fā)明的一個文法分析模塊實施例的控制器邏輯流程圖;圖7示出了分布式帶謂詞PLR(O)的分析過程的運行序列圖;圖8示出了分布式狀態(tài)棧的狀態(tài)示意圖;圖9示出了在表5的過程中的步驟15對應的狀態(tài)棧;圖10示出了在采用多個協(xié)程的情況下進行的異步調度策略的示意圖;圖11示出了根據本發(fā)明的分布式事件檢測裝置的方框示意圖;圖12示出了圖11中的文法分析模塊的一個示例的方框示意圖;和圖13示出了圖12中的文法控制模塊的一個示例的方框示意圖。在所有附圖中相同的標號指示相似或相應的特征或功能。
具體實施例方式下面描述本公開的各個方面。應該明白的是,本文的教導可以以多種多樣形式具體體現(xiàn),并且在本文中公開的任何具體結構、功能或兩者僅僅是代表性的?;诒疚牡慕虒В绢I域技術人員應該明白的是,本文所公開的一個方面可以獨立于任何其它方面實現(xiàn), 并且這些方面中的兩個或多個方面可以按照各種方式組合。例如,可以使用本文所闡述的任何數(shù)目的方面,實現(xiàn)裝置或實踐方法。另外,可以使用其它結構、功能、或除了本文所闡述的一個或多個方面之外或不是本文所闡述的一個或多個方面的結構和功能,實現(xiàn)這種裝置或實踐這種方法。此外,本文所描述的任何方面可以包括權利要求的至少一個元素。下面將參照附圖描述本發(fā)明的各個實施例。在本發(fā)明中,采用分布式帶謂詞的上下文無關文法來預置檢測規(guī)則,所述檢測規(guī)則包括分布式的協(xié)議規(guī)則和攻擊規(guī)則。所述分布式預置過程主要為通過規(guī)則來定義處于多個不同文法模塊上的協(xié)議事件以及處于不同文法分析模塊之間的協(xié)議事件之間的關系, 然后在某個文法分析模塊上基于該文法分析模塊或者其他文法分析模塊中提供的協(xié)議原子事件或協(xié)議抽象事件來定義攻擊規(guī)則。換言之,攻擊被定義為分布于若干子文法上的滿足一定謂詞的一個協(xié)議事件、或者多個協(xié)議事件的連續(xù)出現(xiàn)。本發(fā)明的分布式帶謂詞的上下文無關文法G是由多個子文法構成的集合G = G1 U G2 U ... U Gn其中Gi是一個五元組,其格式如下Gi = {ViN, ViljSijRijPJ其中ViN為Gi的非終結符號集,包含非終結符號Vin,Vil為子文法Gi的終結符號集,包含終結符號Vit,ViT和ViN通稱為符號集Vi,符號集Vi中的項稱為符號Vi,Si是目標文法符號,Si e ViN, Ri是文法的產生式集,Pi是文法的謂詞集,謂詞是產生式右部符號所應滿足的限制條件,由邏輯運算符、算術運算符以及函數(shù)調用的組合構成。通常,Gi的產生式的格式為

vin :w產生式的左部為一個非終結符Vin e ViN,產生式的右邊w包含若干個文法Gi的帶謂詞的符號Vip e \和/或其他文法Φ j)的帶謂詞的符號、,e、,產生式的語義是 產生式的左部符號是由帶謂詞的右部符號歸結而來。下面以一個具體攻擊文法G為例來說明如何使用所述的分布式帶謂詞的上下文無關文法來定義分布式網絡攻擊。文法G包含兩個子文法,G1和G2,文法G1中,終結符號集Vit = {t},協(xié)議終結符t 代表一個原始的tcp數(shù)據包,非終結符號集合Vin = {REQ,ACK},文法G1的產生式集R包括REQ :t (P11) — Rule11ACK :t (P12) — Rule12IACK t (p12) ;― Rule13S :ATK ; — Rule14非終結符REQ表示一個協(xié)議請求事件,該事件是由一個滿足謂詞P11的協(xié)議終結符 t構成的,非終結符ACK表示一個協(xié)議應答事件,該事件是由一個滿足謂詞P12的協(xié)議終結符t構成的,目標文法符號S是文法G1的分析目標,非終結符S不是由本地事件派生而來, 而是由子文法G2中的事件分析而來。在文法G2中,非終結符號集合V2n = {ATK1,ACK2,ATK},文法G2中沒有定義目標文法符號,這意味著文法G2本身缺乏分析目標,它只能作為其他文法的服務文法存在。文法 G2的產生式集R包括ATKl :REQ(p21) ;― Rule21ATK2 :ACK(p22) ;^ Rule22ATK =ATKl— Rule23ATK2 ; — Rule24非終結符ATKl表示一個攻擊,該攻擊是由一個滿足謂詞P21的G1文法分析模塊的協(xié)議非終結符REQ構成的,非終結符ATK2也表示一個攻擊,該攻擊是由一個滿足謂詞P22的 G1文法分析模塊的協(xié)議非終結符ACK構成的,非終結符ATK由ATKl或者ATK2派生而來。按照這種方式,在由G1和G2組成的分布式文法分析系統(tǒng)中,G1和G2將能夠形成某種形式的互動,即在G1解析事件S時,由于G1不知道何為ATK,因此將控制權交給文法控制模塊Gtl,在文法控制模塊Gtl的調度下,將控制權交給G2來進行分析,但G2也缺乏對于REQ和 ATK的知識,因此在文法控制模塊Gtl的調度下,又將控制權交還給G1,如此,通過控制權的轉移來實現(xiàn)分布式的事件檢測。圖2示出了根據本發(fā)明的分布式事件檢測方法的一個示例的流程示意圖,該分布式事件檢測方法由包括文法控制模塊和至少包括初始文法分析模塊(即,第一文法分析模塊)的多個文法分析模塊執(zhí)行。在該示例中,包括兩個文法分析模塊G1和G2,其中G1為第一文法分析模塊。如圖2所示,首先,在步驟S210中,初始文法分析模塊G1接收到外部輸入事件,即,待檢測事件。然后,在步驟S220中,根據初始文法分析模塊G1的本地分析表進行分析,并且判斷該待檢測事件(比如在某些狀態(tài)下)是否需要轉移到其他文法分析模塊來處理,即, 在分析過程中是否產生無法分析的事件。關于文法分析模塊的本地分析表如何生成將在下面詳細描述。如果在分析時判斷出在某些狀態(tài)下該待檢測事件需要轉移到其他文法分析模塊來進行處理(即,產生出文法分析模塊G1無法分析的事件)時,也就是說,步驟S220的判斷為是時,則將該所產生的無法分析的事件作為下一待檢測事件包含在調度請求中,發(fā)送給文法控制模塊Gtl(步驟S230),例如,將該無法分析的事件(以及共享狀態(tài)棧,如果需要) 封裝成調度請求發(fā)送給文法控制模塊Gtl。當文法控制模塊Gtl接收到文法分析模塊G1的調度請求后,在步驟S240,文法控制模塊Gtl在預先生成的調度策略表中,基于所接收到的調度請求中包含的下一待檢測事件 (以及共享狀態(tài)棧的棧頂狀態(tài),如果需要),搜索與該下一待檢測事件關聯(lián)的外部文法分析模塊。所述調度策略表是反映待檢測事件(共享狀態(tài)棧的棧頂狀態(tài),如果存在)與對應的文法分析模塊之間的關聯(lián)關系的表格。在一個示例中,所述調度策略表是預先利用各個文法分析模塊返回的項目集簇編號以及可接收事件列表生成的,所述文法分析模塊的項目集簇是各個文法分析模塊在形成本地生成表時利用分布式項目集簇算法生成的。在搜索到關聯(lián)的外部文法分析模塊(即,目標文法分析模塊,在本示例中為G2) 后,在步驟S250中,文法控制模塊Gtl向文法分析模塊G2發(fā)送包含該下一待檢測事件的調度請求。在接受到該調度請求后,在步驟S260,文法分析模塊G2利用自己的本地分析表 (和共享狀態(tài)棧,如果需要)來進行文法分析。然后,在步驟S270,如果在文法分析模塊G2中能夠得到分析結果,則將針對下一該待檢測事件的分析結果(和共享狀態(tài)棧,如果需要), 發(fā)送給文法控制模塊Gtl,例如,將該分析結果(以及共享狀態(tài)棧,如果存在)封裝在應答消息中發(fā)送給文法控制模塊&。這里要說明的是,如果在文法分析模塊G2中進行分析時判斷出還需要利用其它文法分析模塊進行進一步的分析(即,產生文法分析模塊G2無法分析的事件)時,則向文法控制模塊Gtl發(fā)送進一步的調度請求,然后,重復上述步驟S220到S290 繼續(xù)進行處理。在接收到分析結果后,在步驟S280中,文法控制模塊Gtl根據調度策略表進行必要處理,然后在步驟S290中,將該分析結果返回給發(fā)出調度請求的文法分析模塊(在本示例中為初始文法分析模塊G1)。在接收到分析結果后,發(fā)出調度請求消息的文法分析模塊G1利用該分析結果來對當前處理的事件繼續(xù)進行文法分析。如果該文法分析模塊得出分析結果,且該文法分析模塊是初始文法分析模塊,則輸出分析結果作為檢測結果。如果該文法分析模塊不是初始文法分析模塊,則繼續(xù)將分析結果返回給文法控制模塊&。在存在多于兩個文法分析模塊的情況下,不斷重復上述過程,直到所述初始文法分析模塊G1得到待檢測事件的檢測結果。圖3示出了文法分析模塊中的分析表的生成過程的流程示意圖。如圖3所示,在步驟S310中,分布式事件檢測裝置根據各文法分析模塊所承擔的任務,確定各文法分析模塊和文法Gi的綁定關系。接著,在步驟S320中,在文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成項目集簇。然后,在步驟S330中,各文法分析模塊對所生成的項目集族進行轉換, 得到相應的下推自動機分析表(即,本地分析表),所述下行自動機分析表支持并行分析。圖4以兩個文法分析模塊G1W2以及文法控制模塊Gtl為例對文法分析模塊中的本地分析表以及文法控制模塊的調度策略表的生成過程進行說明。如圖4所示,在步驟S410中,文法分析模塊G1進行文法分析以得到項目集簇,并且判斷自己的分析目標是否需要利用其他文法分析模塊中定義的事件來進行推導,即存在無法解析的事件。在判斷出存在無法解析的事件時,例如,G1發(fā)現(xiàn)該分析目標S需要由在其他文法分析模塊中定義的事件ATK規(guī)約時,在步驟S420中,向文法控制模塊Gtl發(fā)送包含該事件(例如,ATK)的項目集簇生成請求。

在接收到文法分析模塊G1發(fā)出的項目集簇生成請求后,在步驟S430中,文法控制模塊Gtl根據每個文法分析模塊注冊的公開事件列表,基于所接收的項目集簇生成請求中包含的事件,確定所述目標文法分析模塊,在本示例中為文法分析模塊G2。然后,在步驟S440 中,文法控制模塊Gtl向文法分析模塊G2發(fā)送包含該事件(例如,ATK)的項目集簇生成請求。在接收到該項目集簇生成請求后,在步驟S450中,文法分析模塊G2以該事件(例如,ATK)為目標生成項目集簇(S卩,初始項目集簇IJ,并將該項目集簇轉換為本地分析表。 關于如何生成項目集簇,在授權公告號為CN101060396B的專利申請中已經詳細描述,該申請在此通過引用并入。然后,在步驟S460中,文法分析模塊G2將所生成的項目集簇編號(例如,項目集簇IJ以及可接收事件列表返回文法控制模塊&。在從文法分析模塊G2接收到項目集簇編號以及可接收事件列表后,文法控制模塊 G0根據上述信息建立起各文法分析模塊的項目集簇之間的關系,并在從所有文法分析模塊接收到項目集簇編號以及可接收事件列表后,根據上述信息建立調度策略表。在使用分布式項目集簇生成算法時,遞歸地執(zhí)行上述過程,直到所有的文法分析模塊都不存在尚未解析的子目標,從而最終得到分布式項目集簇。下面結合圖5A到5E,以前述文法分析模塊G1和G2為例來說明分布式分析表構造過程,其中,文法分析模塊G1是第一文法分析模塊。根據傳統(tǒng)的項目集生成算法,首先,將得到一個只包含S的初始項目集,如圖5A所
7J\ ο然后,繼續(xù)進行閉包操作,將更多的項目引入的時候,由于這些項目是由位于其他文法分析模塊中的規(guī)則所對應的項目(即,遠程項目),暫時將這些遠程項目作為一個整體來考慮,如圖5B所示。遞歸地執(zhí)行閉包操作,可以得到圖5C中示出的項目集構造。圖5C中示出的項目集實際上是使用傳統(tǒng)的方法得到的項目集,但是這個項目集顯然不是期望的,因為該項目集中同時包含了文法G1和G2的,而這不符合本發(fā)明的設計思想。根據本發(fā)明的項目集簇生成算法的核心思想是盡可能地將文法Gi所對應的項目集隱蔽在該文法分析模塊的內部,而不是擴展到其他文法G^分析模塊中,這使得每個文法分析模塊都無需知道其他文法分析模塊內部的知識,從而提高可擴展性。在本發(fā)明中,需要將上面的圖5C中的全局項目集拆封成幾個項目集(即,局部項目集),然后在項目集之間建立起“包含”關系。
按照這種方式,當文法分析模塊G1發(fā)現(xiàn)自己有一個分析目標,但是該目標需要由一個存在于其他文法分析模塊中的事件ATK規(guī)約而來,于是將該事件(ATK)包含在項目集簇生成請求中,提交給文法控制模塊Gtl,同時將當前項目集Iltl傳遞給文法控制模塊&。在文法控制模塊Gtl接收到這個請求后,根據每個文法模塊注冊的公開事件列表, 發(fā)現(xiàn)文法分析模塊G2可以解析該事件,于是向文法分析模塊G2提出以ATK為目標的項目集簇生成請求。

在文法分析模塊G2接收到該請求后,根據本地文法G2生成以ATK為目標的項目集,并將初始項目集I2tl以及可接收事件的列表(t)返回給文法控制模塊&。隨后,文法控制模塊Gtl根據上述信息建立起各文法的局部項目集之間的關系,并據此建立調度策略表。對于每個將處理轉移到其它文法分析模塊的包含關系,文法控制模塊Gtl將一個虛擬狀態(tài)插入到狀態(tài)棧中,對應于每個返回,則增加一個將虛擬狀態(tài)從狀態(tài)棧中刪除的動作。比如對于上述情況將增加兩項操作,分別為移入操作和移出操作,移入操作為狀態(tài)I10事件t動作移入I2tl,然后將控制移交給文法分析模塊G2。移出操作為狀態(tài)I20事件ATK動作移出I2tl,然后將控制移交給文法分析模塊G1。在文法控制模塊Gtl完成上述工作后,將給文法分析模塊G1回復一個應答信息,該應答信息將包括一個可接收事件列表,由此,文法Gl管理模塊就可以在本地分析表中增加一個表項,其內容為狀態(tài)I10事件:t動作將控制移交給文法控制模塊&。上述過程遞歸地進行,比如,文法G2模塊又發(fā)現(xiàn)REQ和ACK是外部事件,因此又將這兩個事件和當前項目集編號發(fā)送給文法控制模塊進行進一步的分析,最終得到如圖5D 所示的分布式項目集在圖5D所示的分布式項目集中,用虛線來表示這種“包含”關系,通過使用“包含” 關系,系統(tǒng)可以處于以下三種狀態(tài)中A)I10B) I10+I20C)I10+I20+In很顯然,這種“包含”關系非常適合使用棧這種數(shù)據結構來表達,對應于一個“包含”關系,就意味著向狀態(tài)棧中移進(shift) —個目標子項目集所對應的編號,這樣,分布式項目集和傳統(tǒng)項目集將有可能具有統(tǒng)一的描述機制。在圖5D的基礎上,以Iltl,I20, I11為核心繼續(xù)使用傳統(tǒng)的項目集簇生成算法,將得到完整的分布式項目集簇,如圖5E所示。在圖5E中,左側由文法分析模塊G1來維護(包含兩個核心,分別是Iltl和I11),右側部分由文法分析模塊G2來維護,虛線部分由文法控制模塊Gtl來維護。按照這種方式,可以得到分別如表1、表2和表3所示的文法分析模塊G1的本地分析表、文法分析模塊G2的本地分析表和文法控制模塊Gtl的調度策略表。
權利要求
1.一種分布式環(huán)境下的事件檢測方法,由包括文法控制模塊和至少包括第一文法分析模塊的多個文法分析模塊的裝置執(zhí)行,所述方法包括在第一文法分析模塊對所接收到的待檢測事件進行分析的過程中產生無法分析的事件后,在所述文法控制模塊的控制下,執(zhí)行下述過程,直到所述第一文法分析模塊得到該待檢測事件的檢測結果將當前文法分析模塊無法分析的事件作為下一待檢測事件包含在調度請求中發(fā)送給所述文法控制模塊;所述文法控制模塊基于所生成的調度策略表,根據所述調度請求中包含的下一待檢測事件,調度所述多個文法分析模塊中的其它文法分析模塊作為目標文法分析模塊來進行文法分析,所述調度策略表反映待檢測事件與用于處理該待檢測事件的文法分析模塊的關聯(lián)關系;在被調度的目標文法分析模塊中,基于該目標文法分析模塊的本地分析表,對所述下一待檢測事件進行文法分析;在該下一待檢測事件的分析過程中沒有發(fā)現(xiàn)該目標文法分析模塊無法分析的事件時, 該目標文法分析模塊向所述文法控制模塊返回分析結果,以供該當前文法分析模塊繼續(xù)進行文法分析;或者在該下一待檢測事件的分析過程中發(fā)現(xiàn)該目標文法分析模塊無法分析的事件時,將該目標文法分析模塊作為新的當前文法分析模塊,重復上述過程,其中,各個文法分析模塊的本地分析表是在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成的。
2.如權利要求1所述的事件檢測方法,其中,使用分布式項目集簇生成算法生成各個文法分析模塊的本地分析表和文法控制模塊的調度策略表包括對于每個文法分析模塊,在該文法分析模塊進行文法解析時判斷出存在無法解析的事件時, 向所述文法控制模塊發(fā)送包含該事件的項目集簇生成請求;在接收到所述項目集簇生成請求后,所述文法控制模塊根據每個文法分析模塊預先注冊的公開事件列表,基于所述項目集簇生成請求中包含的事件,確定目標文法分析模塊,并且向該目標文法分析模塊發(fā)送包含所述事件的項目集簇生成請求;在接收到所述項目集簇生成請求后,所述目標文法分析模塊基于帶謂詞上下文無關文法,生成以所述事件為目標的項目集簇,并將所生成的項目集簇轉換為下推自動機分析表, 所述下推自動機分析表支持并行分析;在生成所述目標文法分析模塊的項目集簇后,所述目標文法分析模塊將所述項目集簇編號和可接收事件列表返回給所述文法控制模塊;所述文法控制模塊基于各個文法分析模塊返回的項目集簇編號和可接收事件列表生成所述調度策略表。
3.如權利要求2所述的事件檢測方法,其中,所述文法控制模塊的公開事件列表是由各個文法分析模塊將可供其它文法分析模塊調用的事件注冊到所述文法控制模塊而生成的。
4.如權利要求1所述的事件檢測方法,其中,所述文法控制模塊基于所生成的調度策略表,根據當前文法分析模塊發(fā)送的調度請求,調度所述多個文法分析模塊中的其它文法分析模塊作為目標文法分析模塊來進行文法分析包括在接收到當前文法分析模塊發(fā)送的包含下一待檢測事件的調度請求后,所述文法控制模塊在調度策略表中搜索與該下一待檢測事件匹配的目標文法分析模塊;以及在搜索出目標文法分析模塊后,所述文法控制模塊向所述目標文法分析模塊發(fā)送包含有該下一待檢測事件的調度請求,以請求所述目標文法分析模塊針對該下一待檢測事件進行文法分析。
5.如權利要求1所述的事件檢測方法,其中,所述調度請求還包括共享分析狀態(tài)棧。
6.如權利要求1所述的事件檢測方法,其中,在每個文法分析模塊和文法控制模塊中, 采用多個協(xié)程來實現(xiàn)異步并行處理,所述協(xié)程是文法分析模塊對于每個會話維護的輕量級用戶線程。
7.一種分布式環(huán)境下的事件檢測裝置,包括至少包括第一文法分析模塊的多個文法分析模塊以及文法控制模塊,其中,所述文法分析模塊包括第一接收單元,用于接收待檢測事件或者從所述文法控制模塊接收包含下一待檢測事件的調度請求,以及接收從所述文法控制模塊返回的分析結果;文法分析單元,用于基于所生成的該文法分析模塊的本地分析表,對所接收的待檢測事件或所述調度請求中的下一待檢測事件進行文法分析;調度請求生成單元,用于在所分析的待檢測事件的分析過程中發(fā)現(xiàn)無法分析的事件時,生成將該無法分析的事件作為下一待檢測事件包含在內的調度請求;第一發(fā)送單元,用于將所述調度請求發(fā)送給所述文法控制模塊,或者在所述文法分析模塊獲得分析結果時,向外部輸出該檢測事件的檢測結果或者向所述文法控制模塊返回分析結果,其中,各個文法分析模塊的本地分析表是在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成的, 其中,所述文法控制模塊包括第二接收單元,用于從文法分析模塊接收包含下一待檢測事件的調度請求或者包含該下一待檢測事件的分析結果;搜索單元,用于在接收到所述包含下一待檢測事件的調度請求后,在所生成的調度策略表中,搜索與該下一檢測事件匹配的目標文法分析模塊,所述調度策略表反映待檢測事件與用于處理該待檢測事件的文法分析模塊的關聯(lián)關系;第二發(fā)送單元,用于在搜索出所述目標文法分析模塊后,向該目標文法分析模塊發(fā)送包含該下一待檢測事件的調度請求,以及將所接收的該下一待檢測事件的分析結果發(fā)送給發(fā)出所述調度請求的文法分析模塊來繼續(xù)進行文法分析。
8.如權利要求7所述的事件檢測裝置,其中,所述文法分析模塊還包括本地分析表生成單元,用于在所述文法控制模塊的控制下,針對使用帶謂詞上下文無關文法預置的事件檢測規(guī)則,使用分布式項目集簇生成算法生成該文法分析模塊的項目集簇并轉換為本地分析表;其中,所述文法分析模塊中的第一發(fā)送單元向所述文法控制模塊發(fā)送項目集簇編號以及可接收事件列表,以及所述文法控制模塊還包括調度策略表生成單元,用于基于所接收的項目集簇編號以及可接收事件列表生成調度策略表。
9.如權利要求8所述的事件檢測裝置,其中,所述文法分析模塊還包括項目集簇生成請求生成單元,用于當在生成本地分析表時判斷出存在無法解析的事件時,生成項目集簇生成請求,該項目集簇生成請求將該無法解析事件作為下一待檢測事件包含在內,其中,所述文法分析模塊中的第一發(fā)送單元還用于將所生成的項目集簇生成請求發(fā)送給所述文法控制模塊并在所述文法控制模塊的控制下轉發(fā)給目標文法分析模塊,所述目標文法分析模塊是由所述文法控制模塊中的搜索單元基于項目集簇生成請求中包含的下一待檢測事件,根據每個文法分析模塊預先注冊的公開事件列表確定的。
10.如權利要求9所述的事件檢測裝置,其中,所述文法控制模塊還包括公開事件列表生成單元,用于根據各個文法分析模塊注冊的可供其它文法分析模塊調用的事件生成公開事件列表。
11.如權利要求7所述的事件檢測裝置,其中,所述文法分析模塊和所述文法控制模塊中的每個還包括異步調度單元,用于在每個文法分析模塊和文法控制模塊中,采用多個協(xié)程來實現(xiàn)異步并行處理,所述協(xié)程是文法分析模塊對于每個會話維護的輕量級用戶線程。
全文摘要
本發(fā)明提供一種分布式環(huán)境下的事件檢測方法,包括在第一文法分析模塊分析待檢測事件時產生無法分析的事件后,執(zhí)行下述過程,直到第一文法分析模塊得到檢測結果將當前文法分析模塊無法分析的事件作為下一待檢測事件包含在調度請求中發(fā)送給文法控制模塊;文法控制模塊基于調度策略表,調度其它文法分析模塊作為目標文法分析模塊來進行文法分析;在被調度的目標文法分析模塊中,基于本地分析表進行文法分析;在文法分析時沒有發(fā)現(xiàn)無法分析的事件時,向文法控制模塊返回分析結果,以供繼續(xù)文法分析;或者在文法分析時發(fā)現(xiàn)無法分析的事件時,將該目標文法分析模塊作為新的當前文法分析模塊重復上述過程。利用所述方法,可以提高系統(tǒng)的可擴展性。
文檔編號H04L12/26GK102427416SQ20111041536
公開日2012年4月25日 申請日期2011年12月12日 優(yōu)先權日2011年12月12日
發(fā)明者王勇 申請人:東軟集團股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1