專利名稱:用于三重內(nèi)容可尋址存儲(chǔ)器(tcam)表管理的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及網(wǎng)絡(luò)尋址領(lǐng)域。特別是,本發(fā)明涉及管理三重內(nèi)容可尋址存儲(chǔ)器(TCAM)表的方法和設(shè)備。
背景技術(shù):
互聯(lián)網(wǎng)協(xié)議(IP)是根據(jù)目的地互聯(lián)網(wǎng)地址進(jìn)行轉(zhuǎn)發(fā)的源路由型網(wǎng)絡(luò)。地址轉(zhuǎn)發(fā)是逐站進(jìn)行的。在路由表中查找目的地址,以便確定哪里是下一站,然后將包轉(zhuǎn)送到下一站。路由協(xié)議用來確保經(jīng)由網(wǎng)絡(luò)傳輸?shù)陌罱K能到達(dá)它的目的地。
互聯(lián)網(wǎng)的發(fā)展使路由表得到了比路由器技術(shù)更快的發(fā)展。路由器必需在對應(yīng)互聯(lián)網(wǎng)上成千上萬臺(tái)計(jì)算機(jī)的數(shù)據(jù)庫中保持成千上萬個(gè)項(xiàng)目。路由表中目的地址的查找過程是IP轉(zhuǎn)發(fā)過程的重要部分。互聯(lián)網(wǎng)協(xié)議之一為IP版本4(“IPv4”)。IPv4地址空間的寬度是32位。在IPv4中存在兩個(gè)IP地址方案。一個(gè)IP地址方案是“有類別(classful)”,另一個(gè)方案是“無類別(classless)”。每個(gè)IP或者互聯(lián)網(wǎng)地址都包括網(wǎng)絡(luò)ID和主機(jī)ID。網(wǎng)絡(luò)ID標(biāo)識(shí)主機(jī)歸屬的網(wǎng)絡(luò)。有時(shí)候網(wǎng)絡(luò)ID是指網(wǎng)絡(luò)前綴。主機(jī)ID標(biāo)識(shí)給定網(wǎng)絡(luò)上的特定主機(jī)。有類別IP地址方案包括多個(gè)地址A、B、C、D、E。對于類別A,網(wǎng)絡(luò)ID的寬度是8位,主機(jī)ID的寬度是24位。對于類別B,網(wǎng)絡(luò)ID的寬度是16位;對于類別C,網(wǎng)絡(luò)ID的寬度是24位。每個(gè)類別用來支持不同大小的網(wǎng)絡(luò),這些網(wǎng)絡(luò)具有不同數(shù)量的主機(jī)。全0和全1的網(wǎng)絡(luò)ID分別用于默認(rèn)路由和環(huán)回功能。類別D用于多點(diǎn)傳送,并保存類別E。有類別IP地址方案不能有效適應(yīng)不同大小的網(wǎng)絡(luò)。“老式”網(wǎng)絡(luò)中的路由器通常使用有類別IP地址方案。
無類別IP地址方案通常是指CIDR(“無類別域間路由”)。基本上CIDR能消除A、B、C類網(wǎng)絡(luò)的概念,而用IP地址前綴來替代。CIDR可以用來執(zhí)行路由聚合,其中單一路由可以覆蓋若干“老式”網(wǎng)絡(luò)號(hào)的地址空間,從而取代一些老式路由。CIDR能夠更有效地利用可用地址空間,并允許互連網(wǎng)連續(xù)不間斷地?cái)U(kuò)展。較新的路由器使用CIDR地址方案。
IP包轉(zhuǎn)發(fā)在每個(gè)路由器上得到處理。為了加速查找過程,存儲(chǔ)一組地址前綴,而不是成千上萬個(gè)互聯(lián)網(wǎng)地址。使用地址前綴的路由查找被稱作最長的前綴匹配。在最長的前綴匹配中,每個(gè)目的地址是一個(gè)32位的字符串。轉(zhuǎn)發(fā)決策依賴于使用目的地址和尋找具有最長前綴匹配的項(xiàng)目。目的地址與一組地址前綴進(jìn)行比較,以尋找轉(zhuǎn)發(fā)包的下一個(gè)路由。前綴匹配可以有多個(gè),但具有最長前綴匹配的路由才會(huì)被選擇。最長匹配算法假定主機(jī)是具有最長前綴匹配的網(wǎng)絡(luò)的部分。
傳統(tǒng)的查找程序是基于使用散列和樹的軟件。每個(gè)包可以有多個(gè)查找。然而,隨著包數(shù)量的增加,需要更快速的查找程序。一種硬件查找方法使用高速三重內(nèi)容可尋址存儲(chǔ)器(TCAM)。TCMA是提供快速搜索的存儲(chǔ)器裝置,如查找路由表數(shù)據(jù)庫中的項(xiàng)目。TCAM允許給出部分內(nèi)容便能檢索內(nèi)容的位置。所以給出一個(gè)內(nèi)容(例如,目的地址),TCAM便能將位置信息(例如路由)提供給該內(nèi)容。此外,TCAM允許對位字段進(jìn)行掩碼,從而可以用來確定最長的前綴匹配。每個(gè)TCAM存儲(chǔ)器位置具有一個(gè)對應(yīng)的掩碼寄存器。掩碼寄存器中的“1”強(qiáng)迫匹配TCAM存儲(chǔ)器位置內(nèi)對應(yīng)的位,其中預(yù)存了下一個(gè)路由的下一站的地址。前綴被存儲(chǔ)在掩碼寄存器中。
TCAM存儲(chǔ)器(“TCAM表”)的管理對最短時(shí)間內(nèi)提供正確的最長前綴是必不可少的。
發(fā)明內(nèi)容
本發(fā)明公開了管理TCAM表的方法和系統(tǒng)。在一個(gè)可用位置上使用前綴將新路由插入到TCAM表中。新路由被加入到由關(guān)聯(lián)該新路由的一個(gè)掩碼長度所組織的Patricia樹中。在由較長掩碼長度所組織的Patricia樹中和由較短掩碼長度所組織的Patricia樹中搜索與新路由具有共同前綴的諸多路由,以定位新路由的鏈接。新路由的鏈接聚合具有共同前綴的多個(gè)路由。該鏈接中的多個(gè)路由以較長前綴優(yōu)先的排序來定序,以使該鏈接頂部上的路由具有最長前綴。執(zhí)行該鏈接內(nèi)的多個(gè)路由的交換,以適應(yīng)新的路由并保持較長前綴優(yōu)先的排序。
從附圖和下面的詳細(xì)說明中,將會(huì)明白本發(fā)明的其它特征和優(yōu)點(diǎn)。
本發(fā)明通過實(shí)例進(jìn)行說明,但是本發(fā)明不局限于附圖的圖形。在附圖中,相同的標(biāo)記標(biāo)識(shí)相似的部件。
圖1是最長前綴匹配操作的一個(gè)實(shí)例;圖2是最長前綴匹配的典型TCAM表;圖3是TCAM的示范性圖示;圖4是路由鏈接的示范性圖示;圖5是一個(gè)典型流程圖,說明本發(fā)明一個(gè)實(shí)施例的將新路由插入TCAM表中的過程。
具體實(shí)施例方式
圖1是最長前綴匹配操作的典型圖示。在該實(shí)例中,目的地址105(11.1.2.5)與三個(gè)路由110、115和120進(jìn)行比較,以尋找具有最長匹配前綴的路由。每個(gè)路由與具有掩碼長度的掩碼相關(guān)聯(lián)。示出目的地址105和掩碼的二進(jìn)制表示是為了進(jìn)行位比較。例如,路由110的掩碼長度是24位。路由115的掩碼長度是16位,路由120的掩碼長度是8位。目的地址105的前8位與所有三個(gè)掩碼相匹配。目的地址的前16位與路由119和路由115的掩碼相匹配。目的地址的前24位僅與路由110的掩碼相匹配。由于路由110提供了與目的地址的最長前綴匹配,因此選擇路由110。需要注意的是,為了尋找具有最長前綴匹配的路由,在該實(shí)例中執(zhí)行多次比較。當(dāng)存儲(chǔ)在路由表中的項(xiàng)目或者路由的數(shù)量很大時(shí),這也許效率很低。它的優(yōu)點(diǎn)是能夠以最小時(shí)間量定位具有最長前綴的路由。
圖2是圖示最長前綴匹配的一個(gè)典型TCAM表。路由表被存儲(chǔ)在TCAM中。該路由表被稱作TCAM表。TCAM表200包括用于轉(zhuǎn)發(fā)目的IP地址。TCAM允許上述的比較一步完成。無論TCAM在什么情況下發(fā)現(xiàn)前綴匹配,都生成一個(gè)結(jié)果。
空白空間存在于TCAM表200中,并可以用來插入附加路由。該實(shí)例中的目的地址205是192.19.112.135。如上所述,每個(gè)TCAM項(xiàng)目與一個(gè)掩碼(未示出)相關(guān)聯(lián)。通常,當(dāng)目的地址205與TCAM表200中所示的每個(gè)項(xiàng)目進(jìn)行比較時(shí),選擇與項(xiàng)目215關(guān)聯(lián)的路由,因?yàn)樗峁┳铋L的前綴匹配。然而,由于TCAM的比較以這樣一種方式完成,即把具有前綴匹配的第一路由作為結(jié)果,因此選擇與項(xiàng)目210關(guān)聯(lián)的路由。這將是一種不正確的選擇,因?yàn)榕c項(xiàng)目210關(guān)聯(lián)的掩碼長度僅僅是24位,而與項(xiàng)目215關(guān)聯(lián)的掩碼長度則為27位。就TCAM來說,由于提供了第一匹配,所以TCAM的執(zhí)行是正確的。然而,由于處理路由插入TCAM表的軟件是錯(cuò)誤的,因此結(jié)果將不能滿足最長前綴匹配需求。尋找正確的最長前綴匹配的一個(gè)方法是在TCAM表中排列項(xiàng)目,使具有最長掩碼的項(xiàng)目放在具有較短掩碼的項(xiàng)目之前。這樣,就能保證TCAM找到的第一匹配具有最長的前綴。這種性質(zhì)被稱作最長前綴匹配優(yōu)先。
圖3是TCAM的典型圖示。TCAM包括一個(gè)三重內(nèi)容可尋址存儲(chǔ)器(TCAM)分區(qū)305和一個(gè)存儲(chǔ)器分區(qū)310。對于一個(gè)目的地址315,在TCAM分區(qū)305中可以有一個(gè)或多個(gè)路由前綴匹配。當(dāng)一個(gè)包到達(dá)時(shí),目的地址被提取。TCAM 305執(zhí)行查找來檢索結(jié)果325。TCAM 325在比較操作中使用掩碼來選擇或查找具有最長前綴匹配的結(jié)果325。當(dāng)沒有匹配目的地址315的掩碼時(shí),包將不能到達(dá)該路由并被丟棄。
當(dāng)存在一個(gè)匹配時(shí),檢查結(jié)果325。在可以把結(jié)果325發(fā)送到一個(gè)接口之前,需要對其進(jìn)行處理。結(jié)果325可以是一個(gè)直接結(jié)果或者IP地址。執(zhí)行對存儲(chǔ)器310的存取訪問,以尋找TCAM結(jié)果325的意義。該存取訪問提供一個(gè)將要由TCAM結(jié)果325執(zhí)行的動(dòng)作330。動(dòng)作330可以包括諸如輸出端口號(hào)、輸出類型、輸出鏈接號(hào)、層2封裝信息等信息。例如,動(dòng)作也許需要把包分成ATM的信元,添加一個(gè)用于幀延遲的報(bào)頭,丟棄結(jié)果325等。根據(jù)動(dòng)作信息,虛擬機(jī)335執(zhí)行對包320的動(dòng)作,并且把結(jié)果340發(fā)送給接口。結(jié)果340可以是一個(gè)用于傳輸?shù)男掳?,也可以什么都不是,因?yàn)榘呀?jīng)被丟棄。當(dāng)這是一個(gè)路由器時(shí),結(jié)果可以是一個(gè)IP地址,并且該動(dòng)作指示包320將被傳送到下一站。
由于TCAM 305中的結(jié)果325與存儲(chǔ)器310中的動(dòng)作330之間存在直接關(guān)系,因此重要的是管理TCAM表,以使針對TCAM 305的TCAM表執(zhí)行的插入和刪除操作不會(huì)造成與存儲(chǔ)器310有任何沖突。此外,TCAM表需要按照一個(gè)排序來排列,以便可以以最小延遲執(zhí)行最長前綴匹配需求。因此,當(dāng)一個(gè)新項(xiàng)目被添入TCAM表時(shí),一個(gè)對應(yīng)的項(xiàng)目也被添加到存儲(chǔ)器310上。同樣地,如果一個(gè)項(xiàng)目從TCAM表中刪除,另一個(gè)對應(yīng)的項(xiàng)目也將從TCAM表中刪除。插入項(xiàng)目到TCAM表和存儲(chǔ)器310中的排序?qū)τ诒苊鉀_突很重要。
通常,對于插入,首先更新存儲(chǔ)器310,然后更新TCAM表。對于刪除,首先刪除TCAM表,然后可選地進(jìn)行存儲(chǔ)器310的刪除。然而,當(dāng)在已經(jīng)被占用的TCAM表的位置上進(jìn)行插入時(shí),就發(fā)生沖突。當(dāng)存在沖突時(shí),需要移動(dòng)或者交換若干TCAM表項(xiàng)目。這些交換操作在TCAM表與存儲(chǔ)器310的項(xiàng)目之間呈現(xiàn)潛在地錯(cuò)配或者不一致的問題。
圖4是路由鏈接的典型圖示。TCAM表包括地址和它們的對應(yīng)掩碼。圖4的表400列出了地址(路由)和與它們關(guān)聯(lián)的掩碼長度。掩碼長度依據(jù)掩碼來確定。每個(gè)路由被其索引號(hào)標(biāo)識(shí)。例如,TCAM表400中的索引號(hào)10被路由405占用。
索引號(hào)30和32對應(yīng)于TCAM表400中的空位。在本發(fā)明的一個(gè)實(shí)施例中,具有相同前綴的路由在一個(gè)鏈接中共同成組。例如,路由405、410、420和430的前8位具有相似的前綴。路由415和425的前8位具有相似的前綴。這樣,從表400的頂部開始,第一鏈接是R1→R2→R4→R6,第二鏈接是R3→R5,其中從左至右選擇鏈接中的路由。因此,對于第一鏈接,在R2之前選擇R1,在R4之前選擇R2。可以使用鏈接列表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈接。
兩個(gè)鏈接是彼此獨(dú)立的。如果只有兩個(gè)鏈接,則有效目的地址將匹配第一鏈接內(nèi)的一條路由或者匹配第二鏈接內(nèi)的一條路由。一條無效目的地址將僅僅匹配路由435,并且將被丟棄。第一鏈接是R1→R2→R4→R6,即使R4具有比R2長的前綴匹配,R2仍在R4之前。在一個(gè)實(shí)施例中,鏈接需要保持一個(gè)排序,以使最長的前綴匹配可以用第一匹配來選擇。因此,第一鏈接的較好排序?qū)⑹荝1→R4→R2→R6。這將使得第一匹配是最長的前綴匹配。
第一鏈接的長度為4,因?yàn)樗ㄋ膫€(gè)路由。第二鏈接的長度為2,因?yàn)樗哂袃蓚€(gè)路由。一個(gè)鏈接可以具有的最大長度是32。這是因?yàn)?,?dāng)掩碼中的位數(shù)每次增加一位時(shí),前綴變短。一個(gè)鏈接可以具有的最小長度是1,其中不存在具有共同前綴的其它路由。這樣,一條鏈接可以以具有32位前綴的一條路由開始,以具有一位前綴的一條路由結(jié)束。一條鏈接中的所有路由具有至少一位的共同前綴。因此,對于所涉及的特定前綴組,一條鏈接是從最長前綴到最短前綴的路由序列。需要注意的是,當(dāng)TCAM用新路由編程時(shí),需要保存鏈接中的路由排序,以滿足最長前綴匹配需求。由于已知一條鏈接可以有32條路由的最大量,因此執(zhí)行任何鏈接的重新排序所需的時(shí)間將不超過某一固定的最大量。這是有利的,因?yàn)楣潭ǖ淖畲髸r(shí)間可保持相同值而與TCAM表的大小無關(guān)。因此,鏈接捕獲最大前綴匹配次序。
在本發(fā)明的一個(gè)實(shí)施例中,具有相同掩碼長度的TCAM表中的每個(gè)路由彼此關(guān)聯(lián)。例如,與掩碼長度為24位的的掩碼相關(guān)聯(lián)的所有路由屬于一組,而與掩碼長度為16位的掩碼相關(guān)聯(lián)的所有路由屬于不同的一組。當(dāng)IP地址長度是32位時(shí),存在32個(gè)組,每一組與從1位到32位的掩碼長度相關(guān)聯(lián)。同樣,當(dāng)IP地址長度是128位(如在IP版本6中)時(shí),存在128個(gè)組,每一組與從1位到128位的掩碼長度相關(guān)聯(lián)。每一組被表示為Patricia(“檢索以字母數(shù)字編碼的信息的Practical算法”)樹或者P-樹數(shù)據(jù)結(jié)構(gòu)。因此,存在的最大值為32P-樹。P-樹數(shù)據(jù)結(jié)構(gòu)是所有的子系與父系合并的一個(gè)樹的壓縮表示法。該樹存有多個(gè)字符串,這里有用于每個(gè)共同前綴的一個(gè)節(jié)點(diǎn)。這些字符串被存儲(chǔ)在額外的樹葉節(jié)點(diǎn)中。本領(lǐng)域的技術(shù)技術(shù)人員知道P-樹的特征。
使用P-樹數(shù)據(jù)結(jié)構(gòu),P-樹-1(“PT-1”)包含具有1位的掩碼長度的所有路由;PT-16包含具有16位的掩碼長度的所有路由,PT-32包含具有32位的掩碼長度的所有路由,等。因此,參見圖4,路由410(R2)和路由415(R3)處于相同的PT-16中。同樣,路由425(R5)和路由430(R6)處于相同的PT-8中。路由405(R1)處于PT-32中,路由420(R4)處于PT-24中。
在一個(gè)實(shí)施例中,相同P-樹中的路由沒有任何次序。因此,P-樹捕獲具有相同掩碼長度的所有路由。在另一個(gè)實(shí)施例中,同一P-樹中的路由按照詞匯圖形次序來組織。
圖5是圖示本發(fā)明的將新路由插入TCAM表中的過程的典型流程圖。該過程允許TCAM表被更新,以便可以在TCAM的路由數(shù)據(jù)與存儲(chǔ)器的對應(yīng)動(dòng)作信息之間保持一致性。過程從方框505開始,將要向TCAM表中插入新路由。每個(gè)新路由具有一個(gè)地址(“A”)和一個(gè)掩碼數(shù)據(jù)(“M”)。路由(“R”)被表示為數(shù)據(jù)對(A/M,索引),其中索引是TCAM表中的路由項(xiàng)目的索引。TCAM表中的每個(gè)位置與一個(gè)索引相關(guān)聯(lián)。TCAM表中的位置的相同索引被用來指向存儲(chǔ)器中一個(gè)對應(yīng)位置。例如,TCAM表可以包括增加索引次序的以下路由R1(1.1.1.1/32,10)R2(1.1.1.0/24,12)R3(1.1.0.0/16,30)R4(1.0.0.0/8,40)其中,每個(gè)路由被表示為(地址/掩碼-長度,TCAM中的索引)。在該實(shí)例中,一個(gè)新路由R5(1.128.0.0/9,X)將被插入到TCAM表中,其中“X”是一個(gè)未知索引位置。
在一個(gè)實(shí)施例中,在TCAM表中第一個(gè)可用的未使用項(xiàng)目上確定TCAM中空位的索引。在另一個(gè)實(shí)施例中,通過首先確定前一個(gè)前綴,然后確定與前一個(gè)前綴或者第一可用項(xiàng)目相關(guān)的項(xiàng)目前后的第一可用項(xiàng)目來確定索引。
在方框510,使用上述的自由索引定位TCAM表中的空位。空位用來存儲(chǔ)路由。假定索引11處的TCAM表位置是空的,并且新路由R5被插入該位置中。新路由R5的表示法是(1.128.0.0/9,11)。該TCAM表的插入被顯示在方框515上。TCAM表現(xiàn)在包括以下各項(xiàng)R1(1.1.1.1/32,10)R5(1.128.0.0/9,11)R2(1.1.1.0/24,12)R3(1.1.0.0/16,30)
R4(1.0.0.0/8,40)如上所述,一個(gè)鏈接是從用于所涉及的特定前綴組的最長前綴到最短前綴的路由序列。在該實(shí)例中,在插入新路由R5之后,鏈接是R1(1.1.1.1/32,10)→R5(1.128.0.0/9,11)→R2(1.1.1.0/24,12)→R3(1.1.0.0/16,30)→R4(1.0.0.0/8,40)。該鏈接中的所有路由具有相同的前8位。然而,插入事務(wù)不能算完成,因?yàn)殒溄硬晃挥谧铋L匹配序列內(nèi)。當(dāng)前的鏈接具有在路由R2和R3之前的帶有9位掩碼長度的新路由R5,即使路由R2和R3分別具有24和16位的掩碼長度。
為了完成路由插入事務(wù),路由鏈接和P-樹必須被更新,以使該鏈接中的路由序列正確。在一個(gè)實(shí)施例中,TCAM插入不是極微的(atomic)。在該實(shí)施例中,無效位被設(shè)置來指示新插入的路由不可立即使用。在插入全部路由項(xiàng)目之后,將無效位重新設(shè)置為啟用路由。
在一個(gè)實(shí)施例中,掩碼長度被用來確定增加新路由的適當(dāng)?shù)腜-樹。例如,當(dāng)新路由的掩碼長度為16位時(shí),新路由被加入到PT-16樹中。在方框520上,根據(jù)與路由關(guān)聯(lián)的掩碼長度將路由插入P-樹中。該路由插入可以被表示為R(A,M)→PT(|M|),其中R(A,M)是路由,而|M|是掩碼長度。
在方框525上,搜索與路由匹配的前綴的路由鏈接。如上所述,當(dāng)IP地址的長度是32位時(shí),存在至多32個(gè)P-樹。不占用所有的32個(gè)P-樹是可能的。如上所述,P-樹捕獲具有相同掩碼長度的所有路由。這樣,為了發(fā)現(xiàn)比新路由具有更長前綴的多個(gè)路由,借助具有掩碼位較高排序的P-樹完成一個(gè)搜索。同樣,為了發(fā)現(xiàn)比新路由具有較短前綴的路由,借助具有掩碼位較低排序的P-樹完成一個(gè)搜索。例如,當(dāng)路由將要加到TP-16中時(shí),搜索PT-17到PT-32(即,(PT(|M|)+1)至PT-32)中的路由,以尋找匹配的前綴。同樣,搜索PT-1到PT-15(即,PT(|M|)-1至PT-1)中的路由,以尋找匹配的前綴。因此,在該實(shí)例中,存在至多31個(gè)尋找具有共同前綴的路由的P-樹。
針對與新路由具有共同前綴的每個(gè)路由,作出一個(gè)決策,以查看該鏈接中路由的排序是否與最長前綴匹配優(yōu)先的排序相符。當(dāng)不是這種情況時(shí),執(zhí)行鏈接中路由的交換和TCAM表中路由的交換,如方框530所示。在當(dāng)前的實(shí)施例中,新路由R5的掩碼長度為9位,并且被放在TCAM表的索引11上。借助具有較短掩碼長度的P-樹(即,PT-1至PT-8)完成與新路由R5具有共同前綴的諸多路由的搜索。
這里只有一個(gè)具有較短掩碼長度(8)的路由(R4),并定位在索引位置40上。進(jìn)行R5和R4的索引位置的比較,以查看兩個(gè)路由是否需要被交換。如果R4具有比R5低的索引位置,則進(jìn)行交換,以保持增加的索引排序,從而保持最長前綴匹配優(yōu)先排序。在該實(shí)例中,由于R5(11)的索引低于R4(40)的索引,因此不需要交換。這樣,根據(jù)增加的索引排序,該鏈接中的路由處于以下排序R1(1.1.1.1/32,10)→R5(1.128.0.0/9,11)→R2(1.1.1.0/24,12)→R3(1.1.0.0/16,30)→R4(1.0.0.0/8,40)。
借助具有較長掩碼長度的P-樹(即PT-10至PT-32)完成具有關(guān)于新路由R5的共同前綴的路由的搜索。在當(dāng)前的實(shí)例中,路由R3(16)具有比新路由R5(9)更長的前綴。由于路由R3的前綴是30,以及新路由R5的前綴是11,因此這兩個(gè)路由排序不對,而需要進(jìn)行一個(gè)交換以保持最長前綴匹配排序。在交換R3和R5之后,該鏈接中的路由處于以下排序R1(1.1.1.1/32,10)→R3(1.1.0.0/16,30)→R2(1.1.1.0/24,12)→R5(1.128.0.0/9,11)→R4(1.0.0.0/8,40)。
此外,路由R2具有比路由R3更長的掩碼長度。路由R2的掩碼長度是24,而路由R3的掩碼長度是11。因此,需要對這兩個(gè)路由R2和R3進(jìn)行交換,以保持最長匹配優(yōu)先排序。在交換R2和R3之后,鏈接中的路由處于以下排序R1(1.1.1.1/32,10)→R2(1.1.1.0/24,12)→R3(1.1.0.0/16,30)→R5(1.128.0.0/9,11)→R4(1.0.0.0/8,40)。路由R3被插入TCAM表中的新索引位置12,路由R2被插入TCAM表中的新索引位置11。
圖5中流程圖過程在方框535結(jié)束。在當(dāng)前實(shí)例中,插入事務(wù)終點(diǎn)的最終路由序列是R1(1.1.1.1/32,10)→R2(1.1.1.0/24,11)→R3(1.1.0.0/16,12)→R5(1.128.0.0/9,30)→R4(1.0.0.0/8,40)。
在上述說明中,已經(jīng)結(jié)合特定的典型實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明。顯然,在不背離本發(fā)明所附權(quán)利要求所述的寬闊范圍和精神的條件下,可以對本發(fā)明進(jìn)行各種修改和變化。因此,說明書和附圖應(yīng)當(dāng)被視作說明性的,而不是限定性的。
權(quán)利要求
1.一種方法,包括使用第一索引在可用位置上將新路由插入三重內(nèi)容可尋址存儲(chǔ)器(TCAM)表中,所述新路由具有一個(gè)掩碼長度,所述新路由在具有一個(gè)或多個(gè)具有相同掩碼長度路由的Patricia樹(P-樹)中成組;尋找與新路由具有共同前綴的一個(gè)路由,所述路由的共同前綴成組于一個(gè)掩碼長度不同于新路由掩碼長度的P-樹中,所述具有共同前綴的路由在掩碼長度不同于新路由掩碼長度的P-樹中成組,具有共同前綴的路由被置于TCAM表中的第二索引處,其中具有共同前綴的路由在具有一個(gè)或多個(gè)具有相同共同前綴的路由的鏈接中成組,所述鏈接中的路由以一個(gè)排序定序,使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處,其中,鏈接中最高索引處的路由是具有最長前綴的路由;和根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中,使所述鏈接保持所述排序,從而使得與具有較短前綴的路由相比,使具有較長前綴的路由被定位在TCAM表中的一個(gè)較高索引處。
2.根據(jù)權(quán)利要求1所述的方法,其中尋找與新路由具有共同前綴的路由包括與新路由的掩碼長度相比,搜索掩碼長度更長和更短的P-樹中的路由。
3.根據(jù)權(quán)利要求1所述的方法,其中根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入到鏈接中包括將新路由的掩碼長度與具有共同前綴路由的掩碼長度進(jìn)行比較,其中當(dāng)新路由的掩碼長度比具有共同前綴路由的掩碼長度長并且第一索引比第二索引低時(shí),在TCAM表中交換新路由和具有共同前綴路由的位置。
4.一種設(shè)備,包括邏輯單元,用于使用第一索引在可用位置上將新路由插入三重內(nèi)容可尋址存儲(chǔ)器(TCAM)表中,所述新路由具有一個(gè)掩碼長度,所述新路由在具有一個(gè)或多個(gè)具有相同掩碼長度的路由的Patricia樹(P-樹)中成組;邏輯單元,用于尋找與新路由具有共同前綴的一個(gè)路由,所述具有共同前綴的路由在掩碼長度不同于新路由掩碼長度的P-樹中成組,具有共同前綴的路由被置于TCAM表中的第二索引處,其中具有共同前綴的路由在具有一個(gè)或多個(gè)具有相同公共前綴的路由的鏈接中成組,所述鏈接中的路由以一個(gè)排序定序,使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處,其中,鏈接中最高索引處的路由是具有最長前綴的路由;和邏輯單元,用于根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中,使所述鏈接保持所述排序,從而使得與具有較短前綴的路由相比,使具有較長前綴的路由被定位在TCAM表中的一個(gè)較高索引處。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其中用于尋找與新路由具有共同前綴路由的邏輯單元包括用于搜索與新路由的掩碼長度相比,掩碼長度更長或更短的P-樹中的路由。
6.根據(jù)權(quán)利要求4所述的設(shè)備,其中用于根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中的邏輯單元包括邏輯單元,用于將新路由的掩碼長度與具有共同前綴路由的掩碼長度進(jìn)行比較,其中當(dāng)新路由的掩碼長度長于具有共同前綴路由的掩碼長度并且第一索引低于第二索引時(shí),在TCAM表中交換新路由和具有共同前綴路由的位置。
7.一種設(shè)備,包括裝置,用于使用第一索引在可用位置上將新路由插入三重內(nèi)容可尋址存儲(chǔ)器(TCAM)表中,所述新路由具有一個(gè)掩碼長度,所述新路由在具有一個(gè)或多個(gè)具有相同掩碼長度路由的Patricia樹(P-樹)中成組;裝置,用于尋找與新路由具有共同前綴的一個(gè)路由,具有共同前綴的路由在掩碼長度不同于新路由掩碼長度的P-樹中成組,具有共同前綴的路由被置于TCAM表中的第二索引處,其中具有共同前綴的路由在具有一個(gè)或多個(gè)具有相同公共前綴的路由的鏈接中成組,所述鏈接中的路由以一個(gè)排序定序,使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處,其中,鏈接中最高索引處的路由是具有最長前綴的路由;和裝置,用于根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中,使鏈接保持所述排序,從而使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其中用于尋找與新路由具有共同前綴的路由的裝置包括用于搜索與新路由的掩碼長度相比,掩碼長度更長或更短的P-樹中的路由。
9.根據(jù)權(quán)利要求7所述的設(shè)備,其中用于根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入到鏈接中的裝置包括一個(gè)裝置,用于將新路由的掩碼長度與具有共同前綴路由的掩碼長度進(jìn)行比較,其中當(dāng)新路由的掩碼長度長于具有共同前綴路由的掩碼長度并且第一索引低于第二索引時(shí),在TCAM表中交換新路由和具有共同前綴路由的位置。
10.一種計(jì)算機(jī)可讀媒體,其上存儲(chǔ)有數(shù)字處理系統(tǒng)可執(zhí)行的指令序列,當(dāng)數(shù)字處理系統(tǒng)執(zhí)行該指令序列時(shí)能使系統(tǒng)運(yùn)行一種方法,該方法包括使用第一索引在可用位置上將新路由插入三重內(nèi)容可尋址存儲(chǔ)器(TCAM)表中,所述新路由具有一個(gè)掩碼長度,所述新路由在具有一個(gè)或多個(gè)具有相同掩碼長度路由的Patricia樹(P-樹)中成組;尋找與新路由具有共同前綴的一個(gè)路由,具有共同前綴的路由在掩碼長度不同于新路由掩碼長度的P-樹中成組,具有共同前綴的路由被置于TCAM表中的第二索引處,其中具有共同前綴的路由在具有一個(gè)或多個(gè)具有相同公共前綴的路由的鏈接中成組,所述鏈接中的路由以一個(gè)排序定序,使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處,其中,鏈接中最高索引處的的路由是具有最長前綴的路由;和根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中,使鏈接保持所述排序,從而使得與具有較短前綴的路由相比,具有較長前綴的路由被定位在TCAM表中的較高索引處。
11根據(jù)權(quán)利要求10所述的計(jì)算機(jī)可讀媒體,其中尋找與新路由具有共同前綴的路由包括搜索與新路由的掩碼長度相比,掩碼長度更長或更短的P-樹中的路由。
12.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)可讀媒體,其中根據(jù)新路由的掩碼長度并根據(jù)第一索引將新路由插入鏈接中包括將新路由的掩碼長度與具有共同前綴路由的掩碼長度進(jìn)行比較。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀媒體,其中,當(dāng)新路由的掩碼長度長于具有共同前綴路由的掩碼長度并且第一索引低于第二索引時(shí),在TCAM表中交換新路由和具有共同前綴路由的位置。
全文摘要
本發(fā)明公開了管理TCAM表的方法和系統(tǒng)。在可用位置上使用索引將新路由插入TCAM表中。新路由被加入到由關(guān)聯(lián)新路由的掩碼長度組織的Patricia樹中。在由較長掩碼長度所組織的Patricia樹中和在由較短掩碼長度所組織的Patricia樹中搜索與新路由具有共同前綴的多個(gè)路由,以定位新路由的鏈接。新路由的鏈接聚合了具有共同前綴的諸多路由。鏈接中的路由按照較長前綴優(yōu)先的排序來定序,使鏈接頂部的路由具有最長的前綴。執(zhí)行鏈接中路由的交換,以適應(yīng)新路由并保持較長前綴優(yōu)先排序。
文檔編號(hào)H04L12/56GK1489849SQ02804126
公開日2004年4月14日 申請日期2002年1月18日 優(yōu)先權(quán)日2001年1月30日
發(fā)明者A·巴赫穆特斯基, V·錢德勒, 侯馳飛, H·采恩, A 巴赫穆特斯基, 呂 申請人:諾基亞智能邊緣路由器公司