欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法

文檔序號:6573955閱讀:283來源:國知局

專利名稱::正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法
技術(shù)領(lǐng)域
:本發(fā)明屬于通訊領(lǐng)域,也可應用于搜索引擎、數(shù)據(jù)庫斥企索、自然語言理解、文檔分類等可能使用正則表達式的領(lǐng)域,尤其涉及一種正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法。
背景技術(shù)
:隨著全IP網(wǎng)絡(ALL-IP)、固定移動融合(FixedandMobileConvergence,簡稱FMC)、多重播放(Triple-play)等概念的提出,傳統(tǒng)的IP網(wǎng)絡正在向融合數(shù)據(jù)、語音和視頻于一體的多業(yè)務統(tǒng)一承載網(wǎng)轉(zhuǎn)變。但是IP網(wǎng)絡固有的數(shù)據(jù)傳送方式和本質(zhì)上開放的特征無法很好地滿足電信級業(yè)務的需要,在網(wǎng)絡安全性、可管理性和關(guān)鍵業(yè)務的QoS和QoE保證等方面都有待改進。為了對一些關(guān)鍵業(yè)務進行精確的業(yè)務識別和控制,除了按照傳統(tǒng)的方法分析報文頭中的五元組等字段外,還需要對報文的負荷部分進行檢測,比如一些P2P流量使用非知名的端口,這樣僅靠分析五元組就無法識別出此類流量。DPI(DeepPacketInspection,深度報文^r測)技術(shù)作為一種靈活有效的業(yè)務識別技術(shù)應運而生,并廣泛應用在防火墻、IDS/IPS、業(yè)務控制網(wǎng)關(guān)等設備上,實現(xiàn)比如應用層負載均衡、基于特征的安全過濾等業(yè)務。和傳統(tǒng)的報文檢測方式相比,DPI不僅對原來的TCP/IP4層(IP層)以下的協(xié)議進行分析,還增加了4層以上信息的檢測,因而其提供的信息更豐富,但處理也更為復雜。傳統(tǒng)的DPI檢測系統(tǒng)通過將報文負荷和預先設定的字符串集合進行比較來判斷報文是否滿足特定特征。近年來,越來越多的系統(tǒng)采用正則表達式取代字符串來描述報文特征。和字符串相比,正則表達式能夠非常靈活、簡單、有效地描述各種特征,使得特征串具有動態(tài)特性,適合各種動態(tài)搜索,比如b,ab,aab,aaab,aaaab...這一系列的字符串特征可以簡單地用一個正則表達式a*b來表示。不同的正則表達式語言規(guī)范的描述能力不同,一般目前業(yè)界比較流行的正則表達式規(guī)范有POSIX(PortableOperatingSystemInterface,可移植的操作系統(tǒng)界面)和PCRE(PerlCompatibleRegularExpression,Perl兼容的正則表達式)兩種。PCRE中增加了一些POSIX不支持的擴展,具有更強大的表達能力。比如開源代碼Snort就采用PCRE規(guī)范來描述其部分規(guī)則。目前大部份設備還是使用POSIX規(guī)范,有些設備號稱能夠支持PCRE規(guī)范,但是從其產(chǎn)品資料分析,其實仍然只是PCRE規(guī)范中兼容POSIX規(guī)范的一個子集,并沒有真正支持復雜的PCRE語法。判斷報文內(nèi)容中是否包含正則表達式表示的規(guī)則的操作稱為正則表達式匹配,目前,業(yè)界比較流行的正則表達式匹配方法有一種方法是基于DFA確定性有限狀態(tài)機方法,這類方法都是預先將正則表達式轉(zhuǎn)換為某種形式描述的狀態(tài)轉(zhuǎn)換表,匹配過程中,將報文中的符號作為輸入條件查詢狀態(tài)轉(zhuǎn)換表確定下一個跳轉(zhuǎn)狀態(tài)來實現(xiàn)狀態(tài)遷移。這種方法的優(yōu)點是"查表-跳轉(zhuǎn),,的操作模式比較簡單,能夠很方便用硬件實現(xiàn),匹配速度很快。缺點是只支持較為簡單的正則表達式規(guī)范,對PCRE中的很多擴展選項(比如條件表達式、A、$等和位置相關(guān)的符號、匹配選項)都無法很好地支持。此外,部分正則表達式(比如.*AB.{j}CD)用DFA表示時,其狀態(tài)數(shù)目隨正則表達式的長度呈指數(shù)級增長關(guān)系,給存儲帶來很大的負擔。另一種方法是NFA非確定性有限狀態(tài)機方法,其基本原理類似于DFA方法,所不同的是NFA允許出現(xiàn)空符號(即不輸入任何符號實現(xiàn)跳轉(zhuǎn)),且NFA輸入一個符號可以對應多個下一個跳轉(zhuǎn)狀態(tài)。這種不確定性導致其用硬件實現(xiàn)非常困難,目前也有一些使用硬件實現(xiàn)NFA的方法,一般都是將NFA狀態(tài)表直接用邏輯器件實現(xiàn),這樣如果更新正則表達式需要對邏輯器件更新邏輯更新,存在擴展性差的問題。第三種方法是程序解析的方法。這類方法一般不顯示生成狀態(tài)轉(zhuǎn)換表。以PCRE源碼庫為例,它將正則表達式分解為程序可以理解的最小片段。匹配過程中,程序?qū)笪闹械姆柊凑粘霈F(xiàn)的位置落入不同的片段中,如果符號能夠符合這個片段,則要么在這個片段中等待下一個符號,或者進入下一個片段。一些軟件實現(xiàn)可能采用其他特定的處理方式,但都可以歸類為程序解析。這種方法通常具有很良好的擴展性,能夠支持較為復雜的正則表達式語法,但是和狀態(tài)機的方式比,它的匹配速度比較慢,容易成為整個系統(tǒng)的瓶頸。現(xiàn)有技術(shù)一給出一種分層的報文過濾架構(gòu),在每一層過濾器上可以定義不同的過濾標準。通過第一層過濾的報文送往第二層過濾器進行過濾,直到得出過濾結(jié)果?,F(xiàn)有技術(shù)一適合于各層完成的過濾標準不相同的情況,而且通常由較先出現(xiàn)的層次完成一定的篩選,減少后面層次所需的數(shù)據(jù)處理量。因而各層次之間有嚴格的先后順序,從提高整體效率的角度考慮,應該將處理越復雜的過濾器越往后放置?,F(xiàn)有技術(shù)一主要有以下缺點各層過濾器間有嚴格的順序關(guān)系,不夠靈活;會造成報文的處理延遲時間加長,比如一些報文根本不需要第一層過濾器進行處理,但是按照層次化過濾的架構(gòu),這些報文也需要經(jīng)過第一層過濾器后再進入第二層過濾器進行匹配,一方面浪費了第一層過濾器的處理能力,另一方面也造成了整個報文匹配的時間增加。只是籠統(tǒng)地給出了過濾標準的定義,并沒有給出針對正則表達式匹配的具體方案;請參閱圖1,為現(xiàn)有技術(shù)二利用TCAM存儲DFA來實現(xiàn)正則表達式匹配系統(tǒng)的結(jié)構(gòu)示意圖。利用TCAM(TernaryContentAddressableMemory,三重內(nèi)容可尋址存儲器)存儲DFA來實現(xiàn)正則表達式匹配的方法。其實現(xiàn)步驟可以描述為1.利用正則表達式中的元字符(如.*)將一個正則表達式分為多個子表達式,使用TCAM存儲正則表達式(實際存放的是DFA狀態(tài)表)。利用TCAM可以一次比較多個字符的特性,可以以多步長方式實現(xiàn)狀態(tài)機;2.在RAM中存i文報文處理動作;3.預解析器從接受的原始網(wǎng)絡報文中提取需要處理的字段放在消息緩存中;4.消息緩存用來存放需要進行正則表達式匹配的報文消息;5.譯碼電路對寺艮文譯碼,執(zhí)行和報文相關(guān)的指令;6.在譯碼電路的控制下,移位器將報文中的不同部分取出,和Tag中存放的當前狀態(tài)一起送到CAM中進行比較;7.—旦TCAM檢測出正則表達式,則RAM中對應的動作會被譯碼電路執(zhí)行,譯碼電路產(chǎn)生信號給流量控制器。現(xiàn)有技術(shù)二主要有以下缺點實現(xiàn)和TCAM可以同時訪問多位的特性密切相關(guān),不具有通用性;TCAM價格昂貴、功耗較大也限制了其使用;方案中為了減少子表達式的數(shù)目以達到減少占用TCAM條目數(shù)的目的,需要將不同的DFA合成為一個DFA,如果對正則表達式進行更新,需要重新編譯整個DFA;對于PCRE中的很多擴展選項都無法很好地支持?,F(xiàn)有技術(shù)三中在整個檢測系統(tǒng)中使用專門的正則表達式檢測模塊,遇到需要檢測正則表達式時將流量輸入到該模塊進行處理,該模塊采用ASIC芯片實現(xiàn)DFA,目前只支持POSIX正則表達式,實現(xiàn)細節(jié)屬于商業(yè)秘密無法獲知。現(xiàn)有技術(shù)三的缺點無法支持PCRE正則表達式;經(jīng)分析得知,如果需要支持PCRE正則表達式,需要用戶在ASIC芯片以外提供實現(xiàn),且沒有給出具體的實現(xiàn)方案。
發(fā)明內(nèi)容本發(fā)明的實施例的目的在于提供一種正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法,該正則表達式編譯系統(tǒng)及方法,旨在解決現(xiàn)有技術(shù)中的系統(tǒng)沒有考慮到正則表達式本身的特點,僅采用DFA方法處理所有正則表達式,無法真正支持PCRE正則表達式的問題。本發(fā)明的實施例是這樣實現(xiàn)的,一種正則表達式編譯系統(tǒng),包括詞法分析模塊和至少一編譯模塊,所述詞法分析模塊分析正則表達式的詞法特點,根據(jù)預設詞法規(guī)則將正則表達式送往不同的編譯模塊處理,所述編譯模塊接收正則表達式,將其編譯成特定形式的數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的實施例所采取的另一技術(shù)方案包括一種正則表達式匹配系統(tǒng),包括至少一匹配模塊,所述匹配模塊對符合其詞法特點的正則表達式規(guī)則進行匹配。本發(fā)明的實施例所采取的又一技術(shù)方案包括一種正則表達式編譯方法,包括接收用戶輸入的正則表達式規(guī)則,對正則表達式進行詞法解析,根據(jù)預設規(guī)則將正則表達式編譯成特定形式的數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的實施例所采取的又一技術(shù)方案包括一種正則表達式匹配方法,包括接收前端模塊發(fā)送的需要進行匹配操作的數(shù)據(jù)報文;對符合其詞法特點的正則表達式規(guī)則進行匹配。本發(fā)明的實施例的正則表達式匹配系統(tǒng)及匹配方法通過結(jié)合使用多種正則表達式匹配算法,既保證了正則表達式匹配引擎具有較高的處理速度,又保證了對正則表達式的各種擴展語法的兼容性;本發(fā)明的實施例的正則表達式編譯系統(tǒng)及編譯方法通過使用具有反饋機制的編譯器,能夠根據(jù)實時流量的特征調(diào)整引擎的處理行為,提高系統(tǒng)吞吐量。本發(fā)明的特征及優(yōu)點將通過實施例結(jié)合附圖進行詳細說明。圖1是現(xiàn)有技術(shù)二利用TCAM存儲DFA來實現(xiàn)正則表達式匹配系統(tǒng)的結(jié)構(gòu)示意圖2是本發(fā)明實施例的正則表達式匹配引擎的結(jié)構(gòu)示意圖;圖3是本發(fā)明實施例的正則表達式匹配系統(tǒng)采用單通道鏈接方式的結(jié)構(gòu)示意圖4是本發(fā)明實施例的正則表達式匹配系統(tǒng)采用并聯(lián)鏈接方式的結(jié)構(gòu)示意圖5是本發(fā)明實施例的正則表達式匹配系統(tǒng)采用串聯(lián)鏈接方式的結(jié)構(gòu)示意圖。具體實施例方式為了使本發(fā)明實施例的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明實施例進行進一步詳細說明。請參閱圖2,為本發(fā)明實施例的正則表達式匹配引擎的結(jié)構(gòu)示意圖。本發(fā)明實施例的正則表達式匹配引擎包括正則表達式編譯系統(tǒng)和正則表達式匹配系統(tǒng)。正則表達式編譯系統(tǒng)與系統(tǒng)接口相連,接收用戶輸入的需要匹配的正則表達式規(guī)則。正則表達式匹配系統(tǒng)與前端模塊連接,接收需要進行匹配操作的數(shù)據(jù)報文,正則表達式匹配系統(tǒng)還可以接收正則表達式信息,用來指示需要匹配的正則表達式。本發(fā)明實施例的正則表達式編譯系統(tǒng)包括詞法分析模塊、分類信息庫、DFA編譯模塊、DFA狀態(tài)轉(zhuǎn)換表、PCRE編譯模塊和PCRE片段。詞法分析模塊接收到用戶輸入的正則表達式規(guī)則,對正則表達式進行詞法解析,根據(jù)預設規(guī)則和其詞法特點確定該正則表達式是送到DFA編i奪模塊,還是PCRE編譯模塊進行編譯,同時,該決策信息被記錄在分類信息庫中。如果DFA編譯;f莫塊接收到正則表達式,將正則表達式編譯為DFA狀態(tài)轉(zhuǎn)換表,并存儲,如果PCRE編譯模塊接收到正則表達式,將正則表達式編譯為PCRE片段,并存儲。本發(fā)明實施例的正則表達式的編譯方法包括用戶通過系統(tǒng)接口(比如命令行或操作界面等)將需要匹配的正則表達式規(guī)則輸入到引擎;詞法分析模塊接收到用戶輸入的正則表達式規(guī)則,對正則表達式進行詞法解析,根據(jù)預設規(guī)則和其詞法特點確定該正則表達式是送到DFA編譯模塊,還是PCRE編譯模塊進行編譯。同時,該決策信息被記錄在分類信息庫中;如果DFA編譯模塊接收到正則表達式,將正則表達式編譯為DFA狀態(tài)轉(zhuǎn)換表,并存儲,其中,狀態(tài)轉(zhuǎn)換表并不一定指原始的二維轉(zhuǎn)換表或轉(zhuǎn)換圖等特定形式,出于其他因素如空間效率考慮,還可能對狀態(tài)轉(zhuǎn)換表進行壓縮,對不同的DFA進行合并等操作,這時狀態(tài)轉(zhuǎn)換表的存儲形式可能發(fā)生變化,不影響本發(fā)明的實質(zhì)內(nèi)容;如果PCRE編譯模塊接收到正則表達式,將正則表達式編譯為PCRE片段,并存儲。在實際軟件實現(xiàn)時PCRE片段的存儲形式是和具體實現(xiàn)相關(guān)的,形式上的不同不影響本發(fā)明的實質(zhì)內(nèi)容;本發(fā)明實施例的正則表達式匹配系統(tǒng)包括仲裁模塊、DFA適配器、PCRE適配器和綜合輸出模塊。前端模塊發(fā)送需要進行匹配操作的數(shù)據(jù)報文和正則表達式(可選)信息給引擎,其中,數(shù)據(jù)報文可以是通常所說的IP報文,為方便起見,前端的某個模塊可以將原始IP報文中的三層、四層協(xié)議頭移除后交給正則表達式匹配引擎處理;為了跨報文檢測某個正則表達式,前端的某個模塊還可能將報文進行重組;對于需要綜合輸出模塊進行排序、統(tǒng)計的情況,需要送入的數(shù)據(jù)報文中有用于標識報文的字段,比如原始報文中的順序號或者由前端模塊分配的某種標識,不同的報文格式不影響本發(fā)明實施例的實質(zhì)內(nèi)容。圖中前端模塊送給仲裁模塊的正則表達式是編譯模塊為正則表達式設定的標識符,用來指明檢測輸入數(shù)據(jù)報文中含有哪個正則表達式。該標識符在編譯階段產(chǎn)生,由前端模塊根據(jù)自己的處理結(jié)果和某種映射規(guī)則確定該標識符。這樣做的好處是在不同的正則表達式用不同DFA表示時,可以縮小需要匹配的正則表達式范圍;如果由DFA編譯模塊編譯的所有正則表達式被編譯進一個大DFA中,則在進行匹配才喿作時,前端模塊不需要指定標識符;不同DFA實現(xiàn)方式下入口參數(shù)的變化應不影響本發(fā)明實施例的實質(zhì)內(nèi)容。仲裁模塊查找正則表達式相關(guān)的分類信息,確定由哪個適配器進行匹配處理,在進行匹配操作時,仲裁模塊可以確定數(shù)據(jù)報文的流向和順序,可以只有一個匹配模塊進行處理,也可以由多個匹配模塊進行處理。本發(fā)明實施例的正則表達式匹配方法包括前端模塊發(fā)送需要進行匹配操作的數(shù)據(jù)報文和正則表達式(可選)信息給引擎;仲裁模塊查找正則表達式相關(guān)的分類信息,確定由哪個適配器進行匹配處理;DFA適配器/PCRE適配器對數(shù)據(jù)報文進行適配,匹配結(jié)果統(tǒng)一送到綜合輸出模塊,如果有多個DFA/PCRE適配器線程對不同的數(shù)據(jù)報文進行匹配處理,可能因為數(shù)據(jù)報文的長度不同、需要匹配的正則表達式的復雜程度不同等因素,造成先收到的報文比后收到的報文的處理時間長,這時如果直接輸出匹配結(jié)果給后續(xù)業(yè)務模塊,匹配結(jié)果可能是亂序的。如果這種順序很重要,可以在綜合輸出模塊中設置一個緩存來對報文匹配結(jié)果進行排序;排序的方法有多種,比如可以根據(jù)報文的序號來進行??蛇x的,該模塊還可以對匹配結(jié)果進行數(shù)據(jù)統(tǒng)計,數(shù)據(jù)統(tǒng)計條件可以靈活設定,比如在最近30分鐘內(nèi)被DFA適配器處理的前10位的正則表達式;不同的統(tǒng)計條件不影響本發(fā)明的實質(zhì)內(nèi)容;綜合輸出模塊將匹配結(jié)果送給后續(xù)業(yè)務處理模塊,作為業(yè)務處理模塊執(zhí)行動作的依據(jù),可選的,綜合輸出模塊可以將統(tǒng)計信息反饋給詞法分析模塊,作為其分發(fā)正則表達式的參考依據(jù);比如當檢測到某個正則表達式最近經(jīng)常由DFA適配器處理,詞法分析模塊可以將此正則表達式再送到PCRE編譯模塊進行編譯,當DFA適配器忙不過來時,仲裁模塊可以協(xié)調(diào)該報文到PCRE適配器進行處理。在進行匹配操作時,仲裁模塊可以確定數(shù)據(jù)報文的流向和順序,可以只有一個匹配模塊進行處理,也可以由多個匹配模塊進行處理;按照各匹配模塊間的鏈接關(guān)系不同,可以分為單通道、并聯(lián)和串聯(lián)三種鏈接方式。請參閱圖3,單通道鏈接方式是仲裁模塊將數(shù)據(jù)報文調(diào)度到DFA適配器或者是PCRE適配器進行處理,數(shù)據(jù)只流向唯一的適配器。為了簡化起見,在以下的圖中都省略了控制層面的模塊(有些情況下還省略了綜合輸出模塊)。如(a)所示,大部分情況下,一條用戶規(guī)則中只包含某種特定的正則表達式,由仲裁模塊將報文送到DFA或PCRE適配器進行處理;另外一種實施方式如(b)所示,如果某個數(shù)據(jù)才艮文應該是由DFA適配器進行處理,但DFA適配器處理不過來,而這時PCRE適配器剛好空閑,可以由仲裁模塊協(xié)調(diào)報文到PCRE適配器進行處理。這種情況下兩個匹配模塊可能是用不同的器件實現(xiàn),比如DFA適配器用FPGA實現(xiàn),PCRE適配器用多核實現(xiàn)。這樣處理能很方便地實現(xiàn)負載均衡,提高整個引擎的吞吐量。請參閱圖4,并聯(lián)鏈接方式和單通道方式的實施方式(b)的模塊關(guān)系很類似,不同的是,數(shù)據(jù)報文會被分配到各個適配器進行處理。有一些用戶規(guī)則中包含有多個正則表達式,部分正則表達式適合用DFA方式表示,另外一部分正則表達式只能用PCRE方式表示。當有數(shù)據(jù)報文需要匹配這樣的規(guī)則時,兩個適配器可以同時處理報文。這種方式的優(yōu)點是縮短了整個正則表達式匹配引擎的處理時間。請參閱圖5,串聯(lián)鏈接方式下仲裁模塊可以單獨存在,鏈接在DFA適配器前;也可以不需要實現(xiàn)仲裁模塊,將數(shù)據(jù)報文和正則表達式缺省先送到DFA適配器,隱含地由DFA適配器兼任仲裁模塊的角色。如(a)所示,先通過DFA適配器過濾掉不滿足DFA方式表示的正則表達式的數(shù)據(jù)報文,可以避免后續(xù)不必要的PCRE匹配操作;或者如(b)所示,報文缺省被送到DFA適配器,如果DFA適配器能夠處理,就執(zhí)行DFA匹配操作,輸出結(jié)果;否則將報文再送到PCRE適配器進行處理。這樣做的優(yōu)點是模塊間結(jié)構(gòu)較簡單,不需要單獨實現(xiàn)仲裁模塊。本發(fā)明實施例的正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法以DFA和PCRE適配器作為實例進行說明,本發(fā)明的實施例也適合采用其他的匹配方法來處理正則表達式,比如采用DFA和NFA方法。本發(fā)明主要是保護一種結(jié)合使用多種匹配算法進行正則表達式匹配的系統(tǒng)和方法,對使用的算法并不做限制。本發(fā)明實施例的正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法只采用了兩種編譯/匹配模塊,但是可以很方便地擴展到更多種類的編譯/匹配模塊;模塊的數(shù)量不影響本發(fā)明的實質(zhì)內(nèi)容。本發(fā)明實施例中,只列舉了一個DFA適配器和一個PCRE適配器;在實際實現(xiàn)時,沒有這個限制;事實上為了達到最大的處理性能,往往會同時使用多個DFA適配器和多個PCRE適配器,比如采用多個線程。此時,仲裁模塊可以根據(jù)各線程的負荷情況對報文進行分流。這不影響本發(fā)明的實質(zhì)內(nèi)容。本發(fā)明以PCRE規(guī)范的正則表達式為實例進行說明,但是方法對于其他可能的正則表達式規(guī)范也適用。采用不同的正則表達式規(guī)范不影響本發(fā)明的實質(zhì)內(nèi)容。本發(fā)明實施例的正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法是針對網(wǎng)絡環(huán)境下對數(shù)據(jù)報文進行高速正則表達式匹配的情況,但對于搜索引擎、數(shù)據(jù)庫檢索、自然語言理解、文檔分類等這些情況下可能使用其他的正則表達式規(guī)范,而且正則表達式匹配對象也不局限于報文,比如數(shù)據(jù)庫檢索時針對的是數(shù)據(jù)表中的數(shù)據(jù)條目,但本發(fā)明提供的方法和系統(tǒng)同樣適用。本發(fā)明實施例的匹配系統(tǒng)可以在不同的器件中實現(xiàn),也可以在相同器件中實現(xiàn);可以使用硬件的方式實現(xiàn),也可以采用軟件的方式實現(xiàn),甚至可以作為同一個軟件中不同的函數(shù)來實現(xiàn)。因此本發(fā)明具有實現(xiàn)方式靈活的特點,但實現(xiàn)方式不同不影響本發(fā)明的實質(zhì)內(nèi)容。本發(fā)明實施例的正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法考慮了正則表達式本身的特點,能真正支持PCRE正則表達式,可以有效減少設備的存儲器件成本;在對正則表達式進行編譯時,如果正則表達式集合不經(jīng)常變化,可以選擇將所有正則表達式編譯到同一個DFA以節(jié)省存儲空間;在正則表達式集合需要經(jīng)常更新的情況下,將不同的正則表達式編譯到不同DFA,可以在更新個別正則表達式時,不需要對整個DFA進行重新編譯,節(jié)省編譯時間;不管在交由PCRE編譯器處理,因此可以節(jié)省存儲空間;本發(fā)明實施例的正則表達式編譯、匹配系統(tǒng)及編i奪、匹配方法在保證網(wǎng)絡設備才艮文高速處理的同時,提供對類似于PCRE的正則表達式規(guī)范的全面支持。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求1、一種正則表達式編譯系統(tǒng),其特征在于包括詞法分析模塊和至少一編譯模塊,所述詞法分析模塊分析正則表達式的詞法特點,根據(jù)預設詞法規(guī)則將正則表達式送往不同的編譯模塊處理,所述編譯模塊接收正則表達式,將其編譯成特定形式的數(shù)據(jù)結(jié)構(gòu)。2、如權(quán)利要求1所述的正則表達式編譯系統(tǒng),其特征在于,還包括分類信息庫,所述詞法分析模塊產(chǎn)生的決策信息記錄在分類信息庫中。3、如權(quán)利要求2所述的正則表達式編譯系統(tǒng),其特征在于,所述編譯模塊包括DFA確定性有限狀態(tài)機編譯模塊和PCREPerl兼容的正則表達式編譯模塊,所述DFA編譯才莫塊收到正則表達式,將正則表達式編譯為DFA狀態(tài)轉(zhuǎn)換表并存儲,所述PCRE編譯模塊接收到正則表達式,將正則表達式編譯為PCRE片段,并存儲。4、如權(quán)利要求2所述的正則表達式編譯系統(tǒng),其特征在于,所述編譯模塊包括DFA確定性有限狀態(tài)機編譯模塊和NFA非確定性狀態(tài)機編譯模塊,所述DFA編譯模塊收到正則表達式,將正則表達式編譯為DFA狀態(tài)轉(zhuǎn)換表并存儲,所述NFA編譯模塊接收到正則表達式,將正則表達式編譯為NFA狀態(tài)轉(zhuǎn)換表并存儲。5、一種正則表達式匹配系統(tǒng),其特征在于包括至少一匹配模塊,所述匹配模塊對符合其詞法特點的正則表達式規(guī)則進行匹配。6、如權(quán)利要求5所述的正則表達式匹配系統(tǒng),其特征在于,還包括仲裁模塊,所述仲裁模塊根據(jù)預設規(guī)則確定數(shù)據(jù)報文在各匹配模塊間的處理順序,所述匹配模塊間的處理方式包括單通道鏈接方式、并聯(lián)鏈接方式和串聯(lián)鏈接方式。7、如權(quán)利要求5或6所述的正則表達式匹配系統(tǒng),其特征在于,還包括綜合輸出模塊,所述綜合輸出模塊與匹配模塊相連接,接收匹配模塊輸出的匹配結(jié)果。8、如權(quán)利要求7所述的正則表達式匹配系統(tǒng),其特征在于,所述綜合輸出模塊中設置有緩存來對報文匹配結(jié)果進行排序。9、如權(quán)利要求7所述的正則表達式匹配系統(tǒng),其特征在于,所述綜合輸出模塊對匹配結(jié)果進行數(shù)據(jù)統(tǒng)計。10、如權(quán)利要求9所述的正則表達式匹配系統(tǒng),其特征在于,所述綜合輸出模塊將統(tǒng)計信息反饋給詞法分析模塊,由詞法分析模塊根據(jù)這些數(shù)據(jù)更新預設詞法規(guī)則,并發(fā)起二次編譯。11、一種正則表達式編譯方法,包括接收用戶輸入的正則表達式規(guī)則,對正則表達式進行詞法解析,根據(jù)預設規(guī)則將正則表達式編譯成特定形式的數(shù)據(jù)結(jié)構(gòu)。12、如權(quán)利要求11所述的正則表達式編譯方法,其特征在于,所述正則表達式規(guī)則通過詞法分析模塊進行接收。13、如權(quán)利要求11所述的正則表達式編譯方法,其特征在于,所述編譯正則表達式成特定形式的數(shù)據(jù)結(jié)構(gòu)包括DFA確定性有限狀態(tài)機編譯模塊收到正則表達式,將正則表達式編譯為DFA狀態(tài)轉(zhuǎn)換表并存儲;PCREPerl兼容的正則表達式編譯模塊接收到正則表達式,將正則表達式編譯為PCRE片段并存儲。14、一種正則表達式匹配方法,包括接收前端模塊發(fā)送的需要進行匹配操作的數(shù)據(jù)報文;對符合其詞法特點的正則表達式規(guī)則進行匹配。15、如權(quán)利要求14所述的正則表達式匹配方法,其特征在于,所述方法還包括根據(jù)預設規(guī)則確定數(shù)據(jù)報文在各匹配模塊間的處理順序,所述匹配模塊間的處理方式包括單通道鏈接方式、并聯(lián)鏈接方式和串聯(lián)鏈接方式。16、如權(quán)利要求15所述的正則表達式匹配方法,其特征在于,所述匹配模塊將匹配結(jié)果統(tǒng)一送到綜合輸出模塊。17、如權(quán)利要求16所述的正則表達式匹配方法,其特征在于,所述綜合輸出模塊中設置有緩存來對報文匹配結(jié)果進行排序。18、如權(quán)利要求16所述的正則表達式匹配方法,其特征在于,所述綜合輸出模塊對匹配結(jié)果進行數(shù)據(jù)統(tǒng)計。19、如權(quán)利要求18所述的正則表達式匹配方法,其特征在于,所述綜合輸出模塊將統(tǒng)計信息反饋給詞法分析模塊,由詞法分析模塊模塊根據(jù)這些數(shù)據(jù)更新預設詞法規(guī)則,并發(fā)起二次編譯。全文摘要本發(fā)明提供了一種正則表達式編譯、匹配系統(tǒng)及編譯、匹配方法。本發(fā)明的正則表達式編譯系統(tǒng)包括詞法分析模塊和至少一編譯模塊,所述詞法分析模塊分析正則表達式的詞法特點,根據(jù)預設詞法規(guī)則將正則表達式送往不同的編譯模塊處理,所述編譯模塊接收正則表達式,將其編譯成特定形式的數(shù)據(jù)結(jié)構(gòu)。本發(fā)明有益的技術(shù)效果在于在完全支持正則表達式語法的前提下,達到較高的處理速度;能夠根據(jù)實時流量的特征調(diào)整引擎的處理行為,提高系統(tǒng)吞吐量。文檔編號G06F17/30GK101360088SQ200710075449公開日2009年2月4日申請日期2007年7月30日優(yōu)先權(quán)日2007年7月30日發(fā)明者浩王申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
江津市| 冕宁县| 新巴尔虎左旗| 石河子市| 长垣县| 冷水江市| 陆丰市| 海淀区| 宁海县| 安福县| 宜兴市| 巴南区| 新兴县| 栾川县| 墨竹工卡县| 宽甸| 阿巴嘎旗| 乌审旗| 白水县| 新乡县| 清河县| 泾川县| 连城县| 芷江| 苏尼特右旗| 杭州市| 滨州市| 黄龙县| 博湖县| 拜城县| 克拉玛依市| 商河县| 莱西市| 靖远县| 西安市| 辽宁省| 栖霞市| 萨迦县| 顺昌县| 左权县| 清远市|