專(zhuān)利名稱(chēng):一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及三態(tài)內(nèi)容尋址存儲(chǔ)器(TCAM,Ternary Content Addressable Memory)表中的一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法。
背景技術(shù):
在通信設(shè)備或安全設(shè)備中,TCAM廣泛運(yùn)用于快速路由查找、訪問(wèn)控制列(ACL,Access Control List)查找、流查找。TCAM能夠根據(jù)輸入的key,進(jìn)行查找,如果匹配,TCAM將返回該key在TCAM中存放位置的index,或該key對(duì)應(yīng)的表項(xiàng)內(nèi)容,表項(xiàng)的內(nèi)容可以由用戶(hù)自由定義。
商用TCAM的查找key的長(zhǎng)度一般都有限制,如key長(zhǎng)分為288bits、144bits、72bits、36bits幾檔,超過(guò)288bits的key將無(wú)法在TCAM中存放。
現(xiàn)有技術(shù)中一種TCAM表構(gòu)造方法如圖1所示,其中,TCAM中有三個(gè)模塊KEY表模塊,MASK表模塊和索引表模塊。Key表中的每個(gè)entry存放規(guī)則查找key值,MASK表中存放該規(guī)則對(duì)應(yīng)掩碼,索引表模塊中存放該規(guī)則對(duì)應(yīng)的動(dòng)作索引或直接放該規(guī)則對(duì)應(yīng)的動(dòng)作內(nèi)容。
但是,在這種構(gòu)造方式下,key的長(zhǎng)度會(huì)有明確的限定,例如不能超過(guò)288bit,而例如IPv6五元組的key(SIP+DIP+SPORT+DPORT+protocol)的長(zhǎng)度達(dá)到296bit,TCAM應(yīng)用時(shí)一般還需要在KEY前加上一部分比特(圖1中使用了4bits用于標(biāo)識(shí)表類(lèi)型)用于區(qū)分不同類(lèi)型的表項(xiàng),所以一般的TCAM難以滿(mǎn)足這種長(zhǎng)度要求,影響了數(shù)據(jù)的存儲(chǔ)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例要解決的技術(shù)問(wèn)題是提供一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法,能夠提高TCAM表的數(shù)據(jù)存儲(chǔ)效率。
本發(fā)明實(shí)施例提供的數(shù)據(jù)查找方法,應(yīng)用于TCAM表,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;存儲(chǔ)所述各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系;獲取查找信息,并根據(jù)子數(shù)據(jù)的級(jí)別數(shù)目對(duì)所述查找信息進(jìn)行拆分;利用拆分后的查找信息以及所述對(duì)應(yīng)關(guān)系在對(duì)應(yīng)的子數(shù)據(jù)中查詢(xún)滿(mǎn)足條件的子數(shù)據(jù)。
本發(fā)明實(shí)施例提供的數(shù)據(jù)添加方法,應(yīng)用于TCAM表,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;使用拆分后的子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系查詢(xún)是否已存在該數(shù)據(jù),若不存在,則添加該數(shù)據(jù)。
本發(fā)明實(shí)施例提供的數(shù)據(jù)刪除方法,應(yīng)用于TCAM表,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系,并記錄各級(jí)子數(shù)據(jù)的連接數(shù)目;存儲(chǔ)各級(jí)子數(shù)據(jù),所述對(duì)應(yīng)關(guān)系以及記錄的下一級(jí)子數(shù)據(jù)的數(shù)目;獲取需要?jiǎng)h除的數(shù)據(jù)的標(biāo)識(shí);根據(jù)所述標(biāo)識(shí)刪除對(duì)應(yīng)的最低級(jí)子數(shù)據(jù),并將所述最低級(jí)子數(shù)據(jù)所連接的上一級(jí)子數(shù)據(jù)的連接數(shù)目減1;判斷所述子數(shù)據(jù)的連接數(shù)目是否為0,若不為0,則保留該子數(shù)據(jù),若為0,則刪除該子數(shù)據(jù)并重復(fù)上述過(guò)程直至完全刪除整個(gè)數(shù)據(jù)。
本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于TCAM表,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)裝置,包括拆分單元,建立單元以及存儲(chǔ)控制單元;所述拆分單元用于根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù),并將拆分后的數(shù)據(jù)發(fā)送至建立單元;所述建立單元用于建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;所述存儲(chǔ)控制單元用于將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下有益效果由于本發(fā)明實(shí)施例可以將數(shù)據(jù)拆分為若干子數(shù)據(jù)進(jìn)行存儲(chǔ),所以總長(zhǎng)度超過(guò)TCAM表數(shù)據(jù)長(zhǎng)度門(mén)限值的數(shù)據(jù)可以被拆分為若干相互關(guān)聯(lián)的子數(shù)據(jù)而存入TCAM表中,進(jìn)而提高了TCAM表的數(shù)據(jù)存儲(chǔ)效率。
圖1為現(xiàn)有技術(shù)中TCAM表構(gòu)造方法示意圖;
圖2為本發(fā)明實(shí)施例中TCAM表構(gòu)造方法流程圖;圖3為本發(fā)明實(shí)施例中TCAM表構(gòu)造示意圖;圖4為本發(fā)明實(shí)施例中TCAM表查找方法流程圖;圖5為本發(fā)明實(shí)施例中TCAM表表項(xiàng)添加方法流程圖;圖6為本發(fā)明實(shí)施例中TCAM表表項(xiàng)刪除方法流程圖;圖7為本發(fā)明實(shí)施例中TCAM表構(gòu)造裝置示意圖。
具體實(shí)施例方式
本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法,用于提高TCAM表的數(shù)據(jù)存儲(chǔ)效率。
在下面的實(shí)施例中,均以TCAM表表項(xiàng)作為T(mén)CAM表數(shù)據(jù)的例子,可以理解的是,同樣可以是TCAM表中的其它數(shù)據(jù),處理流程類(lèi)似。
其中,數(shù)據(jù)存儲(chǔ)的過(guò)程以構(gòu)造TCAM表的過(guò)程為例進(jìn)行說(shuō)明,請(qǐng)參閱圖2,本發(fā)明TCAM表構(gòu)造方法實(shí)施例流程包括201、將表項(xiàng)拆分為若干子表項(xiàng);具體的拆分步驟包括獲取當(dāng)前表項(xiàng)的鍵長(zhǎng)以及三態(tài)內(nèi)容尋址存儲(chǔ)器表的表項(xiàng)鍵長(zhǎng)門(mén)限值;對(duì)當(dāng)前表項(xiàng)進(jìn)行拆分并記錄每級(jí)子表項(xiàng)的鍵長(zhǎng);判斷是否每級(jí)子表項(xiàng)的鍵長(zhǎng)都小于或等于所述門(mén)限值,若不是,則重新對(duì)表項(xiàng)進(jìn)行拆分直至每級(jí)子表項(xiàng)的鍵長(zhǎng)都小于或等于所述門(mén)限值。
202、建立對(duì)應(yīng)關(guān)系;為拆分出的子表項(xiàng)分配用于標(biāo)識(shí)與其相連的子表項(xiàng)信息的連接參數(shù),也就是說(shuō),一個(gè)完整的表項(xiàng)被拆分為若干個(gè)子表項(xiàng)之后,需要通過(guò)連接參數(shù)將這若干個(gè)子表項(xiàng)連接起來(lái)。
203、將各級(jí)子表項(xiàng)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
下面以具體的實(shí)施例說(shuō)明上述流程,在本實(shí)施例中,只以將表項(xiàng)拆分為2級(jí)為例,同樣可以擴(kuò)展到拆分為多級(jí),其拆分的方式一致。
請(qǐng)參閱圖2,一并參閱圖1,將圖1所示的3個(gè)表項(xiàng)(2000::1,2000::2,3,3,3)(2000::1,2000::2,4,4,4)(2000::1,2000::2,8,8,8)各拆分為兩級(jí)子表項(xiàng),具體為第一級(jí)子表項(xiàng)為(sub key number,SIP,DIP),在第一級(jí)子表,即存儲(chǔ)第一級(jí)子表項(xiàng)的表,中為每個(gè)子表項(xiàng)分配一個(gè)連接參數(shù),用于連接本級(jí)子表項(xiàng)與相鄰級(jí)的子表項(xiàng)。第二級(jí)子表項(xiàng)為(sub key seq,previoussub key correlator,SPORT,DPORT,PROTOCOL),從拆分出的數(shù)據(jù)中可以看出,該3個(gè)表項(xiàng)的第一級(jí)子表項(xiàng)均為(2000::1,2000::2),所以可以將該3個(gè)表項(xiàng)的第一級(jí)子表項(xiàng)進(jìn)行合并,可以理解的是,對(duì)表項(xiàng)的拆分可以盡量滿(mǎn)足可合并的要求以減少TCAM表的消耗。
當(dāng)上述方案擴(kuò)展到多級(jí)子表項(xiàng)的情況時(shí),在后一級(jí)子表需要包括前一級(jí)子表項(xiàng)的連接參數(shù)。除最后一級(jí)子表項(xiàng)外,每一級(jí)子表的表項(xiàng)值包括前一級(jí)表項(xiàng)的連接參數(shù),索引表模塊表中放該表項(xiàng)的連接參數(shù)。
按照上述的方式構(gòu)造TCAM表之后,在進(jìn)行操作時(shí)也需要有相應(yīng)的流程,下面對(duì)本發(fā)明實(shí)施例中TCAM表操作方法進(jìn)行詳細(xì)介紹,下面均以拆分為兩級(jí)子表項(xiàng)為例進(jìn)行描述,可以很容易的擴(kuò)展到拆分為多級(jí)子表項(xiàng)的情況,TCAM表操作方法主要分為以下幾種一、TCAM表查找,請(qǐng)參閱圖4,流程包括401、將表項(xiàng)分解為兩級(jí)子表項(xiàng);采用上述構(gòu)造方法中的拆分方式對(duì)表項(xiàng)進(jìn)行拆分。
402、使用一級(jí)子表項(xiàng)查第一級(jí)子表;使用拆分后的一級(jí)鍵在第一級(jí)子表中查詢(xún)滿(mǎn)足條件的子表項(xiàng)。
403、判斷是否查詢(xún)到,若查詢(xún)到,則執(zhí)行步驟404,若未查詢(xún)到,則執(zhí)行步驟408;404、讀取查詢(xún)到的子表項(xiàng)的連接參數(shù)中的內(nèi)容;讀取連接參數(shù)中的內(nèi)容以確定對(duì)應(yīng)的第二級(jí)子表。
405、使用二級(jí)子表項(xiàng)查詢(xún)第二級(jí)子表;
406、判斷是否查詢(xún)到,若查詢(xún)到,則執(zhí)行步驟407,若未查詢(xún)到,則執(zhí)行步驟408;407、反饋查找成功消息;當(dāng)在兩級(jí)子表中都查詢(xún)到滿(mǎn)足條件的內(nèi)容后,則反饋查詢(xún)成功消息,并可根據(jù)要求反饋該表項(xiàng)內(nèi)容,或執(zhí)行該表項(xiàng)對(duì)應(yīng)的操作。
408、反饋查找失敗消息。
若第一級(jí)子表中沒(méi)有找到滿(mǎn)足條件的內(nèi)容,則反饋查詢(xún)失敗消息,若在第一級(jí)子表中查詢(xún)到滿(mǎn)足條件的內(nèi)容,而在第二級(jí)子表中未查詢(xún)到滿(mǎn)足條件的內(nèi)容,則同樣反饋查詢(xún)失敗消息。
二、TCAM表表項(xiàng)添加,請(qǐng)參閱圖5,流程包括501、將需要添加的表項(xiàng)拆分為兩級(jí)子表項(xiàng);采用上述構(gòu)造方法中的拆分方式對(duì)表項(xiàng)進(jìn)行拆分。
502、使用一級(jí)子表項(xiàng)查第一級(jí)子表;使用拆分后的一級(jí)鍵在第一級(jí)子表中查詢(xún)滿(mǎn)足條件的子表項(xiàng)。
503、判斷是否查詢(xún)到,若查詢(xún)到,則執(zhí)行步驟506,若未查詢(xún)到,則執(zhí)行步驟504;504、申請(qǐng)兩級(jí)子表項(xiàng)資源;若未在第一級(jí)子表中查詢(xún)滿(mǎn)足條件的內(nèi)容,則說(shuō)明需要添加的該表項(xiàng)在TCAM表中不存在對(duì)應(yīng)的子表項(xiàng),所以需要完全新建兩個(gè)子表項(xiàng)。
505、添加兩級(jí)子表項(xiàng);使用第一級(jí)子表項(xiàng)添加第一級(jí)子表中的子表項(xiàng),并分配對(duì)應(yīng)的連接參數(shù),使用第二級(jí)子表項(xiàng)添加第二級(jí)子表中的子表項(xiàng)。
若考慮到表項(xiàng)刪除操作,則在此時(shí)還需要在分配對(duì)應(yīng)的連接參數(shù)之后將下一級(jí)子表項(xiàng)的數(shù)目設(shè)置為1。
506、讀取該表項(xiàng)的連接參數(shù);讀取連接參數(shù)中的內(nèi)容以確定對(duì)應(yīng)的第二級(jí)子表。
507、使用第二級(jí)子表項(xiàng)查詢(xún)第二級(jí)子表;508、判斷是否查詢(xún)到,若查詢(xún)到,則執(zhí)行步驟511,若未查詢(xún)到,則執(zhí)行步驟509;509、申請(qǐng)第二級(jí)子表項(xiàng)資源;需要添加的表項(xiàng)經(jīng)過(guò)拆分之后,其第一級(jí)子表項(xiàng)已經(jīng)存在于TCAM表中,所以只需要為其分配第二級(jí)子表項(xiàng)的資源即可。
510、添加第二級(jí)子表項(xiàng);使用第二級(jí)子表項(xiàng)添加第二級(jí)子表中的子表項(xiàng)。
若考慮到表項(xiàng)刪除操作,則在此時(shí)還需要在添加第二級(jí)子表中的子表項(xiàng)之前或之后將上一級(jí)子表項(xiàng)中的下一級(jí)子表項(xiàng)數(shù)目加1。
511、反饋表項(xiàng)已存在。
當(dāng)?shù)谝患?jí)子表項(xiàng)與第二級(jí)子表項(xiàng)都在TCAM表中存在時(shí),則認(rèn)為該表項(xiàng)已經(jīng)存在。
三、TCAM表表項(xiàng)刪除,請(qǐng)參閱圖6,流程包括601、刪除第二級(jí)子表項(xiàng);602、修改連接數(shù)目;將第一級(jí)子表項(xiàng)連接的下一級(jí)子表項(xiàng)的數(shù)目減1;603、判斷該第一級(jí)子表項(xiàng)連接的下一級(jí)子表項(xiàng)數(shù)目是否為0,若是,則執(zhí)行步驟604,若否,則執(zhí)行步驟605;604、刪除該第一級(jí)子表項(xiàng);605、結(jié)束。
上面介紹了常見(jiàn)的三種TCAM表操作方法,可以理解的是,操作方法可以擴(kuò)展到其它類(lèi)似的方法,只要使用本發(fā)明實(shí)施例中TCAM表構(gòu)造方法構(gòu)造出的TCAM表即可。
在上面描述的實(shí)施例中,對(duì)TCAM表的操作,例如數(shù)據(jù)存儲(chǔ),數(shù)據(jù)查找,數(shù)據(jù)添加,數(shù)據(jù)刪除,都可以通過(guò)外部軟件在TCAM存儲(chǔ)的數(shù)據(jù)中直接操作;
其中,數(shù)據(jù)查找還可以由TCAM表自身實(shí)現(xiàn),通過(guò)TCAM表獲取到的查找信息(即索引)在數(shù)據(jù)中查詢(xún)。
數(shù)據(jù)存儲(chǔ)的過(guò)程以構(gòu)造TCAM表的過(guò)程為例進(jìn)行說(shuō)明,故數(shù)據(jù)存儲(chǔ)裝置也以TCAM表構(gòu)造裝置為例進(jìn)行說(shuō)明,下面介紹本發(fā)明實(shí)施例中的TCAM表構(gòu)造裝置,請(qǐng)參閱圖7,具體包括拆分單元701,建立單元702,存儲(chǔ)控制單元703以及合并單元704;所述拆分單元701用于根據(jù)鍵長(zhǎng)將表項(xiàng)拆分為若干級(jí)子表項(xiàng),并將拆分后的表項(xiàng)發(fā)送至建立單元702;所述建立單元702用于建立各級(jí)子表項(xiàng)之間的對(duì)應(yīng)關(guān)系;所述存儲(chǔ)控制單元703用于將各級(jí)子表項(xiàng)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表;所述合并單元704,用于在相同級(jí)別的子表項(xiàng)中合并內(nèi)容相同的子表項(xiàng)。
其中,拆分單元701包括獲取單元7011,拆分執(zhí)行單元7012以及拆分控制單元7013;所述獲取單元7011用于獲取當(dāng)前表項(xiàng)的鍵長(zhǎng)以及三態(tài)內(nèi)容尋址存儲(chǔ)器表的表項(xiàng)鍵長(zhǎng)門(mén)限值;所述拆分執(zhí)行單元7012用于對(duì)當(dāng)前表項(xiàng)進(jìn)行拆分并記錄每級(jí)子表項(xiàng)的鍵長(zhǎng);所述拆分控制單元7013用于判斷是否每級(jí)子表項(xiàng)的鍵長(zhǎng)都小于或等于所述門(mén)限值,若不是,則通知拆分執(zhí)行單元7012重新對(duì)表項(xiàng)進(jìn)行拆分直至每級(jí)子表項(xiàng)的鍵長(zhǎng)都小于或等于所述門(mén)限值。
此外,本發(fā)明實(shí)施例中還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述介質(zhì)上存儲(chǔ)有上述實(shí)施例中描述的軟件,該軟件運(yùn)行時(shí)包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
上述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是磁盤(pán),光盤(pán),閃存,還可以是其它存儲(chǔ)介質(zhì)。
綜上所述,本發(fā)明實(shí)施例中,由于本發(fā)明實(shí)施例可以將表項(xiàng)拆分為若干子表項(xiàng)進(jìn)行存儲(chǔ),所以總長(zhǎng)度超過(guò)TCAM表表項(xiàng)鍵長(zhǎng)門(mén)限值的表項(xiàng)可以被拆分為若干相互關(guān)聯(lián)的子表項(xiàng)而存入TCAM表中,進(jìn)而提高了TCAM表的數(shù)據(jù)存儲(chǔ)效率。
以上對(duì)本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明實(shí)施方式進(jìn)行了闡述,依據(jù)本發(fā)明說(shuō)明書(shū)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種數(shù)據(jù)查找方法,應(yīng)用于TCAM表,其特征在于,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;存儲(chǔ)所述各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系;獲取查找信息,并根據(jù)子數(shù)據(jù)的級(jí)別數(shù)目對(duì)所述查找信息進(jìn)行拆分;利用拆分后的查找信息以及所述對(duì)應(yīng)關(guān)系在對(duì)應(yīng)的子數(shù)據(jù)中查詢(xún)滿(mǎn)足條件的子數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)查找方法,其特征在于,所述利用拆分后的查找信息以及所述對(duì)應(yīng)關(guān)系在對(duì)應(yīng)的子數(shù)據(jù)中查詢(xún)滿(mǎn)足條件的子數(shù)據(jù)的步驟包括根據(jù)第一級(jí)查找信息在第一級(jí)子數(shù)據(jù)中查詢(xún)滿(mǎn)足條件的子數(shù)據(jù),若查詢(xún)到,則根據(jù)所述第一級(jí)子數(shù)據(jù)與第二級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系獲取第二級(jí)子數(shù)據(jù),并利用第二級(jí)查找信息在所述第二級(jí)子數(shù)據(jù)中查詢(xún)滿(mǎn)足條件的子數(shù)據(jù)直至查詢(xún)完畢;若在每一級(jí)子數(shù)據(jù)中均查詢(xún)到滿(mǎn)足條件的子數(shù)據(jù),則返回查詢(xún)成功消息并提取該完整數(shù)據(jù),若在其中任何一級(jí)未查詢(xún)到滿(mǎn)足條件的子數(shù)據(jù),則返回查詢(xún)失敗消息。
3.一種數(shù)據(jù)添加方法,應(yīng)用于TCAM表,其特征在于,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;使用拆分后的子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系查詢(xún)是否已存在該數(shù)據(jù),若不存在,則添加該數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)添加方法,其特征在于,所述使用拆分后的子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系查詢(xún)是否已存在該數(shù)據(jù)的步驟包括根據(jù)拆分后的子數(shù)據(jù)在對(duì)應(yīng)的子數(shù)據(jù)中查詢(xún)是否存在相同的子數(shù)據(jù),若存在,則根據(jù)所述對(duì)應(yīng)關(guān)系查詢(xún)下一級(jí)子數(shù)據(jù);判斷拆分后的子數(shù)據(jù)是否均已存在,若是,則反饋添加失敗消息,若否,則分配相應(yīng)的資源并添加該子數(shù)據(jù)。
5.一種數(shù)據(jù)刪除方法,應(yīng)用于TCAM表,其特征在于,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系,并記錄各級(jí)子數(shù)據(jù)的連接數(shù)目;存儲(chǔ)各級(jí)子數(shù)據(jù),所述對(duì)應(yīng)關(guān)系以及記錄的下一級(jí)子數(shù)據(jù)的數(shù)目;獲取需要?jiǎng)h除的數(shù)據(jù)的標(biāo)識(shí);根據(jù)所述標(biāo)識(shí)刪除對(duì)應(yīng)的最低級(jí)子數(shù)據(jù),并將所述最低級(jí)子數(shù)據(jù)所連接的上一級(jí)子數(shù)據(jù)的連接數(shù)目減1;判斷所述子數(shù)據(jù)的連接數(shù)目是否為0,若不為0,則保留該子數(shù)據(jù),若為0,則刪除該子數(shù)據(jù)并重復(fù)上述過(guò)程直至完全刪除整個(gè)數(shù)據(jù)。
6.一種數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于TCAM表,其特征在于,包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù)的步驟包括獲取當(dāng)前數(shù)據(jù)長(zhǎng)度以及三態(tài)內(nèi)容尋址存儲(chǔ)器表的數(shù)據(jù)長(zhǎng)度門(mén)限值;對(duì)當(dāng)前數(shù)據(jù)進(jìn)行拆分并記錄每級(jí)子數(shù)據(jù)的長(zhǎng)度;判斷是否每級(jí)子數(shù)據(jù)的長(zhǎng)度都小于或等于所述門(mén)限值,若不是,則重新對(duì)數(shù)據(jù)進(jìn)行拆分直至每級(jí)子數(shù)據(jù)的長(zhǎng)度都小于或等于所述門(mén)限值。
8.根據(jù)權(quán)利要求6或7所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系的步驟包括為拆分出的子數(shù)據(jù)分配用于標(biāo)識(shí)與其相連的子數(shù)據(jù)信息的連接參數(shù)。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù)的步驟之后包括在相同級(jí)別的子數(shù)據(jù)中合并內(nèi)容相同的子數(shù)據(jù)。
10.一種數(shù)據(jù)存儲(chǔ)裝置,其特征在于,包括拆分單元,建立單元以及存儲(chǔ)控制單元;所述拆分單元用于根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù),并將拆分后的數(shù)據(jù)發(fā)送至建立單元;所述建立單元用于建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;所述存儲(chǔ)控制單元用于將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)存儲(chǔ)裝置,其特征在于,所述拆分單元包括獲取單元,拆分執(zhí)行單元以及拆分控制單元;所述獲取單元用于獲取當(dāng)前數(shù)據(jù)的長(zhǎng)度以及三態(tài)內(nèi)容尋址存儲(chǔ)器表的數(shù)據(jù)長(zhǎng)度門(mén)限值;所述拆分執(zhí)行單元用于對(duì)當(dāng)前數(shù)據(jù)進(jìn)行拆分并記錄每級(jí)子數(shù)據(jù)的長(zhǎng)度;所述拆分控制單元用于判斷是否每級(jí)子數(shù)據(jù)的長(zhǎng)度都小于或等于所述門(mén)限值,若不是,則通知拆分執(zhí)行單元重新對(duì)數(shù)據(jù)進(jìn)行拆分直至每級(jí)子數(shù)據(jù)的長(zhǎng)度都小于或等于所述門(mén)限值。
12.根據(jù)權(quán)利要求10或11所述的數(shù)據(jù)存儲(chǔ)裝置,其特征在于,所述裝置還包括合并單元,用于在相同級(jí)別的子數(shù)據(jù)中合并內(nèi)容相同的子數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)存儲(chǔ)方法及裝置及數(shù)據(jù)查找、添加、刪除方法,用于提高TCAM表的數(shù)據(jù)存儲(chǔ)效率。本發(fā)明數(shù)據(jù)存儲(chǔ)方法包括根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù);建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。本發(fā)明裝置包括拆分單元,建立單元以及存儲(chǔ)控制單元;所述拆分單元用于根據(jù)數(shù)據(jù)長(zhǎng)度將數(shù)據(jù)拆分為若干級(jí)子數(shù)據(jù),并將拆分后的數(shù)據(jù)發(fā)送至建立單元;所述建立單元用于建立各級(jí)子數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系;所述存儲(chǔ)控制單元用于將各級(jí)子數(shù)據(jù)以及所述對(duì)應(yīng)關(guān)系存入三態(tài)內(nèi)容尋址存儲(chǔ)器表。本發(fā)明還提供相關(guān)的TCAM表操作方法。本發(fā)明可以有效地提高TCAM表的數(shù)據(jù)存儲(chǔ)效率。
文檔編號(hào)H04L12/56GK101021858SQ20071000321
公開(kāi)日2007年8月22日 申請(qǐng)日期2007年1月29日 優(yōu)先權(quán)日2007年1月29日
發(fā)明者唐鋒 申請(qǐng)人:華為技術(shù)有限公司