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

一種tcam多模式字符串匹配方法及裝置的制作方法

文檔序號:6357973閱讀:268來源:國知局
專利名稱:一種tcam多模式字符串匹配方法及裝置的制作方法
技術領域
本發(fā)明是關于字符串匹配技術,特別是關于多模式字符串匹配技術,具體的講是關于一種TCAM多模式字符串匹配方法及裝置。
背景技術
隨著科學技術的高速發(fā)展,人們需要處理的信息急劇增加,如何在這些海量的信息中快速提取自己所需的信息,成為一個很重要的課題。字符串匹配技術,作為文本處理、關鍵詞檢索、敏感詞過濾等多種應用的關鍵技術,對信息檢索起著至關重要的作用。尤其是多模式的字符串匹配技術,成為各種多字符串、超大容量信息檢索的核心技術。信息檢索工具的性能,取決于其所使用的多模式字符串匹配技術的性能?,F(xiàn)有技術中,針對多模式字符串匹配技術的算法通常都是基于AC算法或狀態(tài)機匹配。然而,基于計算機執(zhí)行的軟件,受到了 DDR內存數(shù)據(jù)讀取延時較長的缺點的限制;而基于AC或狀態(tài)機匹配的軟件算法,需要根據(jù)當前狀態(tài)獲得下一狀態(tài)的值,才能繼續(xù)進行匹配。因此,現(xiàn)有的軟件算法,都有一個性能極限,這個極限與DDR的頻率和讀數(shù)據(jù)延時有關。

