專利名稱:一種網(wǎng)絡(luò)地址查找方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種網(wǎng)絡(luò)地址查找方法及裝置。
背景技術(shù):
通信領(lǐng)域中,路由器對報(bào)文進(jìn)行轉(zhuǎn)發(fā)前,需要根據(jù)報(bào)文的目的地址在路由轉(zhuǎn)發(fā)表中查找與目的地址匹配的表項(xiàng)。從而確定該報(bào)文的下一跳地址。最長前綴匹配(the longest prefix match)是較為常用的查找方式。實(shí)現(xiàn)最長前綴長度匹配的多種方式中,使用三態(tài)內(nèi)容可尋址存儲器(Ternary Content Addressable Memory, TCAM)是一種常用方法。TCAM 的存儲單元除了 “0” 和 “ 1” 兩種狀態(tài),還有一種不關(guān)心(don’ t care)狀態(tài)。不關(guān)心狀態(tài)表明既可以為“0”也可以為 “1”。發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下技術(shù)問題將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)地址查找方法和裝置,可以解決將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多的問題。一方面,本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)地址查找方法,包括在高M(jìn)表中查找第一高M(jìn)表項(xiàng),所述第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位地址,M為自然數(shù),所述第一網(wǎng)絡(luò)地址為X位,X為自然數(shù);如果在所述高M(jìn)表中查找到所述第一高M(jìn)表項(xiàng),則判斷低N表中是否包含對應(yīng)所述第一高M(jìn)表項(xiàng)的子表,N為自然數(shù);如果所述低N表中包含所述子表,則在所述低N表中查找對應(yīng)所述第一網(wǎng)絡(luò)地址的低N表項(xiàng),所述低N表項(xiàng)包含所述第一網(wǎng)絡(luò)地址的低N位,X為M與N的和。另一方面,本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)地址查找裝置,包括查找單元以及判斷單元;所述查找單元用于在高M(jìn)表中查找第一高M(jìn)表項(xiàng),所述第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位地址,M為自然數(shù),所述第一網(wǎng)絡(luò)地址為X位,X為自然數(shù),根據(jù)所述判斷單元的判斷結(jié)果,如果低N表中包含對應(yīng)所述第一高M(jìn)表項(xiàng)的子表,則在所述低N表中查找對應(yīng)所述第一網(wǎng)絡(luò)地址的低N表項(xiàng),所述低N表項(xiàng)包含所述第一網(wǎng)絡(luò)地址的低N位,N為自然數(shù),X為M與N的和;所述判斷單元用于如果在所述高M(jìn)表中查找到所述第一高M(jìn)表項(xiàng),則判斷所述低 N表中是否包含所述子表。本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找方法及裝置,將若干個網(wǎng)絡(luò)地址的高位存儲在高M(jìn)表中,將該若干個網(wǎng)絡(luò)地址的低位存儲在低N表中。當(dāng)該若干個網(wǎng)絡(luò)地址中多個網(wǎng)絡(luò)地址的高位相同時,只需使用高M(jìn)表的一個表項(xiàng)存儲該多個網(wǎng)絡(luò)地址的高位??梢姡ㄟ^本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找方法及裝置,可以解決將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多的技術(shù)問題。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找方法流程圖;圖2是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找裝置示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例一本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)地址查找方法,可以用于需要進(jìn)行網(wǎng)絡(luò)地址查找的場景中,例如網(wǎng)關(guān)對主機(jī)發(fā)出的地址解析協(xié)議(Address Resolution Protocol, ARP)請求進(jìn)行相應(yīng)響應(yīng)時,需要查找主機(jī)的網(wǎng)絡(luò)地址。參見圖1,圖1是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找方法流程圖,該方法包括101 在高M(jìn)表中查找第一高M(jìn)表項(xiàng),該第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位, M為自然數(shù),該第一網(wǎng)絡(luò)地址為X位,X為自然數(shù)。第一網(wǎng)絡(luò)地址可以是目的地址或者是源地址。第一網(wǎng)絡(luò)地址可以是對應(yīng)特定協(xié)議的網(wǎng)絡(luò)地址。特定協(xié)議可以是網(wǎng)際協(xié)議(Internet Protocol, IP)或者媒體接入控制(Media Access Control,MAC)協(xié)議。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IP地址時,IP地址可以是網(wǎng)際協(xié)議版本 4 (Internet Protocol version 4, IPv4)地址,或者網(wǎng)際協(xié)議版本 6 (Internet Protocol version 6, IPv6)地址。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IPv4地址時,第一網(wǎng)絡(luò)地址為32位二進(jìn)制數(shù)。 當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IPv6地址時,第一網(wǎng)絡(luò)地址為1 位二進(jìn)制數(shù)。第一網(wǎng)絡(luò)地址可以承載于網(wǎng)絡(luò)設(shè)備收到的報(bào)文中。例如網(wǎng)絡(luò)設(shè)備收到網(wǎng)際協(xié)議分組(Internet Protocol Packet, IP分組),該IP分組中包含了 IP地址。高M(jìn)表可以存儲在網(wǎng)絡(luò)設(shè)備中,該網(wǎng)絡(luò)設(shè)備可以是路由器、交換機(jī)、防火墻或者負(fù)載均衡器。具體來說,高M(jìn)表可以存儲在該網(wǎng)絡(luò)設(shè)備的內(nèi)存中。當(dāng)該網(wǎng)絡(luò)設(shè)備中包含TCAM 時,高M(jìn)表也可以存儲在該網(wǎng)絡(luò)設(shè)備的TCAM中。該高M(jìn)表可以用于存儲X位網(wǎng)絡(luò)地址的高M(jìn) 位。高M(jìn)表可以包括一個表項(xiàng)或者多個表項(xiàng)。在特定場景下,利用高M(jìn)表存儲X位網(wǎng)絡(luò)地址的高M(jìn)位地址可以節(jié)省存儲空間。以IPv4的場景為例,路由器接收鄰居路由器發(fā)布的路由消息,獲得了進(jìn)行報(bào)文轉(zhuǎn)發(fā)所需的路徑信息。路徑信息可以存儲在轉(zhuǎn)發(fā)信息庫O^orwarding Information Base, FIB)。FIB中的路徑信息可以包括若干個32位的目的IP地址。該若干個IP地址中多個目的IP地址的高16位可以是相同的。例如該多個目的IP地址的高16 位都是十進(jìn)制192. 168。因此可以用高M(jìn)表中的一個表項(xiàng)表示該多個目的IP地址的高16 位,從而節(jié)省該多個目的IP地址的存儲空間。高M(jìn)表可以包括第一高M(jìn)表項(xiàng),該第一高M(jìn)表項(xiàng)包含該第一網(wǎng)絡(luò)地址的高M(jìn)位地址。以IPv6的場景為例,當(dāng)?shù)谝痪W(wǎng)絡(luò)地址為1 位的IPv6地址時,高M(jìn)表中可以包含該第一網(wǎng)絡(luò)地址的高64位。此時M的值為64。102 如果在該高M(jìn)表中查找到該第一高M(jìn)表項(xiàng),則判斷低N表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表,N為自然數(shù)。低N表用于存儲X位網(wǎng)絡(luò)地址的低N位。低N表可以包括多個表項(xiàng)。低N表可以包括對應(yīng)該第一高M(jìn)表項(xiàng)的子表。該子表為該低N表的一個子集。該子表可以包括1個或多個子表表項(xiàng)。子表表項(xiàng)包含高M(jìn)位等于該第一網(wǎng)絡(luò)地址的高M(jìn)位的X位網(wǎng)絡(luò)地址的低N 位。該子表可以包含該第一網(wǎng)絡(luò)地址的低N位,也可以不包含該第一網(wǎng)絡(luò)地址的低N位。在特定場景下,該低N表中可以不包含該子表。例如,路由器通過路由協(xié)議學(xué)習(xí)到第一網(wǎng)絡(luò)地址。該第一網(wǎng)絡(luò)地址為一個新的IPv6地址。當(dāng)路由器的控制平面向路由器的數(shù)據(jù)平面下送該第一網(wǎng)絡(luò)地址時,可以只下送該第一網(wǎng)絡(luò)地址的高64位,即網(wǎng)段地址,不下送該第一網(wǎng)絡(luò)地址的低64位。通過上述場景形成的低N表中可以不包含對應(yīng)該第一網(wǎng)絡(luò)地址的子表。103 如果該低N表中包含該子表,則在該低N表中查找對應(yīng)該第一網(wǎng)絡(luò)地址的低 N表項(xiàng),該低N表項(xiàng)包含該第一網(wǎng)絡(luò)地址的低N位,X為M與N的和。根據(jù)第一網(wǎng)絡(luò)地址的低N位地址,在低N表中查找低N表項(xiàng)。該低N表項(xiàng)包含該第一網(wǎng)絡(luò)地址的低N位。如果查找到低N表項(xiàng),則表明第一網(wǎng)絡(luò)地址與高M(jìn)表以及低N表發(fā)生匹配。上述查找第一網(wǎng)絡(luò)地址的技術(shù)方案可以應(yīng)用于多種場景。例如,可以將高M(jìn)表以及低N表作為網(wǎng)關(guān)的ARP緩存表對主機(jī)發(fā)出的ARP請求進(jìn)行驗(yàn)證。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址與高M(jìn) 表以及低N表發(fā)生匹配時,表明源IP地址為第一網(wǎng)絡(luò)地址的報(bào)文通過網(wǎng)關(guān)的ARP緩存表的驗(yàn)證。另外,可以將高M(jìn)表以及低N表作為路由器的路由轉(zhuǎn)發(fā)表對路由器收到的報(bào)文進(jìn)行轉(zhuǎn)發(fā)。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址與高M(jìn)表以及低N表發(fā)生匹配時,表明路由器可以根據(jù)路由轉(zhuǎn)發(fā)表對目的地址為第一網(wǎng)絡(luò)地址的IP分組進(jìn)行轉(zhuǎn)發(fā)。相對于現(xiàn)有技術(shù)將若干個X位網(wǎng)絡(luò)地址存儲在一個表中,本實(shí)施例將X位網(wǎng)絡(luò)地址的高M(jìn)位以及低N位分別存儲在高M(jìn)表以及低N表中。在高M(jìn)表中,只需通過一個表項(xiàng)存儲X位網(wǎng)絡(luò)地址中高M(jìn)位相同的多個網(wǎng)絡(luò)地址的高M(jìn)位。這意味著高M(jìn)表中可以沒有內(nèi)容重復(fù)的表項(xiàng),減少了高M(jìn)位相同的多個X位網(wǎng)絡(luò)地址所需的存儲空間。因此,本實(shí)施例提供的網(wǎng)絡(luò)地址查找方法解決了將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多的技術(shù)問題。另外,本實(shí)施例提供的網(wǎng)絡(luò)地址查找方法中,在低N表中查找第一網(wǎng)絡(luò)地址的低N 位前,對低N表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表進(jìn)行判斷,避免了當(dāng)?shù)蚇表中沒有對應(yīng)該第一高M(jìn)表項(xiàng)的子表時,仍然在低N表中查找對應(yīng)該第一網(wǎng)絡(luò)地址的低N表項(xiàng)。提高了查找效率。本實(shí)施例提供了一種查找網(wǎng)絡(luò)地址的方法,該查找方法通過查找高M(jìn)表以及低N 表實(shí)現(xiàn)。下文提供了該查找方法的一種具體實(shí)現(xiàn)方式。為便于理解,下文先介紹高M(jìn)表以及低N表的生成過程,然后介紹高M(jìn)表以及低N表的查找過程第一部分高M(jìn)表以及低N表的生成過程路由器的嵌入式操作系統(tǒng)初始化時,可以在內(nèi)存中分別為1 位的IPv6地址的高 64位、低64位以及高64位地址的索引分配一個存儲空間。以上三個存儲空間是彼此獨(dú)立的。路由器根據(jù)路由協(xié)議,學(xué)習(xí)到第一網(wǎng)絡(luò)地址,該第一網(wǎng)絡(luò)地址為1 位的IPv6 地址。路由器的CPU通過控制通道,例如周邊部件高速互連(Peripheral Component Interconnect Express, PCI-E)總線,將該網(wǎng)絡(luò)地址下發(fā)到查找引擎。查找引擎可以是一個芯片。查找引擎收到路由器學(xué)習(xí)到的第一網(wǎng)絡(luò)網(wǎng)絡(luò)地址,將該第一網(wǎng)絡(luò)地址的高64位添加到高M(jìn)表中,形成第一高M(jìn)表項(xiàng)。具體實(shí)現(xiàn)時,可以是查找引擎將該網(wǎng)絡(luò)地址的高64 位寫入到路由器的嵌入式操作系統(tǒng)初始化時為高64位分配的地址空間。查找引擎可以隨機(jī)生成該高64位地址的索引,并將該高64位地址的索引存儲到嵌入式操作系統(tǒng)初始化時為高64位地址的索引分配的存儲空間。高64位地址以及高64 位地址的索引是一一對應(yīng)的。也就是說對于不同的高64位地址,高64位地址的索引是不同的。高64位地址的索引可以是Y個比特的二進(jìn)制數(shù),Y為自然數(shù)。當(dāng)查找引擎隨機(jī)生成該高64位地址的索引時,查找引擎可以生成該低高M(jìn)表項(xiàng)的第一標(biāo)志。第一標(biāo)志用于表示低M表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表。第一標(biāo)志可以是一個比特的二進(jìn)制數(shù)。例如可以用二進(jìn)制0表示低M表中沒有包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表;可以用二進(jìn)制1表示低M表中包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表。查找引擎將該第一網(wǎng)絡(luò)地址的高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位添加到低M表中,形成低N表項(xiàng)。具體實(shí)現(xiàn)時,可以是查找引擎將該第一網(wǎng)絡(luò)地址的高64 位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位地址寫入到路由器的嵌入式操作系統(tǒng)初始化時為低64位地址分配的地址空間。第二部分高M(jìn)表以及低N表的查找過程路由器收到目的地址為第一網(wǎng)絡(luò)地址的報(bào)文,并將該報(bào)文送到網(wǎng)絡(luò)處理器 (Network Processor, NP) 0 NP對該報(bào)文進(jìn)行解析后,提取出該報(bào)文的目的IP地址,即第一網(wǎng)絡(luò)地址。NP將該第一網(wǎng)絡(luò)地址的高1 位發(fā)送至查找引擎。查找引擎在高M(jìn)表中查找該第一網(wǎng)絡(luò)地址的高64位。如果查找引擎在高M(jìn)表中查找到包含該第一網(wǎng)絡(luò)地址的高64位地址的表項(xiàng),即第一高M(jìn)表項(xiàng),查找引擎從路由器的內(nèi)存中讀出該高64位地址的索引,并將該高64位地址的索引發(fā)送至NP。當(dāng)查找引擎讀出該高64位地址的索引時,查找引擎可以讀出該高64位地址的第一標(biāo)志,并將該第一標(biāo)志發(fā)送至NP。第一標(biāo)志用于表示低M表中是否包含對應(yīng)該第一高M(jìn) 表項(xiàng)的子表。第一標(biāo)志可以是一個比特的二進(jìn)制數(shù)。例如用二進(jìn)制0表示低64表中沒有包含對應(yīng)該第一高64表項(xiàng)的子表;用二進(jìn)制1表示低64表中包含對應(yīng)該第一高64表項(xiàng)的子表。
當(dāng)?shù)谝粯?biāo)志表明該高64位地址有對應(yīng)的低64位地址時,NP將該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位發(fā)送至查找引擎。查找引擎以該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位為鍵值(key),在低M表中查找是否存在與該key匹配的表項(xiàng)。 當(dāng)標(biāo)志位表明低M表中沒有包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表時,NP不再發(fā)起查找。查找引擎以該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位地址為key,在低 64表中查找與該key匹配的表項(xiàng),即低N表項(xiàng)。如果查找引擎在低M表中查找到該低N表項(xiàng),查找引擎可以讀出該低64位地址的索引,并將該低64位地址的索引發(fā)送至NP。NP可以根據(jù)該低64位地址的索引,為路由器收到的目的地址為第一網(wǎng)絡(luò)地址的報(bào)文確定進(jìn)行轉(zhuǎn)發(fā)的物理出接口。可選的,如果該低N表中不包含該子表,則不在該低N表中查找該低N表項(xiàng)??蛇x的,該判斷低N表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表具體包括根據(jù)該第一高M(jìn)表項(xiàng)的第一標(biāo)志判斷該低N表中是否包含該子表??蛇x的,該在該低N表中查找對應(yīng)第一網(wǎng)絡(luò)地址的低N表項(xiàng)具體包括以該第一高M(jìn)表項(xiàng)的索引以及該第一網(wǎng)絡(luò)地址的低N位為key,在該低N表中查找該低N表項(xiàng),該低N表項(xiàng)包含該第一高M(jìn)表項(xiàng)的索引。可選的,該第一網(wǎng)絡(luò)地址的高M(jìn)位地址和/或低N位地址以二叉樹的形式存儲于該高M(jìn)表和/或該低N表中。實(shí)施例二 本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)地址查找裝置,可以用于需要進(jìn)行網(wǎng)絡(luò)地址查找的場景中,例如網(wǎng)關(guān)對主機(jī)發(fā)出的ARP請求進(jìn)行相應(yīng)響應(yīng)時,需要查找主機(jī)的網(wǎng)絡(luò)地址。參見圖2,圖2是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)地址查找裝置示意圖,該裝置包括查找單元201以及判斷單元202 該查找單元201用于在高M(jìn)表中查找第一高M(jìn)表項(xiàng),該第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位地址,M為自然數(shù),該第一網(wǎng)絡(luò)地址為X位,X為自然數(shù),根據(jù)該判斷單元的判斷結(jié)果,如果低N表中包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表,則在該低N表中查找對應(yīng)該第一網(wǎng)絡(luò)地址的低N表項(xiàng),該低N表項(xiàng)包含該第一網(wǎng)絡(luò)地址的低N位,N為自然數(shù),X為M與N的和。第一網(wǎng)絡(luò)地址可以是目的地址或者是源地址。第一網(wǎng)絡(luò)地址可以是對應(yīng)特定協(xié)議的網(wǎng)絡(luò)地址。特定協(xié)議可以是IP或者M(jìn)AC協(xié)議。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IP地址時,IP地址可以是IPv4地址,或者IPv6地址。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IPv4地址時,第一網(wǎng)絡(luò)地址為32位二進(jìn)制數(shù)。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址是IPv6地址時,第一網(wǎng)絡(luò)地址為1 位二進(jìn)制數(shù)。第一網(wǎng)絡(luò)地址可以承載于網(wǎng)絡(luò)設(shè)備收到的報(bào)文中。例如網(wǎng)絡(luò)設(shè)備收到IP分組,該IP分組中包含了 IP地址。高M(jìn)表可以存儲在網(wǎng)絡(luò)設(shè)備中,該網(wǎng)絡(luò)設(shè)備可以是路由器、交換機(jī)、防火墻或者負(fù)載均衡器。具體來說,高M(jìn)表可以存儲在該網(wǎng)絡(luò)設(shè)備的內(nèi)存中。當(dāng)該網(wǎng)絡(luò)設(shè)備中包含TCAM時,高M(jìn)表也可以存儲在該網(wǎng)絡(luò)設(shè)備的TCAM中。該高M(jìn)表可以用于存儲X位網(wǎng)絡(luò)地址的高 M位。高M(jìn)表可以包括一個表項(xiàng)或者多個表項(xiàng)。在特定場景下,利用高M(jìn)表存儲X位網(wǎng)絡(luò)地址的高M(jìn)位地址可以節(jié)省存儲空間。以IPv4的場景為例,路由器通過接收鄰居路由器發(fā)布的路由消息,獲得了進(jìn)行報(bào)文轉(zhuǎn)發(fā)所需的路徑信息。路徑信息可以存儲在FIB。FIB中的路徑信息可以包括若干個32位的目的IP地址。該若干個IP地址中多個目的IP地址的高 16位可以是相同的。例如該多個目的IP地址的高16位都是十進(jìn)制192. 168。因此可以通過高M(jìn)表中的一個表項(xiàng)表示該多個目的IP地址的高16位,從而節(jié)省該多個目的IP地址的存儲空間。高M(jìn)表可以包括第一高M(jìn)表項(xiàng),該第一高M(jìn)表項(xiàng)包含該第一網(wǎng)絡(luò)地址的高M(jìn)位地址。以IPv6的場景為例,當(dāng)?shù)谝痪W(wǎng)絡(luò)地址為1 位的IPv6地址時,高M(jìn)表中可以包含該第一網(wǎng)絡(luò)地址的高64位。此時M的值為64。根據(jù)第一網(wǎng)絡(luò)地址的低N位地址,在低N表中查找低N表項(xiàng)。該低N表項(xiàng)包含該第一網(wǎng)絡(luò)地址的低N位。如果查找到低N表項(xiàng),則表明第一網(wǎng)絡(luò)地址與高M(jìn)表以及低N表發(fā)生匹配。該判斷單元202用于如果在該高M(jìn)表中查找到該第一高M(jìn)表項(xiàng),則判斷該低N表中是否包含該子表。低N表用于存儲X位網(wǎng)絡(luò)地址的低N位。低N表可以包括多個表項(xiàng)。低N表可以包括對應(yīng)該第一高M(jìn)表項(xiàng)的子表。該子表為該低N表的一個子集。該子表可以包括1個或多個子表表項(xiàng)。子表表項(xiàng)包含高M(jìn)位等于該第一網(wǎng)絡(luò)地址的高M(jìn)位的X位網(wǎng)絡(luò)地址的低N 位。該子表可能包含該第一網(wǎng)絡(luò)地址的低N位,也可能不包含該第一網(wǎng)絡(luò)地址的低N位。在特定場景下,該低N表中可以不包含該子表。例如,路由器通過路由協(xié)議學(xué)習(xí)到第一網(wǎng)絡(luò)地址。該第一網(wǎng)絡(luò)地址為一個新的IPv6地址。當(dāng)路由器的控制平面向路由器的數(shù)據(jù)平面下送該第一網(wǎng)絡(luò)地址時,可以只下送該第一網(wǎng)絡(luò)地址的高64位,即網(wǎng)段地址,不下送該第一網(wǎng)絡(luò)地址的低64位。通過上述場景形成的低N表中可以不包含對應(yīng)該第一網(wǎng)絡(luò)地址的子表。上述查找第一網(wǎng)絡(luò)地址的技術(shù)方案可以應(yīng)用于多種場景。例如,可以將高M(jìn)表以及低N表作為網(wǎng)關(guān)的ARP緩存表對主機(jī)發(fā)出的ARP請求進(jìn)行驗(yàn)證。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址與高M(jìn) 表以及低N表發(fā)生匹配時,表明源IP地址為第一網(wǎng)絡(luò)地址的報(bào)文通過網(wǎng)關(guān)的ARP緩存表的驗(yàn)證。另外,可以將高M(jìn)表以及低N表作為路由器的路由轉(zhuǎn)發(fā)表對路由器收到的報(bào)文進(jìn)行轉(zhuǎn)發(fā)。當(dāng)?shù)谝痪W(wǎng)絡(luò)地址與高M(jìn)表以及低N表發(fā)生匹配時,表明路由器可以根據(jù)路由轉(zhuǎn)發(fā)表對目的地址為第一網(wǎng)絡(luò)地址的IP分組進(jìn)行轉(zhuǎn)發(fā)。相對于現(xiàn)有技術(shù)將若干個X位網(wǎng)絡(luò)地址存儲在一個表中,本實(shí)施例將X位網(wǎng)絡(luò)地址的高M(jìn)位以及低N位分別存儲在高M(jìn)表以及低N表中。在高M(jìn)表中,只需通過一個表項(xiàng)存儲X位網(wǎng)絡(luò)地址中高M(jìn)位相同的多個網(wǎng)絡(luò)地址的高M(jìn)位。這意味著高M(jìn)表中可以沒有發(fā)生重復(fù)的表項(xiàng),減少了高M(jìn)位相同的多個X位網(wǎng)絡(luò)地址所需的存儲空間。因此,本實(shí)施例提供的網(wǎng)絡(luò)地址查找裝置解決了將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多的技術(shù)問題。另外,本實(shí)施例提供的網(wǎng)絡(luò)地址查找裝置中,在低N表中查找第一網(wǎng)絡(luò)地址的低N 位前,對低N表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表進(jìn)行判斷,避免了當(dāng)?shù)蚇表中沒有對應(yīng)該第一高M(jìn)表項(xiàng)的子表時,仍然在低N表中查找對應(yīng)該第一網(wǎng)絡(luò)地址的低N表項(xiàng)。提高了查找效率。本實(shí)施例提供了一種查找網(wǎng)絡(luò)地址的裝置,該查找裝置通過查找高M(jìn)表以及低N 表實(shí)現(xiàn)。下文提供了該查找裝置的一種具體實(shí)現(xiàn)方式。為便于理解,下文先介紹高M(jìn)表以及低N表的生成過程,然后介紹高M(jìn)表以及低N表的查找過程第一部分高M(jìn)表以及低N表的生成過程路由器的嵌入式操作系統(tǒng)初始化時,可以在內(nèi)存中分別為1 位的IPv6地址的高 64位、低64位以及高64位地址的索引分配一個存儲空間。以上三個存儲空間是彼此獨(dú)立的。路由器根據(jù)路由協(xié)議,學(xué)習(xí)到第一網(wǎng)絡(luò)地址,該第一網(wǎng)絡(luò)地址為1 位的IPv6地址。路由器的CPU通過控制通道,例如PCI-E總線,將該網(wǎng)絡(luò)地址下發(fā)到查找引擎。查找引擎可以是一個芯片。查找引擎收到路由器學(xué)習(xí)到的第一網(wǎng)絡(luò)網(wǎng)絡(luò)地址,將該第一網(wǎng)絡(luò)地址的高64位添加到高M(jìn)表中,形成第一高M(jìn)表項(xiàng)。具體實(shí)現(xiàn)時,可以是查找引擎將該網(wǎng)絡(luò)地址的高64 位寫入到路由器的嵌入式操作系統(tǒng)初始化時為高64位分配的地址空間。查找引擎可以隨機(jī)生成該高64位地址的索引,并將該高64位地址的索引存儲到嵌入式操作系統(tǒng)初始化時為高64位地址的索引分配的存儲空間。高64位地址以及高64 位地址的索引是一一對應(yīng)的。也就是說對于不同的高64位地址,高64位地址的索引是不同的。高64位地址的索引可以是Y個比特的二進(jìn)制數(shù),Y為自然數(shù)。當(dāng)查找引擎隨機(jī)生成該高64位地址的索引時,查找引擎可以生成該低高M(jìn)表項(xiàng)的第一標(biāo)志。第一標(biāo)志用于表示低M表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表。第一標(biāo)志可以是一個比特的二進(jìn)制數(shù)。例如可以用二進(jìn)制0表示低M表中沒有包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表;可以用二進(jìn)制1表示低M表中包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表。查找引擎將該第一網(wǎng)絡(luò)地址的高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位添加到低M表中,形成低N表項(xiàng)。具體實(shí)現(xiàn)時,可以是查找引擎將該第一網(wǎng)絡(luò)地址的高64 位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位地址寫入到路由器的嵌入式操作系統(tǒng)初始化時為低64位地址分配的地址空間。第二部分高M(jìn)表以及低N表的查找過程路由器收到目的地址為第一網(wǎng)絡(luò)地址的報(bào)文,并將該報(bào)文送到NP。NP對該報(bào)文進(jìn)行解析后,提取出該報(bào)文的目的IP地址,即第一網(wǎng)絡(luò)地址。NP將該第一網(wǎng)絡(luò)地址的高1 位發(fā)送至查找引擎。查找引擎在高M(jìn)表中查找該第一網(wǎng)絡(luò)地址的高64位。如果查找引擎在高M(jìn)表中查找到包含該第一網(wǎng)絡(luò)地址的高64位地址的表項(xiàng),即第一高M(jìn)表項(xiàng),查找引擎從路由器的內(nèi)存中讀出該高64位地址的索引,并將該高64位地址的索引發(fā)送至NP。當(dāng)查找引擎讀出該高64位地址的索引時,查找引擎可以讀出該高64位地址的第一標(biāo)志,并將該第一標(biāo)志發(fā)送至NP。第一標(biāo)志用于表示低M表中是否包含對應(yīng)該第一高M(jìn) 表項(xiàng)的子表。第一標(biāo)志可以是一個比特的二進(jìn)制數(shù)。例如用二進(jìn)制0表示低64表中沒有包含對應(yīng)該第一高64表項(xiàng)的子表;用二進(jìn)制1表示低64表中包含對應(yīng)該第一高64表項(xiàng)的子表。當(dāng)?shù)谝粯?biāo)志表明該高64位地址有對應(yīng)的低64位地址時,NP將該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位發(fā)送至查找引擎。查找引擎以該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位為key,在低M表中查找是否存在與該key匹配的表項(xiàng)。當(dāng)標(biāo)志位表明低M表中沒有包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表時,NP不再發(fā)起查找。查找引擎以該高64位地址的索引以及該第一網(wǎng)絡(luò)地址的低64位地址為key,在低 64表中查找與該key匹配的表項(xiàng),即低N表項(xiàng)。如果查找引擎在低M表中查找到該低N表項(xiàng),查找引擎可以讀出該低64位地址的索引,并將該低64位地址的索引發(fā)送至NP。NP可以根據(jù)該低64位地址的索引,為路由器收到的目的地址為第一網(wǎng)絡(luò)地址的報(bào)文確定進(jìn)行轉(zhuǎn)發(fā)的物理出接口。可選的,該查找單元進(jìn)一步用于,如果該低N表中不包含該子表,則不在該低N表中查找該低N表項(xiàng)??蛇x的,該判斷單元具體用于,根據(jù)該第一高M(jìn)表項(xiàng)的第一標(biāo)志判斷該低N表中是否包含該子表??蛇x的,該查找單元具體用于,以該第一高M(jìn)表項(xiàng)的索引以及該第一網(wǎng)絡(luò)地址的低N位為 key,在該低N表中查找該低N表項(xiàng),該低N表項(xiàng)包含該第一高M(jìn)表項(xiàng)的索引。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種網(wǎng)絡(luò)地址查找方法,其特征在于在高M(jìn)表中查找第一高M(jìn)表項(xiàng),所述第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位,M為自然數(shù),所述第一網(wǎng)絡(luò)地址為X位,X為自然數(shù);如果在所述高M(jìn)表中查找到所述第一高M(jìn)表項(xiàng),則判斷低N表中是否包含對應(yīng)所述第一高M(jìn)表項(xiàng)的子表,N為自然數(shù);如果所述低N表中包含所述子表,則在所述低N表中查找對應(yīng)所述第一網(wǎng)絡(luò)地址的低 N表項(xiàng),所述低N表項(xiàng)包含所述第一網(wǎng)絡(luò)地址的低N位,X為M與N的和。
2.根據(jù)權(quán)利要求1所述方法,其特征在于如果所述低N表中不包含所述子表,則不查找所述低N表項(xiàng)。
3.根據(jù)權(quán)利要求1或2所述方法,其特征在于所述判斷低N表中是否包含對應(yīng)所述第一高M(jìn)表項(xiàng)的子表具體包括根據(jù)所述第一高M(jìn)表項(xiàng)的第一標(biāo)志判斷所述低N表中是否包含所述子表。
4.根據(jù)權(quán)利要求1至3任一權(quán)利要求所述方法,其特征在于所述在所述低N表中查找對應(yīng)所述第一網(wǎng)絡(luò)地址的低N表項(xiàng)具體包括以所述第一高M(jìn)表項(xiàng)的索引以及所述第一網(wǎng)絡(luò)地址的低N位為鍵值key,在所述低N表中查找所述低N表項(xiàng),所述低N表項(xiàng)包含所述第一高M(jìn)表項(xiàng)的索引。
5.根據(jù)權(quán)利要求1至4任一權(quán)利要求所述方法,其特征在于所述第一網(wǎng)絡(luò)地址的高M(jìn)位和/或低N位以二叉樹的形式存儲于所述高M(jìn)表和/或所述低N表中。
6.一種網(wǎng)絡(luò)地址查找裝置,其特征在于,包括查找單元以及判斷單元;所述查找單元用于在高M(jìn)表中查找第一高M(jìn)表項(xiàng),所述第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位,M為自然數(shù),所述第一網(wǎng)絡(luò)地址為X位,X為自然數(shù),根據(jù)所述判斷單元的判斷結(jié)果,如果低N表中包含對應(yīng)所述第一高M(jìn)表項(xiàng)的子表,則在所述低N表中查找對應(yīng)所述第一網(wǎng)絡(luò)地址的低N表項(xiàng),所述低N表項(xiàng)包含所述第一網(wǎng)絡(luò)地址的低N位,N為自然數(shù),X為M 與N的和;所述判斷單元用于如果在所述高M(jìn)表中查找到所述第一高M(jìn)表項(xiàng),則判斷所述低N表中是否包含所述子表。
7.根據(jù)權(quán)利要求6所述裝置,其特征在于所述查找單元進(jìn)一步用于,如果所述低N表中不包含所述子表,則不查找所述低N表項(xiàng)。
8.根據(jù)權(quán)利要求6或7所述裝置,其特征在于所述判斷單元具體用于,根據(jù)所述第一高M(jìn)表項(xiàng)的第一標(biāo)志判斷所述低N表中是否包含所述子表。
9.根據(jù)權(quán)利要求6至8任一權(quán)利要求所述裝置,其特征在于所述查找單元具體用于,以所述第一高M(jìn)表項(xiàng)的索引以及所述第一網(wǎng)絡(luò)地址的低N位為key,在所述低N表中查找所述低N表項(xiàng),所述低N表項(xiàng)包含所述第一高M(jìn)表項(xiàng)的索引。
全文摘要
本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)地址查找方法,包括在高M(jìn)表中查找第一高M(jìn)表項(xiàng),該第一高M(jìn)表項(xiàng)包含第一網(wǎng)絡(luò)地址的高M(jìn)位地址,M為自然數(shù),該第一網(wǎng)絡(luò)地址為X位,X為自然數(shù);如果在該高M(jìn)表中查找到該第一高M(jìn)表項(xiàng),則判斷低N表中是否包含對應(yīng)該第一高M(jìn)表項(xiàng)的子表,N為自然數(shù);如果該低N表中包含該子表,則在該低N表中查找對應(yīng)第一網(wǎng)絡(luò)地址的低N表項(xiàng),該低N表項(xiàng)包含該第一網(wǎng)絡(luò)地址的低N位,X為M與N的和。此外,還提供了相應(yīng)的裝置。通過本發(fā)明實(shí)施例提出的網(wǎng)絡(luò)地址查找方法及裝置,可以解決將若干個網(wǎng)絡(luò)地址存儲在一個表中,當(dāng)多個網(wǎng)絡(luò)地址的高位相同時,每個網(wǎng)絡(luò)地址的高位都需要占用一定的存儲空間,占用的存儲空間較多的問題。
文檔編號H04L12/56GK102291472SQ20111026817
公開日2011年12月21日 申請日期2011年9月9日 優(yōu)先權(quán)日2011年9月9日
發(fā)明者李晚龍, 趙鶴軒, 魏芳 申請人:華為數(shù)字技術(shù)有限公司