專利名稱:數(shù)據(jù)查找處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理及網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及一種利用多級篩選數(shù)據(jù)的數(shù)據(jù)查 找處理方法及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)應(yīng)用的不斷復(fù)雜化和安全威脅的“復(fù)合性”,今后的威脅將向更高的層次 延伸,更多協(xié)議和應(yīng)用需要進(jìn)行安全檢查,并需要針對網(wǎng)絡(luò)流量的分析和通信內(nèi)容的管理, 這些都必須進(jìn)行基于內(nèi)容的檢查和分析。用戶需要的不是簡單的通過端口或者包頭的訪問 控制,各種IM和P2P應(yīng)用是不能通過端口進(jìn)行控制的,還必須進(jìn)行深度內(nèi)容檢查。比如針 對HTTP協(xié)議的訪問控制上,該協(xié)議允許正常使用,但不允許某個關(guān)鍵字和惡意的報文進(jìn)入 網(wǎng)絡(luò)內(nèi)部,這需要進(jìn)行深度檢測,進(jìn)行7層內(nèi)容的全面防護(hù)。出于信息安全和對信息內(nèi)容的監(jiān)控,要根據(jù)預(yù)定的規(guī)則對在網(wǎng)絡(luò)上傳輸?shù)男畔⑦M(jìn) 行比對、過濾。由于所定義的規(guī)則數(shù)量多,而且網(wǎng)絡(luò)上傳輸?shù)男畔O其龐大,特別是隨著網(wǎng) 絡(luò)傳輸帶寬的增長,為了在不影響網(wǎng)絡(luò)傳輸帶寬的情況下有效的比對、過濾網(wǎng)絡(luò)中傳輸?shù)?信息內(nèi)容是一項非常繁重的任務(wù)。為了實(shí)現(xiàn)對內(nèi)容的比對,往往需要將網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)進(jìn)行還原后與規(guī)則數(shù)據(jù)庫中 的內(nèi)容進(jìn)行比對,但是這需要加大對設(shè)備的負(fù)荷,工作效率低下,為了提高數(shù)據(jù)比對的效 率,現(xiàn)在多數(shù)采用將規(guī)則內(nèi)容轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),在比對時直接比對數(shù)據(jù)包中的二進(jìn)制數(shù) 據(jù)和規(guī)則中的數(shù)據(jù),以提高數(shù)據(jù)比對效率。現(xiàn)有網(wǎng)絡(luò)設(shè)備對網(wǎng)絡(luò)數(shù)據(jù)流內(nèi)容的處理能力較低,所有的任務(wù)全部依賴CPU完 成。在進(jìn)行內(nèi)容處理時,從包的流重組、碎片重組到數(shù)據(jù)還原,到數(shù)據(jù)流特征搜索,數(shù)據(jù)轉(zhuǎn)發(fā) 等所有工作全部由CPU承擔(dān),資源消耗全部集中到CPU,在面臨網(wǎng)絡(luò)上大流量以及大規(guī)模的 規(guī)則查找比對時,會造成整個系統(tǒng)處理速度緩慢,從而導(dǎo)致網(wǎng)絡(luò)性能嚴(yán)重下降甚至癱瘓。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中查找處理速度緩慢以及效率低下等問題,本發(fā)明的目的是提 供一種數(shù)據(jù)查找處理方法及系統(tǒng),利用多級查找處理數(shù)據(jù)來實(shí)現(xiàn)使用較少資源而獲得高效處理。為了達(dá)到上述目的,本發(fā)明提供了一種數(shù)據(jù)查找處理方法,該方法包括步驟1,利用第一預(yù)定函數(shù),對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第 一地址;步驟2,查詢第一存儲器中所述第一地址中的規(guī)則所對應(yīng)的標(biāo)記,以根據(jù)所述標(biāo)記 處理數(shù)據(jù)。所述的數(shù)據(jù)查找處理方法的所述步驟2之后還包括步驟3,當(dāng)標(biāo)記為有效時,利用第二預(yù)定函數(shù),對所述第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn) 算,以生成第二地址;
步驟4,利用第三預(yù)定函數(shù),對所述第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行運(yùn) 算,以生成第二數(shù)據(jù);步驟5,將所述第二數(shù)據(jù),與第二存儲器中所述第二地址對應(yīng)的規(guī)則全文的數(shù)據(jù)信 息進(jìn)行比對,以根據(jù)所述比對的結(jié)果處理數(shù)據(jù)。所述步驟5之后還包括步驟6,在比對符合時,查詢第三存儲器中與第二存儲器成映射關(guān)系的所述規(guī)則 的詳細(xì)信息, 將所述詳細(xì)信息與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行比 對,以處理數(shù)據(jù)。第一預(yù)定函數(shù)是根據(jù)所述第一存儲器的存儲空間地址容量的大小來確定。第二預(yù) 定函數(shù)是根據(jù)所述第二存儲器的空間地址容量來確定。第三預(yù)定函數(shù)是根據(jù)所述第二存儲 器的每個存儲單元分成的子單元的容量來確定。為了達(dá)到上述目的,本發(fā)明還提供了一種數(shù)據(jù)查找處理系統(tǒng),該系統(tǒng)包括第一存儲器,用于存儲規(guī)則所對應(yīng)的標(biāo)記;查找引擎,用于利用第一預(yù)定函數(shù),對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以 生成第一地址;查詢第一存儲器中所述第一地址中的規(guī)則所對應(yīng)的標(biāo)記,以根據(jù)所述標(biāo)記 處理數(shù)據(jù)。所述的數(shù)據(jù)查找處理系統(tǒng)還包括第二存儲器,用于存儲所述規(guī)則全文的數(shù)據(jù)信 息;所述查找引擎,進(jìn)一步用于利用第二預(yù)定函數(shù),對所述第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算, 以生成第二地址;利用第三預(yù)定函數(shù),對所述第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行 運(yùn)算,以生成第二數(shù)據(jù);將所述第二數(shù)據(jù),與第二存儲器中所述第二地址對應(yīng)的規(guī)則全文的 數(shù)據(jù)信息進(jìn)行比對,以根據(jù)所述比對的結(jié)果處理數(shù)據(jù)。第三存儲器,用于存儲與第二存儲器 成映射關(guān)系的所述規(guī)則的詳細(xì)信息;所述查找引擎,進(jìn)一步用于查詢第三存儲器中所述規(guī) 則的詳細(xì)信息,將所述詳細(xì)信息與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行 比對,以處理數(shù)據(jù)。因此,本發(fā)明數(shù)據(jù)查找處理方法和系統(tǒng)在支持多規(guī)則的同時,極大減小了索引規(guī) 則的時間,并采用獨(dú)有的串路流水技術(shù),使用較少的資源完成高效的處理,實(shí)現(xiàn)高速查找和處理。
圖1為本發(fā)明數(shù)據(jù)查找處理方法的流程圖。圖2為本發(fā)明第二存儲器與第三存儲器的映射關(guān)系對應(yīng)示意圖。圖3為本發(fā)明數(shù)據(jù)查找處理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明應(yīng)用于數(shù)據(jù)通信網(wǎng)絡(luò)中,尤其是需要高速檢測數(shù)據(jù)包所有內(nèi)容的IGbps到 40Gbps傳輸網(wǎng)絡(luò)中,在不影響原來網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的前提下,實(shí)現(xiàn)對網(wǎng)絡(luò)L2-L7層內(nèi)容特征 搜索、網(wǎng)絡(luò)內(nèi)容分流、訪問控制及其處理等功能。本發(fā)明也可用于服務(wù)器安全領(lǐng)域中,尤其 是需要對服務(wù)器進(jìn)出口內(nèi)容、服務(wù)器本機(jī)內(nèi)部內(nèi)容做高速檢測的高端服務(wù)器領(lǐng)域。如圖1所示,為本發(fā)明數(shù)據(jù)查找處理方法的流程圖。該方法包括以下步驟
步驟11,利用第一預(yù)定函數(shù),對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第 一地址;第一預(yù)定函數(shù)是根據(jù)所述第一存儲器的存儲空間地址容量的大小來確定的。步驟12,查詢用于存儲規(guī)則所對應(yīng)的標(biāo)記的第一存儲器中所述第一地址中的規(guī) 則所對應(yīng)的標(biāo)記;即查看該第一地址對應(yīng)的存儲單元中存儲的標(biāo)記是否為真,如果標(biāo)記為 “真”,則執(zhí)行步驟13 ;如果標(biāo)記為“假”,則執(zhí)行步驟18不處理此第一數(shù)據(jù)。步驟13,標(biāo)記為有效即判斷出“真”時,利用第二預(yù)定函數(shù),對所述第一數(shù)據(jù)取定長 字節(jié)進(jìn)行運(yùn) 算,以生成第二地址;該第二預(yù)定函數(shù)是根據(jù)第二存儲器的空間地址容量來確 定的。步驟14,利用第三預(yù)定函數(shù),對所述第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行 運(yùn)算,以生成第二數(shù)據(jù);第三預(yù)定函數(shù)是根據(jù)所述第二存儲器的每個存儲單元分成的子單 元的容量(如第二存儲器的存儲單元分成4個子單元,構(gòu)成一個Hash桶)來確定的。步驟15,將所述第二數(shù)據(jù),與用于存儲所述規(guī)則全文的數(shù)據(jù)信息的第二存儲器 中所述第二地址對應(yīng)的規(guī)則全文的數(shù)據(jù)信息進(jìn)行比對;如果比對結(jié)果是符合,則執(zhí)行步驟 16,否則執(zhí)行步驟18不處理此第一數(shù)據(jù);步驟16,在比對符合時,查詢與第二存儲器成映射關(guān)系的用于存儲所述規(guī)則的詳 細(xì)信息的第三存儲器中所述規(guī)則的詳細(xì)信息,與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長 度的字節(jié)進(jìn)行比對,以過濾數(shù)據(jù),如果比對相同(即符合規(guī)則),則進(jìn)行后續(xù)處理(步驟17 執(zhí)行其規(guī)則要求的動作),如果比對不相同,則不處理此第一數(shù)據(jù)(步驟18)。本發(fā)明采用多層次、多流水線的逐步深入過濾方式。上述步驟可以分為三個流水 線過程,步驟11和12為第一流水線過程,步驟13、14和15為第二流水線過程,步驟16為 第三流水線過程。上述經(jīng)過查找引擎3條流水線過濾命中的數(shù)據(jù)將執(zhí)行后續(xù)處理即執(zhí)行其 規(guī)則要求的動作,動作的具體內(nèi)容包括丟棄;通過;鏡像;修改數(shù)據(jù)包內(nèi)容;修改數(shù)據(jù)包的 優(yōu)先級;轉(zhuǎn)發(fā)到指定端口 ;為數(shù)據(jù)包打上標(biāo)志,標(biāo)志信息包括命中規(guī)則的ID號等信息。在上述本發(fā)明數(shù)據(jù)查找流程之前還包括建立規(guī)則樣本的過程。該過程包括步驟 10,清零第一存儲器,通過將規(guī)則庫中的規(guī)則轉(zhuǎn)換為二進(jìn)制機(jī)器碼,取定長字節(jié)(如10字 節(jié))的機(jī)器碼根據(jù)所述第一預(yù)定函數(shù)(如Hash算法)生成第一自然數(shù),將所述第一自然 數(shù)作為所述第一存儲器的地址,并在所述地址對應(yīng)的所述第一存儲器的存儲單元中存儲所 述規(guī)則對應(yīng)的標(biāo)記(如,做“真”標(biāo)記記錄);步驟20,通過將規(guī)則庫中的規(guī)則轉(zhuǎn)換為二進(jìn)制機(jī)器碼,取所述定長字節(jié)的機(jī)器碼 取所述定長字節(jié)(如10字節(jié))的機(jī)器碼,根據(jù)所述第二預(yù)定函數(shù)生成第二自然數(shù),將所述 第二自然數(shù)作為所述第二存儲器的地址;步驟30,將所述規(guī)則對應(yīng)的二進(jìn)制機(jī)器碼根據(jù)第三預(yù)定函數(shù)生成規(guī)則全文的數(shù)據(jù) 信息、即第三自然數(shù),并且將第三自然數(shù)作為規(guī)則的信息指紋;并將所述數(shù)據(jù)信息即第三自 然數(shù)存儲至所述第二自然數(shù)作為所述第二存儲器的地址所對應(yīng)的存儲單元中。在本發(fā)明中,第一存儲器是用于存儲規(guī)則所對應(yīng)的標(biāo)記,第二存儲器是用于存儲 所述規(guī)則全文的數(shù)據(jù)信息即指紋信息,如圖2中所示的,第二存儲器中存儲的指紋信息,是 存儲在某個地址所指向的存儲單元中的子單元中,如指紋1、指紋10等存儲在子單元中。第 三存儲器是與第二存儲器成映射關(guān)系的所述規(guī)則的詳細(xì)信息。即根據(jù)第二存儲器的空間和 每個地址對應(yīng)的存儲單元所分配的子單元數(shù)量和對應(yīng)關(guān)系,在第三存儲器中建立映射存儲器,將第二存儲器中的子單元存儲的數(shù)據(jù)信息對應(yīng)的規(guī)則的二進(jìn)制碼存儲進(jìn)第三存儲器的 對應(yīng)位置中,如圖2所示,本發(fā)明第二存儲器與第三存儲器的映射關(guān)系對應(yīng)示意圖。
下面舉例說明本發(fā)明數(shù)據(jù)查找處理方法,查找引擎的第一級流水線過程如下采用16Mb的外部RAM作為第一存儲器,上電時,將RAM清零,假定要過濾一萬個電 子郵件地址,對于每一個電子郵件地址X,我們用1個不同的隨機(jī)數(shù)產(chǎn)生器(Fl)即第一預(yù)定 函數(shù),產(chǎn)生1個第一自然數(shù)。再用一個隨機(jī)數(shù)產(chǎn)生器G把這1個第一自然數(shù)映射到第一存 儲器即外部RAM的地址。把這1個自然數(shù)的硬件位置設(shè)置標(biāo)記為1,即對該RAM中的存儲單 元中做標(biāo)記“真”。對這一萬個email地址都進(jìn)行這樣的處理后。一個針對這些email地址 的標(biāo)記就建成了?,F(xiàn)在,可以對接收到的數(shù)據(jù)流采用同樣的運(yùn)算,即執(zhí)行步驟11和步驟12,利用Fl 對接收到的第一數(shù)據(jù)(如郵件數(shù)據(jù)流)一定字節(jié)如(10個字節(jié))進(jìn)行運(yùn)算,得到一個第一 自然數(shù),如100,則根據(jù)該自然數(shù)100在第一存儲器如外部RAM中查詢地址為100的存儲單 元中的過濾標(biāo)記,如果該過濾標(biāo)記是“真”,則送到下一級過濾。在上面的例子中,在16Mb的RAM里,被置1的比特不超過1萬比特,所以誤識概率
在一千六百分之一。此算法的好處在于快速,省空間。但是有一定的誤識別率,在第一級流 水線有誤識別率,但沒有漏識別率。經(jīng)過查找引擎的第一條流水線過濾后,傳給第二條流水線過濾的數(shù)據(jù)流量就要小 得多,按照配置10萬條隨機(jī)數(shù)據(jù)內(nèi)容規(guī)則的情況下,4Gbps隨機(jī)數(shù)據(jù)流量經(jīng)過第一級流水 線過濾后的帶寬也會降到25Mbps左右,過濾帶寬與過濾的數(shù)據(jù)流內(nèi)容有關(guān),如果一個數(shù)據(jù) 包在第一級流水線命中規(guī)則次數(shù)較多,留給第二條流水線過濾的流量會加大,前后兩級流 水線的數(shù)據(jù)交接過濾方式采用先進(jìn)先出(First In First Out, fifo)方式傳遞,即第一級 流水線發(fā)現(xiàn)的可疑數(shù)據(jù)的信息會通過fifo傳給第二級流水線,第二級流水線拿到的第二 數(shù)據(jù)的數(shù)據(jù)信息包括數(shù)據(jù)內(nèi)容和數(shù)據(jù)在數(shù)據(jù)流中的位置,知道位置后便于后續(xù)的進(jìn)一步校 驗(yàn)查找。第二級流水線采用信息指紋來進(jìn)一步實(shí)現(xiàn)搜索匹配。下面做一個信息指紋的簡要 介紹。任何一段信息文字,都可以對應(yīng)一個不太長的隨機(jī)數(shù),作為區(qū)別它和其它信息的 指紋(Fingerprint)。只要算法設(shè)計的好,任何兩段信息的指紋都很難重復(fù),就如同人類的 指紋一樣。信息指紋的一個特征是其不可逆性,也就是說,無法根據(jù)信息指紋推出原有信 肩、ο內(nèi)容過濾規(guī)則長短不一,如果都要將其原始內(nèi)容放進(jìn)芯片內(nèi)部RAM,會耗費(fèi)大量的 內(nèi)部RAM,這樣會造成過濾規(guī)則數(shù)量無法上升,所以我們采取將內(nèi)容規(guī)則做智能壓縮,長短 不一的內(nèi)容規(guī)則都會形成指定長度的信息指紋,內(nèi)容規(guī)則的信息指紋長度一致,便于內(nèi)部 查詢,也便于壓縮規(guī)則,比如長度1024字節(jié)的內(nèi)容規(guī)則的信息指紋為32bit,我們只將其信 息指紋放入芯片內(nèi)部RAM做索引,原始信息放在外部DDR2內(nèi)存中,這樣就可以大大增加內(nèi) 容規(guī)則的數(shù)量。比如可以將一下規(guī)則http//www. sina. com/s ? ie = gb2312&bs =% CA% FD% Dl% A7% D6% AE&wd =% CE % E2% BE% FC+% CA % FD&ct = 0
運(yùn)算出其信息指紋為89e24c43 ;即在第二存儲器如內(nèi)部RAM中,取過濾規(guī)則的定 長字節(jié)(如10字節(jié))的機(jī)器碼,根據(jù)第二預(yù)定函數(shù)生成第二自然數(shù),將所述第二自然數(shù)作 為第二存儲器的存儲單元中各個存儲子單元的地址;根據(jù)第三預(yù)定函數(shù)生成第三自然數(shù), 并且將第三自然數(shù)作為規(guī)則的信息指紋(如上面運(yùn)算出的89e24c43),存儲在第二自然數(shù) 對應(yīng)的存儲單元里,如圖2中所示的指紋1、指紋10等。在該第二存儲器中存儲了過濾規(guī)則 全文的指紋信息。在該第二條流水線過程中執(zhí)行步驟13、14和15,利用第二預(yù)定函數(shù)F2, 對接收到的郵件數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第二地址;然后利用第三預(yù)定函數(shù),對接 收到的郵件數(shù)據(jù)(即第一數(shù)據(jù))取和過濾規(guī)則相等長度的字節(jié)進(jìn)行運(yùn)算,以生成第二數(shù)據(jù) (該第二數(shù)據(jù)中包括數(shù)據(jù)內(nèi)容和數(shù)據(jù)在數(shù)據(jù)流中的位置);隨后將第二數(shù)據(jù),與第二存儲器 中第二自然數(shù)生成地址對應(yīng)的存儲單元中存儲的過濾規(guī)則全文的數(shù)據(jù)信息(即該規(guī)則的 信息指紋)進(jìn)行比對。該第二條流水線信息指紋匹配與Hash算法匹配方法都有誤抓,但不 會漏抓,所以還需要第三級流水線做最后的校驗(yàn)過濾。數(shù)據(jù)流經(jīng)過第一、第二條流水線過濾后,沒有命中的數(shù)據(jù)包就直接交換路由出去,命中第一、第二條流水線規(guī)則的數(shù)據(jù)還需要第三條流水線即步驟16作校驗(yàn)過濾。配置規(guī)則時,每條規(guī)則在查找引擎第二級流水線的第二存儲器(內(nèi)部RAM)中都對 應(yīng)一個唯一的位置,用于存放其信息指紋,這個位置是通過HASH算法得到的,對應(yīng)這個位 置,在第三存儲器即外部DDR2內(nèi)存中也有一個與其一一對應(yīng)的內(nèi)存塊,用于存放規(guī)則的詳 細(xì)信息。查找引擎的第三條流水線可以根據(jù)前面流水線命中規(guī)則的內(nèi)部位置信息找到其 規(guī)則在DDR2內(nèi)存具體位置信息,并讀出其規(guī)則的全部信息,將數(shù)據(jù)流中的信息和DDR2里的 規(guī)則詳細(xì)信息做最后的校驗(yàn)匹配,經(jīng)過第三級流水線檢驗(yàn)檢查后,就可以保證數(shù)據(jù)流在設(shè) 置規(guī)則庫的精確匹配,做到不漏報,不誤報。即在第二條流水線比對符合后,查詢與第二存 儲器成映射關(guān)系的用于存儲所述規(guī)則的詳細(xì)信息的第三存儲器中所述規(guī)則的詳細(xì)信息,與 所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行比對,以過濾數(shù)據(jù),如果比對相同, 則進(jìn)行后續(xù)處理,如果比對不相同,則過濾?;诒景l(fā)明,每個時鐘周期可以輸入4個或更多字節(jié),每個時鐘周期輸入字節(jié)數(shù) 量越多,過濾帶寬越高,只是所耗資源越多。目前基于本發(fā)明實(shí)現(xiàn)數(shù)據(jù)過濾的板卡是用FPGA 實(shí)現(xiàn)的。第一級過濾流水線對數(shù)據(jù)包進(jìn)行一次初級篩選,此算法實(shí)現(xiàn)有HASH碰撞率,即會 誤抓,但不會漏抓,需要后面的流水線做進(jìn)一步精確過濾或校驗(yàn),第一級過濾流水線過濾 后,在數(shù)據(jù)流中篩選出可能會命中規(guī)則的零星數(shù)據(jù)信息(包括在第一級流水線查找中命中 規(guī)則的數(shù)據(jù)在數(shù)據(jù)包里的位置信息等)、和數(shù)據(jù)包的原始內(nèi)容一起放入傳給第二條流水線 的fifo。由于第一級流水線已經(jīng)找出所有有可能命中規(guī)則的數(shù)據(jù)在數(shù)據(jù)包中的位置信息, 所以為后面的第二級過濾流水線的查找工作減輕了壓力,即第二級過濾流水線面臨的過濾 數(shù)據(jù)流的帶寬要遠(yuǎn)遠(yuǎn)小于第一級過濾流水線面臨的數(shù)據(jù)流帶寬。查找引擎第二級的流水線,采用信息指紋來進(jìn)一步實(shí)現(xiàn)搜索匹配。本專利技術(shù)利 用信息指紋的方法、利用HASH函數(shù)壓縮規(guī)則,會造成HASH碰撞率,與第一級過濾一樣,會造 成誤抓,但不會造成漏抓,但誤抓率比第一級過濾的誤抓率小多了,于是我們需要第三級流 水線來做校驗(yàn)過濾。
經(jīng)過第二級流水線過濾后的命中數(shù)據(jù)就會進(jìn)一步減少,第三級過濾流水線需要校 驗(yàn)的帶寬要求進(jìn)一步降低,但由于要解決前兩級過濾的誤抓率,需要對規(guī)則做完整的校驗(yàn), 這時需要讀取規(guī)則龐大的完整信息。所以規(guī)則的完整信息是放置在外部DDR2里,它能滿足 校驗(yàn)所需要的讀寫帶寬和存取規(guī)則完整信息的龐大容量。經(jīng)過三級流水線查找過濾后,對數(shù)據(jù)流的查找可以保證做到不誤抓、不漏抓。本發(fā)明還相應(yīng)地提供了一種數(shù)據(jù)查找處理系統(tǒng),如圖所示該系統(tǒng)的結(jié)構(gòu)示意圖。 該系統(tǒng)包括第 一存儲器,用于存儲規(guī)則所對應(yīng)的標(biāo)記;查找引擎,用于利用第一預(yù)定函數(shù), 對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第一地址;查詢第一存儲器中所述第一 地址中的規(guī)則所對應(yīng)的標(biāo)記,以根據(jù)所述標(biāo)記過濾數(shù)據(jù)。如圖中所示還包括第二存儲器, 用于存儲所述規(guī)則全文的數(shù)據(jù)信息的信息指紋;所述查找引擎,進(jìn)一步用于利用第二預(yù)定 函數(shù),對所述第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第二地址;利用第三預(yù)定函數(shù),對所述 第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行運(yùn)算,以生成第二數(shù)據(jù);將所述第二數(shù)據(jù),與第 二存儲器中所述第二地址對應(yīng)的規(guī)則全文的數(shù)據(jù)信息(即信息指紋)進(jìn)行比對,以根據(jù)所 述比對的結(jié)果處理數(shù)據(jù)。如圖3中還包括第三存儲器,用于存儲與第二存儲器成映射關(guān)系 的所述規(guī)則的詳細(xì)信息;所述查找引擎,進(jìn)一步用于查詢第三存儲器中所述規(guī)則的詳細(xì)信 息,將所述詳細(xì)信息與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行比對,以處 理數(shù)據(jù)。在實(shí)際應(yīng)用過程中,4端口千兆PHY用于接收和轉(zhuǎn)發(fā)從以太網(wǎng)絡(luò)來的數(shù)據(jù)流, PCI-E和PCI-X橋片用于接收和轉(zhuǎn)發(fā)從服務(wù)器來的數(shù)據(jù)流,這些數(shù)據(jù)流被送至查找引擎,由 查找引擎中預(yù)先設(shè)定的規(guī)則來進(jìn)行數(shù)據(jù)的處理。在實(shí)施過程中,第一存儲器可以采用SRAM, 用于查找引擎的第一級流水線,第三存儲器可以采用DDR2RAM,用于查找引擎的第三級流水 線處理,第二存儲器,即查找引擎第二級流水線所用的RAM全是現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA)內(nèi)部的 RAM,查找引擎即 FPGA。本發(fā)明通過采用內(nèi)部RAM智能壓縮和外部RAM快速校驗(yàn)結(jié)合技術(shù),使得有限的芯 片內(nèi)部高速RAM可以支持更多的規(guī)則。本發(fā)明采用了智能規(guī)則壓縮技術(shù),通過對規(guī)則的屬性進(jìn)行判斷,采用信息指紋技 術(shù)進(jìn)行規(guī)則的智能壓縮,在支持多規(guī)則的同時,極大減小了索引規(guī)則的時間,對并行處理進(jìn) 行了優(yōu)化,并采用獨(dú)有的串路流水技術(shù),使用較少的資源完成高效的處理,實(shí)現(xiàn)高速查找。本發(fā)明在硬件(可編程邏輯器件、芯片)本身具備并行處理的能力,但并行處理對 可編程邏輯器件內(nèi)部資源占用比較大,影響硬件穩(wěn)定性,本發(fā)明成功解決上述技術(shù)難點(diǎn),使 得具備使用較少的資源獲得高效的處理能力。最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明實(shí)施倒的技術(shù)方案而非限制, 盡管參照較佳實(shí)施例對本發(fā)明實(shí)施例進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解, 可以對本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明實(shí)施例技術(shù) 方案 的精神和范圍。
權(quán)利要求
一種數(shù)據(jù)查找處理方法,其特征在于包括步驟1,利用第一預(yù)定函數(shù),對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第一地址;步驟2,查詢第一存儲器中所述第一地址中的規(guī)則所對應(yīng)的標(biāo)記,以根據(jù)所述標(biāo)記處理所述第一數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于所述步驟2之后還包括步驟3,當(dāng)標(biāo)記為有效時,利用第二預(yù)定函數(shù),對所述第一數(shù)據(jù)取所述定長字節(jié)進(jìn)行運(yùn) 算,以生成第二地址;步驟4,利用第三預(yù)定函數(shù),對所述第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行運(yùn)算, 以生成第二數(shù)據(jù);步驟5,將所述第二數(shù)據(jù),與第二存儲器中所述第二地址對應(yīng)的規(guī)則全文的數(shù)據(jù)信息進(jìn) 行比對,以根據(jù)所述比對的結(jié)果處理所述第一數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)過濾方法,其特征在于所述步驟5之后還包括步驟6,在比對符合時,查詢第三存儲器中與第二存儲器成映射關(guān)系的所述規(guī)則的詳細(xì) 信息,將所述詳細(xì)信息與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行比對,以 處理所述第一數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)查找處理方法,其特征在于所述第一預(yù)定函數(shù)是根據(jù)所 述第一存儲器的存儲空間地址容量的大小來確定。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)查找處理方法,其特征在于所述第二預(yù)定函數(shù)是根據(jù)所 述第二存儲器的空間地址容量來確定。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)查找處理方法,其特征在于所述第三預(yù)定函數(shù)是根據(jù)所 述第二存儲器的每個存儲單元分成的子單元的容量來確定。
7.根據(jù)權(quán)利要求1-6任一所述的數(shù)據(jù)查找處理方法,其特征在于在所述步驟1之前還 包括步驟10,通過將規(guī)則庫中的規(guī)則轉(zhuǎn)換為二進(jìn)制機(jī)器碼,取所述定長字節(jié)的機(jī)器碼根據(jù) 所述第一預(yù)定函數(shù)生成第一自然數(shù),將所述第一自然數(shù)作為所述第一存儲器的地址,并在 所述地址對應(yīng)的所述第一存儲器的存儲單元中存儲所述規(guī)則對應(yīng)的標(biāo)記;步驟20,通過將規(guī)則庫中的規(guī)則轉(zhuǎn)換為二進(jìn)制機(jī)器碼,取所述定長字節(jié)的機(jī)器碼取所 述定長字節(jié)的機(jī)器碼,根據(jù)所述第二預(yù)定函數(shù)生成第二自然數(shù),將所述第二自然數(shù)作為所 述第二存儲器的地址;和步驟30,通過將規(guī)則庫中的規(guī)則轉(zhuǎn)換為二進(jìn)制機(jī)器碼,將所述規(guī)則對應(yīng)的二進(jìn)制機(jī)器 碼根據(jù)第三預(yù)定函數(shù)生成規(guī)則全文的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息存儲至所述第二自然數(shù) 作為所述第二存儲器的地址所對應(yīng)的存儲單元中。
8.一種數(shù)據(jù)查找處理系統(tǒng),其特征在于包括第一存儲器,用于存儲規(guī)則所對應(yīng)的標(biāo)記;查找引擎,用于利用第一預(yù)定函數(shù),對接收到的第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成 第一地址;查詢第一存儲器中所述第一地址中的規(guī)則所對應(yīng)的標(biāo)記,以根據(jù)所述標(biāo)記處理 數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)查找處理系統(tǒng),其特征在于還包括第二存儲器,用于存儲所述規(guī)則全文的數(shù)據(jù)信息; 所述查找引擎,進(jìn)一步用于利用第二預(yù)定函數(shù),對所述第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算, 以生成第二地址;利用第三預(yù)定函數(shù),對所述第一數(shù)據(jù)取和所述規(guī)則相等長度的字節(jié)進(jìn)行 運(yùn)算,以生成第二數(shù)據(jù);將所述第二數(shù)據(jù),與第二存儲器中所述第二地址對應(yīng)的規(guī)則全文的 數(shù)據(jù)信息進(jìn)行比對,以根據(jù)所述比對的結(jié)果處理數(shù)據(jù)。
10.根據(jù)權(quán)利要求8所述的數(shù)據(jù)查找處理系統(tǒng),其特征在于還包括 第三存儲器,用于存儲與第二存儲器成映射關(guān)系的所述規(guī)則的詳細(xì)信息; 所述查找引擎,進(jìn)一步用于查詢第三存儲器中所述規(guī)則的詳細(xì)信息,將所述詳細(xì)信息 與所述第一數(shù)據(jù)獲取到的與所述規(guī)則相等長度的字節(jié)進(jìn)行比對,以處理數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)查找處理方法,包括利用第一預(yù)定函數(shù),對第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第一地址;查詢第一存儲器中第一地址中的標(biāo)記,當(dāng)標(biāo)記為有效時,利用第二預(yù)定函數(shù),對第一數(shù)據(jù)取定長字節(jié)進(jìn)行運(yùn)算,以生成第二地址;利用第三預(yù)定函數(shù),對第一數(shù)據(jù)取和規(guī)則相等長度的字節(jié)進(jìn)行運(yùn)算,以生成第二數(shù)據(jù);將第二數(shù)據(jù),與第二存儲器中第二地址對應(yīng)的規(guī)則全文的數(shù)據(jù)信息進(jìn)行比對,以處理數(shù)據(jù)。本發(fā)明還涉及一種數(shù)據(jù)查找處理系統(tǒng),包括查找引擎和第一存儲器、第二存儲器和第三存儲器。因此,本發(fā)明在支持多規(guī)則的同時,極大減小了索引規(guī)則的時間,并采用獨(dú)有的串路流水技術(shù),使用較少的資源完成高效的處理,實(shí)現(xiàn)高速查找。
文檔編號H04L9/36GK101848091SQ20091005869
公開日2010年9月29日 申請日期2009年3月25日 優(yōu)先權(quán)日2009年3月25日
發(fā)明者何鵬, 馮菊芳, 楊成勇, 譚曉宇 申請人:成都友道科技有限公司