專利名稱:用于地址查找的數(shù)據(jù)結(jié)構(gòu)、方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種使用決策樹在地址空間中對所請求的地址進(jìn)行地址查找的方法。 而且,本發(fā)明涉及一種使用決策樹在地址空間中對所請求的地址進(jìn)行地址查找的計(jì)算機(jī)系統(tǒng)。此外,本發(fā)明涉及一種使用決策樹在地址空間中對所請求的地址進(jìn)行地址查找的計(jì)算機(jī)程序。
背景技術(shù):
本發(fā)明涉及一種表示一組基本地址范圍的數(shù)據(jù)結(jié)構(gòu),以及一種搜索該結(jié)構(gòu)的方法。而且,本發(fā)明涉及一種用于地址查找的系統(tǒng)。地址查找是一種在若干領(lǐng)域中獲得應(yīng)用的基本功能主要在IP(互聯(lián)網(wǎng)協(xié)議)查找和路由以及分組(packet)分類中,但也在處理器間通信中。互聯(lián)網(wǎng)主干路由器使用分組的目的地址并執(zhí)行地址查找,以確定分組的下一跳。 每個(gè)路由器可以在查找表中包含數(shù)十萬個(gè)表目,并且可以被要求每秒執(zhí)行數(shù)百萬個(gè)查找。 互聯(lián)網(wǎng)流量的迅速增長以及路由表大小的日益增大使得更難以跟上日益提升的對更快處理速度的需要。另外,IPv6的128比特地址的使用要求在地址寬度方面可縮放的查找策略解決方案。IPv6在過去兩年中增長提升了 300%,加上IPv4的耗盡,提出了對在地址寬度方面可縮放的解決方案的需要。分組分類要求多(ibps (Multi-Gbps)性能,以及要求具有多個(gè)域查找和可能地更少的表目。在較小規(guī)模的處理器間通信中,虛擬地址至物理地址的逐漸轉(zhuǎn)換可能要求顯著更小的路由表,但查找時(shí)間的約束條件更嚴(yán)格,因?yàn)橥ㄐ艜r(shí)延對于多核系統(tǒng)的性能是關(guān)鍵。給定一個(gè)地址空間
所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。在一個(gè)實(shí)施方案中,該方法包括-接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍,包括,在所述決策樹的每個(gè)層中, 從頂層中的根節(jié)點(diǎn)開始針對所述各自的層中的各自的節(jié)點(diǎn)讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述決策樹的所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。本發(fā)明還涉及一種用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的計(jì)算機(jī)系統(tǒng),所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述處理器被布置為執(zhí)行用于構(gòu)建在所述地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法,包括-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍,所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分, 以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中,所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分,以及
12
-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。此外,本發(fā)明涉及一種待被上述計(jì)算機(jī)系統(tǒng)加載的計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹,所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述計(jì)算機(jī)程序產(chǎn)品在被加載之后允許所述處理器執(zhí)行-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍,所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分, 以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中,所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。另外,本發(fā)明涉及一種使用決策樹用于在地址空間中對所請求的地址進(jìn)行地址查找的計(jì)算機(jī)系統(tǒng),所述決策樹是根據(jù)上述方法構(gòu)建的,所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述處理器被布置為執(zhí)行-接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍,包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始針對所述各自的層中的各自的節(jié)點(diǎn)讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;
將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。本發(fā)明的其他實(shí)施方案由隨附的從屬權(quán)利要求限定。盡管已經(jīng)具體參照遠(yuǎn)程通信應(yīng)用公開了本發(fā)明,但本發(fā)明的數(shù)據(jù)結(jié)構(gòu)和搜索方法促進(jìn)了對以地址區(qū)間或地址前綴形式限定的地址范圍的任何數(shù)據(jù)庫的迅速搜索。本方法和系統(tǒng)還適于以計(jì)算機(jī)硬件實(shí)施,根據(jù)地址寬度和所存儲(chǔ)的地址范圍的數(shù)量而可縮放,提供了緊湊的存儲(chǔ),并且可以被應(yīng)用至互聯(lián)網(wǎng)多服務(wù)路由器的設(shè)計(jì)中的緊迫問題。本數(shù)據(jù)結(jié)構(gòu)和搜索方法尤其有利于以數(shù)字計(jì)算機(jī)硬件實(shí)施。當(dāng)前感興趣的首要應(yīng)用是,用于IP查找、分組分類、多服務(wù)互聯(lián)網(wǎng)路由器的半導(dǎo)體集成電路。然而,本技術(shù)可以在涉及需要區(qū)分優(yōu)先級(jí)的數(shù)據(jù)或數(shù)據(jù)中的結(jié)構(gòu)需要被確定然后被分類的多種應(yīng)用中有用。 作為地址查找的結(jié)果,可以更快以及更高效地對數(shù)據(jù)采取行動(dòng)。
現(xiàn)在將參照所附的示意圖僅通過實(shí)施例描述本發(fā)明的實(shí)施方案,在附圖中對應(yīng)的參考符號(hào)指示對應(yīng)的部分,并且在附圖中圖1示意性地示出了地址空間內(nèi)的地址區(qū)的一個(gè)實(shí)例;圖2示意性地示出了根據(jù)來自現(xiàn)有技術(shù)的Trie方法的一個(gè)決策樹;圖3示意性地示出了根據(jù)來自現(xiàn)有技術(shù)的范圍樹方法的一個(gè)決策樹;圖4示意性地示出了根據(jù)來自現(xiàn)有技術(shù)的多路范圍樹方法的一個(gè)決策樹;圖5示意性地示出了映射到范圍樹節(jié)點(diǎn)的一個(gè)范圍Trie節(jié)點(diǎn);圖6A示意性地示出了根據(jù)本發(fā)明的一個(gè)方法的一個(gè)決策樹;圖6B示意性地示出了根據(jù)本發(fā)明的一個(gè)方法的一個(gè)決策樹節(jié)點(diǎn);圖6C示意性地示出了根據(jù)本發(fā)明的一個(gè)方法的一個(gè)決策樹節(jié)點(diǎn);圖7A根據(jù)本發(fā)明示出了一個(gè)范圍Trie的圖;圖7B示出了在用額外葉節(jié)點(diǎn)和指針進(jìn)行注釋操作(annotation operation)之后的一個(gè)范圍Trie的圖;圖8是根據(jù)本發(fā)明示出了已注釋的范圍Trie節(jié)點(diǎn)在存儲(chǔ)器分級(jí)體系中的布置的圖;圖9是根據(jù)本發(fā)明的一個(gè)范圍Trie節(jié)點(diǎn)和要被存儲(chǔ)在存儲(chǔ)器分級(jí)體系中的相應(yīng)的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)的圖形表示;圖10是根據(jù)本發(fā)明描繪了本發(fā)明的功能單元及其互連的框圖;圖IlA是根據(jù)本發(fā)明的單個(gè)32位比較器的組合邏輯的框圖;圖IlB是根據(jù)本發(fā)明的實(shí)施下一個(gè)范圍偏移單元的組合邏輯的框圖;圖12A示意性地示出了被布置為執(zhí)行根據(jù)本發(fā)明的一個(gè)方法的又一個(gè)計(jì)算機(jī)系統(tǒng)的功能框圖;圖12B示意性地示出了被以流水線形式布置、用于執(zhí)行根據(jù)本發(fā)明的一個(gè)方法的又一個(gè)計(jì)算機(jī)系統(tǒng)的功能框圖13示意性地示出了被布置為執(zhí)行根據(jù)本發(fā)明的一個(gè)方法的一個(gè)系統(tǒng)的框圖。
具體實(shí)施例方式本發(fā)明的方法接收一個(gè)所請求的引入的地址Ain,并且確定該所請求的地址Ain屬于的基本地址范圍Rl. . . R7。范圍Trie節(jié)點(diǎn)的外部特性與現(xiàn)有技術(shù)的范圍樹節(jié)點(diǎn)的外部特性一一匹配。圖5示意性地示出了映射到一個(gè)范圍樹節(jié)點(diǎn)的一個(gè)范圍Trie節(jié)點(diǎn)。因此,圖5可以被用來例示范圍Trie節(jié)點(diǎn)和現(xiàn)有技術(shù)的范圍樹的外部特性。所述外部特性是1) 一個(gè)節(jié)點(diǎn)映射到的地址范圍由節(jié)點(diǎn)下邊界502和節(jié)點(diǎn)上邊界503確定;2) 該節(jié)點(diǎn)的分支530、531、532、533 ;以及3)分支531、533、530、532各自指向的分支地址范圍 520、521、522、523,由數(shù)個(gè)地址邊界(也被表示為節(jié)點(diǎn)地址)507、505、504、506、508和節(jié)點(diǎn)邊界(下節(jié)點(diǎn)邊界地址和上節(jié)點(diǎn)邊界地址)502、503確定的地址范圍。本發(fā)明的方法與范圍樹方法之間的區(qū)別是(1)不同數(shù)據(jù)被存儲(chǔ)在一個(gè)節(jié)點(diǎn)中; 以及(2)基于節(jié)點(diǎn)信息和引入的地址,要求不同的計(jì)算來確定待選取的分支。從該決策樹的第一層節(jié)點(diǎn)開始,根據(jù)本發(fā)明,所請求的引入的地址在一個(gè)節(jié)點(diǎn)中被處理?;谠撍埱蟮囊氲牡刂?、存儲(chǔ)在節(jié)點(diǎn)中的數(shù)據(jù)以及該節(jié)點(diǎn)計(jì)算,來確定將要選取的節(jié)點(diǎn)分支。重復(fù)這一過程,直到到達(dá)該決策樹的一個(gè)葉節(jié)點(diǎn),以及由此到達(dá)該所請求的引入的地址屬于的地址范圍。本發(fā)明的方法以下列方式對現(xiàn)有技術(shù)的多路范圍樹方法做出了改進(jìn)給定每個(gè)樹節(jié)點(diǎn)待被存儲(chǔ)的最大量數(shù)據(jù),該最大量數(shù)據(jù)可能由計(jì)算機(jī)可讀介質(zhì)的帶寬限定,該方法增加了存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的地址邊界的數(shù)量。如在具體實(shí)施方案的描述中進(jìn)一步解釋的,這可以通過下列方式來做到通過共享和省略地址邊界的一部分,且可選地另外通過使用壓縮技術(shù)來壓縮存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的地址邊界。因此,該方法增加了存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的地址邊界的數(shù)量,從而增加了在該節(jié)點(diǎn)中可用的分支的數(shù)量。通過這樣做,對于待被存儲(chǔ)在該決策樹中的給定數(shù)量的基本地址范圍,以及對于每個(gè)節(jié)點(diǎn)所存儲(chǔ)的給定量的數(shù)據(jù),減少了該決策樹的層的數(shù)量。然后,給定一個(gè)所請求的引入的地址,一個(gè)節(jié)點(diǎn)需要基于對應(yīng)于該節(jié)點(diǎn)的數(shù)據(jù)來執(zhí)行若干個(gè)計(jì)算以確定待選取的正確分支。所述計(jì)算可以是如下二者之一 (1)解壓縮存儲(chǔ)在該節(jié)點(diǎn)中的數(shù)據(jù)以重新得到原始地址邊界,然后執(zhí)行在所請求的引入的地址與所述地址邊界之間的比較;或者( 如下文所述,直接對存儲(chǔ)在該節(jié)點(diǎn)中的數(shù)據(jù)執(zhí)行計(jì)算,而不解壓縮。后一實(shí)施方案包括地址對齊操作,以及在地址的一部分中的比較。作為對本發(fā)明的方法的總體描述,我們考慮通過下列方式減少存儲(chǔ)在一個(gè)節(jié)點(diǎn)中所要求的地址邊界位的數(shù)量(1)共享地址邊界的公共地址部分;(2)省略可省略的地址部分;以及可選地(3)另外進(jìn)一步壓縮待被存儲(chǔ)在該決策樹的一個(gè)節(jié)點(diǎn)中的數(shù)據(jù);然后,讀取已壓縮的地址部分,并使用所請求的引入的地址Ain和該節(jié)點(diǎn)的數(shù)據(jù)作為輸入來執(zhí)行計(jì)算。計(jì)算可包括解壓縮存儲(chǔ)在該節(jié)點(diǎn)中的地址部分,以及在該地址邊界的地址部分中執(zhí)行比較。此后,我們詳細(xì)描述一個(gè)實(shí)施方案,它是采用了本發(fā)明的范圍Trie方法的許多替代設(shè)計(jì)或快速地址查找之一。然而,它是在簡單性和速度之間的極好平衡。在本文的末尾簡要描述了又一些實(shí)施方案,這些實(shí)施方案涉及壓縮和解壓縮存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的地址邊
15界,然后執(zhí)行所請求的引入的地址與所述地址邊界之間的比較。另外,本發(fā)明的方法的一個(gè)具體實(shí)施方案被布置為(1)共享在同一節(jié)點(diǎn)中被并行比較的(節(jié)點(diǎn)地址/地址邊界的)公共地址部分;(2)省略對于所述比較不要求的地址邊界的部分;以及C3)對齊所述地址邊界和所請求的引入的地址,以增加待被省略的地址部分。限定了地址范圍的地址邊界(節(jié)點(diǎn)地址)可以被分別較稀疏或較密集地放置在創(chuàng)建了較長或較短的地址范圍的地址空間中。直觀地,對于該地址空間中較稀疏的區(qū)域,較少的地址位的比較可以是足夠的,而較密集的區(qū)域需要更好的精度,但可以具有能夠被共享的長的公共前綴甚至可以被共享的后綴。上述方法可以被執(zhí)行,以保持所得到的決策樹平衡以及充分利用共享,從而提高存儲(chǔ)器帶寬的使用。此外,隨著地址寬度的增大和路由表大小的增長,該方法允許在性能方面的可縮放性。舉例而言,圖6A示出了根據(jù)本發(fā)明的一個(gè)方法的一個(gè)多路決策樹。該決策樹在該樹中的若干個(gè)層處包括多個(gè)節(jié)點(diǎn)601、602、603、604。較高層中的一個(gè)節(jié)點(diǎn)可以分支到該較高層之下的層中的數(shù)個(gè)節(jié)點(diǎn)。該較高層中的該節(jié)點(diǎn)是該較高層之下的層中的(子)節(jié)點(diǎn)的父。該多路決策樹可以在某一層是兩個(gè)分支,但也可以在該樹中的單個(gè)層具有兩個(gè)以上的分支。再一次,這里使用了如圖1中限定的基本地址范圍。如圖6A所例示,本發(fā)明的方法增加了該決策樹在比較較少的地址位時(shí)的分支的數(shù)量。在圖6A的實(shí)施例中,可用的5位存儲(chǔ)器帶寬被假定為等于圖3中所示的現(xiàn)有技術(shù)的范圍樹方法的可用存儲(chǔ)器帶寬。為了例示本發(fā)明的方法,在第一迭代中,在層1607的根節(jié)點(diǎn)601,將引入的地址Ain 的兩個(gè)最高有效位與存儲(chǔ)在該根節(jié)點(diǎn)的地址邊界的部分相比較,該地址邊界的部分是兩個(gè)最高有效位“01-—”605和最高有效位“1”606。較低的有效地址邊界位被省略(由 “_”指示)。這一比較等效于比較完整地址邊界“01000”和“10000”,如同在現(xiàn)有技術(shù)的范圍樹結(jié)構(gòu)中會(huì)做的那樣。在層沈08且在從根節(jié)點(diǎn)601選取中間分支610之后的第二迭代中,正常地將比較地址邊界“01010”和“01100”。然而,它不需要存儲(chǔ)和比較兩個(gè)最高有效位,因?yàn)樵诘谝坏笠阎氲牡刂肥恰癘lxxx”,其中X是未定的位值。而且,待被比較的地址邊界的最低有效位被省略,因?yàn)樗闹凳恰癘”。相似地,在從根層選取右邊的分支615之后,已知最高有效位是“l(fā)xxxx”。那么,在層2608,待被比較的兩個(gè)地址邊界“ 11100,,和“ 11101”具有公共前綴A10" ( “_110_”)611, 該公共前綴被共享從而在該節(jié)點(diǎn)中僅被存儲(chǔ)一次,并被單獨(dú)比較。這一節(jié)點(diǎn)602的決策是基于公共前綴Α:比較的結(jié)果,以及(如果需要)在同一節(jié)點(diǎn)602指示為“一一1”613的最低有效位的比較。如這一實(shí)施例所例示的,本發(fā)明的方法產(chǎn)生了良好平衡的決策樹,該決策樹不像使用較少存儲(chǔ)器帶寬的現(xiàn)有技術(shù)的范圍樹那么深。在下面的兩個(gè)實(shí)施例中例示了減少每個(gè)地址邊界存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的數(shù)據(jù)的量的兩種附加方式。這就是該方法的地址對齊性質(zhì)以及該方法的公共地址后綴共享性質(zhì)。圖6B例示了使用本發(fā)明的范圍Trie方法表示地址范圍集620的范圍Trie節(jié)點(diǎn)622的一個(gè)實(shí)施例。該節(jié)點(diǎn)例示了共享地址邊界的公共后綴的一個(gè)實(shí)施例。這一節(jié)點(diǎn)表示具有兩位公共后綴“10”的兩個(gè)地址邊界“10010”625和“11010”626。Ain的前三位被與所述地址的邊界625的三位前綴“100”和邊界626的三位前綴“ 110”相比較。如果在Ain的 3位前綴和所述地址邊界的3位前綴之間不存在精確匹配,那么匹配地址范圍被識(shí)別。如果存在Ain與所述地址邊界的兩個(gè)前綴之一的精確匹配,那么所述公共地址的邊界后綴623將與Ain的后綴相比較。在這一實(shí)施例中,該引入的地址的最后兩位將被與“10”相比較。根據(jù)該公共后綴比較的結(jié)果以及之前剛剛發(fā)生的匹配,該基本地址范圍被識(shí)別。本發(fā)明在上述實(shí)施例中的優(yōu)勢在于,共享公共后綴,從而僅存儲(chǔ)它、讀取它和比較它一次。圖6C例示了使用本發(fā)明的范圍Trie方法表示地址范圍集630的范圍Trie節(jié)點(diǎn) 632的一個(gè)實(shí)施例。該節(jié)點(diǎn)例示了對齊地址邊界與該引入的地址Ain的一個(gè)實(shí)施例。該節(jié)點(diǎn)映射到的地址范圍的長度是從上節(jié)點(diǎn)邊界地址637減去下節(jié)點(diǎn)邊界地址634的結(jié)果,Nl = 01110-10011 = 00101,在這一實(shí)施例中該隊(duì)要求被表示成3位的二進(jìn)制“101”,因?yàn)閮蓚€(gè)最高有效位是零。表示該節(jié)點(diǎn)地址范圍的長度所要求的位的數(shù)量,確定了將被用在這一節(jié)點(diǎn)所要求的計(jì)算中的后綴位的數(shù)量。因此,在這一實(shí)施例中,在這一節(jié)點(diǎn)中相同數(shù)量的最低有效地址位(三位)對于隨后的計(jì)算將是有用的。首先,下節(jié)點(diǎn)邊界634的三個(gè)最低有效位 “一110”被從Ain的三個(gè)最低有效位中減去。從所述地址中省略的最高有效位由“_”指示。 該減法的結(jié)果的三個(gè)最低有效位被與隨后計(jì)算的結(jié)果的三個(gè)最低有效位相比較下節(jié)點(diǎn)邊界634的三個(gè)最低有效位“一110”被從每個(gè)地址邊界635、636的三個(gè)最低有效位“一111” 和“--010”中減去。上述計(jì)算的結(jié)果確定了待選取的節(jié)點(diǎn)分支。注意,原始節(jié)點(diǎn)的邊界沒有公共前綴,但在對齊之后存在2位公共前綴,所述2位公共前綴從該節(jié)點(diǎn)的計(jì)算中被省略。因此,我們僅需要對下列各項(xiàng)的僅三個(gè)最低有效位進(jìn)行存儲(chǔ)和執(zhí)行計(jì)算(I)Ain; (2)下節(jié)點(diǎn)邊界634 ;以及(3)地址邊界635、636。通常,本發(fā)明的范圍Trie節(jié)點(diǎn)和分支可以被一一映射到(現(xiàn)有技術(shù))范圍樹數(shù)據(jù)結(jié)構(gòu)。如在現(xiàn)有技術(shù)范圍樹中,一個(gè)范圍Trie節(jié)點(diǎn)映射到該地址空間的一個(gè)地址范圍。(1)單個(gè)樹層中的節(jié)點(diǎn)的地址范圍和(2)先前樹層的葉節(jié)點(diǎn)的地址范圍的聯(lián)合是整個(gè)地址空間。子節(jié)點(diǎn)地址范圍的聯(lián)合是它們的父節(jié)點(diǎn)的地址范圍。當(dāng)引入的地址Ain為AhSAinC Ak時(shí),選取指向分支地址范圍[Ak^Ak)的一個(gè)節(jié)點(diǎn)分支。然而,存儲(chǔ)在本發(fā)明的一個(gè)范圍Trie節(jié)點(diǎn)中的數(shù)據(jù)顯著少于存儲(chǔ)在一個(gè)范圍樹節(jié)點(diǎn)中的數(shù)據(jù),而基于該引入的地址來確定隨后的子分支所需要的計(jì)算也是不同的。而且,前綴可以用與存儲(chǔ)在現(xiàn)有技術(shù)范圍樹中相同的方式被存儲(chǔ)到本發(fā)明的數(shù)據(jù)結(jié)構(gòu)。一個(gè)范圍Trie節(jié)點(diǎn)由一些地址邊界的部分組成,這些地址邊界的部分可以被布置為根據(jù)一個(gè)具體實(shí)施方案組成(1)兩個(gè)或更多個(gè)地址邊界的單個(gè)公共地址部分;(2)每個(gè)地址邊界在省略該比較不要求的任何位的子集(可省略的地址部分)之后的剩余部分; 這一位的子集可以是節(jié)點(diǎn)地址范圍公共的位,也可以是具有值為“0”的地址邊界后綴。因此,根據(jù)圖5和圖6A-6C,本發(fā)明提供了一種用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法,所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;
所述方法包括-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍,所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分, 以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中,所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分;以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,也不是所述至少一個(gè)可省略的地址部分。讀取包括預(yù)定地址空間中的一個(gè)地址的一個(gè)引入的地址Ain。接下來,該引入的地址Ain由對應(yīng)于該地址空間的范圍的數(shù)個(gè)位限定。在該地址空間內(nèi),存在限定了基本地址范圍Rl,. . .,R7的數(shù)個(gè)地址邊界。每個(gè)基本地址范圍Rl,...,R7自身就是包括數(shù)個(gè)單獨(dú)地址的一個(gè)子地址空間?;诘刂愤吔绲臄?shù)量來構(gòu)建一個(gè)決策樹,該決策樹被用來確定該引入的地址Ain 位于哪個(gè)基本地址范圍中。為了確定該引入的地址在該地址空間內(nèi)的位置,該方法被布置為在數(shù)個(gè)迭代中執(zhí)行一個(gè)或多個(gè)比較,所述比較為將位的子集或整個(gè)所請求的引入的地址的一個(gè)值與位的子集或整個(gè)地址邊界的一個(gè)或多個(gè)值相比較。該位的子集的大小在不同迭代中可以不同。該決策樹以如下方式分支在完成所述迭代之后,該引入的地址所屬于的基本地址范圍被確定。下面,將更詳細(xì)地描述該決策樹的構(gòu)建。在一個(gè)實(shí)施方案中,本發(fā)明提供了如上述的方法,該方法還包括-接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍,包括,在所述決策樹的每個(gè)層中, 從頂層中的根節(jié)點(diǎn)開始針對所述各自的層中的各自的節(jié)點(diǎn)
18
讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。接下來,描述根據(jù)該方法減少在一個(gè)節(jié)點(diǎn)中需要被存儲(chǔ)、讀取和處理的地址邊界位的數(shù)量的一個(gè)具體實(shí)施方案。在該決策樹的一個(gè)節(jié)點(diǎn)中,對于數(shù)個(gè)地址邊界公共的位可以被組合成一個(gè)公共地址部分,作為待被比較的位的一個(gè)子集。有利地,這些位在該節(jié)點(diǎn)中僅需要被存儲(chǔ)一次,然后對于多于一個(gè)的地址邊界僅要求針對這些位做單個(gè)比較。另外,對于一個(gè)節(jié)點(diǎn)映射到的地址范圍中的所有地址的公共的位可以從該比較中被省略。而且,具有零值的地址邊界后綴位可以從該比較中被省略。最后,地址邊界和所請求的引入的地址可以被適當(dāng)?shù)貙R,以使得需要被存儲(chǔ)在該節(jié)點(diǎn)中的信息最小化。該方法應(yīng)用根據(jù)該實(shí)施方案的決策樹,該決策樹具有下列性質(zhì)-映射到該地址空間的地址范圍的節(jié)點(diǎn)。(1)單個(gè)樹層中的節(jié)點(diǎn)的地址范圍和O) 先前樹層的葉節(jié)點(diǎn)的地址范圍的聯(lián)合是整個(gè)地址空間。于節(jié)點(diǎn)地址范圍的聯(lián)合是它們的父節(jié)點(diǎn)的地址范圍;-在一個(gè)節(jié)點(diǎn),每個(gè)比較要求被處理的地址位(或該決策樹中的節(jié)點(diǎn)分支)的最大數(shù)量是lo&D,其中D是該節(jié)點(diǎn)映射到的地址范圍的長度;-當(dāng)?shù)刂泛缶Y的值為零時(shí)可以從處理中省略該地址后綴。在一些情況下,可以迫使一個(gè)地址邊界具有值為零的后綴,以減少需要被存儲(chǔ)的數(shù)據(jù),然后一個(gè)新的地址邊界被創(chuàng)建,盡管它沒有被包括在原始組的地址邊界——其限定了待被存儲(chǔ)在該決策樹中的原始組的地址范圍——中。-公共地址部分在地址邊界(節(jié)點(diǎn)地址)之間共享;以及-地址可以被適當(dāng)?shù)貙R以使得它們共享的公共前綴最大化。對應(yīng)于這些性質(zhì),根據(jù)這一實(shí)施方案的該方法提供了一些數(shù)據(jù)處理規(guī)則。這些規(guī)則旨在,在給定一個(gè)具體的存儲(chǔ)器帶寬的前提下,增加每節(jié)點(diǎn)分支的數(shù)量,以減小該決策樹的深度。現(xiàn)在考慮圖5的節(jié)點(diǎn)501。由于一個(gè)范圍Trie節(jié)點(diǎn)的外部特性與一個(gè)范圍樹節(jié)點(diǎn)的外部特性一一匹配,所以圖5可以被用來例示一個(gè)范圍Trie節(jié)點(diǎn)。第一規(guī)則(規(guī)則1)是,省略節(jié)點(diǎn)邊界502、503的公共前綴。當(dāng)在地址Na 502和地址Nb 503的節(jié)點(diǎn)邊界存在一個(gè)長度為L(L < W,W是地址寬度)的公共前綴CP時(shí),所述地址的L個(gè)最高有效位(輸入地址和地址邊界)可以從在該節(jié)點(diǎn)的比較中被省略。第二規(guī)則(規(guī)則2)是,在該節(jié)點(diǎn)映射到的地址范圍內(nèi)共享地址邊界Ai 504的公共前綴(最高有效位)Aep。多個(gè)地址邊界Ai的長度為L (L< W)的公共前綴Aep可以在多個(gè)比較中被共享、僅被存儲(chǔ)一次并被分別處理。然后,如果該長度為L的Ain前綴小于Aep, 那么Ain e R1 (艮口,Ain屬于Rl)。如果該長度為L的Ain前綴大于Acp,那么Ain e Rk+1。如果該長度為L的Ain前綴等于Acp,那么Ain的(W-L)位后綴(最低有效位)與地址邊界Ai 504 的(W-L)位后綴的比較確定了 Ain屬于何處。第三規(guī)則(規(guī)則3)是,省略值為“0”的地址邊界后綴。令地址邊界Ai 504的長度為L的后綴為零,其中L < W。那么,Ai 504的這一后綴不需要被與Ain的該L個(gè)最低有效位相比較。那么Ain的(W-L)位前綴(最高有效位)與地址邊界Ai 504的(W-L)位前綴的比較確定了 Ain屬于何處第四規(guī)則(規(guī)則4)是,在該節(jié)點(diǎn)映射到的地址范圍內(nèi)共享地址邊界Ai 504的公共后綴(最低有效位)Aes。多個(gè)地址&的公共后綴Aes可以在多個(gè)比較中被共享,并被分別處理。令艮=[Ap_1;Ap) (ρ e自然數(shù),1彡ρ彡k+1)是AjP Ain的(W-L)位前綴比較所指示的地址范圍。那么,當(dāng)下列所有三個(gè)條件為真時(shí),有Ain e Rp^1 = [Ap_2, V1)(1)長度為L的Ain后綴小于Aes ;(2)長度為W-L的Ain前綴等于Alri的前綴;(3) Rp ^ Rl如果上述三個(gè)條件中的一個(gè)或多個(gè)不被滿足,那么Ain e艮。第五規(guī)則(規(guī)則5)是,使用地址對齊。在映射到具有地址邊界Ai 504的[Na,Nb) 的節(jié)點(diǎn)N中查找地址Ain等效于在映射到具有地址邊界A' i = (Ai-Na)的地址范圍W, Nb-Na)的節(jié)點(diǎn)N'中查找地址A' IN= (Ara-Na)。那么,當(dāng)A' 屬于節(jié)點(diǎn)N'的地址范圍Ri =[Α' η,A' 0時(shí),Ain屬于原始節(jié)點(diǎn)N的地址范圍Ri = [Ai+ Ai)。第五規(guī)則使得第一規(guī)則的益處最大化,并且本質(zhì)上是實(shí)現(xiàn)本發(fā)明的方法的本質(zhì)屬性的手段一個(gè)節(jié)點(diǎn)需要處理的地址位的最大數(shù)量等于表示該節(jié)點(diǎn)區(qū)域的長度所需要的位的數(shù)量,即 Iog2(Nb-Na)0關(guān)于并行地應(yīng)用上述一個(gè)以上的規(guī)則,出現(xiàn)了一個(gè)問題。規(guī)則一至四可以被獨(dú)立地應(yīng)用,因?yàn)樗鼈儾槐舜擞绊?。例如,有可能省略使用公共?jié)點(diǎn)前綴(規(guī)則1)、省略使用任何零后綴(規(guī)則3),然后應(yīng)用共享剩余地址位的地址公共前綴(規(guī)則2)和后綴(規(guī)則4)。然而,第五規(guī)則更難以與規(guī)則一至四中的一個(gè)或多個(gè)組合起來應(yīng)用。第五規(guī)則旨在使得公共節(jié)點(diǎn)前綴最大化,因此它可以與第一規(guī)則組合,但需要被應(yīng)用在第二規(guī)則之前, 因?yàn)榈刂非熬Y在該減法之后改變了。關(guān)于零和公共地址后綴,第五規(guī)則可以被獨(dú)立地應(yīng)用。 優(yōu)選的是,使用原始地址值分別省略零地址后綴和共享公共地址后綴(長度為L的),然后在剩余的W-L個(gè)地址位中做減法。這是可行的,因?yàn)?,代替減去Na 502,可以減去Na 502的 W-L個(gè)最高有效位,假定剩余的是零。通過這樣做,甚至當(dāng)應(yīng)用地址對齊以及另外將該減法中要求的地址位減少到僅有用于該前綴比較所需要的位時(shí),也保留了共享后綴的益處。應(yīng)注意,上述規(guī)則考慮減少存儲(chǔ)在一個(gè)節(jié)點(diǎn)中的地址邊界所要求的部分以及它們各自的比較。相同的規(guī)則可以被應(yīng)用至地址部分的部分以及它們各自的比較。最后,規(guī)則2和規(guī)則4可以被擴(kuò)展至共享兩個(gè)或更多個(gè)節(jié)點(diǎn)地址的任何公共地址部分。系統(tǒng)圖13示意性地示出了被布置為執(zhí)行本發(fā)明的一個(gè)方法的系統(tǒng)1300的框圖。該系統(tǒng)包括存儲(chǔ)器1301(例如,片上存儲(chǔ)器SRAM);范圍Trie處理單元1302-1306,每個(gè)處理單元執(zhí)行單個(gè)樹層的處理;以及可選地,如果該存儲(chǔ)器不足以存儲(chǔ)所有的范圍Trie節(jié)點(diǎn),那么還包括外部存儲(chǔ)器1307(例如DRAM)以存儲(chǔ)最后的范圍Trie層的節(jié)點(diǎn)(在所示出的實(shí)施例中,第五層的節(jié)點(diǎn)被外部地存儲(chǔ))。
在下面詳細(xì)描述每個(gè)范圍Trie處理單元1302-1306的內(nèi)部,并且在圖12A、12B中以及進(jìn)一步在如圖10所示的一個(gè)示例性硬件實(shí)施方式中例示。取決于該系統(tǒng)的應(yīng)用,引入的地址Ain可以是通過網(wǎng)絡(luò)I/O設(shè)備從來自該網(wǎng)絡(luò)的引入的分組的分組頭中所提取的一個(gè)或多個(gè)分組域。引入的地址Ain被錄入范圍Trie處理單元1302的第一層,該范圍Trie處理單元1302可以不需要讀存儲(chǔ)器,因?yàn)榈谝环秶?Trie層包括單個(gè)根節(jié)點(diǎn),并且可以被存儲(chǔ)在1302中的寄存器中。范圍Trie處理層21303、 層31304、層41305和層51306在從存儲(chǔ)器(SRAM 1301或DRAM 1307)讀取由先前的范圍 Trie層處理單元確定的范圍Trie節(jié)點(diǎn)的數(shù)據(jù)之后,執(zhí)行與1302相同的計(jì)算。范圍Trie 節(jié)點(diǎn)根據(jù)上述規(guī)則或除這些規(guī)則之外,通過使用另一種壓縮技術(shù),以壓縮形式存儲(chǔ)地址邊界。在最后的范圍Trie處理單元(層5)之后,需要從存儲(chǔ)器單元中讀取結(jié)果陣列(Result Array)804,該結(jié)果陣列804存儲(chǔ)每個(gè)基本地址范圍的動(dòng)作或匹配前綴。針對給定的引入的地址的匹配基本地址范圍和/或與該基本地址范圍關(guān)聯(lián)的動(dòng)作是該系統(tǒng)的輸出。系統(tǒng)1300被示為在存儲(chǔ)器單元1301、1307中讀和寫的范圍Trie處理單元或處理器序列,然而,它可以包括并行工作的或由一個(gè)主處理器控制的幾個(gè)處理單元序列,它們彼此之間可以是遠(yuǎn)程設(shè)置,如本領(lǐng)域技術(shù)人員已知的。用于執(zhí)行本發(fā)明的方法的計(jì)算機(jī)布置的實(shí)例有(骨干)網(wǎng)絡(luò)路由器、報(bào)文分組交換系統(tǒng)、多服務(wù)互聯(lián)網(wǎng)路由器、多域分組分類系統(tǒng)、網(wǎng)關(guān)、提供網(wǎng)絡(luò)服務(wù)的(支持多播、隧道、虛擬專用網(wǎng)、服務(wù)質(zhì)量支持)的服務(wù)器、網(wǎng)絡(luò)安全系統(tǒng)。范圍Trie處理單元1302-1306包括硬件部件形式或軟件部件形式的功能性,以執(zhí)行它們各自的功能,如在下面更詳細(xì)地描述的。技術(shù)人員應(yīng)意識(shí)到,本發(fā)明的功能性可以通過硬件部件與軟件部件的組合來實(shí)現(xiàn)。如本領(lǐng)域技術(shù)人員已知的,硬件數(shù)字部件可以存在于范圍Trie處理單元1302、1303、1304、1305、1306內(nèi),或者可以作為與范圍iTrie處理單元 1302、1303、1304、1305、1306接口的分立電路而存在。而且,本領(lǐng)域技術(shù)人員應(yīng)意識(shí)到,軟件部件可以存在于1302、1303、1304、1305、1306的存儲(chǔ)器區(qū)域或者存儲(chǔ)器單元1301、1307中。圖13所示的計(jì)算機(jī)系統(tǒng)1300被布置為執(zhí)行本發(fā)明的方法的計(jì)算。計(jì)算機(jī)系統(tǒng) 1300能夠執(zhí)行根據(jù)位于計(jì)算機(jī)可讀介質(zhì)上的配置(或程序代碼)的計(jì)算,該計(jì)算機(jī)可讀介質(zhì)在被載入該計(jì)算機(jī)系統(tǒng)之后允許該計(jì)算機(jī)系統(tǒng)執(zhí)行本發(fā)明的方法。本發(fā)明可以選取如下形式含有描述上面所公開的方法的一個(gè)或多個(gè)機(jī)器可讀指令序列的計(jì)算機(jī)程序,或者其內(nèi)存儲(chǔ)有這樣的計(jì)算機(jī)程序的數(shù)據(jù)存儲(chǔ)介質(zhì)(例如,半導(dǎo)體存儲(chǔ)器)。因此,本發(fā)明提供了一種用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的計(jì)算機(jī)系統(tǒng),所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述處理器被布置為執(zhí)行用于構(gòu)建在所述地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法,包括-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,
所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍,所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分, 以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中,所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分;以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。范圍Trie處理單元1302-1306(或處理器)還被布置為執(zhí)行本發(fā)明的方法,包括-接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍,包括,在所述決策樹的每個(gè)層中, 從頂層中的根節(jié)點(diǎn)開始針對所述各自的層中的各自的節(jié)點(diǎn)讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分; 將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。附加地,本發(fā)明提供了一種位于計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序待被上述計(jì)算機(jī)系統(tǒng)加載,用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹,所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述計(jì)算機(jī)程序產(chǎn)品在被加載之后允許所述處理器執(zhí)行-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的
22一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍,所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分, 以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中,所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括-將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次;-省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。此外,本發(fā)明提供了一種設(shè)有上述計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì)。根據(jù)該方法,范圍Trie處理單元1302、1303、1304、1305、1306接收一個(gè)引入的地址Ain,以根據(jù)本方法執(zhí)行地址查找。該引入的地址是通過網(wǎng)絡(luò)I/O設(shè)備從該網(wǎng)絡(luò)的引入的分組的分組頭中提取的。引入的地址Ain可以包括該分組的目的地址,但也包括或替代地包括源地址、源端口、目的端口和/或協(xié)議。引入的地址Ain是在覆蓋了預(yù)定數(shù)量的位的一個(gè)地址范圍的一個(gè)地址空間內(nèi)的一個(gè)地址。范圍Trie處理單元1302、1303、1304、1305、1306則在數(shù)個(gè)迭代中,在每個(gè)迭代中從引入的地址的預(yù)定數(shù)量的位中選擇該位的一個(gè)子集。接下來在每個(gè)迭代中,范圍Trie處理單元1302、1303、1304、1305、1306將該預(yù)定數(shù)量的位的該子集的一個(gè)值與來自該地址空間的位的一個(gè)子集的一個(gè)值相比較。進(jìn)一步,范圍Trie處理單元1302、1303、1304、1305、1306可以被布置為執(zhí)行根據(jù)第一、第二、第三、第四和第五規(guī)則中的一個(gè)或多個(gè)規(guī)則限定的算法,如上所述。圖12A示意性地示出了被布置為執(zhí)行根據(jù)本發(fā)明的一個(gè)方法的又一個(gè)計(jì)算機(jī)系統(tǒng)1200的功能框圖。在要求多個(gè)位操縱指令來移位地址、選擇它們的待被比較的部分以及選擇匹配區(qū)的情況下,以硬件形式實(shí)施本發(fā)明的方法可以比以軟件形式實(shí)施更有效率。另一方面,軟件實(shí)施方式也可以得益于本發(fā)明的方法,因?yàn)樵摲椒p少了存儲(chǔ)器訪問的數(shù)量,而這存儲(chǔ)器訪問的數(shù)量的減少將顯著改進(jìn)性能。
該又一個(gè)計(jì)算機(jī)系統(tǒng)1200包括存儲(chǔ)器1201 ;地址的一部分的地址對齊和選擇 1202、1213 ;比較器1203、1212 ;公共前綴地址對齊和選擇1210 ;公共前綴比較器1208 ;公共后綴地址對齊和選擇1211 ;公共后綴比較器1209 ;編碼器單元,基于地址的部分的個(gè)體比較來輸出結(jié)果1204 ;模塊1205,如果必要就根據(jù)公共前綴比較結(jié)果來修改該編碼器的結(jié)果;模塊1206,如果必要就根據(jù)公共后綴比較結(jié)果來修改模塊1205的結(jié)果;模塊1207,其計(jì)算待從存儲(chǔ)器1201中讀取的下一個(gè)地址。通常而言,引入的地址Ain在1202、1213中被適當(dāng)?shù)貙R,并且引入的地址Ain的一部分饋送給并行比較器1203、1212。比較器1203、1212可以被配置為執(zhí)行其在不同實(shí)施方案中可以變化的可變長度的比較,該長度例如8位、16位或32位??捎玫拇鎯?chǔ)器帶寬和所執(zhí)行的比較的長度確定了可用的比較的總數(shù)量;例如,對于256位存儲(chǔ)器帶寬和32位比較器一其可以被配置為多個(gè)8位和16位比較器,我們可以有7個(gè)32位比較器1203、1212, 其余的32位是針對公共前綴1208和公共后綴1209的。每個(gè)比較器的第二輸入被從存儲(chǔ)器1201中讀取,并且包括由給定一組地址范圍的探試(heuristic)生成的單個(gè)迭代(樹節(jié)點(diǎn))的一個(gè)或多個(gè)決策樹邊界。探試的例子將在下文中更詳細(xì)地討論。兩個(gè)其他比較器 1208、1209并行地比較公共地址前綴和后綴。然后,個(gè)體比較器結(jié)果在1204中被編碼。在 1205中根據(jù)規(guī)則二來考慮公共前綴輸出。然后在1206中根據(jù)規(guī)則四考慮公共后綴比較。 上述可以以流水線形式實(shí)施,如圖12B所示,以使得每個(gè)迭代在具有分立的存儲(chǔ)器塊的分立的級(jí)中被執(zhí)行。通過這樣做,可以以額外的硬件為代價(jià)來提高總吞吐量。替代地,流水線級(jí)可以加倍,在不同級(jí)中具有比較和存儲(chǔ)器訪問,以改善循環(huán)時(shí)間。下面根據(jù)本發(fā)明的一個(gè)方面示出了范圍Trie數(shù)據(jù)結(jié)構(gòu)、節(jié)點(diǎn)描述和硬件實(shí)施的一個(gè)更詳細(xì)的描述和實(shí)施例。本發(fā)明提供了快速搜索以在地址空間中識(shí)別引入的地址屬于的基本地址范圍。圖7A示出了根據(jù)本發(fā)明的一個(gè)范圍Trie的圖,以及圖7B示出了在具有額外的葉節(jié)點(diǎn)和指針的注釋操作之后的一個(gè)范圍Trie的圖。首先,如圖7A所示的范圍Trie 700被注釋為(a)具有額外的葉節(jié)點(diǎn)730-734,其保存著指向結(jié)果陣列710的指針760、761、762、764、765 ; (b)指向每個(gè)非根非葉節(jié)點(diǎn)的最右邊的子節(jié)點(diǎn)的指針750,751 ;以及(c)從葉節(jié)點(diǎn)到結(jié)果陣列710的指針763、766、767。該注釋操作提供了一個(gè)已注釋的范圍Trie 700’,如圖7B所示。舉個(gè)例子,原始范圍Trie 700具有3層節(jié)點(diǎn)。已注釋的范圍Trie 700’也具有3層節(jié)點(diǎn),因?yàn)轭~外的葉節(jié)點(diǎn)沒有被添加在層3 節(jié)點(diǎn)之下。每個(gè)額外的葉節(jié)點(diǎn)730-734被添加至已注釋的范圍Trie 700’,以防原始范圍 Trie 700的非層3節(jié)點(diǎn)701-703直接指向結(jié)果陣列710中的地址范圍Ri0額外的葉節(jié)點(diǎn)被放置在指向它的范圍Trie節(jié)點(diǎn)的下一層中,并且保存指向結(jié)果陣列中的地址范圍氏的指針。(即,根節(jié)點(diǎn)701是節(jié)點(diǎn)702、703的父,并且也直接指向結(jié)果陣列中的R3)。這導(dǎo)致創(chuàng)建額外的葉節(jié)點(diǎn)732,其被放置在已注釋的范圍Trie 700’的層2 中作為根節(jié)點(diǎn)720的子節(jié)點(diǎn),且在子節(jié)點(diǎn)721、722之間。額外的葉節(jié)點(diǎn)732保存了指向結(jié)果陣列710中的地址范圍民的結(jié)果陣列指針762。 以一種相似的形式,范圍iTrie 700’被注釋為具有額外的葉節(jié)點(diǎn)730、731、733、734。通過使用指向最右邊的子節(jié)點(diǎn)的指針750、751將非根非葉節(jié)點(diǎn)721、722與它們的最右邊的子節(jié)點(diǎn)731、725相鏈接,范圍Trie 700,的注釋繼續(xù)。通過使用指向結(jié)果陣列的指針763、766、767將葉節(jié)點(diǎn)723-725與結(jié)果陣列710的最右邊的結(jié)果(范圍Trie 700的每個(gè)節(jié)點(diǎn)704-706指向的)相鏈接,完成對范圍Trie 700, 的注釋。接下來,根據(jù)本發(fā)明,該3層已注釋的范圍Trie 700’的每個(gè)節(jié)點(diǎn)被放置在圖8中例示的4層存儲(chǔ)器分級(jí)體系的表目中。圖8是根據(jù)本發(fā)明示出了該存儲(chǔ)器分級(jí)體系中的已注釋的范圍Trie節(jié)點(diǎn)的布置的圖。圖8也示出了節(jié)點(diǎn)在該存儲(chǔ)器分級(jí)體系中的組織以及注釋了范圍Trie 700’的指針的語義。存儲(chǔ)器層1801的單個(gè)表目810被已注釋的范圍Trie 700,的根節(jié)點(diǎn)720填充。 存儲(chǔ)器層觀02和存儲(chǔ)器層3803被已注釋的范圍Trie700,的層2和層3的節(jié)點(diǎn)填充。存儲(chǔ)器層i的每個(gè)相繼的存儲(chǔ)器表目被從已注釋的范圍Trie 700’的層i的最右邊的節(jié)點(diǎn)開始的節(jié)點(diǎn)朝最左邊的節(jié)點(diǎn)移動(dòng)的節(jié)點(diǎn)填充。存儲(chǔ)器層觀02被提供有來自700’的層2的節(jié)點(diǎn);節(jié)點(diǎn)722在表目0811中;額外的葉節(jié)點(diǎn)723在表目1812中;以及,節(jié)點(diǎn)721在表目觀13 中。以相同的方式,存儲(chǔ)器層3803被填充。結(jié)果陣列710位于第四存儲(chǔ)器層804中,在此該結(jié)果陣列710被放置為從它的最右邊的范圍開始朝最左邊的范圍移動(dòng)。在完成用于識(shí)別引入的地址屬于的范圍的搜索之后,結(jié)果陣列804中的各自的范圍的表目被獲得以確定待選取的動(dòng)作823。即,在分組分類和IP查找的情形中,所搜尋的結(jié)果常常是下一跳地址,但也可能是分組的部署(disposition)或分組頭的一些變體。在將已注釋的范圍Trie 700,的節(jié)點(diǎn)放置在存儲(chǔ)器層1_3801_803中之前,它們必須首先被編碼成表示在圖9中的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901。圖9描繪了將范圍Trie節(jié)點(diǎn)900表示成節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901的一個(gè)示例性表示。范圍Trie節(jié)點(diǎn)900中的信息保存了用于當(dāng)在搜索過程中遍歷經(jīng)過范圍Trie節(jié)點(diǎn)900時(shí)要執(zhí)行的計(jì)算的所有必要的細(xì)節(jié)。舉個(gè)例子,引入的地址寬度和可用的比較器的寬度被假定為32位??捎玫拇鎯?chǔ)器帶寬被假定為128。因此,存在4(四)個(gè)可用的比較器。用于節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901中的比較器1-3931-933的比較值(地址部分)被填充有用于節(jié)點(diǎn)900的比較器1-3910-912的單個(gè)比較值918。用于比較器3912的比較值總共小于32位寬,因此用于比較器3933的比較值中的其余位被設(shè)置為0。比較值930的這32個(gè)最低有效位934要么保存前綴/后綴比較值 914-915,要么保存用于比較器4913(如果有效)的比較值。比較器1-4910-913 的操作模式(即,[8 8 8 8],[8,8,16], [16,0],禁用 (disabled))被編碼成放置在比較器1-4操作模式945-948中的值?;诠睬熬Y914、公共后綴915和減去值(subtract value) 916,設(shè)置了移位控制941 (用于字節(jié)對齊)、比較開始字節(jié)942、減去值943以及前綴/后綴掩碼944。為了完成節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901,指向下一個(gè)存儲(chǔ)器層的指針950被填充有節(jié)點(diǎn)900的指針917。根節(jié)點(diǎn)720——其用數(shù)據(jù)結(jié)構(gòu)901表示,不具有指向下一個(gè)存儲(chǔ)器層950的指針, 因?yàn)樵摳?jié)點(diǎn)總是指向存儲(chǔ)器層觀02的表目0811。另一個(gè)特定情況是將額外的葉節(jié)點(diǎn)730-734表示在節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901中。額外的葉節(jié)點(diǎn)僅保存指向結(jié)果陣列710的指針760、761、762、764、765。用于葉節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901被完全填充有0,除了它的保存了指向結(jié)果陣列的指針的那些最高有效位以及它的用于比較器1945的保存特定編碼以說明這一節(jié)點(diǎn)是額外的葉節(jié)點(diǎn)的比較模式。在將存儲(chǔ)器分級(jí)體系設(shè)置為具有該數(shù)據(jù)結(jié)構(gòu)之后,可以開始操作根據(jù)本發(fā)明的方法的地址查找。該計(jì)算現(xiàn)在可以以從存儲(chǔ)器層1801的單個(gè)存儲(chǔ)器表目810中重新得到根節(jié)點(diǎn)720數(shù)據(jù)結(jié)構(gòu)開始著手。所要求的計(jì)算在范圍Trie節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)已經(jīng)被從存儲(chǔ)器中重新得到之后,存在數(shù)個(gè)所要求的計(jì)算,以沿著搜索路徑前進(jìn)到后續(xù)的范圍Trie節(jié)點(diǎn),直到該搜索完成。所要求的計(jì)算的第一部分在表1中示出,其中基于引入的地址來計(jì)算待要在該比較器中被比較的值。例如,使用了在圖9中表示在901中的節(jié)點(diǎn)。首先,根據(jù)本發(fā)明,輸入地址被左移了 shift_ctrlM941位,并且在右邊被填充有0 (如表1的行1中所示)。在本發(fā)明的這一實(shí)施方案中,移位被假定為朝左執(zhí)行0、2、4或6位,以與引入的地址字節(jié)對齊。 然后僅向該已移位的引入的地址的開始字節(jié)942加上減去值943 (如表1的行2中所示), 如本發(fā)明的這一實(shí)施方案敘述的。字節(jié)從最高有效位開始計(jì)數(shù)。此后,基于比較器操作模式945-948和開始字節(jié)942,構(gòu)建待要在這4個(gè)比較器中被比較的值(如表1的行3中所示)。比較器操作模式945-948確定待要在比較器中被執(zhí)行的有用的比較的寬度。在該實(shí)施例中,32位比較器1將比較4個(gè)8位值。這意味著待被構(gòu)建用于該比較的值包括從開始字節(jié)開始的4個(gè)8位。所要求的計(jì)算的第二部分在表2中示出,其中比較被執(zhí)行,并且結(jié)果被編碼成單
個(gè)值。所述計(jì)算將基于從存儲(chǔ)器分級(jí)體系中重新得到的范圍節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)901的數(shù)據(jù)。
權(quán)利要求
1.一種用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法, 所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定; 所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示; 所述方法包括-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn); 所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍, 所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分,以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中, 所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括 -將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次; -省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。
2.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個(gè)節(jié)點(diǎn)中的所有分支地址范圍的聯(lián)合是所述至少一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)地址范圍。
3.根據(jù)權(quán)利要求1所述的方法,其中所述分支地址范圍是所述分支指向的節(jié)點(diǎn)的節(jié)點(diǎn)地址范圍。
4.根據(jù)權(quán)利要求1所述的方法,其中被存儲(chǔ)在所述節(jié)點(diǎn)中的地址部分占據(jù)的位的總數(shù)少于所述節(jié)點(diǎn)地址的位的總數(shù)。
5.根據(jù)權(quán)利要求1所述的方法,其中一個(gè)節(jié)點(diǎn)被布置為用于存儲(chǔ)具有兩個(gè)節(jié)點(diǎn)分支的單個(gè)節(jié)點(diǎn)地址的地址部分;所述單個(gè)節(jié)點(diǎn)地址具有至少一個(gè)可省略的地址部分。
6.根據(jù)權(quán)利要求1所述的方法,其中所述決策樹還被布置為包括在所述頂層之下的至少一個(gè)底層,所述底層中的節(jié)點(diǎn)被布置為所述決策樹的葉節(jié)點(diǎn),每個(gè)葉節(jié)點(diǎn)映射到來自該組基本地址范圍的一個(gè)基本地址范圍或一個(gè)基本地址范圍的一部分,每個(gè)葉節(jié)點(diǎn)存儲(chǔ)與其映射到的各自的基本地址范圍有關(guān)的信息。
7.根據(jù)權(quán)利要求6所述的方法,其中每個(gè)節(jié)點(diǎn)被布置為用于存儲(chǔ)限定地址范圍的一組前綴中的一個(gè)前綴或一個(gè)指向前綴的指針;所述前綴是包含所述節(jié)點(diǎn)地址范圍的該組前綴的最長匹配前綴。
8.根據(jù)權(quán)利要求7所述的方法,其中每個(gè)非葉節(jié)點(diǎn)的節(jié)點(diǎn)還被布置為用于存儲(chǔ)每節(jié)點(diǎn)地址的計(jì)數(shù)器值,所述計(jì)數(shù)器值被布置為用于計(jì)數(shù)在節(jié)點(diǎn)地址具有端點(diǎn)的前綴的數(shù)量。
9.根據(jù)權(quán)利要求6所述的方法,還包括 -接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍, 包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始 針對所述各自的層中的各自的節(jié)點(diǎn) 讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。
10.根據(jù)權(quán)利要求6所述的方法,還包括 -接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍, 包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始 針對所述各自的層中的各自的節(jié)點(diǎn) 讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分; 將所述所請求的地址減去一個(gè)預(yù)定常數(shù)值;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與減得結(jié)果的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。
11.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個(gè)可省略的地址部分是由對于所述節(jié)點(diǎn)地址范圍中的所有地址的至少一個(gè)公共部分確定的作為所述預(yù)定數(shù)量的位的公共節(jié)點(diǎn)前綴子集的一個(gè)公共節(jié)點(diǎn)前綴;所述公共節(jié)點(diǎn)前綴子集被從存儲(chǔ)在所述節(jié)點(diǎn)中的地址部分的位的子集中省略。
12.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個(gè)可省略的地址部分表示所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址的一個(gè)后綴;所述后綴具有“零”值;所述至少一個(gè)可省略的地址部分被省略而不被存儲(chǔ)在所述節(jié)點(diǎn)中。
13.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個(gè)公共地址部分是對于所述節(jié)點(diǎn)中的兩個(gè)或更多個(gè)節(jié)點(diǎn)地址公共的;所述至少一個(gè)公共地址部分在所述節(jié)點(diǎn)中僅被存儲(chǔ)一次,并且當(dāng)確定待選取的節(jié)點(diǎn)分支時(shí)僅被與所述所請求的地址的對應(yīng)地址部分相比較一次。
14.根據(jù)權(quán)利要求1所述的方法,包括從所述下節(jié)點(diǎn)邊界地址中和從所述上節(jié)點(diǎn)邊界地址中、從每個(gè)節(jié)點(diǎn)地址中以及從所述所請求的地址中減去一個(gè)預(yù)定常數(shù)值;所述減去先于每個(gè)節(jié)點(diǎn)地址的分解。
15.根據(jù)權(quán)利要求14所述的方法,其中所述預(yù)定常數(shù)值等于所述下節(jié)點(diǎn)邊界地址的值。
16.根據(jù)權(quán)利要求1所述的方法,包括,通過對所述數(shù)量的位應(yīng)用與壓縮有關(guān)的技術(shù), 進(jìn)一步減少被存儲(chǔ)在所述節(jié)點(diǎn)中的地址部分占據(jù)的位的總數(shù)。
17.根據(jù)權(quán)利要求9或10所述的方法,其中所述比較的結(jié)果被以從較高有效地址部分到較低有效地址部分的優(yōu)先級(jí)為每節(jié)點(diǎn)地址考慮;僅當(dāng)節(jié)點(diǎn)地址的較高有效地址部分的比較結(jié)果相等時(shí),才考慮所述節(jié)點(diǎn)地址的較低有效地址部分的比較結(jié)果;該方法包括組合每個(gè)節(jié)點(diǎn)地址的比較結(jié)果,從而限定所述所請求的地址屬于的分支地址范圍,并且隨后分支到由該分支地址所限定的下一層。
18.根據(jù)權(quán)利要求6所述的方法,其中布置所述決策樹包括-選擇來自該組基本地址范圍的范圍邊界的地址,所選擇的地址的部分待被包括在所述決策樹的一個(gè)節(jié)點(diǎn)中;-將所述節(jié)點(diǎn)布置在所述決策樹結(jié)構(gòu)中,使得所述決策樹的每個(gè)葉節(jié)點(diǎn)指向來自該組基本地址范圍的一個(gè)基本地址范圍或一個(gè)基本地址范圍的子集。
19.根據(jù)權(quán)利要求18所述的方法,其中布置所述決策樹是通過一個(gè)自頂向下探試實(shí)現(xiàn)的,包括-選擇其部分待被包括在一個(gè)節(jié)點(diǎn)中的地址,從所述決策樹的頂層開始, -然后構(gòu)建向下方向的下幾個(gè)層的節(jié)點(diǎn),-當(dāng)所有葉節(jié)點(diǎn)都指向該組基本地址范圍中的一個(gè)基本地址范圍或一個(gè)基本地址范圍的子集時(shí),完成。
20.根據(jù)權(quán)利要求18所述的方法,其中布置所述決策樹是通過一個(gè)自底向上探試實(shí)現(xiàn)的,包括-選擇其部分待被包括在一個(gè)節(jié)點(diǎn)中的地址,從所述決策樹的底層開始,首先構(gòu)建分支到葉節(jié)點(diǎn)的節(jié)點(diǎn),所述決策樹的每個(gè)葉節(jié)點(diǎn)指向該組基本地址范圍中的一個(gè)基本地址范圍或一個(gè)地址范圍的子集;-然后構(gòu)建沿著所述決策樹的向上方向的下一個(gè)層的節(jié)點(diǎn), -當(dāng)單個(gè)根節(jié)點(diǎn)被構(gòu)建在頂層中時(shí),完成。
21.一種用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的計(jì)算機(jī)系統(tǒng),所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述處理器被布置為執(zhí)行用于構(gòu)建在所述地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法,包括-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn);所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍, 所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分,以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中, 所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括 -將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次; -省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。
22.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)被布置為執(zhí)行將所述決策樹布置為包括在所述預(yù)層之下的至少一個(gè)底層,所述底層中的節(jié)點(diǎn)被布置為所述決策樹的葉節(jié)點(diǎn),所述葉節(jié)點(diǎn)映射到來自該組基本地址范圍的一個(gè)基本地址范圍或一個(gè)基本地址范圍的一部分,每個(gè)葉節(jié)點(diǎn)存儲(chǔ)與其映射到的各自的基本地址范圍有關(guān)的信肩、ο
23.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)被布置為執(zhí)行 -接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍, 包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始 針對所述各自的層中的各自的節(jié)點(diǎn) 讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。
24.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)被布置為執(zhí)行 -接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍, 包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始 針對所述各自的層中的各自的節(jié)點(diǎn) 讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將所述所請求的地址減去一個(gè)預(yù)定常數(shù)值;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與減得結(jié)果的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。
25.根據(jù)權(quán)利要求23或M所述的計(jì)算機(jī)系統(tǒng),其中所述處理器包括多個(gè)處理單元;每個(gè)處理單元與所述決策樹的至少一個(gè)層關(guān)聯(lián),并且被布置為用于在所述決策樹的關(guān)聯(lián)層中執(zhí)行計(jì)算,以將存儲(chǔ)在所述關(guān)聯(lián)層的節(jié)點(diǎn)中的地址部分的至少之一與所述所請求的地址的各自的對應(yīng)地址部分相比較,然后分支到沿著所述決策樹的向下方向的下一個(gè)層的節(jié)點(diǎn)。
26.根據(jù)權(quán)利要求21-25中任一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)選自通信系統(tǒng)、聯(lián)網(wǎng)路由器以及報(bào)文分組交換系統(tǒng)中的一個(gè)。
27.一種待被根據(jù)權(quán)利要求21-26中任一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)系統(tǒng)加載的計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹,所述地址空間被布置為一組基本地址范圍,每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定;所述地址空間中的一個(gè)地址由預(yù)定數(shù)量的位表示;所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述計(jì)算機(jī)程序產(chǎn)品在被加載之后允許所述處理器執(zhí)行-將所述決策樹布置為用于從該組基本地址范圍中確定所述所請求的地址屬于的一個(gè)具體基本地址范圍,所述決策樹包括至少一個(gè)層,所述至少一個(gè)層包括至少一個(gè)節(jié)點(diǎn); 所述至少一個(gè)節(jié)點(diǎn)被布置為用于映射到一個(gè)節(jié)點(diǎn)地址范圍,所述節(jié)點(diǎn)地址范圍是所述地址空間的一個(gè)與節(jié)點(diǎn)有關(guān)的部分,所述節(jié)點(diǎn)地址范圍由一個(gè)下節(jié)點(diǎn)邊界地址和一個(gè)上節(jié)點(diǎn)邊界地址限定;所述至少一個(gè)節(jié)點(diǎn)具有至少兩個(gè)節(jié)點(diǎn)分支,每個(gè)節(jié)點(diǎn)分支映射到所述節(jié)點(diǎn)地址范圍中的各自非重疊分支地址范圍, 所述分支地址范圍由所述節(jié)點(diǎn)地址范圍中的節(jié)點(diǎn)地址限定;-將每個(gè)節(jié)點(diǎn)地址分解成多個(gè)地址部分,每個(gè)地址部分由所述預(yù)定數(shù)量的位的各自的子集表示,所述分解包括下列中的至少一個(gè)a)將對于多個(gè)節(jié)點(diǎn)地址公共的至少一個(gè)地址部分確定為至少一個(gè)公共地址部分,以及b)將可省略的至少又一個(gè)地址部分確定為至少一個(gè)可省略的地址部分,所述至少一個(gè)可省略的地址部分要么是值為“零”的一個(gè)節(jié)點(diǎn)地址后綴,要么是對于所述節(jié)點(diǎn)地址范圍中的所有地址公共的一個(gè)地址部分;-根據(jù)一個(gè)選擇規(guī)則將所述多個(gè)地址部分存儲(chǔ)在所述至少一個(gè)節(jié)點(diǎn)中, 所述選擇規(guī)則包括選自一組動(dòng)作中的至少一個(gè)動(dòng)作,該組動(dòng)作包括 -將所述至少一個(gè)公共地址部分僅在所述節(jié)點(diǎn)中存儲(chǔ)一次; -省略所述至少一個(gè)可省略的地址部分,以及-將在所述分解步驟中確定的所有其他地址部分存儲(chǔ)在所述節(jié)點(diǎn)中,所述所有其他地址部分既不是所述至少一個(gè)公共地址部分,又不是所述至少一個(gè)可省略的地址部分。
28.一種計(jì)算機(jī)可讀介質(zhì),設(shè)有根據(jù)權(quán)利要求27所述的計(jì)算機(jī)程序。
29.一種使用決策樹用于在地址空間中對所請求的地址進(jìn)行地址查找的計(jì)算機(jī)系統(tǒng), 所述決策樹是根據(jù)權(quán)利要求1-6中任一項(xiàng)所述的方法構(gòu)建的,所述計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和處理器,所述處理器聯(lián)接至所述存儲(chǔ)器,其中所述處理器被布置為執(zhí)行-接收所述所請求的地址作為輸入;-確定所述所請求的地址屬于的基本地址范圍,包括,在所述決策樹的每個(gè)層中,從頂層中的根節(jié)點(diǎn)開始針對所述各自的層中的各自的節(jié)點(diǎn)讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的地址部分;將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較;基于所述至少一個(gè)比較,分支到所述決策樹的下一個(gè)層中的一個(gè)節(jié)點(diǎn),直到當(dāng)?shù)竭_(dá)所述葉節(jié)點(diǎn)之一時(shí)已確定所述基本地址范圍時(shí)。
30.根據(jù)權(quán)利要求四所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)還被布置為執(zhí)行在讀取存儲(chǔ)在所述各自的節(jié)點(diǎn)中的所述地址部分之后,將所述所請求的地址減去一個(gè)預(yù)定常數(shù)值,以獲得一個(gè)減得結(jié)果;以及,在將存儲(chǔ)在所述層中的所述各自的節(jié)點(diǎn)中的至少一個(gè)地址部分與所述所請求的地址的各自的對應(yīng)地址部分相比較之前,用所述減得結(jié)果取代所述所請求的地址。
31.根據(jù)權(quán)利要求四或30所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)選自通信系統(tǒng)、聯(lián)網(wǎng)路由器以及報(bào)文分組交換系統(tǒng)中的一個(gè)。
全文摘要
用于構(gòu)建在地址空間中對所請求的地址進(jìn)行地址查找中所用的決策樹的方法和計(jì)算機(jī)系統(tǒng)。所述地址空間被布置為一組基本地址范圍。每個(gè)基本地址范圍由一個(gè)下邊界地址和一個(gè)上邊界地址限定,并且所述地址空間中的地址由預(yù)定數(shù)量的位表示。
文檔編號(hào)H04L12/56GK102461092SQ201080026941
公開日2012年5月16日 申請日期2010年4月26日 優(yōu)先權(quán)日2009年4月24日
發(fā)明者G·N·蓋達(dá)德杰夫, G·斯特凡納基斯, I·索迪斯, R·德斯邁特 申請人:代爾夫特科技大學(xué)