專利名稱:一種改進的多級查找表的建立及查找方法
技術領域:
本發(fā)明涉及多級查找表中數(shù)值的查找,特別涉及一種在高速數(shù)據(jù)幀交換技術中使用的經(jīng)過改進的多級查找表的建立及查找方法。
背景技術:
利用查找表進行數(shù)值查找的方法在很多領域中都得到應用,例如,在網(wǎng)絡數(shù)據(jù)的傳輸和交換技術中,網(wǎng)絡路由設備或交換設備通常采用查表的方法來查找與數(shù)據(jù)報文地址相對應的端口或通道,并通過這些端口或通道將數(shù)據(jù)報文轉(zhuǎn)發(fā)給下一級轉(zhuǎn)發(fā)設備或網(wǎng)段。目前,在普遍使用的二層網(wǎng)絡交換設備中大量采用多級查找表的方式來進行路由選擇。這是因為,在與介質(zhì)訪問控制(MAC)地址相對應的二層交換設備中,由于MAC地址多達48比特,如果要建立一個MAC地址和轉(zhuǎn)發(fā)端口一一映射的端口路由表項,表項數(shù)目將多達248個,其占用的存儲空間將會龐大到讓人無法接收,其次,使用二層交換設備進行路由的網(wǎng)段不可能有大量的主機。因此完全可以使用體積小且效率損失不大的多級查找表來代替上文中提到的一一映射的端口路由表。
圖1是傳統(tǒng)的多級查找表的查找流程圖。如圖1所示,首先建立一張完全覆蓋的第一級查找表,例如在MAC地址查找中以MAC地址的低16比特為索引建立一張含有2的16次方個表項的第一級查找表,它覆蓋了低16比特的所有組合。當接收到一個報文并提取出其MAC地址后首先使用該MAC地址的低16比特作為索引在第一級查找表中查找對應的表項,如果具有該低16比特組合的MAC地址在第一級查找表中是唯一的,即,沒有和其他MAC地址產(chǎn)生沖突,則查找成功結(jié)束,然后報文通過與查找結(jié)果相對應的端口被轉(zhuǎn)發(fā)出去;如果有沖突,即,有多個MAC地址具有該低16比特的組合,則從該低16比特組合對應的“座位”上得到進入二級查找表的入口。二級查找表一般是比一級查找表小很多的完全覆蓋表,比如在上例中可以采用以MAC地址的高32比特的最低4比特為索引,建立一個只有16個表項(4比特可以有16種組合)的很小的二級查找表,同上所述,將報文的MAC地址的高32比特的最低4比特作為索引在這張小的二級查找表中對號入座,如果沒有沖突,則返回查找成功結(jié)果,否則再到三級查找表的入口地址;隨后再以報文MAC地址的高32比特中的次高4比特作為索引在三級查找表中查找……以次類推(各級查找表的索引分別是以4比特為一個單元從低位依次向高位延展,可參看后面的表二),除了第一張查找表的規(guī)模比較大之外,其他的表項的規(guī)模是很小的,而在該設備連接的網(wǎng)段中MAC地址的低16比特的值相同的概率是比較小的,只有2的16次方分之一,也就是65536分之一,因此,大部分的多級查找只要查找一下大表就能夠返回查找成功的標記了,而且采用這樣的多級查找表方法將原來大到難以想象的一一映射表變成了相對而言極其小巧的多級表表項,使得設備真正能夠?qū)嵱玫卦O計出來。
以上介紹的只是最一般化的多級查找表實現(xiàn)方法,在實際應用中還有多種其他的查找法,例如二叉樹查找法等等,但是它們的思路是一樣的,即,化大表項為多級小表項,其要求也是一樣的,即,盡量不要損失性能。
但是,在利用現(xiàn)有技術中的多級查找方法進行查表時,雖然它縮小了查找表的空間,但是如果在查表過程中不斷出現(xiàn)沖突,即,需要進行多次查找時,就會導致多級查找效率的大幅度下降。如果將這樣的查找表及查找方法應用于對時間要求比較苛刻的地方——還是以二層交換機為例,那么對于性能的影響將是不可忽略的。
發(fā)明內(nèi)容
本發(fā)明的目的是為了解決傳統(tǒng)多級查找表在出現(xiàn)多次查找的情況下查找效率低的問題。
根據(jù)本發(fā)明的第一個方面所述,它提供了一種改進的多級查找表的建立方法,所述多級查找表含有多個根據(jù)索引排列的表項,所述表項包括狀態(tài)標識域,用于標識沖突情況;指針域,用于指出下一級查找所使用的查找索引的標識號;以及查找結(jié)果域,用于表示查找成功返回的結(jié)果或者查找失敗得到的下一級查找的入口,所述多級查找表的建立方法包括以下步驟1)建立空白的多級查找表以及含有多個所述表項的輔助鏈表;2)對所述輔助鏈表中的各個表項進行沖突判斷;3)將所述輔助鏈表中沒有沖突的表項直接添加到所述空白多級查找表的第一級查找表中的相應位置上,并且將代表無沖突的狀態(tài)標識和查找結(jié)果分別填入與所述表項相對應的各個域內(nèi);4)按照區(qū)分度最高的原則為所述輔助鏈表中有沖突的表項確定下一級查找的索引,根據(jù)該索引建立第二級查找表,并將確定出的索引、代表有沖突的狀態(tài)標識以及第二級查找表的入口填入所述第一級查找表中與該表項相對應的各個域內(nèi),同時將代表無沖突的狀態(tài)標識和查找結(jié)果分別填入第二級查找表中表項相對應的各個域內(nèi);5)如果所述表項在所述第二級查找表中仍有沖突,則依照建立第二級查找表的方式來建立其后的各級查找表,直至所述表項在所述多級查找表的某一級查找表中無沖突為止。
根據(jù)本發(fā)明的上述方法,進一步包括包括以下步驟i)當需要在所述多級查找表中添加表項時,根據(jù)待添加表項與原有表項的沖突情況,直接將其添加入所述第一級查找表中并同時在所述輔助鏈表中添加對應項,或者從所述多級查找表中刪除已有的沖突表項,在所述輔助鏈表中添加對應項,并根據(jù)所述鏈表的描述重建該部分查找表;ii)當需要從所述多級查找表中刪除表項時,根據(jù)待刪除表項與原有表項的沖突情況,直接將其從所述第一級查找表中刪除并同時刪除所述輔助鏈表中的對應項,或者從所述多級查找表中刪除已有的沖突表項,從所述輔助鏈表中刪除對應項,并根據(jù)所述鏈表的描述重建該部分查找表。
根據(jù)本發(fā)明的第二個方面所述,它提供了一種對利用上述建立方法建立的多級查找表進行查找的方法,包括以下步驟a)將查找目標分成多個域,并以各個域中的數(shù)值作為查表的索引;b)取得所述查找目標第一個域中的數(shù)值以及所述多級查找表的入口;c)以所述數(shù)值作為索引在所述多級查找表中查找對應的表項;d)根據(jù)所述對應表項中的狀態(tài)標識以決定是否需進行下一級查找;e)當無需進行下一級查找時,直接返回相匹配的表項;f)當需要進行下一級查找時,取得下一級查找的索引以及下一級查找表的入口以進行下一級查找,并且按照相同的方式對其后的各級表進行查找,直到查找到相匹配的表項為止。
通過使用根據(jù)本發(fā)明所述方法建立的改進的多級查找表并利用相應的查找方法,就可以大大改善出現(xiàn)沖突情況下的查找過程。這樣的好處是顯而易見的,即,在需要大量查表過程的應用中,查表過程的簡化,就意味著整體效率的提高。在查找表規(guī)模較小的情況下(也就是沖突比較嚴重的情況下),其有利之處尤為突出。
圖1是傳統(tǒng)的多級查找表的查找流程圖;圖2是利用本發(fā)明實施例所述的多級查找表進行查找的方法流程圖;圖3是根據(jù)本發(fā)明實施例所述的多級查找表的建立流程;圖4是本發(fā)明實施例所述的多級查找表的更新流程圖。
優(yōu)選實施方式下面將以二層交換設備中的多級路由查找表及其查找方法為例并結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行詳細說明。
表一多級查找中一個表項的內(nèi)容
表二MAC地址用于多級查找時的分派(上表為高位,下表為低位,低32位加上高16位構(gòu)成48位的MAC地址)
為了便于對本發(fā)明的說明,首先參考以上兩個表。表一是根據(jù)本發(fā)明所述的多級查找表中的一個表項(假設多級表已經(jīng)建立好,其具體建立過程將在后面作出說明)。如前所述,這里討論的查找表是覆蓋了某個索引的所有可能組合的完全覆蓋表,假如我們以16比特組合的數(shù)值作為索引,那么在一個查找表中將有2的16次方也即65536個表一中的表項,每個表項代表著這16比特的一種組合——換句話說就是任意給出一個16比特的組合,均能在這個查找表中“對號入座”地找到唯一的一個表項與之相對應。這個表項中各個部分的含義為“C”域為一個狀態(tài)標識域,它代表了該表項是否與其他表項有沖突,即,是否與其他表項相同,如果有沖突則該位置1;“INDICATOR”域是一個指針域,它用于指出下一級查找所使用的查找索引的標識號;最后一個域就是查找成功返回的結(jié)果或者查找失敗得到的下一級查找的入口地址(也即是指向下一張查找表的地址指針)。
表二是對一個MAC地址的劃分(這里說到劃分方式完全只是一個例子,我們可以作各種各樣的劃分,完全根據(jù)需要而定),48位的MAC地址被人為地劃分為9個域,分別是第一級查找的索引、第二級查找的索引、……、第9級查找的索引。后面說到的索引即是指這些域中的數(shù)值。值得一提的是上面說到的“INDICATOR”域中的指針即是指向這些域的。
接下來將參考圖2對本發(fā)明所述多級查找表的具體查找過程進行詳細說明。
圖2是利用本發(fā)明實施例所述的多級查找表進行查找的方法流程圖,如圖2所示,該查找過程主要包括以下內(nèi)容第一級查找以“第一級查找的索引”域中的數(shù)值為索引進行第一級查找,在對應的第一級查找表(再說明一次,此表包含有2的16次方即65536個表項)中找到該數(shù)值對應的表項(步驟1、2),然后,對該表項的值進行檢查(步驟3)“C”域是否為0,如果為0則說明此表項沒有沖突,查找成功,可以馬上獲取低16比特的返回值,查找結(jié)束(步驟6);“C”域為1說明此表項有沖突,獲取“INDICATOR”域的值(假設為N)和下一級查找的入口地址,進入下一級查找(步驟4、5)。
第二級查找根據(jù)“INDICATOR”的指示,獲得相應的“第N級查找的索引”的4比特數(shù)值,并以此為索引在第二級查找表中找到該值對應的表項(這里需要指出,4比特的索引對應的這第二張查找表的大小為2的4次方即16個表項,比第一級張查找表小得多),隨后像第一級查找一樣檢查該表項的值。如此一直持續(xù)下去,最后一定能夠找到無沖突的表項并返回查找結(jié)束的返回值。這里,應該注意的是,與傳統(tǒng)查找方法相比,本發(fā)明不一定是按照順序根據(jù)表二中的“第二級查找索引”在多級查找表中進行查找,而是根據(jù)一個按照最高區(qū)分度原則確定出來的下一級索引來進行查找。下一級查找索引的確定以及下一級查找表的建立將在后面得到詳細說明。
根據(jù)上述的查找過程,不難發(fā)現(xiàn)導致查找效率低下的原因就是沖突,如果不斷地有沖突,那么就必須一遍一遍地查找下去,浪費大量的程序運行時間。減少沖突概率的方法簡單且唯一擴大第一級查找表的容量!第一級查找表的容量大了,就能有更大的概率一級查找成功,如果第一級查找表的容量擴大到以整個MAC地址的48比特為索引,那么就能夠保證完全沒有沖突,所有的查找都能夠一次查找成功。當然,這時候的第一級查找表其實就是一一映射表,所謂的多級查找已經(jīng)不復存在了。既然我們已經(jīng)知道一一映射表是不可能做到的,那么就只能在沖突概率和第一級查找表的容量上作一個折衷,像這里說到的第一級查找表的大小為16比特,在一個網(wǎng)段中出現(xiàn)兩個16比特相同數(shù)值的MAC地址的概率為65536分之1,出現(xiàn)三個這樣的MAC地址的概率為4,294,967,296分之1,……可以說沖突的概率已經(jīng)很小了,這樣的折衷是可以接收的。
另一方面,第二級查找表也存在沖突的問題,但是我們卻使用4比特作為索引——注意到這里使用的索引的位數(shù)只是4位,遠少于一級查找表的16位,這是會大大增加沖突的概率的,但是這么做也是有理由的第一級查找的沖突概率已經(jīng)很小了,第二級查找沖突的概率就更小了,如果再用很大的第二級查找表的話會浪費大量的程序空間的。這是在沖突概率和占用的程序空間之間作權衡。
前面已經(jīng)計算過出現(xiàn)兩個MAC地址的低16比特相同的概率為65536分之1,但是在第二級查找表中是必定能區(qū)分二者的(按照傳統(tǒng)的查找則不一定能區(qū)分二者);對于出現(xiàn)三個低16比特相同的MAC地址的情況下使用本發(fā)明可以使得在第二級查找表中區(qū)分三者的概率由(16*15*14)/(16*16*16)=0.8204提高到1-(1-(16*15*14)/(16*16*16))8=1-1.086×10-6=0.999998914,這樣的概率使得在二級查找表中區(qū)分三個MAC地址的可能性極大地提高了;依此可以計算如果出現(xiàn)四個MAC地址的低16比特相同的情況下能夠在二級查找表中完全區(qū)分出這四者的概率1-(1-(16*15*14*13)/(16*16*16*16))8=1-1.53×10-4=0.999847,這個概率仍然是很高的(如果考慮到四個這樣的MAC地址出現(xiàn)的概率為3.5527×10-15的話,可以認為經(jīng)過二級查找仍然不能區(qū)分出四者的事件為極小概率事件)。同理,出現(xiàn)更多的低位相同的MAC地址的概率是急劇收縮的,因此最多經(jīng)過二級查找即能區(qū)分出這些MAC地址的概率是傳統(tǒng)多級查找表算法遠遠不能及的。
對于以上根據(jù)本發(fā)明所述的多級查找方法來說,其核心內(nèi)容是構(gòu)造一個高效率的多級查找表。相對于查找過程,表的建立過程要復雜得多,它是本發(fā)明的核心部分。下面將參考圖3對根據(jù)本發(fā)明實施例所述的多級查找表的建立過程進行詳細說明。這里,仍以二層交換設備中的多級路由查找表為例進行說明。
圖3是根據(jù)本發(fā)明實施例所述的一種多級查找表的建立流程。如圖3所示,該流程主要包括以下內(nèi)容首先建立兩個表(步驟11)一個是空白的第一級查找表,容量為65536個表項的完全覆蓋表;第二個表是一個鏈表,表項的數(shù)量是可伸縮的,其中包含的內(nèi)容是這個網(wǎng)段中所使用的所有MAC地址(這里假設已經(jīng)知道與此設備有關的該網(wǎng)段中的MAC地址)的,這些MAC地址被有規(guī)則地排列,基本規(guī)則就是低16比特相同的MAC地址緊挨著放置。然后,從鏈表中得到第一個需要添加入多級查找表的表項(步驟12),根據(jù)上面建立的鏈表,可以很容易地知道哪些MAC地址的低16比特沒有沖突(也就是沒有兩個或以上的MAC地址的低16比特是相同的)而哪些是有沖突的(步驟13)。將無沖突的MAC地址對應的第一級查找表表項的“查找到的結(jié)果或下一級查找的入口地址”域中填入查找成功的返回值——這些MAC地址只需要一級查找就能夠得到成功的返回值(步驟14);而對于有沖突的MAC地址,顯然需要建立第二級查找表,而關鍵就是第二級查找表的索引——不必按部就班地用表二中的“二級索引”域中的值作為索引,而是通過對比,在“二級索引”~“九級索引”中找到一個最合適的值作為索引,這個最合適的索引符合這樣的條件通過這個索引,能夠盡可能多地使在第一級查找中有沖突的MAC地址在第二級查找中不再沖突!確定這個索引的過程是很簡單的,即將第一次查找有沖突的MAC地址都集中在一起,將它們的二級索引都剝離出來,看看使用二級索引來建立第二級查找表會不會出現(xiàn)沖突,如果不會沖突的話就使用二級索引建立第二級查找表;否則將三級索引剝離出來看看使用三級索引作為第二級的查找會不會出現(xiàn)沖突……如此這般,如果無論使用哪級索引來構(gòu)建第二級查找表都會出現(xiàn)沖突,則選擇沖突數(shù)量最少的那個來建立第二級查找表,然后再如上方式建立第三級查找表……。通過上述這個簡單的過程就能知道到底“二級索引”~“九級索引”中的哪個域作為索引能夠最好的減少第二級查找中的沖突——不妨設這個索引為M,隨后建立一個第二級查找表,以M為索引,參照第一級查找表的方式將有沖突的MAC地址在第二級查找表中建表,同時在第一級查找表中將這些MAC地址對應的表項的“C”域置1標識有沖突,在“INDICATOR”域填上指向M的指針值。經(jīng)過以上過程,第一級查找表和第二級查找表都建立起來了(步驟15、16),假如在第二級查找表中還有沖突,那么依照建立第二級查找表的方式可以建立第三級查找表以至于第四級查找表……一直到?jīng)]有沖突為止(步驟17、18)。至此,多級查找表建立起來了。
在多級查找表的使用過程中,經(jīng)常需要根據(jù)外部環(huán)境的變化來對其進行更新。而外部環(huán)境變化具體反映到多級查找表中不外乎是表項的增添和刪除。圖4是本發(fā)明實施例所述的多級查找表的更新流程圖。如圖4所示,在表項增加的情況下如果二層交換設備上出現(xiàn)了新的MAC地址,那么它將被捕獲并插入到上述的鏈表中,隨后這個MAC地址、以及在鏈表上和它相鄰的MAC地址將被比較其“第一級查找索引”域的值如果都不相同,則找到對應的第一級查找表中的表項并填寫該表項(參見建立多級查找表的過程);如果出現(xiàn)了有沖突的MAC地址,則刪除已經(jīng)建立的、與新增加的這個MAC地址沖突的那個舊的MAC地址對應的查找表中的表項,并且按照上面建立多級查找表的方式將這些MAC地址(包括新出現(xiàn)的MAC地址)對應的各次查找表的表項建立起來(步驟111、113、115、117)。表項刪減的情況下如果擁有某個MAC地址的設備從二層交換設備上移除,或者二層交換設備本身的MAC地址一端口路由表項的老化掉而導致需要從多級查找表中刪減該MAC地址對應的表項都是可能的。同樣的,如果該MAC地址在第一級查找表中沒有沖突,那么直接刪除該表項的內(nèi)容,刪除鏈表中該MAC地址對應的表項并重新連接鏈表;否則,刪除該MAC地址對應的第二級查找表以及與該二級查找表關聯(lián)的、可能存在的三級查找表,依次類推,后續(xù)查找表都刪除,隨后將該MAC地址對應的表項從鏈表中移除,最后根據(jù)新的鏈表重新建立該部分的多級查找表(步驟112、114、116、118)。需要注意的是這里介紹的只是最簡單的刪除方式,完全可以用更好的方式來移除以節(jié)省程序運行時間。
本發(fā)明中在多級查找表的建立和更新中出現(xiàn)了另外一個輔助表項鏈表。粗看這樣做增加了程序空間的開支,但是實際上這個鏈表完全可以就是端口路由表,這樣的話端口路由表就兼作了多級查找表的輔助表項,并沒有增加程序的空間開支。即使本發(fā)明應用于其他應用領域,不存在端口路由表的說法,那么建立這個鏈表的確占用了一定的程序空間,不過這一點程序空間可以換來比常規(guī)的多級查找表高得多的可用性(大大提高了有沖突的情況下的查找效率)還是值得的。
不難看出,本發(fā)明的核心在于將大量有沖突的多級查找的過程簡化了,并且著力于通過合理的算法使得對它們的查找變得有效得多比如對于MAC地址0x100000000000和0x200000000000,它們在一級查找表中是有沖突的,如果按照傳統(tǒng)的多級查找,那么將要查找9次才能在“第九級查找表”中成功地找到它們;如果按照本發(fā)明中的查找法,那么在第二級查找表中將會用最高的4比特作為查找索引,那么只要2次查找就能在“第二級查找表”中成功地找到它們;又比如MAC地址0x110000448899、0x220000558899和0x330000558899,如果按照傳統(tǒng)方法建表并查找,那么查找這三個MAC地址將需建立第三級查找表,要查找后兩個MAC地址的話就必須經(jīng)過三級查找,而采用本發(fā)明的查找法的話將會使用最高的4比特或次高的4比特作為索引建立第二級查找表,這就能夠?qū)⑦@三個MAC地址無沖突地放進第二級查找表中,避開了第三級查找表!這一算法的理論基礎是通過增加查找的廣度來減少查找的深度,從而獲得較少的查找次數(shù)。
本發(fā)明人提請注意的是,雖然以上對本發(fā)明所作的詳細說明是以二層交換設備中的多級路由查找表及其查找過程為例來進行的,但是這并不意味著對本發(fā)明的限制。所屬領域的技術人員應該明白,可以將本發(fā)明的構(gòu)思應用到各種類似的多級查找當中。例如,本發(fā)明所述的多級查找表及相應的查找方法可被應用到三層IP地址的查找當中。另外,在本發(fā)明實施例所述的建表及查表方法中,一級查找索引的長度為16比特,二級索引、三級索引……的長度為4比特,但本發(fā)明不僅限于此,也可以根據(jù)需要任意選取各級索引的長度??傊?,本發(fā)明的精神和范圍是由其權利要求書而不是具體實施例來定義的。
權利要求
1.建立多級查找表的方法,所述多級查找表含有多個根據(jù)索引排列的表項,所述表項包括狀態(tài)標識域,用于標識沖突情況;指針域,用于指出下一級查找所使用的查找索引的標識號;以及查找結(jié)果域,用于表示查找成功返回的結(jié)果或者查找失敗得到的下一級查找的入口,包括以下步驟1)建立空白的多級查找表以及含有多個所述表項的輔助鏈表;2)對所述輔助鏈表中的各個表項進行沖突判斷;3)將所述輔助鏈表中沒有沖突的表項直接添加到所述空白多級查找表的第一級查找表中的相應位置上,并且將代表無沖突的狀態(tài)標識和查找結(jié)果分別填入與所述表項相對應的各個域內(nèi);4)按照區(qū)分度最高的原則為所述輔助鏈表中有沖突的表項確定下一級查找的索引,根據(jù)該索引建立第二級查找表,并將確定出的索引、代表有沖突的狀態(tài)標識以及第二級查找表的入口填入所述第一級查找表中與該表項相對應的各個域內(nèi),同時將代表無沖突的狀態(tài)標識和查找結(jié)果分別填入第二級查找表中表項相對應的各個域內(nèi);5)如果所述表項在所述第二級查找表中仍有沖突,則依照建立第二級查找表的方式來建立其后的各級查找表,直至所述表項在所述多級查找表的某一級查找表中無沖突為止。
2.根據(jù)權利要求1所述的建立多級查找表的方法,其特征在于進一步包括以下步驟i)當需要在所述多級查找表中添加新表項時,根據(jù)待添加表項與原有表項的沖突情況,直接將其添加入所述第一級查找表中并同時在所述輔助鏈表中添加對應項,或者從所述多級查找表中刪除已有的沖突表項,在所述輔助鏈表中添加對應項,并根據(jù)所述鏈表的描述重建該部分查找表;ii)當需要從所述多級查找表中刪除表項時,根據(jù)待刪除表項與原有表項的沖突情況,直接將其從所述第一級查找表中刪除并同時刪除所述輔助鏈表中的對應項,或者從所述多級查找表中刪除已有的沖突表項,從所述輔助鏈表中刪除對應項,并根據(jù)所述鏈表的描述重建該部分查找表。
3.根據(jù)權利要求1或2所述的建立多級查找表的方法,其中在步驟(2)中,對所述輔助鏈表中的各個表項的沖突判斷即判斷該表項的第一級查找索引在所述輔助鏈表中是否唯一。
4.根據(jù)權利要求1或2所述的建立多級查找表的方法,其特征在于所述多級查找表和所述輔助鏈表中的表項對應于MAC地址的范圍。
5.根據(jù)權利要求4所述的建立多級查找表的方法,其特征在于所述輔助鏈表中的MAC地址按照連續(xù)的規(guī)則排列。
6.根據(jù)權利要求5所述的建立多級查找表的方法,其特征在于所述輔助鏈表中的MAC地址為16比特。
7.對利用權利要求1所述方法建立的多級查找表進行查找的方法,包括以下步驟a)將查找目標分成多個域,并以各個域中的數(shù)值作為查表的索引;b)取得所述查找目標第一個域中的數(shù)值以及所述多級查找表的入口;c)以所述數(shù)值作為索引在所述多級查找表中查找對應的表項;d)根據(jù)所述對應表項中的狀態(tài)標識以決定是否需進行下一級查找;e)當無需進行下一級查找時,直接返回相匹配的表項;f)當需要進行下一級查找時,取得下一級查找的索引以及下一級查找表的入口以進行下一級查找,并且按照相同的方式對其后的各級表進行查找,直到查找到相匹配的表項為止。
8.根據(jù)權利要求7所述的查找方法,其特征在于所述查找目標對應于MAC地址的范圍。
全文摘要
本發(fā)明提出了建立多級查找表的方法,包括建立空白的多級查找表以及含有多個表項的輔助鏈表;對輔助鏈表的各個表項進行沖突判斷;將輔助鏈表中沒有沖突的表項添加到空白多級查找表的第一級查找表的相應位置上,并且將無沖突狀態(tài)標識和查找結(jié)果分別填入與表項相對應的各個域內(nèi);按照最高區(qū)分度原則為有沖突的表項確定下一級查找索引,根據(jù)該索引建立第二級查找表,并將確定出的索引、有沖突狀態(tài)標識以及第二級查找表的入口填入第一級查找表中與表項對應的各個域內(nèi);若表項在第二級查找表中仍有沖突,則依照建立第二級查找表的方式來建立其后各級查找表,直至表項在某一級查找表中無沖突為止。本發(fā)明還提出了對所建立的多級查找表進行查找的方法。
文檔編號H04Q3/00GK1510931SQ02160328
公開日2004年7月7日 申請日期2002年12月26日 優(yōu)先權日2002年12月26日
發(fā)明者藍建棟, 徐前鋒 申請人:華為技術有限公司