專利名稱:特征匹配方法和裝置的制作方法
技術領域:
本發(fā)明實施例涉及通信技術領域,特別涉及一種特征匹配方法和裝置。
背景技術:
隨著互聯(lián)網的飛速發(fā)展,網絡的業(yè)務種類越來越多,新業(yè)務層出不窮且越來越復雜,新問題也越來越多。例如在網絡控制和帶寬管理方面,P2P業(yè)務占據(jù)了 70%的網絡帶寬資源,有的甚至是對網絡帶寬的惡意占用,嚴重影響了用戶的體驗;在網絡安全方面,網絡入侵和攻擊越來越多的集中在應用層,普通的防火墻對于藏身于IP包凈荷之中的病毒傳播、攻擊作用較弱;另外,運營商為了避免淪為“管道商”的尷尬,還有按內容計費的需求。為了解決這些問題,需要對網絡上的數(shù)據(jù)包應用層內容進行識別,從而產生了深度包檢測(De印Packet Inspection ;簡稱DPI)技術。DPI技術為對不同業(yè)務的應用層內容進行分析,提取出能唯一區(qū)別某個業(yè)務的特征規(guī)則;將網絡上的數(shù)據(jù)包與該特征規(guī)則進行匹配,如果匹配成功,則可以識別出該業(yè)務,進而執(zhí)行與該業(yè)務對應的操作?,F(xiàn)有的DPI 技術中,當匹配引擎接收到網絡數(shù)據(jù)包時,將網絡數(shù)據(jù)包的一部分(或全部)數(shù)據(jù)與特征庫中的數(shù)據(jù)結構進行匹配。特征庫的數(shù)據(jù)量大,一般存儲在片外。發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)現(xiàn)有技術至少存在如下問題匹配引擎接收到重復的網絡數(shù)據(jù)包時,匹配操作重復,訪問特征庫的動作頻繁,造成匹配速度慢、效率低。
發(fā)明內容
本發(fā)明實施例提供一種特征匹配方法和裝置,用以解決現(xiàn)有特征匹配速度慢、效率低的問題,提高匹配速度和效率。本發(fā)明實施例提供一種特征匹配方法,包括根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配;若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配。本發(fā)明實施例又提供一種特征匹配裝置,包括記憶分揀單元和匹配引擎;所述記憶分揀單元包括數(shù)據(jù)集匹配模塊和判決模塊;所述數(shù)據(jù)集匹配模塊,用于根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配;所述判決模塊,用于若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至所述匹配引擎進行特征匹配;
所述匹配引擎,用于根據(jù)特征庫中對接收到的輸入數(shù)據(jù)進行特征匹配。本發(fā)明實施例提供的特征匹配方法和裝置,將輸入數(shù)據(jù)與已學習的歷史特征數(shù)據(jù)集合進行比較,如果歷史特征數(shù)據(jù)集合中存在全部匹配的歷史特征數(shù)據(jù),可以直接得到匹配結果,降低了訪問特征庫的頻率,提高了匹配速度和效率。
圖1為本發(fā)明特征匹配方法第一實施例的流程示意圖;圖加為本發(fā)明特征匹配方法第二實施例的流程示意圖;圖2b為本發(fā)明特征匹配方法第二實施例的應用場景的示意圖;圖3a為本發(fā)明特征匹配方法第三實施例的流程示意圖;圖北為本發(fā)明特征匹配方法第三實施例的應用場景的示意圖;圖4為本發(fā)明特征匹配裝置第一實施例的結構示意圖;圖5為本發(fā)明特征匹配裝置第一實施例的示意圖。
具體實施例方式下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。圖1為本發(fā)明特征匹配方法第一實施例的流程示意圖,如圖1所示,該特征匹配方法包括步驟101、根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配;在執(zhí)行步驟101之前,可以接收并學習所述匹配引擎發(fā)送的歷史特征數(shù)據(jù)及其對應的匹配結果,具體地匹配引擎根據(jù)特征庫中規(guī)則對輸入數(shù)據(jù)進行特征匹配后,如果匹配成功,可以將該輸入數(shù)據(jù)對應的與特征庫中規(guī)則相匹配的特征數(shù)據(jù)和匹配結果發(fā)送給記憶分揀單元。記憶分揀單元接收到已經匹配成功的特征數(shù)據(jù)和匹配結果后,可以將該特征數(shù)據(jù)保存為歷史特征數(shù)據(jù),并保存該歷史特征數(shù)據(jù)對應的匹配結果。其中,記憶分揀單元將歷史特征數(shù)據(jù)保存到歷史特征數(shù)據(jù)集合中時,可以采用一定的算法,例如哈希(hash)算法或直接映射等方法進行保存,然后可以根據(jù)一定的規(guī)則定期更新歷史特征數(shù)據(jù)集合,例如 如果用hash算法建立歷史特征數(shù)據(jù)集合,在出現(xiàn)hash沖突時,可以用新的hash表項代替舊的hash表項,完成歷史特征數(shù)據(jù)集合的更新;或者也可以采用其他的規(guī)則,例如最近最不經常使用規(guī)則等,更新歷史特征數(shù)據(jù)集合。后續(xù)的處理過程中,記憶分揀單元接收到輸入數(shù)據(jù)后,與先前學習到的與特征庫中規(guī)則相匹配的歷史特征數(shù)據(jù)進行比較。其中,特征庫是用一定數(shù)據(jù)結構表示的特征集,包括大量的數(shù)據(jù)結構。匹配引擎可以包含一個或多個串行或并行的子匹配引擎。當匹配引擎接收到輸入數(shù)據(jù)時,逐次取出輸入數(shù)據(jù)的一部分或全部與特征庫中的數(shù)據(jù)結構進行匹配, 當輸入數(shù)據(jù)與表示某個特征的數(shù)據(jù)結構匹配上時,可以輸出匹配到的特征。如果輸入數(shù)據(jù)在特征庫沒有匹配上任何特征,則可以輸出未匹配信息。步驟102、若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;如果輸入數(shù)據(jù)與歷史特征數(shù)據(jù)集合中的某條歷史特征數(shù)據(jù)完全相同(即兩者全部匹配),則記憶分揀單元可以直接將該歷史特征數(shù)據(jù)對應的匹配結果作為當前輸入數(shù)據(jù)的匹配結果,當前輸入數(shù)據(jù)不需要再送給匹配引擎進行匹配,可以直接將該匹配結果發(fā)送給結果管理模塊進行處理,確定最終的輸出結果。例如如果輸入數(shù)據(jù)為統(tǒng)一資源定位符 (URL),該URL與歷史特征數(shù)據(jù)集合中的某條已有的URL全部匹配,則可以將該已有的URL 對應的匹配結果作為當前輸入的URL的匹配結果;如果輸入數(shù)據(jù)為字符串,該字符串與歷史特征數(shù)據(jù)集合中的某條已有的字符串全部匹配,則可以將該已有的字符串對應的匹配結果作為當前輸入的字符串的匹配結果。步驟103、若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配。其中,歷史特征數(shù)據(jù)集合中不存在與輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù)具體可以包括歷史特征數(shù)據(jù)集合中的任意一條歷史特征數(shù)據(jù)與輸入數(shù)據(jù)全部不匹配,此時,可以直接將該輸入數(shù)據(jù)發(fā)送至匹配引擎進行特征匹配;或者雖然歷史特征數(shù)據(jù)集合中沒有與輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),但有與輸入數(shù)據(jù)部分匹配的歷史特征數(shù)據(jù),此時記憶分揀單元可以將所述輸入數(shù)據(jù)中未匹配的部分發(fā)送至匹配引擎進行特征匹配并通知匹配引擎從特征庫中開始匹配的位置;匹配引擎可以按照該從特征庫開始匹配的位置對輸入數(shù)據(jù)未匹配成功的部分進行匹配,無需對全部的輸入數(shù)據(jù)進行匹配,從而可以提高匹配速度。其中,匹配引擎可以由一個或多個串行或并行的匹配子引擎組成,每個匹配子引擎訪問特征庫,根據(jù)特定的算法確定輸入數(shù)據(jù)中需要匹配的部分是否能夠匹配上特征庫中的規(guī)則。如果匹配上了,則一方面將輸入數(shù)據(jù)的部分或全部及匹配結果返回給記憶分揀單元,記錄到歷史特征數(shù)據(jù)集合中,一方面將匹配結果發(fā)送給結果管理模塊。結果管理模塊則可以根據(jù)接收到的記憶分揀單元和匹配引擎的匹配結果,采用特定的規(guī)則進行處理,確定最終的輸出結果ο進一步地,步驟103可以包括以下示例示例一、所述輸入數(shù)據(jù)為統(tǒng)一資源定位符(URL),所述統(tǒng)一資源定位符包括主機名 (host)禾口路徑(path) ο若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述主機名和路徑全部不匹配,則將所述主機名和路徑發(fā)送至匹配引擎進行特征匹配;或者,若所述歷史特征數(shù)據(jù)集合中存在與所述主機名全部匹配的歷史特征數(shù)據(jù),將所述路徑發(fā)送至匹配引擎進行特征匹配;或者在存在與所述路徑為部分匹配的歷史特征數(shù)據(jù)時,將所述路徑的未匹配的部分發(fā)送至匹配引擎進行特征匹配;或者將主機名和所述路徑發(fā)送至匹配引擎進行特征匹配。其中,由于同一個數(shù)據(jù)流的統(tǒng)一資源定位符的主機名可能相同,但路徑相同的幾率較低,因此歷史特征數(shù)據(jù)集合中可以僅保存匹配成功的主機名,比較時僅比較主機名,然后將主機名匹配的統(tǒng)一資源定位符的路徑發(fā)送給匹配引擎進行特征匹配。此外,也可以既保存匹配成功的主機名,又保存匹配成功的路徑,此時,則可以既比較主機名,又比較路徑, 然后將未匹配的部分發(fā)送至匹配引擎進行特征匹配。示例二、輸入數(shù)據(jù)為字符串。若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述字符串全部不匹配,則將所述字符串發(fā)送至匹配引擎進行特征匹配;或者若所述歷史特征數(shù)據(jù)集合中不存在與所述字符串全部匹配的歷史特征數(shù)據(jù),但存在與所述字符串部分匹配的歷史特征數(shù)據(jù),則將所述字符串發(fā)送至匹配引擎進行特征匹配;或者將所述字符串未匹配的部分發(fā)送至匹配引擎進行特征匹配。本實施例將輸入數(shù)據(jù)與已學習的歷史特征數(shù)據(jù)集合進行比較,如果歷史特征數(shù)據(jù)集合中存在全部匹配的歷史特征數(shù)據(jù),可以直接得到匹配結果,不需要每次都將輸入數(shù)據(jù)發(fā)送給匹配引擎進行匹配,因此無需頻繁的訪問特征庫,降低了訪問特征庫的頻率,提高了匹配速度和效率。圖加為本發(fā)明特征匹配方法第二實施例的流程示意圖,如圖加所示,在本發(fā)明特征匹配方法第一實施例的基礎上,以輸入數(shù)據(jù)為統(tǒng)一資源定位符(Uniform/Universal Resource Locator ;簡稱URL)為例,URL—般由主機名(host)和路徑(path)兩部分組成, 該特征匹配方法具體可以包括步驟201、匹配引擎將輸入的URL與特征庫中的規(guī)則進行匹配,將匹配成功的URL 的主機名和該主機名對應的路徑在特征庫中開始匹配的位置發(fā)送至記憶分揀單元的歷史特征數(shù)據(jù)集合中保存,獲取該URL的匹配結果。其中,歷史特征數(shù)據(jù)集合可以按照不同的流分別建立不同的子集,也可以將不同流的host建立一個混合的數(shù)據(jù)集。當歷史特征數(shù)據(jù)集合中記錄的host的項數(shù)達到最大值時,還可以按照一定的算法將舊的記錄刪除,如按時間老化、最近最不常使用原則等進行刪除。表1為歷史特征數(shù)據(jù)集合保存的URL的host的一種形式。表 權利要求
1.一種特征匹配方法,其特征在于,包括根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配; 若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配。
2.根據(jù)權利要求1所述的特征匹配方法,其特征在于,所述輸入數(shù)據(jù)為統(tǒng)一資源定位符,所述統(tǒng)一資源定位符包括主機名和路徑,所述若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配,包括若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述主機名和路徑全部不匹配,則將所述主機名和路徑發(fā)送至匹配引擎進行特征匹配; 或者,若所述歷史特征數(shù)據(jù)集合中存在與所述主機名全部匹配的歷史特征數(shù)據(jù),將所述路徑發(fā)送至匹配引擎進行特征匹配;或者在存在與所述路徑為部分匹配的歷史特征數(shù)據(jù)時,將所述路徑的未匹配的部分發(fā)送至匹配引擎進行特征匹配;或者將主機名和所述路徑發(fā)送至匹配引擎進行特征匹配。
3.根據(jù)權利要求1所述的特征匹配方法,其特征在于,所述輸入數(shù)據(jù)為字符串,所述若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配,包括若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述字符串全部不匹配,則將所述字符串發(fā)送至匹配引擎進行特征匹配;或者,若所述歷史特征數(shù)據(jù)集合中不存在與所述字符串全部匹配的歷史特征數(shù)據(jù),但存在與所述字符串部分匹配的歷史特征數(shù)據(jù),則將所述字符串發(fā)送至匹配引擎進行特征匹配;或者將所述字符串未匹配的部分發(fā)送至匹配引擎進行特征匹配。
4.根據(jù)權利要求1-3任一所述的特征匹配方法,其特征在于,還包括 接收并學習所述匹配引擎發(fā)送的歷史特征數(shù)據(jù)及其對應的匹配結果。
5.一種特征匹配裝置,其特征在于,包括記憶分揀單元和匹配引擎;所述記憶分揀單元包括數(shù)據(jù)集匹配模塊和判決模塊;所述數(shù)據(jù)集匹配模塊,用于根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配;所述判決模塊,用于若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至所述匹配引擎進行特征匹配;所述匹配引擎,用于根據(jù)特征庫中對接收到的輸入數(shù)據(jù)進行特征匹配。
6.根據(jù)權利要求5所述的特征匹配裝置,其特征在于,所述記憶分揀單元還包括 歷史特征數(shù)據(jù)集合,用于存儲所述匹配引擎發(fā)送的歷史特征數(shù)據(jù)及其對應的匹配結果。
7.根據(jù)權利要求5或6所述的特征匹配裝置,其特征在于,所述判決模塊包括統(tǒng)一資源定位符子模塊,用于當所述輸入數(shù)據(jù)為統(tǒng)一資源定位符,所述統(tǒng)一資源定位符包括主機名和路徑時若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述主機名和路徑全部不匹配,則將所述主機名和路徑發(fā)送至匹配引擎進行特征匹配;或者,若所述歷史特征數(shù)據(jù)集合中存在與所述主機名全部匹配的歷史特征數(shù)據(jù),將所述路徑發(fā)送至匹配引擎進行特征匹配,或者在存在與所述路徑為部分匹配的歷史特征數(shù)據(jù)時,將所述路徑的未匹配的部分發(fā)送至匹配引擎進行特征匹配,或者將主機名和所述路徑發(fā)送至匹配引擎進行特征匹配;或者,字符串子模塊,用于當所述輸入數(shù)據(jù)為字符串時,若所述歷史特征數(shù)據(jù)集合中的歷史特征數(shù)據(jù)與所述字符串全部不匹配,則將所述字符串發(fā)送至匹配引擎進行特征匹配;或者若所述歷史特征數(shù)據(jù)集合中不存在與所述字符串全部匹配的歷史特征數(shù)據(jù),但存在與所述字符串部分匹配的歷史特征數(shù)據(jù),則將所述字符串發(fā)送至匹配引擎進行特征匹配,或者將所述字符串未匹配的部分發(fā)送至匹配引擎進行特征匹配。
8.根據(jù)權利要求5或6所述的特征匹配裝置,其特征在于,還包括結果管理模塊,用于接收所述記憶分揀單元和所述匹配引擎輸入的匹配結果,按照設定規(guī)則根據(jù)所述匹配結果確定輸出結果。
全文摘要
本發(fā)明實施例涉及一種特征匹配方法和裝置,其中,該特征匹配方法包括根據(jù)已學習的歷史特征數(shù)據(jù)集合,對接收到的輸入數(shù)據(jù)進行特征匹配;若所述歷史特征數(shù)據(jù)集合中存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則根據(jù)與所述輸入數(shù)據(jù)匹配的歷史特征數(shù)據(jù)獲取匹配結果;若所述歷史特征數(shù)據(jù)集合中不存在與所述輸入數(shù)據(jù)全部匹配的歷史特征數(shù)據(jù),則將所述輸入數(shù)據(jù)的全部或部分發(fā)送至匹配引擎進行特征匹配。本發(fā)明實施例將輸入數(shù)據(jù)與已學習的歷史特征數(shù)據(jù)集合進行比較,如果歷史特征數(shù)據(jù)集合中存在全部匹配的歷史特征數(shù)據(jù),可以直接得到匹配結果,降低了訪問特征庫的頻率,提高了匹配速度和效率。
文檔編號G06F17/30GK102193948SQ20101012716
公開日2011年9月21日 申請日期2010年3月16日 優(yōu)先權日2010年3月16日
發(fā)明者周咸春, 曾佳, 王曉波, 陽生丙 申請人:華為技術有限公司