發(fā)明內容
本發(fā)明提供一種TCAM多模式字符串匹配方法及裝置,以提高多模式字符串匹配的速度。為了實現(xiàn)上述目的,本發(fā)明實施例提供一種TCAM多模式字符串匹配方法,該方法包括接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM ;以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的 TCAM中;接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊;將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配;從所述的TCAM中獲取并輸出字符串匹配結果。進一步地,所述的字符串配置信息包括字符串類型、字符串偏移、字符串標識、優(yōu)先級及匹配性能。進一步地,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM,包括根據(jù)字符串長度及字符串偏移確定TCAM表項寬度;根據(jù)字符串的類型及大小確定TCAM的容量;根據(jù)匹配性能確定TCAM的工作頻率。進一步地,將所述的多模式字符串存儲到TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中,包括根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM 中的存儲地址;將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。在將所述的多模式字符串存儲到TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域的所述選擇的 TCAM中時,采用所述的前掩碼域及后掩碼域屏蔽多模式字符串中無需匹配部分。進一步地,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM之前,所述的方法還包括將所述的浮動偏移字符串轉化為多條固定偏移字符串。進一步地,從所述的TCAM中獲取并輸出字符串匹配結果,包括根據(jù)所述多個字符段的匹配的結果生成總匹配結果;根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息。進一步地,所述字符段對應的匹配順序值是按順序分配的,每個待匹配字符串通過多次分段匹配的方式完成整個匹配過程。為了實現(xiàn)上述目的,本發(fā)明實施例還提供一種TCAM多模式字符串匹配裝置,該裝置包括TCAM選擇單元,用于接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM ;字符串存儲單元,用于以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中;待匹配字符串處理單元,用于接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊;字符串匹配單元,用于將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配;匹配結果輸出單元,用于從所述的TCAM中獲取并輸出字符串匹配結果。進一步地,所述的字符串配置信息包括字符串類型、字符串偏移、字符串標識、優(yōu)先級及匹配性能。進一步地,所述的TCAM選擇單元包括表項寬度確定模塊,用于根據(jù)字符串長度及字符串偏移確定TCAM表項寬度;容量確定模塊,用于根據(jù)字符串的類型及大小確定TCAM 的容量;工作頻率驅動模塊,用于根據(jù)匹配性能確定TCAM的工作頻率。進一步地,所述的字符串存儲單元包括地址確定模塊,用于根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM中的存儲地址;存儲模塊,用于將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。所述的前掩碼域及后掩碼域用于屏蔽多模式字符串中無需匹配部分。進一步地,所述的TCAM選擇單元還包括字符串轉化模塊,用于將所述的浮動偏移字符串轉化為多條固定偏移字符串。進一步地,所述的匹配結果輸出單元包括匹配結果生成模塊,用于根據(jù)所述多個字符段的匹配的結果生成總匹配結果;匹配信息獲取模塊,用于根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息。本發(fā)明的有益效果在于,通過本發(fā)明的TCAM多模式字符串匹配方法及裝置,可使多模式字符串匹配的規(guī)模與TCAM的容量相當,匹配速度與TCAM匹配帶寬相當,提高多模式字符串匹配的規(guī)模和速度。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中圖1為本發(fā)明實施例TCAM多模式字符串匹配裝置的結構框圖;圖2為本發(fā)明實施例TCAM選擇單元的結構框圖;圖3為本發(fā)明實施例字符串存儲單元的結構框圖;圖4為本發(fā)明實施例固定偏移字符串的表項示意圖;圖5為本發(fā)明實施例浮動偏移字符串的表項示意圖;圖6為本發(fā)明實施例L < La時浮動偏移字符串的表項示意圖;圖7為本發(fā)明實施例TCAM字符串匹配原理示意圖;圖8為本發(fā)明實施例匹配結果輸出單元的結構框圖;圖9為本發(fā)明實施例TCAM多模式字符串匹配裝置示意圖;圖10為本發(fā)明實施例TCAM字符串匹配示意圖;圖11為本發(fā)明實施例TCAM多模式字符串匹配方法流程圖;圖12為本發(fā)明實施例的匹配參數(shù)實例。
具體實施例方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚明白,下面結合附圖對本發(fā)明實施例做進一步詳細說明。在此,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。內容尋址內存(Content Addressable Memory, CAM)與 SRAM、DDR 等普通內存不同,普通內存通過輸入地址得到數(shù)據(jù);而CAM則是通過輸入數(shù)據(jù)得到數(shù)據(jù)所在的地址。 TCAM (Ternary CAM)為三態(tài)CAM,不僅可以匹配二進制數(shù)“0”和“ 1 ”,還可以通過掩碼匹配任意值,也稱為可匹配“X”。CAM的數(shù)據(jù)寬度通常可配置,如9字節(jié)、18字節(jié)、36字節(jié)或72字節(jié)等。進行多模式字符串匹配時,字符串通常有固定偏移方式及浮動偏移方式兩種。固定偏移方式是指需要在輸入串的某個確定的偏移位置匹配到字符串,這種匹配方式在網(wǎng)絡協(xié)議識別等領域有較多的應用;浮動偏移方式是指在輸入串的任意位置匹配到字符串即為匹配成功,通常在關鍵詞搜索等領域應用廣泛。本發(fā)明提供了一種TCAM多模式字符串匹配方法及裝置,為固定偏移字符串設計以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的TCAM存儲方式,將浮動偏移字符串轉化為多條固定偏移字符串存儲;然后通過包含匹配次數(shù)和部分串重復匹配的方式,完成多模式字符串的精確和高速匹配。通過本發(fā)明,使多模式字符串匹配的速度與TCAM匹配帶寬相當,達到每秒吉字節(jié)量級,遠高于各種軟件匹配算法。如圖1所示,本發(fā)明實施例提供一種TCAM多模式字符串匹配裝置,該裝置包括 TCAM選擇單元101,字符串存儲單元102,待匹配字符串處理單元103,字符串匹配單元104 及匹配結果輸出單元105。TCAM選擇單元101,接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述
6多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM。字符串配置信息可以包括字符串類型、字符串偏移、字符串標識、優(yōu)先級及匹配性能。如圖2所示,TCAM選擇單元101可以包括表項寬度確定模塊201,容量確定模塊 202及工作頻率驅動模塊203。表項寬度確定模塊201根據(jù)字符串長度及字符串偏移確定TCAM表項寬度;容量確定模塊202根據(jù)字符串的類型及大小確定TCAM的容量;工作頻率驅動模塊203根據(jù)匹配性能確定TCAM的工作頻率。字符串長度為已知量,給定字符串偏移之后就可以確定TCAM的寬度。TCAM容量即TCAM中最多能容納的TCAM表項的數(shù)量。匹配性能例如可以為IG/秒, 如果TCAM表項寬度為8字節(jié),此時TCAM工作頻率為125MHz。如圖2所示,TCAM選擇單元101還包括如果TCAM選擇單元101接收的多模式字符串中包含浮動偏移字符串,字符串轉化模塊204可以將所述的浮動偏移字符串轉化為多條固定偏移字符串。字符串存儲單元102以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中。本發(fā)明TCAM的每一 TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域,位置域的值C和前掩碼域可以用來表征字符串偏移,字符串域中包含模式字符串內容,采用前掩碼域及后掩碼域屏蔽多模式字符串中無需匹配部分。設TCAM表項的寬度、位置域的寬度、前掩碼域的寬度、字符串域的寬度分別為W、K、N、L,那么后掩碼域的寬度為W-L-N-K。表項寬度確定模塊201可以設定位置域的寬度K及字符串的偏移量offset,根據(jù)字符串長度L及字符串偏移offset確定TCAM表項寬度W,根據(jù)匹配重復送入的字節(jié)數(shù)、所述TCAM表項寬度W、字符串寬度L、位置域的寬度K及字符串的偏移量offset計算位置值 C及前掩碼的寬度N。如圖3所示,字符串存儲單元102可以包括地址確定模塊301及存儲模塊302。如果字符串配置信息中包含優(yōu)先級,地址確定模塊301可以根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM中的存儲地址;存儲模塊302可以將所述字符串的對應表項內容存儲到TCAM 的所述存儲地址中。固定偏移字符串在TCAM中存儲于一個地址表項中,每個地址表的域、含義及所占用的字節(jié)數(shù)如圖4所示。TCAM表項分為分別是位置域、前掩碼域、字符串域和后掩碼域四個域。offset、L 和W為已知量,C、K(C的最大值決定K的大小)和N為需要確定的量,它們之間存在如下關系式C = offset/(W-K-La)(式 1)N = offset % (ff-K-La)(式 2)其中除法為整數(shù)除,即除后進行下取整;%為取模符號。La為每次匹配重復送入的字節(jié)數(shù),即匹配進行分段送入時,各字符段的重疊部分字節(jié)的寬度。位置域的值C用于匹配時確定位置是否正確,與被匹配字符串的長度和TCAM表項的寬度W有關。被匹配字符串越長,所需的C值越大,位置域所占的寬度K也越大;TCAM表項的寬度W越大,所需的C值越小,位置域所占的寬度K也越小。前掩碼域與后掩碼域用于屏蔽非關鍵詞部分的比較。前掩碼域的寬度N與位置值 C 一起,確定了當發(fā)生匹配時,位置必然與字符串的偏移量相同。浮動偏移字符串在CAM中存儲于多個地址表項中,浮動偏移字符串S可轉化多條固定字符串表項進行存儲。每個表項的C值為任意,即該字節(jié)全部掩碼;N的取值分別為0 至W-L-K,總共需轉化為W-L-K+1條固定關鍵詞。通過C值的任意性和N的枚舉,從而達到匹配任意偏移的目的。浮動關鍵詞存儲的如圖5所示。其中,位置域和掩碼及字符串域中的值,括號中的數(shù)字或表達式為該域的寬度,括號前為該域的內容,“*”表示值可為任意,即全部被掩碼。當L < La時,由于匹配時會重重復送入La個字節(jié),最后幾個表項可略去,轉化為 W-La-K+1條固定關鍵詞即可,如圖6所示。待匹配字符串處理單元103接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)La及TCAM表項寬度W將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊。舉例說明,如果為LO = 25個字節(jié),TCAM表項寬度W = 8,每次匹配重復送入的字節(jié)數(shù)La = 3,如果假設位置域的寬度K = 1,此時可以將待匹配字符串分為每個字符段占7(W-K)個字節(jié),因為相鄰兩個字符段的字符重疊3個字節(jié),所以待匹配字符串可以分為6個字符段,分別為第0-6字節(jié),第4-10字節(jié),第8-14字節(jié),第12-18字節(jié),第 16-22字節(jié),第20-24字節(jié)。上述6個字符串分別對應匹配順序值0-5,第0-6字節(jié)的字符段對應的順序值為 0,第4-10字節(jié)的字符段對應的順序值為1,第8-14字節(jié)的字符段對應的順序值為2,第 12-18字節(jié)的字符段對應的順序值為3,第16-22字節(jié)的字符段對應的順序值為4,第20-24 字節(jié)的字符段對應的順序值為5。字符串匹配單元104將所述字符段及對應的匹配順序值分為多次發(fā)送到所述 TCAM中進行匹配。多模式字符串與輸入串的匹配分多次進行,設輸入串為P,P[j]表示輸入串的第j 個字節(jié);下表列出了第0次、第1次、第2次和第i次進行匹配時送入TCAM比較的內容,如圖7所示。La為每次匹配重復送入的字節(jié)數(shù)即匹配進行分段送入時,各字符段的重疊部分字節(jié)的寬度。從圖7可以看出,第0次進行匹配時送入的后La個字節(jié)(即P[W-K-La]至 P[W-K-1]),在第1次進行匹配時被作為最前面La個字節(jié)再次送入了一次;第i次匹配時送入的字節(jié)數(shù)為 P[ (W-K-La)*i]至 P[ (W-K-La)*i+ (W_K_1)],其中 P[ (W-K-La)*i]至 P [ (W-K-La) * (i-1) +ff-K-1]為重復送入的字節(jié)。重復送入TCAM進行比較,是進行多模式字符串精確匹配的關鍵,它使得當字符串跨越TCAM的邊界而無法在當前次匹配成功時,部分輸入串的字符能夠進入下一次的匹配, 從而在下一次比較中匹配成功。只要字符串能夠在TCAM的一個表項中存儲,就一定能正確匹配。因此,每次重復送入La個字節(jié)進行匹配,多模式字符串能夠匹配無誤的充要條件是L^ (W-K)-offset % (ff-K-La)(式 3)上式右邊的最小值為La+Ι,因而這種匹配方法至少可以匹配到任意長度為La+1 以下的字符串。對固定偏移字符串,其最大長度與偏移量有關,滿足(式幻即可;對浮動偏移字符串,由于offset值的任意性,長度只能為La+Ι及以下。K值決定了輸入串可以送入TCAM進行比較的次數(shù),每次送入比較的有效字節(jié)數(shù)為 (W-K-La),因此,輸入串的最大長度為28kX (W-K-La)(式 4)完成匹配后,TCAM給出匹配的結果。若匹配未成功,得到的是未匹配功能的標志位;若匹配成功,可得到與輸入相匹配的TCAM地址,也就是說,TCAM的地址表征匹配到了哪
一條字符串匹配。匹配結果輸出單元105從所述的TCAM中獲取并輸出字符串匹配結果。如圖8所示,匹配結果輸出單元105可以包括匹配結果生成模塊801及匹配信息獲取模塊802。匹配結果生成模塊801可以根據(jù)所述多個字符段的匹配的結果生成總匹配結果; 匹配信息獲取模塊802可以根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位
直fe息。每個待匹配字符串會分成多段進入TCAM進行匹配,匹配信息獲取模塊802綜合這些結果給出整體的匹配結果;然后根據(jù)整體的匹配結果,得到命中的模式字符串的標識并輸出。匹配信息獲取模塊802可輸出命中的位置,命中的位置值為匹配成功的次序值乘以每次送入的有效字節(jié)數(shù)(W-K-La)再加上命中表項的前掩碼寬度(N)。對固定偏移字符串而言,命中位置即為該固定偏移字符串的偏移。如圖9所示,該字符串匹配裝置包括模式配置模塊901,模式接收模塊902, TCAM903,輸入模塊904,模式匹配模塊905及輸出模塊906。模式接收模塊902用于實現(xiàn)圖 1中TCAM選擇單元101101及字符串存儲單元102的功能;模式匹配模塊905用于實現(xiàn)圖1 中待匹配字符串處理單元103,字符串匹配單元104及匹配結果輸出單元105的功能。模式配置模塊901接收用戶的多模式字符串及字符串的配置信息,并將這些信息傳遞到模式接收模塊902中。模式配置模塊901與用戶接口,通常以軟件方式實現(xiàn)。模式配置模塊901通常也為用戶提供查看TCAM中的當前字符串模式的功能。模式接收模塊902對模式配置模塊901從用戶處獲得的模式串(包括多模式字符串及字符串配置信息)進行處理,并轉化為TCAM可接收的地址和數(shù)據(jù),如根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的 TCAM,為固定字符串計算相應的C、N值等,以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中。,如果多模式字符串為浮動偏移字符串,還需要將浮動偏移字符串化為多條固定字符串,模式接收模塊902通常也可從TCAM中讀取地址和數(shù)據(jù),并將其轉化為多模式字符串,以呈現(xiàn)給用戶。TCAM903是多模式字符串的存儲區(qū)和匹配區(qū),其內存大小決定了可存儲的字符串模式的最大個數(shù),其匹配速度決定了進行多模式字符串匹配的峰值性能,其最大數(shù)據(jù)寬度決定了能匹配的字符串的最大寬度。輸入模塊904為各種不同的匹配應用方式,提供不同的輸入接口,如網(wǎng)絡數(shù)據(jù)匹配則提供網(wǎng)絡數(shù)據(jù)的接入和待匹配負載的提取,關鍵詞搜索應用則提供為被搜索內容提供輸入接口 ;然后將待匹配的輸入串送至模式匹配模塊905。模式匹配模塊905對待匹配字符串(輸入串),根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段(其中,相鄰字符段的部分字符重疊), 并分多次將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配;從所述的TCAM 中獲取并輸出字符串匹配結果;然后從TCAM獲得每次匹配的結果,根據(jù)所述多個字符段的匹配的結果生成總匹配結果;匹配信息獲取模塊,用于根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息;并將匹配到的多模式字符串的標識及匹配位置信息送給輸出模塊906。模式接收模塊902、TCAM903及模式匹配模塊905為整個字符串匹配裝置的核心部分,該部分可以通過FPGA芯片實現(xiàn),本領域技術人員可以容易想到通過除FPGA芯片以外的其他的硬件結構也可以實現(xiàn),本發(fā)明不以此為限。輸出模塊906為各種不同的匹配應用方式,提供不同的輸出接口,將匹配的結果根據(jù)具體的應用方式或用戶的要求呈現(xiàn)給用戶,如標記網(wǎng)絡數(shù)據(jù)報文、將關鍵詞匹配結果存為文件等。下面以用戶查找固定偏移字符串ABC及EF兩個字符串為例,詳細說明本發(fā)明實施例。用戶想要匹配字符串為ABC、EF,需要通過用戶接口輸入字符串ABC、EF及它們的配置信息。字符串ABC的配置信息可以包括優(yōu)先級為LEVEL 1,字符串編號(字符串標識) 為1,字符串類型為固定偏移字符串,字符串偏移為0 ;字符串EF的配置信息包括優(yōu)先級為LEVEL 2,字符串編號(字符串標識)為2,字符串類型為固定偏移字符串,字符串偏移為 8,總體匹配性能要求為l(ibps。這里需要說明的時,字符串配置信息中可以不包括優(yōu)先級,此時可以不用事先確定字符串的優(yōu)先級,而隨機將字符串存儲到TCAM中。模式配置模塊901接收用戶接口輸入的字符串ABC、EF及上述的配置信息,并將字符串ABC、EF及配置信息發(fā)送給模式接收模塊902。模式接收模塊902接收字符串ABC、EF及它們的配置信息,根據(jù)字符串ABC、EF及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM作頻率符合條件的TCAM。字符串 ABC占用3個字節(jié),字符串EF占用2個字節(jié),考慮到位置域的寬度,可以選擇TCAM表項寬度為大于或等于4字節(jié)的TCAM。字符串ABC、EF均為固定偏移字符串,分別各占一個表項,可以選擇TCAM容量包含至少兩個表項的TCAM。根據(jù)Kibps匹配性能的要求,可以選擇TCAM 工作頻率為125MHz的TCAM。經(jīng)分析可知,選擇的TCAM需要滿足TCAM表項寬度為大于或等于4字節(jié),TCAM容量包含至少兩個表項,TCAM工作頻率為125MHz。模式接收模塊902根據(jù)字符串ABC、EF的字符串類型標識可以判斷二者均為固定偏移字符串,不需要字符串的轉化。模式接收模塊902可以設定字符串ABC的位置域的寬度Kl = 1,字符串的偏移量 offsetl = 0,根據(jù)字符串長度Ll = 3及字符串偏移offsetl = 0可以確定TCAM表項寬度 Wl = 6 (本發(fā)明不限于此),匹配重復送入的字節(jié)數(shù)Lal可以設定為2。將匹配重復送入的字節(jié)數(shù)2、所述TCAM表項寬度6、字符串寬度3、位置域的寬度1及字符串的偏移量0帶入根據(jù)公式1、2,計算位置值C = 0,前掩碼的寬度N = 0。模式接收模塊902可以設定字符串EF的位置域的寬度K2 = 1,字符串的偏移量 offset2 = 8,根據(jù)字符串長度L2 = 2及字符串偏移offset2 = 8可以確定TCAM表項寬度 W2 = 4 (本發(fā)明不限于此),匹配重復送入的字節(jié)數(shù)La2可以設定為1。表項寬度W和重復送入的字節(jié)數(shù)La分別取Wl和W2、Lal和La2的最大值。將匹配重復送入的字節(jié)數(shù)2、所述 TCAM表項寬度6、字符串寬度2、位置域的寬度1及字符串的偏移量8帶入根據(jù)公式1、2,計算位置值C = 2,前掩碼的寬度N = 2。計算完成Cl、m、C2、N2后就可以得到字符串ABC、EF的所有表項信息。模式接收模塊902以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中。因為字符串ABC、EF及它們的配置信息中存在優(yōu)先級信息,需要根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM中的存儲地址,然后可以將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。用戶輸入模塊904輸入待匹配字符串,模式匹配模塊905可以接收用戶輸入的待匹配字符串。待匹配字符串的最大長度滿足LO = 28kX (W-K-La),對于ABC字符串,LO = 28 X (6-1-2) = 768(字節(jié)),對于 EF 字符串,LO = 28 X (6-1-2) = 768 (字節(jié)),因此,如果要進行字符串ABC及EF的匹配,送到TCAM進行匹配的字節(jié)最大長度為768字節(jié)。模式匹配模塊905接收待匹配字符串,假設接收的待匹配字符串字節(jié)數(shù)為15,具體內容是ABCXXXXXEFXXXXX。根據(jù)前面計算出的表項寬度為6可知,需要將待匹配字符串分為字節(jié)數(shù)小于等于5的字符段,再根據(jù)前面計算,可以選擇重復送入的字節(jié)數(shù)為2,所以需要將待匹配字符串分為5個字符段,分別為第0-4字節(jié)的字符段(匹配順序值0),第3-7 字節(jié)的字符段(匹配順序值1),第6-10字節(jié)的字符段(匹配順序值2、,第9-13字節(jié)的字符段(匹配順序值幻,第12-14字節(jié)的字符段(匹配順序值4)。模式匹配模塊905需要按照順序值0-4的順序分別將對應的字符段發(fā)送到TCAM中進行多次匹配。在TCAM中進行字符串匹配的示意圖如圖10,該15字節(jié)的待匹配字符串被分為5個字符段,匹配次數(shù)為5次, 每次將產(chǎn)生一個匹配結果。模式匹配模塊905將從TCAM獲取每次的匹配結果,根據(jù)5次的匹配的結果生成總匹配結果,然后根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息。字符串ABC在第0次匹配時被匹配到,所占字節(jié)為第0-2字節(jié),模式匹配模塊905會將字符串 ABC的標識1及匹配位置信息(第0-2字節(jié))發(fā)送到輸出模塊906,以展現(xiàn)給用戶。字符串 EF在第2次匹配時被匹配到,所占字節(jié)為第2-3字節(jié),模式匹配模塊905會將字符串EF的標識2及匹配位置信息(第2-3字節(jié))發(fā)送到輸出模塊906,以展現(xiàn)給用戶。如圖11所示,本發(fā)明實施例還提供一種TCAM多模式字符串匹配方法,該方法包括步驟SllOl 接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的 TCAM0字符串配置信息包括字符串類型、字符串偏移、字符串標識、優(yōu)先級及匹配性能。字符串標識可以是字符串對應的編號,以區(qū)分不同的字符串。字符串類型標識可以用來區(qū)分的類型為浮動偏移字符串還是固定偏移字符串。根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM 工作頻率符合條件的TCAM,具體包括根據(jù)字符串長度及字符串偏移確定TCAM表項寬度;根據(jù)字符串的類型及大小確定TCAM的容量;根據(jù)匹配性能確定TCAM的工作頻率。字符串長度為已知量,給定字符串偏移之后就可以確定TCAM的寬度。TCAM容量即TCAM中最多能容納的TCAM表項的數(shù)量。匹配性能例如可以為IG/秒,如果TCAM表項寬度為8字節(jié),此時 TCAM工作頻率為125MHz。如果接收的多模式字符串中包含浮動偏移字符串,還需要先將將浮動偏移字符串轉化為多條固定偏移字符串,再選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的 TCAM。步驟S1102 以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、 字符串域及后掩碼域的所述選擇的TCAM中。本發(fā)明TCAM的每一 TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域,位置域的值C和前掩碼域可以用來表征字符串偏移,字符串域中包含模式字符串內容,采用前掩碼域及后掩碼域屏蔽多模式字符串中無需匹配部分。設TCAM表項的寬度、位置域的寬度、前掩碼域的寬度、字符串域的寬度分別為W、K、N、L,那么后掩碼域的寬度為W-L-N-K。位置域的寬度K及字符串的偏移量of f set可以設定,根據(jù)字符串長度L及字符串偏移offset可以確定TCAM表項寬度W,根據(jù)匹配重復送入的字節(jié)數(shù)、所述TCAM表項寬度 W、字符串寬度L、位置域的寬度K及字符串的偏移量offset計算位置值C及前掩碼的寬度 N0如果字符串配置信息中包含優(yōu)先級,可以根據(jù)所述的字符串優(yōu)先級確定字符串在 TCAM中的存儲地址,將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。步驟S1103 接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊。舉例說明,如果為待匹配字符串字節(jié)數(shù)LO = 14,TCAM表項寬度W = 8,每次匹配重復送入的字節(jié)數(shù)La = 5,如果假設位置域的寬度K = 1,此時可以將待匹配字符串分為每個字符段占7(W-K)個字節(jié),因為相鄰兩個字符段的字符重疊5個字節(jié),所以待匹配字符串可以分為5個字符段,分別為第0-6字節(jié),第2-8字節(jié),第4-10字節(jié),第6-12字節(jié),第8_13字節(jié)。上述5個字符串分別對應匹配順序值0-4,第0-6字節(jié)的字符段對應的順序值為 0,第2-8字節(jié)的字符段對應的順序值為1,第4-10字節(jié)的字符段對應的順序值為2,第6-12 字節(jié)的字符段對應的順序值為3,第8-13字節(jié)的字符段對應的順序值為5。步驟S1104 將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配。步驟S1105 從所述的TCAM中獲取并輸出字符串匹配結果。根據(jù)所述多個字符段的匹配的結果生成總匹配結果,根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息。每個待匹配字符串分成多段進入TCAM進行多次匹配,產(chǎn)生每次的匹配結果,綜合這些匹配結果給出整體的匹配結果,根據(jù)整體的匹配結果。得到命中的模式字符串的標識并輸出,然后輸出命中的位置,命中的位置值為匹配成功的次序值乘以每次送入的有效字節(jié)數(shù)(W-K-La)再加上命中表項的前掩碼寬度(N)。對固定偏移字符串而言,命中位置即為該固定偏移字符串的偏移。最后將被匹配的字符串標識及匹配位置信息輸出,以展現(xiàn)給用戶。本發(fā)明的TCAM匹配方法,具有極高的性能,可達到與TCAM的匹配帶寬相當?shù)男阅?。設TCAM的匹配帶寬為B,由于每次送入CAM比較的W個字節(jié)中,進行字符串比較的有效字節(jié)為W-K-La,故其匹配速度為B X (W-K-La) /W (式 5)La值越小,性能越高,但適用的多模式字符串的長度也越??;La越大,性能越低, 但多模式字符串的長度也越大。K值越小,性能越高,但適用的輸入串的長度也越?。籏值越大,性能越低,但適用的輸入串的長度也越大。圖12中給出一個匹配參數(shù)實例以說明本發(fā)明的有益效果,如圖12所示,由式3可得該實例一定能匹配寬度為36個字節(jié)及以下的字符串,對于某些特殊的固定偏移,甚至能達到匹配寬度為71個字節(jié)的字符串;由式4可得該實例一定能匹配長度為9216個字節(jié)及以下的輸入串;由式5可得該實例可達到每秒匹配12G比特(即每秒1500兆字節(jié))的匹配性能。當字符串的偏移量offset和L滿足式6、式7兩個不等式時(其中m為非負整數(shù))C值和N值可以使用式8及式9表示。(W-K-La) X m+ (W-K-La)彡 offset 彡(ff-K-La) X m+ (ff-K)(式 6)(W-K-La) Xm+ (ff-K-La)彡 offset+L 彡(ff-K-La) Xm+ (ff-K)(式 7)C = offset/ (ff-K-La) -I = m(式 8)N = offset % (ff-K-La) + (ff-K-La)(式 9)進行字符串的存儲。與使用式3和式4進行存儲相比,同樣能匹配成功。但使用式8和式9會在第m次匹配時即匹配成功獲得結果,而使用式3和式4存儲需在第m+1次匹配才到得到結果。滿足這種條件的字符串,是正好與重復送入的La個字節(jié)相匹配的字符串ο對于各種中間次數(shù)的匹配,兩種方式完全相同;但對最后一次匹配,本節(jié)的優(yōu)化方式可以少進行一次比較。在輸入串較短匹配次數(shù)較少的情況下,可獲得較大的性能提高。本發(fā)明的有益效果在于,通過本發(fā)明的TCAM多模式字符串匹配方法及裝置,可使多模式字符串匹配的規(guī)模與TCAM的容量相當,匹配速度與TCAM匹配帶寬相當,提高多模式字符串匹配的規(guī)模和速度。以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種TCAM多模式字符串匹配方法,其特征在于,所述的方法包括接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM ;以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中;接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊; 將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配; 從所述的TCAM中獲取并輸出字符串匹配結果。
2.如權利要求1所述的方法,其特征在于,所述的字符串配置信息包括字符串類型、 字符串偏移、字符串標識、優(yōu)先級及匹配性能。
3.如權利要求2所述的方法,其特征在于,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM,包括根據(jù)字符串長度及字符串偏移確定TCAM表項寬度; 根據(jù)字符串的類型及大小確定TCAM的容量; 根據(jù)匹配性能確定TCAM的工作頻率。
4.如權利要求2所述的方法,其特征在于,將所述的多模式字符串存儲到TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中,包括根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM中的存儲地址; 將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。
5.如權利要求1所述的方法,其特征在于,在將所述的多模式字符串存儲到TCAM表項包含位置域、前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中時,采用所述的前掩碼域及后掩碼域屏蔽多模式字符串中無需匹配部分。
6.如權利要求3所述的方法,其特征在于,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM之前,所述的方法還包括將所述的浮動偏移字符串轉化為多條固定偏移字符串。
7.如權利要求1所述的方法,其特征在于,從所述的TCAM中獲取并輸出字符串匹配結果,包括根據(jù)所述多個字符段的匹配的結果生成總匹配結果;根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位置信息。
8.—種TCAM多模式字符串匹配裝置,其特征在于,所述的裝置包括TCAM選擇單元,用于接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)所述多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的 TCAM ;字符串存儲單元,用于以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將所述的多模式字符串存儲到TCAM表項包含所述位置域、所述前掩碼域、字符串域及后掩碼域的所述選擇的TCAM中;待匹配字符串處理單元,用于接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段,其中,相鄰字符段的部分字符重疊;字符串匹配單元,用于將所述字符段及對應的匹配順序值發(fā)送到所述TCAM中進行匹配;匹配結果輸出單元,用于從所述的TCAM中獲取并輸出字符串匹配結果。
9.如權利要求8所述的裝置,其特征在于,所述的字符串配置信息包括字符串類型、 字符串偏移、字符串標識、優(yōu)先級及匹配性能。
10.如權利要求9所述的裝置,其特征在于,所述的TCAM選擇單元包括 表項寬度確定模塊,用于根據(jù)字符串長度及字符串偏移確定TCAM表項寬度; 容量確定模塊,用于根據(jù)字符串的類型及大小確定TCAM的容量;工作頻率驅動模塊,用于根據(jù)匹配性能確定TCAM的工作頻率。
11.如權利要求9所述的裝置,其特征在于,所述的字符串存儲單元包括地址確定模塊,用于根據(jù)所述的字符串優(yōu)先級確定字符串在TCAM中的存儲地址; 存儲模塊,用于將所述字符串的對應表項內容存儲到TCAM的所述存儲地址中。
12.如權利要求10所述的裝置,其特征在于,所述的前掩碼域及后掩碼域用于屏蔽多模式字符串中無需匹配部分。
13.如權利要求10所述的裝置,其特征在于,所述的TCAM選擇單元還包括 字符串轉化模塊,用于將所述的浮動偏移字符串轉化為多條固定偏移字符串。
14.如權利要求8所述的裝置,其特征在于,所述的匹配結果輸出單元包括 匹配結果生成模塊,用于根據(jù)所述多個字符段的匹配的結果生成總匹配結果;匹配信息獲取模塊,用于根據(jù)總匹配結果獲取匹配到的多模式字符串的標識及匹配位直fe息。
全文摘要
一種TCAM多模式字符串匹配方法及裝置,該方法包括接收用戶輸入的多模式字符串及字符串配置信息,根據(jù)多模式字符串及字符串配置信息選擇TCAM表項寬度、TCAM容量及TCAM工作頻率符合條件的TCAM;以位置域的值和前掩碼域表征字符串偏移且字符串域包含模式字符串內容的方式,將多模式字符串存儲到TCAM中;接收所述用戶輸入的待匹配字符串,根據(jù)每次匹配重復送入的字節(jié)數(shù)及TCAM表項寬度將所述待匹配字符串分為多個字符段;將字符段及對應的匹配順序值發(fā)送到TCAM中進行匹配;從TCAM中獲取并輸出字符串匹配結果。本發(fā)明可使多模式字符串匹配的規(guī)模與TCAM的容量相當,匹配速度與TCAM匹配帶寬相當,提高多模式字符串匹配的規(guī)模和速度。
文檔編號G06F17/30GK102253957SQ201110092439
公開日2011年11月23日 申請日期2011年4月13日 優(yōu)先權日2011年4月13日
發(fā)明者葉軍, 周志雄, 梁麗華, 汪銳, 王增麗, 趙彥博 申請人:北京恒光信息技術有限公司, 北京恒光創(chuàng)新科技股份有限公司, 北京恒光科技發(fā)展有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1