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

一種新型快速正則表達(dá)式的硬件電路編譯方法及編譯器實(shí)現(xiàn)與流程

文檔序號(hào):11285917閱讀:536來(lái)源:國(guó)知局
一種新型快速正則表達(dá)式的硬件電路編譯方法及編譯器實(shí)現(xiàn)與流程
本發(fā)明涉及計(jì)算機(jī)、大數(shù)據(jù)、模式匹配等
技術(shù)領(lǐng)域
,特別涉及正則表達(dá)式匹配在服務(wù)器端對(duì)高速輸入數(shù)據(jù)的識(shí)別過(guò)濾系統(tǒng)。
背景技術(shù)
:正則表達(dá)式是當(dāng)前主流的字符串識(shí)別機(jī)制之一,正則表達(dá)式具有構(gòu)造相對(duì)簡(jiǎn)單,運(yùn)行效率較高的特點(diǎn),所以一般的字符串識(shí)別會(huì)使用正則表達(dá)式。正則表達(dá)式的軟件匹配通過(guò)多年的發(fā)展,以及實(shí)現(xiàn)了完善的匹配功能,目前絕大多數(shù)正則表達(dá)式匹配功能通過(guò)軟件實(shí)現(xiàn)。軟件實(shí)現(xiàn)正則表達(dá)式匹配靈活方便,易于搭建匹配平臺(tái),且布置成本較低。正則表達(dá)式的匹配技術(shù)主要是基于非確定自動(dòng)機(jī)(nfa),基于確定自動(dòng)機(jī)(dfa)和基于nfa和dfa的混合匹配技術(shù)。因?yàn)閚fa的并行狀態(tài)特性很匹配fpga的天然并發(fā)性,是在fpga上實(shí)現(xiàn)正則匹配引擎的首選。隨著網(wǎng)絡(luò)帶寬的不斷增長(zhǎng),網(wǎng)絡(luò)將無(wú)數(shù)計(jì)算機(jī)資源極盡所能的連結(jié)在一起,在互聯(lián)網(wǎng)用戶(hù)和互聯(lián)網(wǎng)資源海量互聯(lián)的同時(shí)也帶來(lái)了大量垃圾信息和惡意攻擊,此時(shí)單純依靠軟件過(guò)濾程序或許能夠滿(mǎn)足單個(gè)用戶(hù)的應(yīng)用需求,如采用snort/bro等入侵檢測(cè)系統(tǒng),依靠正則表達(dá)式匹配軟件過(guò)濾危險(xiǎn)信息。但是在服務(wù)器端,在這個(gè)數(shù)據(jù)爆炸的時(shí)代,依靠軟件過(guò)濾的方法無(wú)法滿(mǎn)足服務(wù)器的帶寬需求。因此基于軟件的正則表達(dá)式匹配引擎已經(jīng)無(wú)法滿(mǎn)足網(wǎng)絡(luò)帶寬高速增長(zhǎng)的需求。正則表達(dá)式匹配引擎硬件加速研究會(huì)成為接下來(lái)研究的熱點(diǎn)。正則表達(dá)式匹配的硬件實(shí)現(xiàn)研究起源于1982年,floy和ullman基于自動(dòng)機(jī)理論在硬件上實(shí)現(xiàn)了一個(gè)nfa模型;sidhu和prasanna在此基礎(chǔ)上提出了正則表達(dá)式中的基本操作符,連接、并聯(lián)和閉包的基本專(zhuān)用電路結(jié)構(gòu),為之后模塊化構(gòu)造正則表達(dá)式硬件電路打下基礎(chǔ)。在未來(lái)的應(yīng)用場(chǎng)景中,快速的編譯大規(guī)模的正則表達(dá)式集合并在像fpga這樣的硬件平臺(tái)配置對(duì)應(yīng)的匹配引擎,有很高的應(yīng)用價(jià)值。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:本發(fā)明旨在發(fā)明一個(gè)通用正則表達(dá)式編譯器,快速地將大規(guī)模的正則表達(dá)式規(guī)則集合編譯成對(duì)應(yīng)的硬件匹配引擎并配置在fpga上。解決過(guò)濾系統(tǒng)規(guī)則集更替帶來(lái)的煩瑣工作,實(shí)現(xiàn)從輸入規(guī)則到輸出電路全自動(dòng)的編譯過(guò)程,解決了硬件入侵檢測(cè)系統(tǒng)維護(hù)工作的復(fù)雜度。為了解決上述技術(shù)問(wèn)題,本發(fā)明公開(kāi)了一種新型的正則表達(dá)式自動(dòng)快速編譯方法并通過(guò)組合程序段實(shí)現(xiàn)編譯器的全部功能。代碼簡(jiǎn)潔,編譯器功能強(qiáng)大。為了便于闡述,定義基本正則表達(dá)式規(guī)則a:a=j(luò){3}2{2}9(a|[cd]+e)*x?,在規(guī)則a中,{3}為限定重復(fù)三次前驅(qū)字符?!皘”為或關(guān)系操作符,即并聯(lián)關(guān)系?!?”為限定重復(fù)至少一次前驅(qū)字符?!?”為限定詞重復(fù)任意次前驅(qū)字符。“?”為限定重復(fù)0或1次前驅(qū)字符。正則表達(dá)式a僅僅為簡(jiǎn)單示例,并不涵蓋本編譯器包含的全部語(yǔ)法。本發(fā)明的主要內(nèi)容包括:1.前期處理模塊,對(duì)輸入的snort/bro等規(guī)則集合的正則表達(dá)式部分截取,保存為正則集合輸入文件。2.規(guī)則集合生成模塊,在本編譯支持語(yǔ)法框架下,輸出任意數(shù)量任意長(zhǎng)度的正則表達(dá)式集合。3.對(duì)于基本正則表達(dá)式a,編譯器自動(dòng)抓取單個(gè)匹配規(guī)則,分析正則式構(gòu)成,將正則表達(dá)式分析成鏈?zhǔn)浇Y(jié)構(gòu)。4.對(duì)鏈?zhǔn)浇Y(jié)構(gòu)進(jìn)行解析,采用改進(jìn)的my算法輸出nfa結(jié)果,并標(biāo)記為自定義的新型nfa表示結(jié)構(gòu),后續(xù)模塊可從nfa表示圖中獲取連接信息。5.在此過(guò)程中伴隨以并行的匹配字符串輸出和相應(yīng)的測(cè)試激勵(lì)文件生成功能,為rtl配置前測(cè)試提供配套的測(cè)試用例和仿真激勵(lì)文件。6.采用并行結(jié)構(gòu)自動(dòng)集合輸入規(guī)則集合對(duì)應(yīng)的生成模塊,連接以生成整體的對(duì)應(yīng)集合的正則表達(dá)式匹配引擎。本發(fā)明采用并行結(jié)構(gòu),自動(dòng)對(duì)輸入的文件進(jìn)行分析,選擇截取獲取或者自動(dòng)生成符合要求的正則表達(dá)式集合,編譯器操作難度低,編譯速度快,可以很好的加速今后硬件過(guò)濾平臺(tái)的搭建,快速的實(shí)現(xiàn)從正則規(guī)則集到現(xiàn)實(shí)的硬件電路的生成,并可以提供配套的測(cè)試文件用于仿真測(cè)試。附圖說(shuō)明下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明做更進(jìn)一步的具體說(shuō)明,本發(fā)明的上述和/或其他方面的優(yōu)點(diǎn)將會(huì)變得更加清楚。圖1是本發(fā)明的整體模塊劃分圖。圖2是本發(fā)明的鏈?zhǔn)骄幾g分析圖。圖3是本發(fā)明的核心編譯功能示意圖。圖4是本發(fā)明的核心編譯功能示例的nfa狀態(tài)轉(zhuǎn)移圖。圖5是本發(fā)明的匹配更新模塊(左)和否定匹配模塊(右)。圖6是本發(fā)明的二輸入匹配狀態(tài)更新模塊綜合實(shí)例示意圖。圖7是本發(fā)明的正則匹配引擎結(jié)構(gòu)。圖8是本發(fā)明的十規(guī)則引擎綜合rtl結(jié)構(gòu)示意圖。具體實(shí)施方式下面詳細(xì)地描述本發(fā)明的實(shí)施例,所述示例為上述正則表達(dá)式a,編譯器整體框架以及分流程在附圖中示出。本編譯器可以從輸入端接收或自動(dòng)生成測(cè)試正則規(guī)則集合,并自動(dòng)完成之后編譯過(guò)程直至輸出rtl電路用于之后的仿真和綜合驗(yàn)證。如圖1所示,整個(gè)正則表達(dá)式編譯器由snort/bro規(guī)則集合提取模塊,自定義規(guī)則集合生成模塊,匹配字符串生成模塊,測(cè)試文件生成模塊,正則表達(dá)式編譯模塊,頂層連接模塊,rtl輸出模塊等七個(gè)模塊組成。所有的子模塊集合構(gòu)成了自動(dòng)本發(fā)明的快速自動(dòng)正則表達(dá)式編譯器。如圖2所示,編譯器首先將輸入的正則表達(dá)式示例a分析成鏈?zhǔn)浇Y(jié)構(gòu)的組成單元。每個(gè)單元由四個(gè)構(gòu)成要素組成,分別是值域、正則操作符、后繼單元和子單元。其中值域可以表示ascii表中任意字符(包含具有特殊作用,需要轉(zhuǎn)義使用的字符)。操作符包括了所有正則表達(dá)式支持的語(yǔ)法,并支持部分定制的語(yǔ)法功能的添加。后繼單元?jiǎng)t承接前驅(qū)單元,子單元為出現(xiàn)“()”和“|”時(shí)的多路可選子規(guī)則。本編譯器支持的正則表達(dá)式語(yǔ)法規(guī)則見(jiàn)表一。表一:編譯器支持的正則規(guī)則語(yǔ)法操作符正則表達(dá)式中的匹配作用a+匹配大于一個(gè)aa?匹配零或一個(gè)aa*匹配任意個(gè)數(shù)a(a|b)匹配a或者b中的一個(gè)a{n}/{n,}/{n,m}限定重復(fù),匹配n個(gè)a/大于n個(gè)a/n至m個(gè)a.通配符,匹配任意一個(gè)字符\xff匹配十六進(jìn)制值對(duì)應(yīng)的ascii字符\n,\r,\t,\v匹配回車(chē),換行,制表,垂直制表符[a-z],[0-9],[!-&]范圍匹配,匹配“-”相連范圍內(nèi)的字符[abc]匹配abc中任意一個(gè)字符[^a-z]否定范圍匹配,匹配除“-”相連范圍內(nèi)的字符[a-c0-9!-&]范圍匹配,匹配“-”兩側(cè)若干范圍內(nèi)的任意字符\*,\?,\+轉(zhuǎn)義字符,將特殊字符轉(zhuǎn)義成普通字符匹配^reg^從開(kāi)頭開(kāi)始匹配reg&&匹配至結(jié)尾處結(jié)束\s\s,匹配任意空白字符(回車(chē),換行,制表,空格)\s\s,匹配任意非空白字符\d匹配任意0-9之間數(shù)字\d匹配除0-9之外的任意字符\w匹配0-9,a-z,a-z,或“_”\w匹配除\w,之外的任意字符.*(?^abc)限定通配符重復(fù),匹配任意個(gè)數(shù)除(abc)外的任意字符除了通用的正則表達(dá)式規(guī)則之外,本編譯器還支持一些自定義規(guī)則并預(yù)留新匹配規(guī)則支持接口以便編譯器后期功能升級(jí)。如圖3所示為編譯器核心算法流程。在完成鏈?zhǔn)椒治鲋?,編譯器將鏈?zhǔn)酱鎯?chǔ)單元讀入并采用改進(jìn)后的my(mcnaughton-yamada)構(gòu)造算法,將鏈?zhǔn)絾卧治龀蓪?duì)應(yīng)的nfa單個(gè)狀態(tài)。如圖4所示為示例正則表達(dá)式a所對(duì)應(yīng)的狀態(tài)轉(zhuǎn)移圖。根據(jù)nfa結(jié)構(gòu),本發(fā)明所提出的編譯方法采取新型的nfa標(biāo)記結(jié)構(gòu),有效存儲(chǔ)了nfa狀態(tài)轉(zhuǎn)移方向,方便了之后連接模塊對(duì)單個(gè)正則規(guī)則單元采取對(duì)應(yīng)的連接策略。表二為本發(fā)明所提出的新型nfa記錄結(jié)構(gòu)。表二:針對(duì)示例a的nfa記錄結(jié)構(gòu)狀態(tài)名狀態(tài)值前入狀態(tài)后續(xù)狀態(tài)標(biāo)記位0start/1t1j02t2j13t3j24t4235t5246t6957,8,10,11t7a6,7,97,8,10,11t8cd6,7,8,98,9t9e87,8,10,11t10x6,7,911t11end6,7,9,10/t本發(fā)明方法定義的nfa結(jié)構(gòu)包含五個(gè)組成部分,狀態(tài)名,狀態(tài)值,前入狀態(tài),后續(xù)狀態(tài),匹配標(biāo)記。1.狀態(tài)名部分由起始狀態(tài)0開(kāi)始,依次標(biāo)記為對(duì)應(yīng)狀態(tài)號(hào)。2.狀態(tài)值從start開(kāi)始終于end。之間各狀態(tài)的值為狀態(tài)對(duì)應(yīng)的轉(zhuǎn)移值。3.前入狀態(tài)表示為轉(zhuǎn)移到該狀態(tài)的所有狀態(tài)。4.后續(xù)狀態(tài)表示狀態(tài)往后轉(zhuǎn)移的路徑。5.標(biāo)記位記錄了狀態(tài)的匹配狀態(tài),“t”為匹配,“f”為否定匹配,即匹配非val值的任意字符。由表二可知,起始狀態(tài)的前入狀態(tài)為空,終止?fàn)顟B(tài)的后續(xù)狀態(tài)為空。正則表達(dá)式模塊根據(jù)nfa狀態(tài),對(duì)該nfa所對(duì)應(yīng)的正則表達(dá)式的硬件電路進(jìn)行模塊連結(jié)。采取模塊化的匹配模塊,根據(jù)nfa中的后續(xù)狀態(tài)集合,自動(dòng)連結(jié)各狀態(tài)模塊,實(shí)現(xiàn)整個(gè)正則匹配單元。如圖五所示為單個(gè)狀態(tài)匹配的狀態(tài)更新模塊結(jié)構(gòu)示意圖,左圖為匹配模塊,右圖為否定匹配模塊。如圖六所示為匹配狀態(tài)更新模塊的綜合rtl可視圖。對(duì)照本編譯器輸出的硬件描述文件,在quartusii中綜合得到的結(jié)果。如圖七所示,編譯器編譯完成規(guī)則集合中的所有正則表達(dá)式之后,頂層連結(jié)模塊將所有正則表達(dá)單元聯(lián)結(jié)成完整正則表達(dá)式匹配引擎。并伴隨產(chǎn)生對(duì)應(yīng)的規(guī)則集合測(cè)試文件和仿真激勵(lì)文件。如圖八所示為十規(guī)則正則匹配引擎的綜合rtl可視圖。表三為示例十規(guī)則集合,此處僅為驗(yàn)證整體結(jié)構(gòu),并未涉及到本編譯器所支持的全部語(yǔ)法規(guī)則。表三:示例十規(guī)則正則表達(dá)式集合lq*(q{2,4}|uj{4,})*(mx?|ov+)[uwp][vi](z?[xo]|[jz]?)?[jr][bx]shc[^cl]*f+z{2}wp?.s(m{3}|jy*)+tq?(n+|lf)*[fr][xh]?ds+.r*[lve]ywt+pk?(k{2,6}|.n+)*run(ffbn|eld+)?k{2,}[cj]*z{1,6}(js|l+)fh+q{4,}ibvm([dp]|pw+)?m{2}mo[hn]?[ac]nn([cxa]?|fc)測(cè)試字符串為編譯器產(chǎn)生字符串集合,如表四所示。在modelsim中用對(duì)表四中的示例字符串所產(chǎn)生的激勵(lì)文件進(jìn)行仿真,仿真結(jié)果表明本編譯器編譯產(chǎn)生的硬件電路能夠有效的匹配相應(yīng)符合規(guī)則的信息。表四:示例十規(guī)則正則表達(dá)式測(cè)試字符串集合lqqujjjjjmwijxshcaaaffzzwpasmmmtqlflffhdsswrreywttpannnrunelddkkkjjjzzzllfhhhqqqqqibvmpwwmmmocnnfc對(duì)大規(guī)模測(cè)試集合的編譯結(jié)果表面,本編譯器可以在30秒內(nèi)實(shí)現(xiàn)包含超過(guò)500個(gè)正則表達(dá)式的正則表達(dá)式規(guī)則集合的編譯,生成對(duì)應(yīng)的硬件描述文件,測(cè)試文件和激勵(lì)文件,且仿真綜合結(jié)果都符合要求。綜上所述,利用本發(fā)明實(shí)施例展示了本編譯器方法及實(shí)現(xiàn)編譯器的作用。可以快速高效的實(shí)現(xiàn)對(duì)大規(guī)模正則匹配引擎的搭建,適用于今后數(shù)據(jù)帶寬日益提高的高速數(shù)據(jù)匹配場(chǎng)景。盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨的情況下載本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1