專利名稱:一種通信系統(tǒng)中字符串匹配信息的處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種字符串匹配信息的處理方法,尤其是一種通信系統(tǒng)中字符串 匹配信息的處理方法。
背景技術(shù):
目前査找字符串的方法比較多,比較經(jīng)典的是BM (boyer-moore,坡藝爾-摩 爾)算法和狀態(tài)機法。這兩種算法的共同特點都是對待査找的字符串P進行預(yù)處 理,生成各自的輔助目標P',然后利用P'進行字符串的査找。BM算法根據(jù)待査找的字符串P生成滑動跨度P',如圖1所示,其査找方法如 下把P中的字符和文本字符串T中的字符按從后往前的順序進行比較,先把P 中的末尾字符和T中的字符進行比較,如果相同,再比較P中的前一個字符和T 中的前一個字符。如果相同,根據(jù)比較的結(jié)果讀取響應(yīng)字符的滑動跨度,按照滑 動跨度往后滑動,這樣,如果字符串P得不到匹配,P就會往后滑動,直到在文 本字符串T中找到待查找的字符串P。這種方法適合査找字符串P比較長,査找 過程中往后滑動的平均跨度相對較長,效率較高;但是對于較短的字符串效率較 低。狀態(tài)機方法構(gòu)建的P'是一個狀態(tài)機,由狀態(tài)機來進行字符串的匹配。例如 要尋找的字符串是P:AABC,那么要構(gòu)建的狀態(tài)機如圖2所示。狀態(tài)機是根據(jù)P作出來的,輸入的文本字符串是T,可以看出,當狀態(tài)到達 最后一個"X"時,也就是字符串匹配成功了。輸入字符串的次數(shù)就是所找字符 在字符串中的位置??梢岳眠@種方法編寫一個函數(shù)實現(xiàn)狀態(tài)機,函數(shù)的入?yún)⑹?要匹配的字符串P和要輸入的文本字符串T,每次匹配時動態(tài)創(chuàng)建一個狀態(tài)機。這 種方法的缺點是當要匹配的字符串P比較長時,狀態(tài)機的生成相對比較麻煩。如 果m表示P的字符個數(shù),那么狀態(tài)機的復(fù)雜度是以m的平方增加的。這兩種方法都能在給定的文本字符串T中找到要査找的字符串P,且效率比 較高,但是卻不能對于P字符串中若干關(guān)鍵子字符串同時進行匹配。這需要對字 符串P進行更詳細的處理,達到能匹配P中多個關(guān)鍵子字符串的功能。目前關(guān)鍵字査找方法中,美國的斯蒂爾.P.尼克額爾在專利號為90107971.5 的《具有部分關(guān)鍵字分支的前綴檢索樹》中提出的關(guān)鍵字査找算法將前綴關(guān)鍵字 節(jié)點構(gòu)成前綴索引樹,用這種方法可以從正文中查找出多個關(guān)鍵字,但該種方法
無法同時支持字符串的精確匹配。 發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種能在通信系統(tǒng)中同時實現(xiàn)字符串精確匹 配和多通配符匹配的匹配信息的處理方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是 一種通信系統(tǒng)中字符串匹配信息的處理方法,包括以下步驟A、 按照是否需要支持多通配符匹配確定字符串的匹配類型為精確匹配或者多 通配符匹配;B、 根據(jù)所述字符串的匹配類型,構(gòu)造不同類型的匹配結(jié)構(gòu)體 若為精確匹配類型,貝lj:Bl、提取所述字符串的長度信息,并構(gòu)造精確匹配結(jié)構(gòu)體; 若為多通配符匹配類型,則B2、提取所述字符串所需要匹配的各子字符串,并構(gòu)造與所述各子字符串一 一對應(yīng)的多通配符結(jié)構(gòu)體;C、 為所述字符串構(gòu)造對應(yīng)的匹配信息描述符, 若為精確匹配類型,貝廿Cl、所述匹配信息描述符包含指向所述精確匹配結(jié)構(gòu)體的指針,根據(jù)所述字 符串的長度信息,將所述匹配信息描述符鏈入具有相同字符串長度信息的精確匹 配散列索引鏈表;若為多通配符匹配類型,貝lj:C2、所述匹配信息描述符包含指向所述各多通配符結(jié)構(gòu)體的指針,且將所述 匹配信息描述符鏈入多通配符匹配的單鏈表。所述步驟Bl中生成的精確匹配結(jié)構(gòu)體包含所述字符串的長度信息和所述字 符串的原型信息。所述步驟B2中生成的多通配符匹配結(jié)構(gòu)體包含相應(yīng)的子字符串的長度信息、 ASIC碼和所述ASIC碼對應(yīng)的滑動跨度信息;所述滑動跨度信息為利用坡藝爾-摩 爾算法計算得到。所述匹配信息描述符中指向各多通配符結(jié)構(gòu)體的指針與所述字符串中的各子字符串一一對應(yīng);所述步驟C中生成的匹配信息描述符還包括所述字符串的匹配 類型信息以及所述字符串中包含的子字符串數(shù)量信息。本發(fā)明的有益效果主要表現(xiàn)在本發(fā)明所述的匹配信息處理方法能同時支持字符串的精確匹配和多通配符匹配,對精確匹配的情況,采用HASH (散列)管理,主動提取字符串的相關(guān)信息,提高了査找速度;對多通配符匹配的情況,則將字 符串轉(zhuǎn)化為多個子字符串的組合,采用經(jīng)典BM算法,效率優(yōu)于狀態(tài)機算法??偟?br>
說來,本發(fā)明所述方法可滿足通信系統(tǒng)在精確匹配和多通配符匹配情況下的實時 匹配要求。
圖1是應(yīng)用BM算法在文本字符串T中査找字符串P的示意圖; 圖2是尋找字符串AABC時需構(gòu)建的狀態(tài)機示意圖;圖3網(wǎng)絡(luò)數(shù)據(jù)包七層過濾設(shè)備在應(yīng)用中的位置示意圖;圖4網(wǎng)絡(luò)數(shù)據(jù)包七層過濾設(shè)備實現(xiàn)方法框圖;圖5過濾規(guī)則更新示意圖;圖6匹配信息描述符示意圖;圖7精確匹配結(jié)構(gòu)體組織框圖;圖8多通配符匹配結(jié)構(gòu)體組織框圖;圖9網(wǎng)絡(luò)數(shù)據(jù)包七層過濾時匹配信息的組織結(jié)構(gòu)示意圖。
具體實施方式
圖1、圖2已在背景技術(shù)中進行過描述,此處不再贅述。進行字符串匹配信息的處理時,A、 按照是否需要支持多通配符匹配確定字符串的匹配類型為精確匹配或者 多通配符匹配;B、 根據(jù)所述字符串的匹配類型,構(gòu)造不同類型的匹配結(jié)構(gòu)體 若為精確匹配類型,貝U:Bl、提取所述字符串的長度信息,并構(gòu)造精確匹配結(jié)構(gòu)體;若為多通配符匹配類型,貝u-B2、提取所述字符串的各子字符串,并構(gòu)造與所述各子字符串一一對應(yīng)的多 通配符結(jié)構(gòu)體;C、 為所述字符串構(gòu)造對應(yīng)的匹配信息描述符,若為精確匹配類型,則Cl、所述匹配信息描述符包含指向所述精確匹配結(jié)構(gòu)體的指針,根據(jù)所述字 符串的長度信息,將所述匹配信息描述符鏈入具有相同字符串長度信息的精確匹 配散列索引鏈表;若為多通配符匹配類型,貝IJ:C2、所述匹配信息描述符包含指向所述各多通配符結(jié)構(gòu)體的指針,且將所述 匹配信息描述符鏈入多通配符匹配的單鏈表。將本發(fā)明所述方法應(yīng)用于網(wǎng)絡(luò)數(shù)據(jù)包七層過濾中時如圖3所示,過濾系統(tǒng)位于局域網(wǎng)和公網(wǎng)鏈路之間,過濾局域網(wǎng)和公網(wǎng)的分 組域報文交互。過濾報文時,把報文的URI看作字符串處理基礎(chǔ)。對URI進行多 通配符的報文過濾,支持多通配符匹配和精確匹配兩種類型。如圖4,本過濾方法需要包括以下三個模塊過濾器輸入模塊、過濾規(guī)則處 理模塊和URI過濾器。后臺進行URI配置,并傳送配置后的數(shù)據(jù)到前臺過濾器處 理模塊,過濾器處理模塊對過濾規(guī)則進一步處理轉(zhuǎn)換為URI過濾器能夠識別的過 濾規(guī)則。過濾規(guī)則更新流程如圖5所示。過濾器處理模塊首先區(qū)分字符串的匹配類型 是精確匹配還是多通配符匹配。對于精確匹配,提取字符串有效信息,主要包括 URI的長度和URI的域名,構(gòu)造精確匹配結(jié)構(gòu)體;對于多通配符匹配,分析每個 子字符串,將多通配轉(zhuǎn)化為多個單通配的情況,并按照BM算法,對各個子字符串 進行處理,得到子字符串對應(yīng)的滑動跨度信息,從而構(gòu)造多匹配符結(jié)構(gòu)體。并且, 為前述字符串構(gòu)造匹配信息描述符,對于精確匹配,匹配信息描述符的結(jié)構(gòu)體指 針指向前述精確匹配結(jié)構(gòu)體,并按照域名和URI的長度將匹配信息描述符將匹配 信息描述符掛入精確匹配散列鏈表;對于多通配符匹配,匹配信息描述符的各結(jié) 構(gòu)體指針指向前述各多匹配符結(jié)構(gòu)體,并將匹配信息描述符掛入多通配符匹配單鏈表。圖6是匹配信息描述符的組織結(jié)構(gòu),下面是匹配信息描述符的成員說明。601 "匹配類型"匹配類型標識了字符串的匹配類型屬性,每一字符串預(yù)處 理后得到一種匹配類型,如下列表所示RULE一C RULE—WC RULE一CW RULE—CWC RULE—WCW RULE—WCWC RULE一CWCW RULE—CWCWC這些標志把過濾規(guī)則分成了兩類精確匹配和多通配符匹配。其中RULE一C代 表精確匹配,比如"http:〃ww. sina.com. cn",其它規(guī)則代表多通配符匹配, 比如RULE—CWC代表類型"www. *. net" , RULE—WC代表類型"*. sina. com"。規(guī) 則中W和C分別代表的含義是通配符號和字符串C: char W : wildcard 。 C和 W的位置直觀的標識通配匹配中通配符的位置。602 "子字符串數(shù)量",標識匹配中子字符串的數(shù)量。若為精確匹配,則子字 符串數(shù)量為1,表示只有一個字符串;對于多通配符匹配,該字符串表示預(yù)處理 后的子字符串的數(shù)量,比如"www. *.net/*. jpg",預(yù)處理后分成"www" ".net/"
".jpg"三個字符串,成員"子字符串數(shù)量"就是3。603 "基于BM査找算法的匹配結(jié)構(gòu)體指針",該指針指向一個結(jié)構(gòu)體,這個 結(jié)構(gòu)體用來存放匹配信息,參看圖7與圖8。這個指針并不一定都有效,指針有效個數(shù)與"子字符串數(shù)量"相同,各指針與各子字符串一一對應(yīng)。這里只給出了 需要匹配的子字符串最多為三個的情況,當然,也可以根據(jù)實際擴展到N個指針 的情況。604 "NEXT",指向下一個匹配信息描述符的指針,用來構(gòu)成單向鏈表。 圖7、圖8為匹配結(jié)構(gòu)體組織框圖。對于精確匹配結(jié)構(gòu)體,如圖7所示701 "精確匹配字符串的長度"。702 "精確匹配字符串的原型",為精確匹配字符串的ASIC碼。 精確匹配類型RULE—C,比如,"www.sina.com.cn", 701的長度為15。 702存放這個字符串的ASIC碼。對于多通配符匹配結(jié)構(gòu)體,如圖8所示801 "子字符串長度",為處理得到的子字符串的字符長度。802 "子字符串ASIC碼",為處理得到的子字符串的ASIC碼。803 "子字符串ASIC碼對應(yīng)的滑動跨度",為處理得到的子字符串進行BM 算法處理后得到的滑動跨度。比如"www. *. net/*, jpg"中第一個字符串"www. " 801是4, 802是這個字 符串的ASIC碼,803是這個字符串經(jīng)過BM算法處理后得到的滑動跨度。當行網(wǎng)絡(luò)數(shù)據(jù)包七層過濾時,匹配信息通過上述字符串匹配信息的處理方 法得到如圖9所示的網(wǎng)絡(luò)數(shù)據(jù)包七層過濾時匹配信息的組織結(jié)構(gòu)示意圖。901按照URI特性,比如域名對URI進行分類得到的HASH鍵值,將相同URI 特性的報文統(tǒng)一管理。902精確匹配HASH索引指針。903多通配符匹配單鏈表指針。904如圖6所述匹配信息描述符。905如圖7所述精確匹配結(jié)構(gòu)體信息。906如圖8所述多通配符匹配結(jié)構(gòu)體信息。對于給定的報文,首先進行精確匹配,主動提取該報文的相關(guān)信息,然后以 提取信息為鍵值進行HASH運算,得到相同鍵值的HASH鏈表,如果HASH后的精確 匹配無法實現(xiàn)匹配,則進行多通配符匹配。
權(quán)利要求
1、一種通信系統(tǒng)中字符串匹配信息的處理方法,其特征在于包括以下步驟A、按照是否需要支持多通配符匹配確定字符串的匹配類型為精確匹配或者多通配符匹配;B、根據(jù)所述字符串的匹配類型,構(gòu)造不同類型的匹配結(jié)構(gòu)體若為精確匹配類型,則B1、提取所述字符串的長度信息,并構(gòu)造精確匹配結(jié)構(gòu)體;若為多通配符匹配類型,則B2、提取所述字符串的各子字符串,并構(gòu)造與所述各子字符串一一對應(yīng)的多通配符結(jié)構(gòu)體;C、為所述字符串構(gòu)造對應(yīng)的匹配信息描述符,若為精確匹配類型,則C1、所述匹配信息描述符包含指向所述精確匹配結(jié)構(gòu)體的指針,根據(jù)所述字符串的長度信息,將所述匹配信息描述符鏈入具有相同字符串長度信息的精確匹配散列索引鏈表;若為多通配符匹配類型,則C2、所述匹配信息描述符包含指向所述各多通配符結(jié)構(gòu)體的指針,且將所述匹配信息描述符鏈入多通配符匹配的單鏈表。
2、 如權(quán)利要求1所述的通信系統(tǒng)中字符串匹配信息的處理方法,其特征在于: 所述步驟Bl中生成的精確匹配結(jié)構(gòu)體包含所述字符串的長度信息和所述字符串的原型信息。
3、 如權(quán)利要求1所述的通信系統(tǒng)中字符串匹配信息的處理方法,其特征在于 所述步驟B2中生成的多通配符匹配結(jié)構(gòu)體包含相應(yīng)的子字符串的長度信息、 ASIC碼和所述ASIC碼對應(yīng)的滑動跨度信息。
4、 如權(quán)利要求3所述的通信系統(tǒng)中字符串匹配信息的處理方法,其特征在于 所述滑動跨度信息為利用坡藝爾-摩爾算法計算得到。
5、如權(quán)利要求1所述的通信系統(tǒng)中字符串匹配信息的處理方法,其特征在 于所述匹配信息描述符中指向各多通配符結(jié)構(gòu)體的指針與所述字符串中的各子 字符串——對應(yīng)。
6、如權(quán)利要求5所述的通信系統(tǒng)中字符串匹配信息的處理方法,其特征在 于所述步驟C中生成的匹配信息描述符還包括所述字符串的匹配類型信息以及所述字符串中包含的子字符串數(shù)量信息。
全文摘要
本發(fā)明公開了一種通信系統(tǒng)中字符串匹配信息的處理方法,包括以下步驟A.確定字符串的匹配類型為精確匹配或多通配符匹配;B.構(gòu)造不同的匹配結(jié)構(gòu)體若為精確匹配則提取所述字符串的長度信息,并構(gòu)造精確匹配結(jié)構(gòu)體;若為多通配符匹配則提取所述字符串的各子字符串,并構(gòu)造與其一一對應(yīng)的多通配符結(jié)構(gòu)體;C.為所述字符串構(gòu)造對應(yīng)的匹配信息描述符,若為精確匹配其包含指向所述精確匹配結(jié)構(gòu)體的指針,且將其鏈入具有相同字符串長度信息的精確匹配散列索引鏈表;若為多通配符匹配其包含指向所述各多通配符結(jié)構(gòu)體的指針,且將其鏈入多通配符匹配的單鏈表。本發(fā)明所述方法同時支持字符串的精確匹配和多通配符匹配并滿足其實時匹配要求。
文檔編號G06F17/30GK101165681SQ200610063179
公開日2008年4月23日 申請日期2006年10月17日 優(yōu)先權(quán)日2006年10月17日
發(fā)明者康玉東, 王宇飛 申請人:中興通訊股份有限公司