專利名稱:地址前綴查找方法和裝置以及報文轉(zhuǎn)發(fā)方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信,尤其涉及一種地址前綴查找方法和裝置,以及報文轉(zhuǎn)發(fā)方法和系統(tǒng)。
背景技術(shù):
在社會信息化高度發(fā)展的今天,互聯(lián)網(wǎng)的網(wǎng)絡(luò)流量特別是核心網(wǎng)絡(luò)的流量以指數(shù)級增長,同時用戶數(shù)量和對服務(wù)的要求也迅速增加,這一切都對作為互聯(lián)網(wǎng)核心設(shè)備的主干路由器提出了更高性能和容量的要求。需要對數(shù)據(jù)包IP(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)地址按最長匹配域查找到達(dá)更快的速度,同時也要求IP路由表的容量不斷擴(kuò)大。
IP網(wǎng)絡(luò)中的路由器負(fù)責(zé)為IP報文查找路由信息,這個功能稱為“報文轉(zhuǎn)發(fā)”,簡稱“轉(zhuǎn)發(fā)”。而路由器中用于存儲報文轉(zhuǎn)發(fā)所需的路由信息的表格稱為“路由轉(zhuǎn)發(fā)表”。路由轉(zhuǎn)發(fā)表通常包含兩部分轉(zhuǎn)發(fā)前綴表和轉(zhuǎn)發(fā)信息表。轉(zhuǎn)發(fā)前綴表中存儲的是網(wǎng)絡(luò)地址(也稱為網(wǎng)絡(luò)前綴)或主機(jī)地址,我們統(tǒng)稱為“地址前綴”。轉(zhuǎn)發(fā)信息表中存儲的是報文轉(zhuǎn)發(fā)所需的出端口和下一跳IP地址等信息。
路由器進(jìn)行路由信息查找的過程是這樣的首先用IP報文中攜帶的目的IP地址(DIP),到轉(zhuǎn)發(fā)前綴表中去查找匹配的表項(xiàng),然后去讀取與該表項(xiàng)關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng),從而獲得報文轉(zhuǎn)發(fā)所需的路由信息。
在轉(zhuǎn)發(fā)前綴表中查找與報文目的IP地址相匹配的表項(xiàng)是一項(xiàng)復(fù)雜的操作,這項(xiàng)操作完成的速度基本上就決定了一臺路由器的轉(zhuǎn)發(fā)性能。在高性能路由器中,通常將IPv6轉(zhuǎn)發(fā)前綴表存儲在CAM(ContentAddress Memory,內(nèi)容尋址存儲器)中,利用CAM的快速匹配特點(diǎn),實(shí)現(xiàn)高性能的路由查找操作。
CAM的一個地址對應(yīng)的數(shù)據(jù)一般是72比特的單元(其它比特單元情況類似),IPV6的目的IP地址是128位,這樣一個IPV6的路由轉(zhuǎn)發(fā)表要占用144比特的CAM單元,即兩個CAM地址,但對于IPV6地址前綴掩碼長度小于144比特情況下,用CAM的一個144比特單元實(shí)現(xiàn)地址匹配,浪費(fèi)CAM的存儲空間,就會降低CAM的存儲效率。由于目前CAM器件最大容量有限而且價格昂貴,CAM存儲效率低就需要用較多的CAM器件滿足報文轉(zhuǎn)發(fā)的需要,進(jìn)而增加路由器的制造成本,影響路由器的競爭力。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例要解決的技術(shù)問題在于提出一種地址前綴查找裝置和方法,最大限度克服報文轉(zhuǎn)發(fā)時存儲器存儲效率低的缺陷。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種地址前綴查找裝置,包括前綴存儲器,包括至少兩個存儲區(qū)域,所述存儲區(qū)域分別用于存儲相應(yīng)長度的地址前綴;匹配模塊,用于接收IP報文,提取所述IP報文中的地址信息,在所述前綴存儲器中查找和所述地址信息相匹配的地址前綴。
下述地址前綴查找裝置的技術(shù)方案為可選技術(shù)方案。
所述地址信息為目的IP地址的有效高位,匹配模塊接收IP報文,提取所述IP報文中的目的IP地址的有效高位,在所述前綴存儲器中查找和所述有效高位相匹配的地址前綴。
所述地址前綴查找裝置還包括判斷模塊,用于接收地址前綴,提取地址前綴的有效高位,分別將所述地址前綴的有效高位發(fā)送到所述前綴存儲器相應(yīng)的存儲區(qū)域。
所述地址前綴查找裝置還包括地址寄存器,用于存儲所述前綴存儲器的各個存儲區(qū)域的起始地址;匹配模塊提取有效高位后,在地址寄存器中查找對應(yīng)長度的存儲區(qū)域的起始地址,在對應(yīng)存儲區(qū)域中查找是否有和有效高位相匹配的地址前綴。
所述地址信息為虛擬專用網(wǎng)標(biāo)識VPNID和目的IP地址,匹配模塊接收IP報文,根據(jù)IP報文的VPNID確定出該IP報文對應(yīng)的存儲區(qū)域,匹配模塊在所述對應(yīng)的存儲區(qū)域中查找與所述IP報文的VPNID和目的IP地址相匹配的地址前綴。
所述地址前綴查找裝置還包括判斷模塊,用于接收地址前綴,根據(jù)地址前綴中VPNID的大小,將所述地址前綴發(fā)送到所述前綴存儲器相應(yīng)的存儲區(qū)域。
所述前綴存儲器為內(nèi)容尋址存儲器CAM。
前綴存儲器包括至少兩個CAM、且不同CAM的存儲單元位寬不相同,多個CAM根據(jù)存儲單元的位寬分屬于不同位寬的存儲區(qū)域;和/或前綴存儲器的一個CAM中的存儲單元位寬相同,所述存儲單元被劃分為兩類,一類為存儲一個地址前綴的存儲單元,另一類為存儲多個地址前綴的存儲單元,CAM中的存儲單元根據(jù)存儲地址前綴的個數(shù)分屬于不同位寬的存儲區(qū)域;和/或前綴存儲器的一個CAM中包括不同位寬的存儲單元,一個CAM中的存儲單元根據(jù)存儲單元位寬的不同分屬于不同位寬存儲區(qū)域。
本發(fā)明還提供一種報文轉(zhuǎn)發(fā)系統(tǒng),包括轉(zhuǎn)發(fā)信息存儲器和發(fā)送裝置,其中轉(zhuǎn)發(fā)信息存儲器用于存儲轉(zhuǎn)發(fā)信息表,所述發(fā)送模塊用于根據(jù)轉(zhuǎn)發(fā)信息表項(xiàng)發(fā)送報文,報文轉(zhuǎn)發(fā)系統(tǒng)還包括前綴存儲器,包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲相應(yīng)長度的地址前綴;匹配模塊,用于接收IP報文,提取所述IP報文中的地址信息,在所述前綴存儲器中查找和所述地址信息相匹配的地址前綴。
本發(fā)明還提供一種地址前綴查找方法,所述方法基于前綴存儲器實(shí)現(xiàn),包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲對應(yīng)長度的地址前綴,所述方法包括以下步驟接收IP報文,提取所述IP報文中的地址信息;在前綴存儲器里查找和所述地址信息匹配的地址前綴。
下述地址前綴查找方法的技術(shù)方案為可選技術(shù)方案。
所述地址前綴查找方法具體包括A’、接收IP報文,提取所述IP報文中的目的IP地址;B’、在前綴存儲器里查找和所述目的IP地址匹配的地址前綴,如有,結(jié)束查找,如沒有,執(zhí)行步驟C’;C’、提取所述目的IP地址的有效高位,在前綴存儲器里查找和所述有效高位匹配的地址前綴。
該方法還包括接收地址前綴,提取地址前綴的有效高位,根據(jù)有效高位的長度分別將所述有效高位發(fā)送到所述前綴存儲器相應(yīng)長度的存儲區(qū)域。
所述步驟C’具體包括提取IP報文中的目的IP地址有效高位后,在地址寄存器中查找對應(yīng)長度的存儲區(qū)域的起始地址,在對應(yīng)存儲區(qū)域中查找是否有和有效高位相匹配的地址前綴。
所述地址信息為虛擬專用網(wǎng)標(biāo)識VPNID和目的IP地址,所述方法具體包括接收IP報文,提取所述IP報文中的VPNID和目的IP地址;根據(jù)所述提取的VPNID確定出該IP報文對應(yīng)的存儲區(qū)域,在所述對應(yīng)的存儲區(qū)域中查找和所述VPNID和目的IP地址相匹配的地址前綴。
所述方法還包括接收地址前綴,根據(jù)地址前綴中VPNID的大小,將所述地址前綴發(fā)送到所述前綴存儲器相應(yīng)長度的存儲區(qū)域。
本發(fā)明還提供一種報文轉(zhuǎn)發(fā)方法,所述方法基于前綴存儲器實(shí)現(xiàn),所述前綴存儲器包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲不同長度的地址前綴,所述方法包括以下步驟接收IP報文,提取所述IP報文中的地址信息;在前綴存儲器里查找和所述地址信息匹配的地址前綴表項(xiàng);讀取與所述匹配表項(xiàng)關(guān)聯(lián)的轉(zhuǎn)發(fā)信息,根據(jù)所述轉(zhuǎn)發(fā)信息發(fā)送所述IP報文。
本發(fā)明實(shí)施例的有益效果如下通過將所述內(nèi)容尋址存儲器根據(jù)地址前綴掩碼長度的大小劃分為至少兩個存儲區(qū)域,根據(jù)存儲區(qū)域?qū)?yīng)的寬度提取地址前綴的有效高位進(jìn)行存儲,能在相同容量的內(nèi)容尋址存儲器里存儲更多的地址前綴;所述內(nèi)容尋址存儲器存儲區(qū)域的劃分是根據(jù)地址前綴的分布動態(tài)進(jìn)行,及時調(diào)整各個存儲區(qū)域的大小,最大限度提高內(nèi)容尋址存儲器的存儲容量。
圖1為本發(fā)明實(shí)施例的地址前綴查找方法流程圖;圖2為本發(fā)明實(shí)施例的報文轉(zhuǎn)發(fā)方法流程圖一;圖3為本發(fā)明實(shí)施例的報文轉(zhuǎn)發(fā)流程圖二;圖4為本發(fā)明實(shí)施例的報文轉(zhuǎn)發(fā)流程圖三;圖5為本發(fā)明實(shí)施例的地址前綴查找裝置結(jié)構(gòu)框圖。
具體實(shí)施例方式
本發(fā)明的實(shí)施例提供一種地址前綴查找裝置和方法,基于前綴存儲器實(shí)現(xiàn),將前綴存儲器動態(tài)分為至少兩個區(qū)域,本發(fā)明實(shí)施例的前綴存儲器與現(xiàn)有的前綴存儲器的不同之處在于現(xiàn)有前綴存儲器的存儲區(qū)域沒有進(jìn)行不同位寬的區(qū)分;本發(fā)明最大限度的提高前綴存儲器的存儲效率,在相同前綴存儲器容量的情況下增加路由轉(zhuǎn)發(fā)表的容量。
針對IPV6和IPV4本發(fā)明的實(shí)施例提供兩種不同的地址前綴存儲和查找方法。下面將結(jié)合各個附圖對本發(fā)明的實(shí)施例方案的主要實(shí)現(xiàn)原理、具體實(shí)施過程及其對應(yīng)的有益效果進(jìn)行詳細(xì)的闡述。
針對IPV6本發(fā)明的實(shí)施例提供的技術(shù)方案請參照圖1,該圖是本發(fā)明實(shí)施例的地址前綴查找方法的流程圖,該方法是基于前綴存儲器實(shí)現(xiàn)的,該存儲器通常為CAM,被動態(tài)分為至少兩個存儲區(qū)域,每個存儲區(qū)域存儲相應(yīng)長度的地址前綴,其主要包括以下步驟步驟100接收地址前綴,根據(jù)前綴存儲器提取地址前綴的有效高位分別存儲在相應(yīng)的存儲區(qū)域,這個步驟實(shí)際上是該IPV6報文轉(zhuǎn)發(fā)方法的準(zhǔn)備步驟,優(yōu)選的實(shí)施方式是根據(jù)IPV6地址前綴的特性用8組16比特的整數(shù)來描述128位地址前綴,CAM的存儲區(qū)域分別存儲的是8N比特長度的地址前綴,其中N為小于等于16的自然數(shù);在本實(shí)施例中有效高位是指相對應(yīng)前綴存儲器劃分存儲區(qū)域的規(guī)則,與存儲區(qū)域相應(yīng)寬度的高位比特,可以是完整的地址前綴或DIP,也可以是地址前綴或DIP的部分高位比特;步驟101接收IP報文,提取所述IP報文中攜帶的DIP,該DIP通常為128比特長度;步驟102用DIP的有效高位去某一存儲區(qū)域查找是否有匹配的地址前綴,即是否有和DIP的有效高位相同的地址前綴,優(yōu)選的實(shí)施方式是,為提高效率,首先查找存儲最長地址前綴的相應(yīng)存儲區(qū)域,如果查找到相同的表項(xiàng),執(zhí)行步驟105,否則執(zhí)行步驟103;步驟103根據(jù)前綴存儲器劃分存儲區(qū)域的規(guī)則再次提取DIP的有效高位,并根據(jù)該有效高位查找下一個存儲區(qū)域是否有匹配的地址前綴,如果查找到匹配的地址前綴,執(zhí)行步驟105,否則執(zhí)行步驟104;
步驟104判斷是否已查找到最后一個存儲區(qū)域,如果是,說明在前綴存儲器中沒有相應(yīng)的匹配項(xiàng),則結(jié)束查找,如果不是最后一個存儲區(qū)域,還需要再查找,執(zhí)行步驟104;步驟105在前綴存儲器中獲得地址前綴。
針對IPV4,本發(fā)明實(shí)施例根據(jù)VPN的數(shù)量來進(jìn)行地址前綴的存儲和查找。當(dāng)VPN數(shù)量超過16個時,現(xiàn)有的前綴存儲器為存儲單元位寬為72bit存儲單元的CAM,或者為更寬比特位存儲單元的CAM,這樣,前綴存儲器是采用統(tǒng)一位寬區(qū)域的CAM來存儲所有的地址前綴的;由于本發(fā)明的前綴存儲器對存儲區(qū)域進(jìn)行了位寬區(qū)域的區(qū)分,即本發(fā)明的前綴存儲器根據(jù)存儲單元位寬的不同將整個存儲空間劃分為不同位寬區(qū)域,如將CAM的存儲空間劃分為36bit位寬的存儲區(qū)域和72bit位寬的存儲區(qū)域,這樣,當(dāng)VPN數(shù)量超過16個時,可以將VPNID小于16的路由轉(zhuǎn)發(fā)表項(xiàng)存儲在36bit位寬的存儲區(qū)域中,將VPNID不小于16的路由轉(zhuǎn)發(fā)表項(xiàng)存儲在72bit位寬的存儲區(qū)域中。
本發(fā)明的實(shí)施例對前綴存儲器的存儲區(qū)域進(jìn)行位寬區(qū)域區(qū)分的方法主要包括如下三種,下述方法以CAM為例進(jìn)行說明。
方法1、前綴存儲器包括至少兩個CAM,而且,不同CAM的存儲單元位寬不相同。這里的不同CAM的存儲單元位寬不相同可以為每兩個CAM的存儲單元位寬均不相同,也可以為在所有CAM中,存在兩個CAM的存儲單元位寬不相同即可。也就是說,如果前綴存儲器中包括有三個CAM,則這三個CAM可以為36bit的CAM、72bit的CAM和144bit的CAM;這三個CAM也可以為36bit的CAM、36bit的CAM和72bit的CAM。
方法2、前綴存儲器包括一個CAM,該CAM中的所有存儲單元被劃分為存儲一個地址前綴的存儲單元和存儲多個地址前綴的存儲單元,存儲一個地址前綴的存儲單元屬于大位寬區(qū)域,存儲多個地址前綴的存儲單元屬于小位寬區(qū)域,大位寬區(qū)域中的存儲單元對應(yīng)存儲大位寬的地址前綴,小位寬區(qū)域中的存儲單元對應(yīng)存儲小位寬的地址前綴;如前綴存儲器中僅設(shè)置一個CAM、且該CAM的存儲單元位寬為72bit,這樣,該CAM中的一部分存儲單元為大位寬區(qū)域,一部分存儲單元為小位寬區(qū)域,大位寬區(qū)域中的一個存儲單元可以僅存儲一個大位寬的地址前綴,小位寬區(qū)域中的一個存儲單元可以存儲兩個小位寬的地址前綴。
方法3、前綴存儲器包括一個CAM,該CAM中的存儲單元具有不同的位寬,具有大位寬的存儲單元屬于大位寬區(qū)域,具有小位寬的存儲單元屬于小位寬區(qū)域。大位寬區(qū)域中的存儲單元對應(yīng)存儲大位寬的地址前綴,小位寬區(qū)域中的存儲單元對應(yīng)存儲小位寬的地址前綴;如一個CAM中包括兩種類型的存儲單元,一種類型為位寬為36bit的存儲單元、另一種類型為位寬為72bit的存儲單元。在位寬為36bit的一個存儲單元中可以僅存儲一個位寬小于36bit的地址前綴,在72bit的一個存儲單元中可以僅存儲一個位寬大于36bit、小于72bit的地址前綴。
當(dāng)然,本發(fā)明實(shí)施例中的前綴存儲器在對存儲區(qū)域進(jìn)行位寬區(qū)域區(qū)分時,也可以同時采用上述任意兩種方法,也就是將上述任意兩種方法結(jié)合起來使用。也可以同時采用上述三種方法。
不論前綴存儲器采用怎樣的方法對其存儲區(qū)域進(jìn)行位寬區(qū)域區(qū)分,在向前綴存儲器中存儲地址前綴時,應(yīng)根據(jù)地址前綴中的預(yù)定位的數(shù)值大小如VPNID的大小來確定該地址前綴應(yīng)存儲在前綴存儲器的哪個位寬區(qū)域中。也就是說,每個位寬區(qū)域均對應(yīng)一個預(yù)定值區(qū)間,當(dāng)?shù)刂非熬Y中的預(yù)定位的數(shù)值大小如VPNID的大小屬于某個位寬區(qū)域的預(yù)定值區(qū)間時,該地址前綴表項(xiàng)應(yīng)存儲在該預(yù)定值區(qū)間對應(yīng)的位寬區(qū)域中。
當(dāng)前綴存儲器采用方法1對其存儲區(qū)域進(jìn)行位寬區(qū)域區(qū)分時,前綴存儲器在存儲地址前綴表項(xiàng)時,首先根據(jù)該地址前綴表項(xiàng)中VPNID值的大小來確定該地址前綴表項(xiàng)應(yīng)存儲在哪個CAM中,然后,再進(jìn)行該地址前綴表項(xiàng)的存儲處理。
當(dāng)前綴存儲器采用方法2對其存儲區(qū)域進(jìn)行位寬區(qū)域區(qū)分時,前綴存儲器在存儲地址前綴表項(xiàng)時,首先根據(jù)該地址前綴表項(xiàng)中VPNID值的大小來確定該地址前綴表項(xiàng)應(yīng)存儲在一個CAM的哪個位寬區(qū)域中,如果存儲在大位寬區(qū)域中,則該地址前綴表項(xiàng)應(yīng)占用CAM的一個存儲單元,如果存儲在小位寬區(qū)域中,則該地址前綴表項(xiàng)只能占用CAM一個存儲單元的部分內(nèi)容。
前綴存儲器在設(shè)置了地址前綴轉(zhuǎn)發(fā)表項(xiàng)、且需要進(jìn)行地址前綴查找時,首先,匹配模塊應(yīng)確定其接收的IP報文的VPNID,然后,匹配模塊根據(jù)該數(shù)據(jù)報文的VPNID大小確定應(yīng)該在CAM的哪個位寬區(qū)域中查找該數(shù)據(jù)報文的地址前綴表項(xiàng),最后,匹配模塊在其確定的位寬區(qū)域中查找與該數(shù)據(jù)報文的VPNID和網(wǎng)絡(luò)地址對應(yīng)的地址前綴表項(xiàng)。
當(dāng)前綴存儲器包括至少兩個存儲單元位寬不相同的CAM時,匹配模塊執(zhí)行的地址前綴匹配的具體過程為匹配模塊根據(jù)數(shù)據(jù)報文的VPNID確定出該數(shù)據(jù)報文的地址前綴表項(xiàng)應(yīng)存儲在哪個CAM中,然后,匹配模塊在這個確定的CAM中查找與該數(shù)據(jù)報文的VPNID和網(wǎng)絡(luò)地址匹配的地址前綴表項(xiàng)。
當(dāng)前綴存儲器為一個CAM,且該CAM中的存儲單元劃分為存儲一個地址前綴表項(xiàng)的存儲單元和存儲多個地址前綴表項(xiàng)的存儲單元時,匹配模塊執(zhí)行的地址前綴匹配的具體過程為匹配模塊根據(jù)數(shù)據(jù)報文的VPNID確定出該數(shù)據(jù)報文的地址前綴表項(xiàng)是占用一個存儲單元,還是占用部分存儲單元,如果占用一個存儲單元,則匹配模塊在大位寬區(qū)域中查找與該數(shù)據(jù)報文的VPNID和網(wǎng)絡(luò)地址匹配的地址前綴表項(xiàng);如果占用部分存儲單元,則匹配模塊在小位寬區(qū)域中、按照從高位表項(xiàng)到低位表項(xiàng)的順序查找與該數(shù)據(jù)報文的VPNID和網(wǎng)絡(luò)地址匹配的地址前綴表項(xiàng)。
當(dāng)前綴存儲器采用方法3時,前綴存儲器在存儲地址前綴表項(xiàng)時,根據(jù)該地址前綴表項(xiàng)中VPNID值的大小來確定該地址前綴表項(xiàng)的位寬,并將該地址前綴表項(xiàng)存儲在對應(yīng)位寬區(qū)域的存儲單元中。如果位寬區(qū)域有兩種,一種為具有大位寬存儲單元的大位寬區(qū)域,一種為具有小位寬存儲單元的小位寬區(qū)域,則前綴存儲器根據(jù)路由轉(zhuǎn)發(fā)表項(xiàng)中VPNID值的大小來確定該地址前綴表項(xiàng)的位寬,如果該地址前綴表項(xiàng)為大位寬的地址前綴表項(xiàng),則前綴存儲器將該大位寬的地址前綴表項(xiàng)存儲在大位寬區(qū)域的存儲單元中,如果該地址前綴表項(xiàng)為小位寬的地址前綴表項(xiàng),則前綴存儲器將該小位寬的地址前綴表項(xiàng)存儲在小位寬區(qū)域的存儲單元中。
前綴存儲器在設(shè)置了地址前綴表項(xiàng)、且需要進(jìn)行數(shù)據(jù)報文的地址前綴匹配時,首先,匹配模塊應(yīng)確定數(shù)據(jù)報文的VPNID,然后,匹配模塊根據(jù)該數(shù)據(jù)報文的VPNID大小確定應(yīng)該在具有多大位寬的存儲單元中查找該數(shù)據(jù)報文的地址前綴表項(xiàng),最后,匹配模塊在具有相應(yīng)位寬的存儲單元中查找與該數(shù)據(jù)報文的VPNID和網(wǎng)絡(luò)地址對應(yīng)的地址前綴表項(xiàng)。
不同廠家提供的CAM的最小存儲單元的位寬可能有32位、64位、72位等不同情況。對于位寬為32位的情況,可以根據(jù)地址前綴表項(xiàng)是否為公網(wǎng)路由來實(shí)現(xiàn)公網(wǎng)地址前綴表項(xiàng)的存儲方法,并且可以根據(jù)數(shù)據(jù)報文的VPNID是否為0,來實(shí)現(xiàn)數(shù)據(jù)報文的地址前綴信息的查找。對于最小位寬為64位的情況,一個公網(wǎng)地址前綴表項(xiàng)可以存儲到CAM的一個存儲單元中,此時,同樣可以根據(jù)地址前綴表項(xiàng)是否為公網(wǎng)地址前綴、數(shù)據(jù)報文的VPNID是否為0來實(shí)現(xiàn)地址前綴表項(xiàng)存儲及數(shù)據(jù)報文的地址前綴查找。
本發(fā)明的實(shí)施例還提供一種報文轉(zhuǎn)發(fā)方法,在所述地址前綴查找方法步驟105后,根據(jù)查找到的地址前綴,去讀取相關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng),從而獲得IP報文轉(zhuǎn)發(fā)所需的路由信息,按照路由信息對IP報文進(jìn)行轉(zhuǎn)發(fā)。
CAM的一個地址對應(yīng)的單元一般存儲72比特數(shù)據(jù),根據(jù)這個特性,為方便查找每個存儲區(qū)域的起始地址,本發(fā)明提供一個較佳的實(shí)施例將CAM劃分兩個區(qū)域144位區(qū)和72位區(qū),分別存儲掩碼長度大于72比特表和小于等于72比特的地址前綴表。請參照圖2,該實(shí)施例的報文轉(zhuǎn)發(fā)方法具體包括以下步驟步驟201接收路由前綴,判斷該路由前綴掩碼是否大于72比特,如果大于72比特,執(zhí)行步驟202,如果小于等于72比特,執(zhí)行步驟203;步驟202將該路由前綴存儲到144位區(qū);步驟203提取該路由前綴的高72比特存儲到72位區(qū);步驟204接收IP報文,并提取該IP報文的128位DIP;步驟205用提取的128位DIP和144位區(qū)的每一個表項(xiàng)進(jìn)行匹配,如果能匹配,即能查找到相同的表項(xiàng),執(zhí)行步驟207;否則執(zhí)行步驟206;步驟206提取DIP的高72比特,和72位區(qū)的每一個表項(xiàng)進(jìn)行匹配,如果能匹配,執(zhí)行步驟207;否則,說明在CAM中存儲的整個轉(zhuǎn)發(fā)前綴表中都不能匹配,結(jié)束查找過程;步驟207根據(jù)表項(xiàng)得到CAM單元匹配地址;步驟208讀取與該匹配地址相關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng),從而獲得路由信息,根據(jù)該路由信息將IP報文轉(zhuǎn)發(fā)。
下面結(jié)合兩個具體的例子對IPV4系統(tǒng)中本發(fā)明實(shí)施例的地址前綴的存儲、匹配、數(shù)據(jù)報文轉(zhuǎn)發(fā)的技術(shù)方案進(jìn)行說明。
例1、前綴存儲器包括兩個CAM,其中,CAM1的存儲單元寬度為36bit,CAM2的存儲單元寬度為72bit。前綴存儲器根據(jù)VPNID值的大小,將轉(zhuǎn)發(fā)前綴表項(xiàng)區(qū)分為兩種一種是36bit的表項(xiàng),另一種是72bit的表項(xiàng)。
對于地址前綴表項(xiàng)中0<VPNID<16的情況,前綴存儲器使用36bit來表示該轉(zhuǎn)發(fā)前綴表項(xiàng),并且,前綴存儲器將該地址前綴表項(xiàng)存儲在CAM1中。
對于地址前綴表項(xiàng)中VPNID≥16的情況,前綴存儲器使用72bit來表示該地址前綴表項(xiàng),并且,前綴存儲器將該地址前綴表項(xiàng)存儲在CAM2中。
前綴存儲器CAM1中存儲的地址前綴表項(xiàng)如表1所示。
表1
前綴存儲器CAM2中存儲的地址前綴表項(xiàng)如表2所示。
表2
前綴存儲器在設(shè)置了表1和表2所示的地址前綴表項(xiàng)后,本發(fā)明實(shí)施例的進(jìn)行地址前綴匹配、數(shù)據(jù)報文轉(zhuǎn)發(fā)的過程如附圖3所示。
圖3中,在步驟300、路由設(shè)備接收到數(shù)據(jù)報文,路由設(shè)備開始進(jìn)行數(shù)據(jù)報文的轉(zhuǎn)發(fā)處理。
到步驟310,路由設(shè)備判斷數(shù)據(jù)報文對應(yīng)的VPNID值是否小于16,如果小于16,則到步驟320,路由設(shè)備使用數(shù)據(jù)報文的VPNID和DIP查詢存儲單元寬度為72bit的CAM2。到步驟330。
在步驟310,如果路由設(shè)備判斷數(shù)據(jù)報文對應(yīng)的VPNID值不小于16,則到步驟321,路由設(shè)備使用數(shù)據(jù)報文的VPNID和DIP查詢存儲單元寬度為36bit的CAM1。到步驟330。
在步驟330,路由設(shè)備從CAM1或CAM2的查找過程中獲得匹配的地址前綴表項(xiàng)。
到步驟340,路由設(shè)備根據(jù)該匹配的地址前綴表項(xiàng)從關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng)中獲得路由信息,并對該數(shù)據(jù)報文進(jìn)行轉(zhuǎn)發(fā)。到步驟350,本次數(shù)據(jù)報文的轉(zhuǎn)發(fā)過程結(jié)束。
例2、路由設(shè)備中設(shè)置有一個CAM,且該CAM的存儲單元寬度為72bit。路由設(shè)備根據(jù)VPNID值的大小,將地址前綴表項(xiàng)區(qū)分為兩種一種是36bit的表項(xiàng),另一種是72bit的表項(xiàng)。
對于地址前綴表項(xiàng)中0<VPNID<16的情況,路由設(shè)備將兩個這樣的地址前綴表項(xiàng)存儲在CAM的一個存儲單元中。
對于地址前綴表項(xiàng)中VPNID≥16的情況,路由設(shè)備將一個這樣的地址前綴表項(xiàng)存儲在CAM的一個存儲單元中。
路由設(shè)備在設(shè)置了CAM中的地址前綴表項(xiàng)后,CAM中的存儲單元可以劃分為大位寬區(qū)域和小位寬區(qū)域,大位寬區(qū)域即一個存儲單元存儲一個地址前綴表項(xiàng),小位寬區(qū)域即一個存儲單元存儲兩個地址前綴表項(xiàng)。路由設(shè)備進(jìn)行數(shù)據(jù)報文轉(zhuǎn)發(fā)的過程如附圖4所示。
圖4中,在步驟400、路由設(shè)備接收到數(shù)據(jù)報文,路由設(shè)備開始進(jìn)行數(shù)據(jù)報文的轉(zhuǎn)發(fā)處理。
到步驟410,路由設(shè)備判斷數(shù)據(jù)報文對應(yīng)的VPNID值是否小于16,如果小于16,則到步驟420,路由設(shè)備使用數(shù)據(jù)報文的VPNID和DIP查詢大位寬區(qū)域。到步驟430。
在步驟410,如果路由設(shè)備判斷數(shù)據(jù)報文對應(yīng)的VPNID值不小于16,則到步驟421,路由設(shè)備使用數(shù)據(jù)報文的VPNID和DIP根據(jù)從低位表項(xiàng)到高位表項(xiàng)的順序查詢小位寬區(qū)域,并從匹配結(jié)果中選擇一個最佳匹配表項(xiàng),即選擇一個最長匹配表項(xiàng)。到步驟430。
在步驟430,路由設(shè)備從大位寬區(qū)域或小位寬區(qū)域的查找過程中獲得匹配的地址前綴表項(xiàng)。
到步驟440,路由設(shè)備根據(jù)該匹配的地址前綴表項(xiàng)從關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng)中獲得路由信息,并對該數(shù)據(jù)報文進(jìn)行轉(zhuǎn)發(fā)。到步驟450,本次數(shù)據(jù)報文的轉(zhuǎn)發(fā)過程結(jié)束。
在上述描述中,是以VPNID是否小于16為界線來進(jìn)行位寬區(qū)域劃分及地址前綴表項(xiàng)匹配的,在實(shí)際應(yīng)用中也可以采用其他數(shù)值,如以VPNID是否小于1~16中的任意值為依據(jù)進(jìn)行位寬區(qū)域劃分及地址前綴表項(xiàng)匹配。
在上述描述中,如果CAM存儲空間中還存儲有其它類型的轉(zhuǎn)發(fā)表項(xiàng),如流分類表等,即有多種表項(xiàng)共用CAM存儲空間時,則CAM中需要存儲用于區(qū)分表項(xiàng)類型的標(biāo)識,該表項(xiàng)類型標(biāo)識占用的位寬需要計算在VPNID占用的位寬中。
通過上述描述可以看出,本發(fā)明有效提高了前綴存儲器如CAM的利用率,在VPN業(yè)務(wù)相對公網(wǎng)業(yè)務(wù)的比例不是很大的情況下,其效果尤為明顯,如在某運(yùn)營商的路由設(shè)備中,如果公網(wǎng)路由數(shù)量占了90%以上,則采用本發(fā)明提供的技術(shù)方案,相對于現(xiàn)有技術(shù)一而言,可以節(jié)省45%以上的CAM存儲空間。
為實(shí)現(xiàn)上述方法,本發(fā)明實(shí)施例還提供一種地址前綴查找裝置,請參照圖5,該圖是該裝置的結(jié)構(gòu)框圖,其主要包括前綴存儲器301、判斷模塊302、地址寄存器303和匹配模塊304,其中各個組成部分的主要功能如下前綴存儲器301,通常為CAM,包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別存儲相應(yīng)長度的地址前綴,在本實(shí)施例中,包括144位區(qū)3011和72位區(qū)3012,分別存儲掩碼長度大于72比特和小于等于72比特的地址前綴;CAM的存儲空間還可以劃分為32bit位寬的存儲區(qū)域和72bit位寬的存儲區(qū)域,這樣,當(dāng)路由設(shè)備支持的VPN數(shù)量超過16個時,VPNID不大于16的地址前綴表項(xiàng)可以存儲在32bit位寬的存儲區(qū)域中,VPNID大于16的地址前綴表項(xiàng)可以存儲在72bit位寬的存儲區(qū)域中。前綴存儲器存儲區(qū)域的位寬區(qū)域區(qū)分可以采用上述實(shí)施例中描述的三種方法,在此不再詳細(xì)描述。
判斷模塊302,用于接收地址前綴,根據(jù)存儲器分區(qū)規(guī)則提取地址前綴的有效高位,分別發(fā)送到相應(yīng)的存儲區(qū)域,在本實(shí)施例中,判斷模塊302可以判斷掩碼長度是否大于72比特,如果大于將地址前綴發(fā)送到144位區(qū)3011保存,如果小于等于72比特,提取地址前綴的高位72比特發(fā)送到72位區(qū)3012保存。判斷模塊302也可以根據(jù)地址前綴中VPNID的大小將接收的地址前綴發(fā)送到相應(yīng)的存儲區(qū)域,在本實(shí)施例中,判斷模塊302可以判斷VPNID是否大于16,如果大于16,將地址前綴發(fā)送到72bit位寬的存儲區(qū)域中,如果不大于16,將地址前綴發(fā)送到36bit位寬的存儲區(qū)域中。
地址寄存器303,用于接收前綴存儲器301發(fā)送的各個存儲區(qū)域的起始地址并保存;為最大限度的提高存儲效率,前綴存儲器301內(nèi)部各個存儲區(qū)域是動態(tài)分布的,即隨著存儲的地址前綴長度的分布改變各個存儲區(qū)域的大小,為方便匹配模塊304快速匹配,前綴存儲器301將各個存儲區(qū)域的起始地址發(fā)送給地址寄存器303進(jìn)行保存,以供匹配模塊304讀?。辉贗PV6系統(tǒng)中,匹配模塊304,用于接收IP報文,提取所述IP報文中的DIP,在前綴存儲器301中的一存儲區(qū)域里查找是否有和所述DIP匹配的表項(xiàng),如有匹配表項(xiàng),讀取與該表項(xiàng)關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng),如沒有匹配表項(xiàng),根據(jù)所述CAM分區(qū)的規(guī)則提取目的IP地址的有效高位,查找下一個存儲區(qū)域。查找下一個存儲區(qū)域,可以直接查找緊接的下一個存儲區(qū)域,也可以為減少查找次數(shù),先根據(jù)分區(qū)規(guī)則提取有效高位,并去地址寄存器查找對應(yīng)存儲區(qū)域的起始地址,在對應(yīng)存儲區(qū)域中查找是否有和有效高位匹配的地址前綴。在本實(shí)施例中,先用128位DIP和144位區(qū)3011的每一個表項(xiàng)進(jìn)行匹配,如果匹配,將匹配得到的表項(xiàng)作為地址前綴;如果不匹配,提取128位DIP的高72比特,和72位區(qū)的每一個表項(xiàng)進(jìn)行匹配,如果匹配,將匹配得到的表項(xiàng)作為地址前綴,否則發(fā)出結(jié)束指令。
在IPV4系統(tǒng)中,匹配模塊304,用于接收IP報文,提取所述IP報文中的VPNID,并根據(jù)該VPNID的大小,判斷該IP報文對應(yīng)的存儲區(qū)域,然后,在相應(yīng)的存儲區(qū)域中查找與該IP報文的VPNID和DIP匹配的地址前綴表項(xiàng)。當(dāng)前綴存儲器中包括兩個或多個CAM、或者一個CAM的一個存儲單元存儲有一個或多個地址前綴表項(xiàng)時,匹配模塊304執(zhí)行的匹配操作的具體過程如上述實(shí)施例方法中的描述。
本發(fā)明實(shí)施例還提供一種報文轉(zhuǎn)發(fā)系統(tǒng),包括所述的地址前綴查找裝置,轉(zhuǎn)發(fā)信息存儲器和發(fā)送裝置,所述轉(zhuǎn)發(fā)信息存儲器用于存儲轉(zhuǎn)發(fā)信息表,所述發(fā)送裝置用于根據(jù)轉(zhuǎn)發(fā)信息發(fā)送報文,匹配模塊查找得到地址前綴后,讀取轉(zhuǎn)發(fā)信息存儲器中與地址前綴相關(guān)聯(lián)的轉(zhuǎn)發(fā)信息表項(xiàng),發(fā)送給發(fā)送裝置,發(fā)送裝置根據(jù)該轉(zhuǎn)發(fā)信息表項(xiàng)中的路由信息發(fā)送報文。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種地址前綴查找裝置,其特征在于,包括前綴存儲器,包括至少兩個存儲區(qū)域,所述存儲區(qū)域分別用于存儲相應(yīng)長度的地址前綴;匹配模塊,用于接收IP報文,提取所述IP報文中的地址信息,在所述前綴存儲器中查找和所述地址信息相匹配的地址前綴。
2.如權(quán)利要求1所述的地址前綴查找裝置,其特征在于所述地址信息為目的IP地址的有效高位,匹配模塊接收IP報文,提取所述IP報文中的目的IP地址的有效高位,在所述前綴存儲器中查找和所述有效高位相匹配的地址前綴。
3.如權(quán)利要求2所述的地址前綴查找裝置,其特征在于還包括判斷模塊,用于接收地址前綴,提取地址前綴的有效高位,分別將所述地址前綴的有效高位發(fā)送到所述前綴存儲器相應(yīng)的存儲區(qū)域。
4.如權(quán)利要求2所述的地址前綴查找裝置,其特征在于,還包括地址寄存器,用于存儲所述前綴存儲器的各個存儲區(qū)域的起始地址;匹配模塊提取有效高位后,在地址寄存器中查找對應(yīng)長度的存儲區(qū)域的起始地址,在對應(yīng)存儲區(qū)域中查找是否有和有效高位相匹配的地址前綴。
5.如權(quán)利要求1所述的地址前綴查找裝置,其特征在于所述地址信息為虛擬專用網(wǎng)標(biāo)識VPNID和目的IP地址,匹配模塊接收IP報文,根據(jù)IP報文的VPNID確定出該IP報文對應(yīng)的存儲區(qū)域,匹配模塊在所述對應(yīng)的存儲區(qū)域中查找與所述IP報文的VPNID和目的IP地址相匹配的地址前綴。
6.如權(quán)利要求5所述的地址前綴查找裝置,其特征在于還包括判斷模塊,用于接收地址前綴,根據(jù)地址前綴中VPNID的大小,將所述地址前綴發(fā)送到所述前綴存儲器相應(yīng)的存儲區(qū)域。
7.如權(quán)利要求1或2或3或4或5或6所述的地址前綴查找裝置,其特征在于,所述前綴存儲器為內(nèi)容尋址存儲器CAM。
8.如權(quán)利要求7所述的地址前綴查找裝置,其特征在于前綴存儲器包括至少兩個CAM、且不同CAM的存儲單元位寬不相同,多個CAM根據(jù)存儲單元的位寬分屬于不同位寬的存儲區(qū)域;和/或前綴存儲器的一個CAM中的存儲單元位寬相同,所述存儲單元被劃分為兩類,一類為存儲一個地址前綴的存儲單元,另一類為存儲多個地址前綴的存儲單元,CAM中的存儲單元根據(jù)存儲地址前綴的個數(shù)分屬于不同位寬的存儲區(qū)域;和/或前綴存儲器的一個CAM中包括不同位寬的存儲單元,一個CAM中的存儲單元根據(jù)存儲單元位寬的不同分屬于不同位寬存儲區(qū)域。
9.基于權(quán)利要求1至8的一種報文轉(zhuǎn)發(fā)系統(tǒng),包括轉(zhuǎn)發(fā)信息存儲器和發(fā)送裝置,其中轉(zhuǎn)發(fā)信息存儲器用于存儲轉(zhuǎn)發(fā)信息表,所述發(fā)送模塊用于根據(jù)轉(zhuǎn)發(fā)信息表項(xiàng)發(fā)送報文,其特征在于,還包括前綴存儲器,包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲相應(yīng)長度的地址前綴;匹配模塊,用于接收IP報文,提取所述IP報文中的地址信息,在所述前綴存儲器中查找和所述地址信息相匹配的地址前綴。
10.一種地址前綴查找方法,其特征在于所述方法基于前綴存儲器實(shí)現(xiàn),包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲對應(yīng)長度的地址前綴,所述方法包括以下步驟接收IP報文,提取所述IP報文中的地址信息;在前綴存儲器里查找和所述地址信息匹配的地址前綴。
11.如權(quán)利要求10所述的地址前綴查找方法,其特征在于所述地址前綴查找方法具體包括A’、接收IP報文,提取所述IP報文中的目的IP地址;B’、在前綴存儲器里查找和所述目的IP地址匹配的地址前綴,如有,結(jié)束查找,如沒有,執(zhí)行步驟C’;C’、提取所述目的IP地址的有效高位,在前綴存儲器里查找和所述有效高位匹配的地址前綴。
12.如權(quán)利要求11所述的地址前綴查找方法,其特征在于,該方法還包括接收地址前綴,提取地址前綴的有效高位,根據(jù)有效高位的長度分別將所述有效高位發(fā)送到所述前綴存儲器相應(yīng)長度的存儲區(qū)域。
13.如權(quán)利要求11所述的地址前綴查找方法,其特征在于所述步驟C’具體包括提取IP報文中的目的IP地址有效高位后,在地址寄存器中查找對應(yīng)長度的存儲區(qū)域的起始地址,在對應(yīng)存儲區(qū)域中查找是否有和有效高位相匹配的地址前綴。
14.如權(quán)利要求10所述的地址前綴查找方法,其特征在于,所述地址信息為虛擬專用網(wǎng)標(biāo)識VPNID和目的IP地址,所述方法具體包括接收IP報文,提取所述IP報文中的VPNID和目的IP地址;根據(jù)所述提取的VPNID確定出該IP報文對應(yīng)的存儲區(qū)域,在所述對應(yīng)的存儲區(qū)域中查找和所述VPNID和目的IP地址相匹配的地址前綴。
15.如權(quán)利要求14所述的地址前綴查找方法,其特征在于,所述方法還包括接收地址前綴,根據(jù)地址前綴中VPNID的大小,將所述地址前綴發(fā)送到所述前綴存儲器相應(yīng)長度的存儲區(qū)域。
16.一種報文轉(zhuǎn)發(fā)方法,其特征在于,所述方法基于前綴存儲器實(shí)現(xiàn),所述前綴存儲器包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲不同長度的地址前綴,所述方法包括以下步驟接收IP報文,提取所述IP報文中的地址信息;在前綴存儲器里查找和所述地址信息匹配的地址前綴表項(xiàng);讀取與所述匹配表項(xiàng)關(guān)聯(lián)的轉(zhuǎn)發(fā)信息,根據(jù)所述轉(zhuǎn)發(fā)信息發(fā)送所述IP報文。
全文摘要
本發(fā)明公開了一種地址前綴查找裝置,包括前綴存儲器,包括至少兩個存儲區(qū)域,各個存儲區(qū)域分別用于存儲相應(yīng)長度的地址前綴;匹配模塊,用于接收IP報文,提取所述IP報文中的地址信息,在所述前綴存儲器中查找和所述地址信息相匹配的地址前綴。還提供一種地址前綴查找方法以及報文轉(zhuǎn)發(fā)系統(tǒng)和方法,通過本發(fā)明,能夠提高前綴存儲器的存儲效率。
文檔編號G06F12/02GK1929447SQ20061014069
公開日2007年3月14日 申請日期2006年9月29日 優(yōu)先權(quán)日2006年6月1日
發(fā)明者杜文華, 洪榮峰, 楊雄, 呂超, 李新慧, 陽東 申請人:華為技術(shù)有限公司