基于tcam的查表處理方法及裝置制造方法【專利摘要】本發(fā)明提供了一種基于TCAM的查表處理方法及裝置,其中,上述方法包括:執(zhí)行用于查詢TCAM表項的第一查詢過程;在執(zhí)行所述第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,其中,所述第一查詢過程和所述第二查詢過程是獨立運行的;通過所述第一查詢過程和所述第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。采用本發(fā)明提供的上述技術(shù)方案,解決了相關(guān)技術(shù)中,基于TCAM的查表方式導(dǎo)致的報文處理時間較長,進而影響到報文的轉(zhuǎn)發(fā)性能等技術(shù)問題,進而減少了報文處理的時間,從而提高了報文的轉(zhuǎn)發(fā)性能?!緦@f明】基于TCAM的查表處理方法及裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及通信領(lǐng)域,尤其是涉及一種基于TCAM的查表處理方法及裝置?!?br>背景技術(shù):
】[0002]基于三態(tài)內(nèi)容尋址存儲器(TernaryContentAddressableMemory,簡稱為TCAM)的查表方式,方便快捷,支持長鍵值和掩碼的查表類型。在需要支持大量訪問控制列表(AccessControlList,簡稱為ACL)或者大量路由的時候,一般交換機的設(shè)備商都會選擇TCAM來實現(xiàn)ACL或者路由的查表。[0003]目前TCAM芯片的查表架構(gòu)是確定的,TCAM查表返回的結(jié)果只能是條目索引號,而不能得到最終的結(jié)果。一個表項如果要通過TCAM來實現(xiàn),需要設(shè)計成:組裝好的鍵值去查TCAM,TCAM返回條目索引號,然后再使用這個條目索引號查一張直接表,得到最終查表結(jié)果。也就是表項設(shè)計成TCAM查表類型,就必須要查一張TCAM表和一張直接表。[0004]開發(fā)者使用TCAM查表,都是先將控制字和鍵值發(fā)送給TCAM,然后等待TCAM查表結(jié)束將結(jié)果(result)返回。最后再用返回的result中的索引(index)查直接表,得到想要的結(jié)果。TCAM查表的過程中,因為芯片中查表結(jié)果存放的寄存器是唯一的,因此不能再去查其他的表項,只能空等待。如圖1所示,相關(guān)技術(shù)中的TCAM查表方案包括如下步驟:[0005]步驟S102:準備TCAM的查表鍵值,準備完之后執(zhí)行步驟S104;[0006]步驟S104:使用準備好的查表鍵值查TCAM表,然后執(zhí)行步驟S106;[0007]步驟S106:判斷TCAM查表是否已經(jīng)返回結(jié)果(result),如果已經(jīng)返回,執(zhí)行步驟S108;如果沒有返回,繼續(xù)執(zhí)行步驟S106,也就是一個等待的過程;[0008]步驟S108:使用返回的result中的index查直接表;[0009]步驟SllO:得到想要的查表結(jié)果,結(jié)束。[0010]從上面的查表步驟中可以看到:步驟S106花費的時間就是一次TCAM查表的時間,在這段時間內(nèi),因為交換機中查表結(jié)果存放的寄存器是固定的,因此不能再去查其他的表項,只能空等待。[0011]因此,TCAM查表會消耗大量的查表性能,在業(yè)務(wù)轉(zhuǎn)發(fā)流程復(fù)雜的情況下,會導(dǎo)致業(yè)務(wù)達不到轉(zhuǎn)發(fā)要求。使用TCAM作為表項存儲的業(yè)務(wù),雖然TCAM查表簡單快捷,但是轉(zhuǎn)發(fā)性能是一大難點。[0012]針對相關(guān)技術(shù)中的上述問題,目如尚未提出有效的解決方案?!?br/>發(fā)明內(nèi)容】[0013]針對相關(guān)技術(shù)中,基于TCAM的查表方式導(dǎo)致的報文處理時間較長,進而影響到報文的轉(zhuǎn)發(fā)性能等技術(shù)問題,本發(fā)明提供了一種基于TCAM的查表處理及裝置,以至少解決上述問題。[0014]根據(jù)本發(fā)明的一個方面,提供了一種基于TCAM的查表處理方法,包括:執(zhí)行用于查詢TCAM表項的第一查詢過程;在執(zhí)行所述第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,其中,所述第一查詢過程和所述第二查詢過程是獨立運行的;通過所述第一查詢過程和所述第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。[0015]優(yōu)選地,通過所述第一查詢過程獲取第一查詢結(jié)果,包括:將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器;從所述查詢引擎專用寄存器中獲取所述第一查詢結(jié)果。[0016]優(yōu)選地,將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器之前,包括:判斷所述第二查詢過程是否結(jié)束,其中,在判斷為結(jié)束的情況下,將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器。[0017]優(yōu)選地,判斷所述第二查詢過程是否結(jié)束,包括:判斷所述其它表項中的待查詢表項是否已經(jīng)遍歷查詢完成。[0018]優(yōu)選地,通過所述第二查詢過程獲取所述第二查詢結(jié)果,包括:將通過所述第二查詢過程查找到的所述第二查詢結(jié)果存儲至所述查表引擎專用寄存器;從所述查詢引擎專用寄存器中獲取所述第二查詢結(jié)果。[0019]優(yōu)選地,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,包括:在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行所述第一查詢過程后,執(zhí)行所述第二查詢過程。[0020]根據(jù)本發(fā)明的另一個方面,提供了一種基于TCAM的查表處理裝置,包括:第一執(zhí)行模塊,用于執(zhí)行用于查詢TCAM表項的第一查詢過程;第二執(zhí)行模塊,用于在執(zhí)行所述第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,其中,所述第一查詢過程和所述第二查詢過程是獨立運行的;獲取模塊,用于通過所述第一查詢過程和所述第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。[0021]優(yōu)選地,所述獲取模塊包括:第一存儲單元,用于將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;讀取單元,用于將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器;第一獲取單元,用于從所述查詢引擎專用寄存器中獲取所述第一查詢結(jié)果。[0022]優(yōu)選地,所述獲取模塊包括:第二存儲單元,用于將通過所述第二查詢過程查找到的所述第二查詢結(jié)果存儲至所述查表引擎專用寄存器;第二獲取單元,用于從所述查詢引擎專用寄存器中獲取所述第二查詢結(jié)果。[0023]優(yōu)選地,所述第二執(zhí)行模塊,用于在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行所述第一查詢過程后,執(zhí)行所述第二查詢過程。[0024]通過本發(fā)明,采用在執(zhí)行用于查詢TCAM表項的第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程的技術(shù)手段,解決了相關(guān)技術(shù)中,基于TCAM的查表方式導(dǎo)致的報文處理時間較長,進而影響到報文的轉(zhuǎn)發(fā)性能等技術(shù)問題,進而減少了報文處理的時間,從而提高了報文的轉(zhuǎn)發(fā)性能?!緦@綀D】【附圖說明】[0025]此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:[0026]圖1為根據(jù)相關(guān)技術(shù)的TCAM查表方法的流程圖;[0027]圖2為根據(jù)本發(fā)明實施例的基于TCAM的查表處理方法的流程圖;[0028]圖3為根據(jù)本發(fā)明實施例的基于TCAM的查表處理裝置的結(jié)構(gòu)框圖;[0029]圖4為根據(jù)本發(fā)明實施例的基于TCAM的查表處理裝置的另一結(jié)構(gòu)框圖;[0030]圖5為根據(jù)本發(fā)明優(yōu)選實施例的基于TCAM的查表處理方法的流程圖;[0031]圖6為根據(jù)本發(fā)明優(yōu)選實施例的基于TCAM的查表處理方法的流程圖?!揪唧w實施方式】[0032]下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。[0033]實施例1[0034]圖2為根據(jù)本發(fā)明實施例的基于TCAM的查表處理方法的流程圖。如圖2所示,該方法包括:[0035]步驟S202,執(zhí)行用于查詢TCAM表項的第一查詢過程;[0036]步驟S204,在執(zhí)行第一查詢過程中,執(zhí)行用于查詢除TCAM表項之外的其它表項的第二查詢過程,其中,第一查詢過程和第二查詢過程是獨立運行的;[0037]步驟S206,通過第一查詢過程和第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。[0038]通過上述各個處理步驟,由于在執(zhí)行用于查詢TCAM表項的第一查詢過程中,執(zhí)行了用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,充分利用了上述第一查詢過程中用于等待查詢結(jié)果的等待時間,從而有效減少了報文處理的時間,進而提高了報文的轉(zhuǎn)發(fā)性能。[0039]本實施例中,為了不影響正常TCAM查表,在通過第一查詢過程獲取第一查詢結(jié)果的過程中,需要設(shè)置一個和查表引擎專用寄存器不同的指定寄存器存儲返回的查詢結(jié)果,具體實現(xiàn)過程如下:將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;將第一查詢結(jié)果從指定寄存器讀取至查表引擎專用寄存器;從查詢引擎專用寄存器中獲取第一查詢結(jié)果。[0040]在本實施例中,將第一查詢結(jié)果從指定寄存器讀取至查表引擎專用寄存器之前,需要判斷第二查詢過程是否結(jié)束,其中,在判斷為結(jié)束的情況下,將第一查詢結(jié)果從指定寄存器讀取至查表引擎專用寄存器。[0041]在上述其它表項為多個時,上述判斷過程可以表現(xiàn)為以下方式:判斷其它表項中的待查詢表項是否已經(jīng)遍歷查詢完成。[0042]上述第二查詢過程可以通過以下方式實現(xiàn):將通過第二查詢過程查找到的第二查詢結(jié)果存儲至查表引擎專用寄存器;從查詢引擎專用寄存器中獲取第二查詢結(jié)果。[0043]執(zhí)行用于查詢除TCAM表項之外的其它表項的第二查詢過程的時機可以選擇在第二查詢過程中的任意時機,具體根據(jù)實際情況而定,在本實施例的一個優(yōu)選實施方式中,可以在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行第一查詢過程后,執(zhí)行第二查詢過程。[0044]在本實施例中還提供了一種基于TCAM的查表處理裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述,下面對該裝置中涉及到的模塊進行說明。如以下所使用的,術(shù)語"模塊"可以實現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。圖3為根據(jù)本發(fā)明實施例的基于TCAM的查表處理裝置的結(jié)構(gòu)框圖。如圖3所示,該裝置包括:[0045]第一執(zhí)行模塊30,連接至第二執(zhí)行模塊32和獲取模塊34,用于執(zhí)行用于查詢TCAM表項的第一查詢過程;[0046]第二執(zhí)行模塊32,連接至獲取模塊34,用于在執(zhí)行第一查詢過程中,執(zhí)行用于查詢除TCAM表項之外的其它表項的第二查詢過程,其中,第一查詢過程和第二查詢過程是獨立運行的;[0047]獲取模塊34,用于通過第一查詢過程和第二查詢過程分別獲取第一查詢結(jié)果和第_查詢結(jié)果。[0048]通過上述各個模塊實現(xiàn)的功能,同樣可以充分利用上述第一查詢過程中用于等待查詢結(jié)果的等待時間,從而有效減少報文處理的時間,進而提高報文的轉(zhuǎn)發(fā)性能。[0049]優(yōu)選地,如圖4所示,上述獲取模塊34包括:第一存儲單元340,連接至讀取單元342,用于將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;讀取單元342,連接至第一獲取單元344,用于將第一查詢結(jié)果從指定寄存器讀取至查表引擎專用寄存器;第一獲取單元344,用于從查詢引擎專用寄存器中獲取第一查詢結(jié)果。[0050]優(yōu)選地,如圖4所示,上述獲取模塊34包括:第二存儲單元346,連接至第二獲取單元348,用于將通過第二查詢過程查找到的第二查詢結(jié)果存儲至查表引擎專用寄存器;第二獲取單元348,用于從查詢引擎專用寄存器中獲取第二查詢結(jié)果。[0051]優(yōu)選地,上述第二執(zhí)行模塊32,用于在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行第一查詢過程后,執(zhí)行第二查詢過程。[0052]為了更好地理解上述實施例,以下結(jié)合上述實施例的優(yōu)選實施例1-2詳細說明。[0053]實施例1[0054]本實施例提供一種基于TCAM的查表處理方法,在TCAM查表等待結(jié)果的過程中,力口入了其他表項的查找,從而減少了報文處理的時間,提高了報文的轉(zhuǎn)發(fā)性能。[0055]為實現(xiàn)上述目的,本實施例采用的技術(shù)方案如下:充分利用相關(guān)技術(shù)中(如圖1所示的方案)空等待的時間,穿插查找其他的需要查找的表項(如查一張哈希表),查找完成之后,再判斷TCAM查表是否已完成,如果完成,再查一張直接表,沒有完成則等待。[0056]如圖5所示,該方法包括以下處理步驟:[0057]步驟S502:準備TCAM的查表鍵值,準備完之后執(zhí)行步驟S504;[0058]步驟S504:使用準備好的查表鍵值查TCAM表。[0059]在此需要強調(diào)的是:TCAM查表和其他的普通查表不一樣,TCAM查表是數(shù)據(jù)處理芯片將控制字和鍵值發(fā)送給TCAM,TCAM獨自進行查表的過程。[0060]數(shù)據(jù)處理芯片只需要給TCAM查表指定一個返回寄存器(該返回寄存器不占用查表引擎專用寄存器,而查表引擎專用寄存器又可以讀取到返回寄存器中的TCAM返回值),然后在TCAM查表等待的過程中,數(shù)據(jù)處理芯片就可以再去查找其他的表項。[0061]于是在步驟S504中,數(shù)據(jù)處理芯片必須指定TCAM查表結(jié)束,result返回到一個返回寄存器,而非查表引擎專用寄存器。[0062]TCAM查表命令執(zhí)行完成之后(也就是將控制字和鍵值發(fā)送給TCAM之后),執(zhí)行步驟3。[0063]步驟S506:看有沒有需要并行查找的表項,也就是和TCAM查找結(jié)果無關(guān)的表項。如果有的話,就穿插在TCAM等待的間隙查找,即并行查找,并行查表結(jié)束之后,執(zhí)行步驟S508;[0064]步驟S508:讀取TCAM返回值寄存器,將TCAM查找result讀取到查表引擎專用寄存器中;執(zhí)行步驟S510;[0065]步驟S510:判斷TCAM查表是否已經(jīng)返回result,如果返回,執(zhí)行步驟S512;如果沒有返回,繼續(xù)執(zhí)行步驟S510,也就是一個等待的過程,即使等待也是一個很短的時間;[0066]步驟S512:使用返回的result中的index查直接表,得到真正想要的查表結(jié)果。結(jié)束。[0067]本實施例中的上述方案適用于對各種類型的TCAM查表。[0068]實施例2[0069]本實施例給出了一個簡單的報文處理的實例。見表1,一共需要查四張表:其中tablel是一張獨立的表項,什么時候查都無所謂;table2_table4必須順序查,table4依賴table3,table3依賴table2?!緳?quán)利要求】1.一種基于三態(tài)內(nèi)容尋址存儲器TCAM的查表處理方法,其特征在于,包括:執(zhí)行用于查詢TCAM表項的第一查詢過程;在執(zhí)行所述第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,其中,所述第一查詢過程和所述第二查詢過程是獨立運行的;通過所述第一查詢過程和所述第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過所述第一查詢過程獲取第一查詢結(jié)果,包括:將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器;從所述查詢引擎專用寄存器中獲取所述第一查詢結(jié)果。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器之前,包括:判斷所述第二查詢過程是否結(jié)束,其中,在判斷為結(jié)束的情況下,將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,判斷所述第二查詢過程是否結(jié)束,包括:判斷所述其它表項中的待查詢表項是否已經(jīng)遍歷查詢完成。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過所述第二查詢過程獲取所述第二查詢結(jié)果,包括:將通過所述第二查詢過程查找到的所述第二查詢結(jié)果存儲至所述查表引擎專用寄存器;從所述查詢引擎專用寄存器中獲取所述第二查詢結(jié)果。6.根據(jù)權(quán)利要求1至5任一項所述的方法,其特征在于,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,包括:在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行所述第一查詢過程后,執(zhí)行所述第二查詢過程。7.-種基于三態(tài)內(nèi)容尋址存儲器TCAM的查表處理裝置,其特征在于,包括:第一執(zhí)行模塊,用于執(zhí)行用于查詢TCAM表項的第一查詢過程;第二執(zhí)行模塊,用于在執(zhí)行所述第一查詢過程中,執(zhí)行用于查詢除所述TCAM表項之外的其它表項的第二查詢過程,其中,所述第一查詢過程和所述第二查詢過程是獨立運行的;獲取模塊,用于通過所述第一查詢過程和所述第二查詢過程分別獲取第一查詢結(jié)果和第二查詢結(jié)果。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述獲取模塊包括:第一存儲單元,用于將從TCAM查詢到的第一查詢結(jié)果存儲至除查表引擎專用寄存器之外的指定寄存器;讀取單元,用于將所述第一查詢結(jié)果從所述指定寄存器讀取至所述查表引擎專用寄存器;第一獲取單元,用于從所述查詢引擎專用寄存器中獲取所述第一查詢結(jié)果。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述獲取模塊包括:第二存儲單元,用于將通過所述第二查詢過程查找到的所述第二查詢結(jié)果存儲至所述查表引擎專用寄存器;第二獲取單元,用于從所述查詢引擎專用寄存器中獲取所述第二查詢結(jié)果。10.根據(jù)權(quán)利要求7至9任一項所述的裝置,其特征在于,所述第二執(zhí)行模塊,用于在根據(jù)用于查詢TCAM表項的查詢消息觸發(fā)執(zhí)行所述第一查詢過程后,執(zhí)行所述第二查詢過程?!疚臋n編號】G06F17/30GK104239337SQ201310244525【公開日】2014年12月24日申請日期:2013年6月19日優(yōu)先權(quán)日:2013年6月19日【發(fā)明者】顧霞,張啟申申請人:中興通訊股份有限公司