基于bf_tcam實(shí)現(xiàn)零范圍擴(kuò)張的高效范圍匹配方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種基于Bloom filter算法和TCAM(Ternary Content Addressable Memory,三態(tài)內(nèi)容尋址存儲(chǔ)器)實(shí)現(xiàn)零范圍擴(kuò)張的高效范圍匹配方法,主要用于解決報(bào)文分 類中端口范圍匹配,存儲(chǔ)保護(hù)中訪存地址的審查等,實(shí)現(xiàn)訪問(wèn)控制、安全過(guò)濾、帶寬控制等 功能,廣泛應(yīng)用于防火墻、路由器、交換機(jī)、分布式存儲(chǔ)網(wǎng)絡(luò)、可信計(jì)算安全平臺(tái)等設(shè)備中。 這些應(yīng)用對(duì)查找性能要求很高,高速的范圍匹配是其實(shí)現(xiàn)的技術(shù)支撐。
【背景技術(shù)】
[0002] 目前業(yè)界普遍使用TCAM實(shí)現(xiàn)高速查找表。和普通內(nèi)存通過(guò)地址尋找內(nèi)容不同, TCAM通過(guò)內(nèi)容定位地址,它將查找輸入的關(guān)鍵字和所有表項(xiàng)進(jìn)行并行比較來(lái)定位關(guān)鍵字匹 配的存儲(chǔ)地址,根據(jù)得到的地址在RAM中索引規(guī)則內(nèi)容。TCAM可以在固定的時(shí)鐘周期完成查 找操作,目前其時(shí)鐘周期可以達(dá)到2ns,實(shí)現(xiàn)500MSPS的查找速率。TCAM三態(tài)特性需要使用多 達(dá)16個(gè)晶體管來(lái)實(shí)現(xiàn)一個(gè)比特的存儲(chǔ),導(dǎo)致芯片面積較大且價(jià)格不菲,而其并行比較特性 使得功耗很高,一個(gè)18Mbit的TCAM功耗高達(dá)15W。
[0003] TCAM突出的問(wèn)題在于其不適于實(shí)現(xiàn)范圍匹配,它的三態(tài)性便于實(shí)現(xiàn)精確匹配和前 綴匹配。比如TCAM可以方便地表達(dá)報(bào)文分類中的協(xié)議字段和IP地址字段,但端口范圍無(wú)法 直接實(shí)現(xiàn)。目前已有方案是將范圍匹配轉(zhuǎn)換成前綴匹配和精確匹配,一個(gè)范圍字段往往映 射出多條匹配表項(xiàng),稱為范圍擴(kuò)張 (range expansion)。范圍擴(kuò)張降低了TCAM空間使用效 率,造成了較大的配置負(fù)載,提高了更新代價(jià),同時(shí)使TCAM的功耗問(wèn)題雪上加霜。
[0004] 文獻(xiàn)"面向存儲(chǔ)和功耗優(yōu)化的TCAM報(bào)文分類算法研究(2013年解放軍信息工程大 學(xué)碩士論文)"提出一種基于域轉(zhuǎn)換的范圍匹配算法DTRM(Domain Transformation for Range Match),充分利用TCAM表項(xiàng)中的冗余位壓縮規(guī)則集,理想情況下可使范圍擴(kuò)張因子 達(dá)到1.21以下,TCAM空間利用率提高到82 %以上。文獻(xiàn)"基于TCAM的范圍匹配方法一一C-TCAM(通信學(xué)報(bào),2012,33( 1 ) :31-37 )"提出一種基于TCAM的范圍匹配方法C-TCAM (Compressed TCAM),通過(guò)二級(jí)壓縮將2個(gè)擴(kuò)展后的表項(xiàng)壓縮成一個(gè),最壞情況下范圍擴(kuò)張 因子為W-1或W-2(W為關(guān)鍵字位寬,如端口號(hào)位寬為16),同時(shí)減少查找過(guò)程中無(wú)效表項(xiàng)參與 比較來(lái)降低功耗。文獻(xiàn)"Space-Efficient TCAM-Based Classification Using Gray Coding(IEEE TRANSACTIONS ON COMPUTERS,2012,61(1): 18-30)"提出了基于格雷碼的范 圍編碼方法SRGE(Short Range Gray Encoding),利用格雷碼相鄰編碼之間只有一位不同 的特點(diǎn)對(duì)規(guī)則集進(jìn)行壓縮,但隨著范圍長(zhǎng)度增加格雷編碼效率大打折扣,只適用于較小范 圍,最壞情況下擴(kuò)展因子達(dá)到了2W-2。報(bào)文分類中要同時(shí)匹配源端口和目的端口兩個(gè)字段, 上述文獻(xiàn)為代表的范圍匹配方案擴(kuò)張因子是單字段下的平方,大幅增加了規(guī)則表項(xiàng),造成 大量存儲(chǔ)冗余,同時(shí)提高了更新操作的復(fù)雜性和TCAM功耗,如最差情況下DTRM造成49倍擴(kuò) 張,C-TCAM造成225倍擴(kuò)張,SRGE造成784倍擴(kuò)張,同時(shí)DTRM和C-TCAM每條表項(xiàng)需要額外使用 32個(gè)比特。文南犬"A Fast Range Matching Architecture with Unit Storage Expansion Ratio and High Memory Utilization using SBiCAM for Packet Classification(2014 Annual IEEE India Conference)"提出一種用于范圍查找的新型存儲(chǔ)器結(jié)構(gòu)SBiCAM (Smart Binary Content Addressable Memory),無(wú)需規(guī)則擴(kuò)展,直接實(shí)現(xiàn)關(guān)鍵字與表項(xiàng)并 行比較大小,而傳統(tǒng)的TCAM只能判斷是否相等,因而可實(shí)現(xiàn)高效的范圍匹配。但其缺陷顯而 易見(jiàn),SBiCAM是一種新型電路,投入實(shí)際應(yīng)用尚需時(shí)日,從TCAM的發(fā)展歷程可以判斷SBiCAM 即使投入生產(chǎn)也要經(jīng)歷一段漫長(zhǎng)歷程才能達(dá)到較理想的性能以滿足應(yīng)用需求。近年來(lái)出現(xiàn) TCAM分塊存儲(chǔ)策略,按照前綴長(zhǎng)度進(jìn)行分類存儲(chǔ),實(shí)現(xiàn)了前綴子集內(nèi)表項(xiàng)的隨機(jī)存放,提高 了更新性能,而且查找操作只涉及TCAM部分區(qū)域,大幅降低了TCAM工作功耗,其中引入 Bloom filter對(duì)前綴分類處理是最近幾年的一個(gè)創(chuàng)新。文獻(xiàn)"Longest Prefix Matching Using Bloom FiIters(IEEE/ACM TRANSACTIONS ON NETWORKING,2006,14(2):397-409)" 利用Bl〇〇m_filter算法先對(duì)關(guān)鍵字的前綴長(zhǎng)度進(jìn)行預(yù)判斷,再利用哈希查找表搜索前綴 值,最差情況下需要使用N/2(N為前綴子集表項(xiàng)的最大數(shù)目)次哈希查找實(shí)現(xiàn)匹配,查找性 能較TCAM差許多;文獻(xiàn)"基于并行BP神經(jīng)網(wǎng)絡(luò)的路由查找算法(通信學(xué)報(bào),2012,33(2): 61-68)"提出BF_BP模型,第一步與文獻(xiàn)"Longest Prefix Matching Using Bloom Filters"相 似,使用Bloom filter匹配前綴長(zhǎng)度,第二步利用BP反射神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)前綴值匹配,然而其 不足之處在于神經(jīng)網(wǎng)絡(luò)相比TCAM配置與更新要花費(fèi)較長(zhǎng)時(shí)間,需要多次訓(xùn)練實(shí)現(xiàn)神經(jīng)單元 學(xué)習(xí)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于Bloom filter算法和TCAM實(shí)現(xiàn)零范 圍擴(kuò)張的高效范圍匹配算法,以解決基于TCAM實(shí)現(xiàn)范圍匹配方法存在的存儲(chǔ)利用率低、功 耗大的問(wèn)題,本算法高效性體現(xiàn)在:高效存儲(chǔ)、高速查找及低功耗。
[0006]為達(dá)到上述目的,本發(fā)明具體方案如下。
[0007] 一種基于BF_TCAM實(shí)現(xiàn)零范圍擴(kuò)張的高效范圍匹配方法,適用于網(wǎng)絡(luò)設(shè)備中端口 范圍匹配、存儲(chǔ)保護(hù)中訪存地址審查,設(shè)計(jì)了基于最長(zhǎng)共同前綴的分段匹配(Segmented Match on Longest Common Prefix,SMLCP)算法,將范圍匹配轉(zhuǎn)化為前綴匹配和特征區(qū)間 比對(duì)兩個(gè)步驟,實(shí)現(xiàn)了零范圍擴(kuò)張,使TCAM存儲(chǔ)空間利用率達(dá)到100%;根據(jù)SMLCP算法設(shè)計(jì) 了BF_TCAM模型,結(jié)合Bloom filter的前綴分類處理優(yōu)勢(shì)和TCAM的高速查找特性,在保持高 性能的同時(shí)大幅降低TCAM功耗;范圍區(qū)間[s,t]內(nèi)任意一整數(shù)點(diǎn)X,其二進(jìn)制編碼可以分為 最長(zhǎng)共同前綴和偏移量?jī)啥?,其中LCP是區(qū)間內(nèi)所有整數(shù)點(diǎn)的最長(zhǎng)共同前綴,如LCP([37, 57])=001*_##是范圍[37,57]的1^^,40的二進(jìn)制編碼分為001*_##和01000兩部分,* 表示不關(guān)心;SMLCP算法利用范圍區(qū)間的這種特性,將匹配過(guò)程分段進(jìn)行,其具體步驟如下:
[0008] 步驟一,查找與關(guān)鍵字X任意長(zhǎng)度前綴相匹配的范圍區(qū)間,至多有W個(gè)范圍的LCP與 X相匹配,W為X二進(jìn)制編碼位寬;
[0009] 步驟二,根據(jù)X的偏移量精確挑選出匹配的范圍。
[0010] 算法的關(guān)鍵在于第一步將搜索范圍縮小至W個(gè)以下,從而大幅減小了查找范圍。 [0011]使用分類處理思想,根據(jù)前綴長(zhǎng)度劃分范圍子集,各子集獨(dú)立并行處理,能夠隨機(jī) 插入或刪除表項(xiàng),支持增量更新,從而提高了更新性能;利用Bloom filter對(duì)關(guān)鍵字各長(zhǎng)度 前綴進(jìn)行預(yù)判斷,過(guò)濾無(wú)關(guān)范圍子集參與比較,從而大大降低功耗;針對(duì)Bloom filter無(wú)法 刪除元素的缺陷設(shè)計(jì)Bloom filter計(jì)數(shù)器,將位數(shù)組的每一位擴(kuò)展為計(jì)數(shù)器,每增加或刪 除一個(gè)元素時(shí)執(zhí)行加1或減1操作;設(shè)計(jì)BF_TCAM模型,分為前綴預(yù)處理(Bloom filter Preprocessing,BFPP)單元,TCAM_RAM單元(附優(yōu)化的區(qū)間比較器),更新單元和狀態(tài)單元; BFPP單元對(duì)關(guān)鍵字進(jìn)行判斷,篩選出關(guān)鍵字所在的前綴子集;TCAM_RAM單元存儲(chǔ)所有范圍 的LCP、特征區(qū)間及附屬信息(Acs_Inf or),每個(gè)前綴子集對(duì)應(yīng)一組TCAM_RAM,由片選信號(hào)進(jìn) 行選擇;更新單元維護(hù)Bloom fiIter計(jì)數(shù)器,實(shí)時(shí)更新BFPP單元的Bloom fiIter和TCAM_ RAM,有效減少了電路資源開(kāi)銷;狀態(tài)單元記錄工作狀態(tài),指示關(guān)鍵字是否有效;利用SMLCP 特征區(qū)間比對(duì)特點(diǎn)優(yōu)化了比較器設(shè)計(jì),降低電路資源開(kāi)銷。
[0012] 配置過(guò)程分為4個(gè)步驟:
[0013]步驟1、獲取范圍區(qū)間;
[0014]步驟2、計(jì)算范圍區(qū)間的lcp,根據(jù)LCP前綴長(zhǎng)度劃分子集;
[0015] 步驟3、首先訓(xùn)練各子集的Bloom filter